{
  "contractName": "Lock",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_uri",
          "type": "string"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "ApprovalForAll",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract IERC1155",
          "name": "contractAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "collateralTokenId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint64",
          "name": "oracleId",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "CollateralWithdrawn",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "customer",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "condition",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "ConditionCreated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract IERC1155",
          "name": "collateralContractAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "collateralTokenId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "DonateCollateral",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "oracleId",
          "type": "uint64"
        }
      ],
      "name": "OracleCreated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint64",
          "name": "oracleId",
          "type": "uint64"
        }
      ],
      "name": "OracleFinished",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "oracleOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint64",
          "name": "oracleId",
          "type": "uint64"
        }
      ],
      "name": "OracleOwnerChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint64",
          "name": "oracleId",
          "type": "uint64"
        },
        {
          "components": [
            {
              "internalType": "contract IERC1155",
              "name": "contractAddress",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            }
          ],
          "indexed": true,
          "internalType": "struct Lock.ERC1155Token",
          "name": "token",
          "type": "tuple"
        }
      ],
      "name": "OracleToken",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        }
      ],
      "name": "TransferBatch",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "TransferSingle",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "value",
          "type": "string"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "URI",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "accounts",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        }
      ],
      "name": "balanceOfBatch",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_newOracleOwner",
          "type": "address"
        },
        {
          "internalType": "uint64",
          "name": "_oracleId",
          "type": "uint64"
        }
      ],
      "name": "changeOracleOwner",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC1155",
          "name": "_collateralContractAddress",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_collateralTokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint64",
          "name": "_oracleId",
          "type": "uint64"
        },
        {
          "internalType": "uint256",
          "name": "_condition",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "collateralOwing",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "conditionOwners",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC1155",
          "name": "_collateralContractAddress",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_collateralTokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint64",
          "name": "_oracleId",
          "type": "uint64"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "donate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "name": "externalConditionals",
      "outputs": [
        {
          "internalType": "contract IERC1155",
          "name": "contractAddress",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC1155",
          "name": "_collateralContractAddress",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_collateralTokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint64",
          "name": "_oracleId",
          "type": "uint64"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "gatherDeFiProfit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_oracleId",
          "type": "uint64"
        }
      ],
      "name": "gracePeriodEnd",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "isApprovedForAll",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_condition",
          "type": "uint256"
        }
      ],
      "name": "isConditionalLocked",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "name": "isOracleFinished",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "lastCollateralBalanceFirstRoundMap",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "lastCollateralBalanceSecondRoundMap",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxConditionId",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxOracleId",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "onERC1155BatchReceived",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "onERC1155Received",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "onERC721Received",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_oracleId",
          "type": "uint64"
        }
      ],
      "name": "oracleOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "_ids",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "_values",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "safeBatchTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "setApprovalForAll",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_oracleId",
          "type": "uint64"
        },
        {
          "internalType": "uint256",
          "name": "_time",
          "type": "uint256"
        }
      ],
      "name": "updateGracePeriodEnds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "uri",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "name": "usersWithdrewInFirstRound",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC1155",
          "name": "_collateralContractAddress",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_collateralTokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint64",
          "name": "_oracleId",
          "type": "uint64"
        },
        {
          "internalType": "uint256",
          "name": "_condition",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "withdrawCollateral",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_oracleOwner",
          "type": "address"
        },
        {
          "components": [
            {
              "internalType": "contract IERC1155",
              "name": "contractAddress",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            }
          ],
          "internalType": "struct Lock.ERC1155Token",
          "name": "_token",
          "type": "tuple"
        }
      ],
      "name": "createOracle",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_oracleId",
          "type": "uint64"
        },
        {
          "internalType": "uint256",
          "name": "_conditionalTokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "mintConditional",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_oracleId",
          "type": "uint64"
        },
        {
          "internalType": "uint256",
          "name": "_conditionalTokenId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "burnConditional",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_uri\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC1155\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"collateralTokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"oracleId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"CollateralWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"customer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"condition\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"ConditionCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC1155\",\"name\":\"collateralContractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"collateralTokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"DonateCollateral\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"oracleId\",\"type\":\"uint64\"}],\"name\":\"OracleCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"oracleId\",\"type\":\"uint64\"}],\"name\":\"OracleFinished\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oracleOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"oracleId\",\"type\":\"uint64\"}],\"name\":\"OracleOwnerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"oracleId\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"contract IERC1155\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"indexed\":true,\"internalType\":\"struct Lock.ERC1155Token\",\"name\":\"token\",\"type\":\"tuple\"}],\"name\":\"OracleToken\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_oracleId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"_conditionalTokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"burnConditional\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOracleOwner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_oracleId\",\"type\":\"uint64\"}],\"name\":\"changeOracleOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC1155\",\"name\":\"_collateralContractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_collateralTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"_oracleId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"_condition\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"collateralOwing\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"conditionOwners\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oracleOwner\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IERC1155\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"internalType\":\"struct Lock.ERC1155Token\",\"name\":\"_token\",\"type\":\"tuple\"}],\"name\":\"createOracle\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC1155\",\"name\":\"_collateralContractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_collateralTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"_oracleId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"donate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"externalConditionals\",\"outputs\":[{\"internalType\":\"contract IERC1155\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC1155\",\"name\":\"_collateralContractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_collateralTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"_oracleId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"gatherDeFiProfit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_oracleId\",\"type\":\"uint64\"}],\"name\":\"gracePeriodEnd\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_condition\",\"type\":\"uint256\"}],\"name\":\"isConditionalLocked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"isOracleFinished\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"lastCollateralBalanceFirstRoundMap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"lastCollateralBalanceSecondRoundMap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxConditionId\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxOracleId\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_oracleId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"_conditionalTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"mintConditional\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_oracleId\",\"type\":\"uint64\"}],\"name\":\"oracleOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_values\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_oracleId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"_time\",\"type\":\"uint256\"}],\"name\":\"updateGracePeriodEnds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"usersWithdrewInFirstRound\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC1155\",\"name\":\"_collateralContractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_collateralTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"_oracleId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"_condition\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"withdrawCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Victor Porton\",\"events\":{\"OracleToken(uint64,(address,uint256))\":{\"params\":{\"oracleId\":\"The oracle ID.\",\"token\":\"The token.\"}}},\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.\"},\"burnConditional(uint64,uint256,address,uint256,bytes)\":{\"params\":{\"_amount\":\"The minted amount.\",\"_conditionalTokenId\":\"The conditional token ID.\",\"_data\":\"Additional data.\",\"_oracleId\":\"The oracle ID.\",\"_to\":\"The token recepient.\"}},\"changeOracleOwner(address,uint64)\":{\"params\":{\"_newOracleOwner\":\"New owner.\",\"_oracleId\":\"The oracle whose owner to change.\"}},\"collateralOwing(address,uint256,uint64,uint256,address)\":{\"params\":{\"_collateralContractAddress\":\"The ERC-1155 collateral token contract.\",\"_collateralTokenId\":\"The ERC-1155 collateral token ID.\",\"_condition\":\"The condition (the original receiver of a conditional token).\",\"_oracleId\":\"From which oracle's \\\"account\\\" to withdraw.\",\"_user\":\"The user to which we may owe.\"}},\"constructor\":{\"params\":{\"_uri\":\"The ERC-1155 token URI.\"}},\"donate(address,uint256,uint64,uint256,address,address,bytes)\":{\"params\":{\"_amount\":\"The amount to donate.\",\"_collateralContractAddress\":\"The collateral ERC-1155 contract address.\",\"_collateralTokenId\":\"The collateral ERC-1155 token ID.\",\"_data\":\"Additional transaction data.\",\"_from\":\"From whom to take the donation.\",\"_oracleId\":\"The oracle ID to whose ecosystem to donate to.\",\"_to\":\"On whose account the donation amount is assigned.\"}},\"gatherDeFiProfit(address,uint256,uint64,bytes)\":{\"params\":{\"_collateralContractAddress\":\"The collateral ERC-1155 contract address.\",\"_collateralTokenId\":\"The collateral ERC-1155 token ID.\",\"_data\":\"Additional transaction data.\",\"_oracleId\":\"The oracle ID to whose ecosystem to donate to.\"}},\"gracePeriodEnd(uint64)\":{\"params\":{\"_oracleId\":\"For which oracle.\"}},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC1155-isApprovedForAll}.\"},\"isConditionalLocked(address,uint256)\":{\"params\":{\"_condition\":\"The condition (the original receiver of a conditional token).\",\"_user\":\"Querying if locked for this user.\"}},\"mintConditional(uint64,uint256,uint256,bytes)\":{\"params\":{\"_amount\":\"The minted amount.\",\"_conditionalTokenId\":\"The conditional token ID.\",\"_data\":\"Additional data.\",\"_oracleId\":\"The oracle ID.\"}},\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"See {IERC721Receiver-onERC721Received}. Always returns `IERC721Receiver.onERC721Received.selector`.\"},\"oracleOwner(uint64)\":{\"params\":{\"_oracleId\":\"The oracle ID.\"}},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC1155-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}. Time complexity O(1), guaranteed to always use less than 30 000 gas.\"},\"totalSupply(uint256)\":{\"params\":{\"id\":\"Token ID.\"},\"returns\":{\"_0\":\"Total supply.\"}},\"uri(uint256)\":{\"details\":\"See {IERC1155MetadataURI-uri}. This implementation returns the same URI for *all* token types. It relies on the token type ID substitution mechanism https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. Clients calling this function must replace the `\\\\{id\\\\}` substring with the actual token type ID.\"},\"withdrawCollateral(address,uint256,uint64,uint256,bytes)\":{\"params\":{\"_collateralContractAddress\":\"The ERC-1155 collateral token contract.\",\"_collateralTokenId\":\"The ERC-1155 collateral token ID.\",\"_condition\":\"The condition.\",\"_data\":\"Additional data. Notes: - It is made impossible to withdraw somebody's other collateral, as otherwise we can't mark non-active   accounts in grace period. - We can't transfer to somebody other than `msg.sender` because anybody can transfer   (needed for multi-level transfers). - After this function is called, it becomes impossible to transfer the corresponding conditional token   of `msg.sender` (to prevent its repeated withdrawal).\",\"_oracleId\":\"From which oracle's \\\"account\\\" to withdraw.\"}}},\"title\":\"Locking a token for a collateral.\",\"version\":1},\"userdoc\":{\"events\":{\"CollateralWithdrawn(address,uint256,uint64,address,uint256)\":{\"notice\":\"Emitted when collateral is withdrawn.\"},\"ConditionCreated(address,address,uint256,bytes)\":{\"notice\":\"Emitted when an oracle owner is set.\"},\"DonateCollateral(address,uint256,address,uint256,address,bytes)\":{\"notice\":\"Emitted when a collateral is donated.\"},\"OracleCreated(address,uint64)\":{\"notice\":\"Emitted when an oracle is created.\"},\"OracleFinished(uint64)\":{\"notice\":\"Emitted when an oracle is marked as having finished its work.\"},\"OracleOwnerChanged(address,uint64)\":{\"notice\":\"Emitted when an oracle owner is set.\"},\"OracleToken(uint64,(address,uint256))\":{\"notice\":\"Assign a token to an orcle\"}},\"kind\":\"user\",\"methods\":{\"burnConditional(uint64,uint256,address,uint256,bytes)\":{\"notice\":\"Burn a conditional token\"},\"changeOracleOwner(address,uint64)\":{\"notice\":\"Modify the owner of an oracle.\"},\"collateralOwing(address,uint256,uint64,uint256,address)\":{\"notice\":\"Calculate how much collateral is owed to a user.\"},\"constructor\":{\"notice\":\"Constructor.\"},\"createOracle(address,(address,uint256))\":{\"notice\":\"Create a new oracle\"},\"donate(address,uint256,uint64,uint256,address,address,bytes)\":{\"notice\":\"Donate funds in an ERC-1155 token. First, the collateral token need to be approved to be spent by this contract from the address `_from`. It also mints a token (with a different ID), that counts donations in that token.\"},\"externalConditionals(uint64)\":{\"notice\":\"Mapping (oracleId => external conditional token).\"},\"gatherDeFiProfit(address,uint256,uint64,bytes)\":{\"notice\":\"Gather a DeFi profit of a token previous donated to this contact.\"},\"gracePeriodEnd(uint64)\":{\"notice\":\"Retrieve the end of the grace period.\"},\"isConditionalLocked(address,uint256)\":{\"notice\":\"Are transfers of a conditinal token locked? This is used to prevent its repeated withdrawal.\"},\"isOracleFinished(uint64)\":{\"notice\":\"Is the oracle marked as having finished its work? `oracleId` is the oracle ID.\"},\"mintConditional(uint64,uint256,uint256,bytes)\":{\"notice\":\"Mint a conditional token\"},\"oracleOwner(uint64)\":{\"notice\":\"Get the oracle owner.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"notice\":\"An ERC-1155 function. We disallow transfers of conditional tokens after redeem `_to` prevent \\\"gathering\\\" them before redeeming each oracle.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"notice\":\"An ERC-1155 function. We disallow transfers of conditional tokens after redeem `_to` prevent \\\"gathering\\\" them before redeeming each oracle.\"},\"totalSupply(uint256)\":{\"notice\":\"Total supply of a token (conforms to `IERC1155Views`).\"},\"updateGracePeriodEnds(uint64,uint256)\":{\"notice\":\"Set the end time of the grace period. The first withdrawal can be done *only* during the grace period. The second withdrawal can be done after the end of the grace period and only if the first withdrawal was done. The intention of the grace period is to check which of users are active (\\\"alive\\\").\"},\"usersWithdrewInFirstRound(uint64)\":{\"notice\":\"Mapping (oracleId => amount user withdrew in first round) (see `docs/Calculations.md`).\"},\"withdrawCollateral(address,uint256,uint64,uint256,bytes)\":{\"notice\":\"Transfer to `msg.sender` the collateral ERC-1155 token. The amount transferred is proportional to the score of `_condition` by the oracle.\"}},\"notice\":\"Not audited, not enough tested. Lock a token to exchange it for a collateral in the future. We have only one condition ID: `0`. TODO: This contract is somehow gas-inefficient. Should we release it?\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/user/Projects/future-contracts/contracts/Lock.sol\":\"Lock\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"/home/user/Projects/future-contracts/contracts/BaseLock.sol\":{\"keccak256\":\"0x477edfd8178110507dd44a101ec4d45bd82e073a8441c30062a9ca3cc3742184\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://0188608bd813e9e1de9472d2c71264fa24655ec646cc59be93d56a648fab1c6c\",\"dweb:/ipfs/QmdERM9oNEvHgmes3AWG8zAyx4ueAFKtXGsegAfXUKryDW\"]},\"/home/user/Projects/future-contracts/contracts/ERC1155/ERC1155.sol\":{\"keccak256\":\"0x7dcdf324fd4d2dec68846958865ae833956cb4ad80cd83cf6f107e7c33500bf6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cddf52afd931cbf983100a0415f04e6646aa90d100fd91437d2a75e3b241206\",\"dweb:/ipfs/QmXXJ2qoC1rSsKdg5s87m3BPQ3RFGw2rNrNv7KygzGJ9zQ\"]},\"/home/user/Projects/future-contracts/contracts/ERC1155/ERC1155WithTotals.sol\":{\"keccak256\":\"0x1d5fcf7a70d6f5dcd4ddf25caece633a9b4d17154fb98b5fc9a5ae4600b2db15\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://9638d138ecec5f7f6651cf690295fdaaa99023d58555360fa801ace5cac88a9d\",\"dweb:/ipfs/QmUWf56QEe5uSfpHB7inMUGzufNZSxyu8aszLzoYMZHMYf\"]},\"/home/user/Projects/future-contracts/contracts/Lock.sol\":{\"keccak256\":\"0x700d863bbecc0580392e1c2ccca47243f5c1cea9c72c10eee06b58db496b9c06\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://ae8311fddb063192783ebad2495cca262aab57b316bf33c4df74fb1cf0349ebe\",\"dweb:/ipfs/QmdAtvraFiGqCQMzk4BcEN2M4YzGYufJNfbYuydwLkbRB6\"]},\"@openzeppelin/contracts/GSN/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"@openzeppelin/contracts/introspection/ERC165.sol\":{\"keccak256\":\"0xd6b90e604fb2eb2d641c7110c72440bf2dc999ec6ab8ff60f200e71ca75d1d90\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b92d8ab83b21ff984b1f0d6d66897d5afb1f2052004cbcb133cea023e0ae468\",\"dweb:/ipfs/QmTarypkQrFp4UMjTh7Zzhz2nZLz5uPS4nJQtHDEuwBVe6\"]},\"@openzeppelin/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0xf70bc25d981e4ec9673a995ad2995d5d493ea188d3d8f388bba9c227ce09fb82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd970f51e3a77790c2f02b5b1759827c3b897c3d98c407b3631e8af32e3dc93c\",\"dweb:/ipfs/QmPF85Amgbqjk3SNZKsPCsqCw8JfwYEPMnnhvMJUyX58je\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x3b21f2c8d626de3b9925ae33e972d8bf5c8b1bffb3f4ee94daeed7d0679036e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f8d45329fecbf0836ad7543330c3ecd0f8d0ffa42d4016278c3eb2215fdcdfe\",\"dweb:/ipfs/QmXWLT7GcnHtA5NiD6MFi2CV3EWJY4wv5mLNnypqYDrxL3\"]},\"@openzeppelin/contracts/token/ERC1155/ERC1155Holder.sol\":{\"keccak256\":\"0x21428ca879b2437107322dfc1e214d25ecd6b966344961025ee412c3acfd5fc0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9747c875899d05823aede28b60ca8d3719b8c28018f397521c4ffb05041e1ac5\",\"dweb:/ipfs/QmQEQ4jJYEGFNfcngfZ3gPkcrcWYWKbo1Bq2F57scJxbmE\"]},\"@openzeppelin/contracts/token/ERC1155/ERC1155Receiver.sol\":{\"keccak256\":\"0xfce008c2ddf19a62e29e056fdddfa10204b19417ae0f711913703e4ee9dec92c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37a7bb9249c0e8aaecd0c6f33fae7f03d15aebb015f5f7f1face393cfd58d75b\",\"dweb:/ipfs/QmevqbHb43sTLnpWzrGW9WvWvktMzuP5EzYHhqZox2A5v3\"]},\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x61321d2c86346045bf394885ee3afeecc65f9daad2694bc19110967588fd7b5d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1703b877203e0447ede72dcf73f1c4f2089b415bd1c44877904128a64fafed5b\",\"dweb:/ipfs/QmaZoYDo2FWtKcwCc9zuabU6zri8KV9xJrhU614d93sLid\"]},\"@openzeppelin/contracts/token/ERC1155/IERC1155MetadataURI.sol\":{\"keccak256\":\"0xd918cca1b659f588a6d12d05fd7196179a8b1eac9133d7f77da7ef3133e13256\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c75d578f42e2e2e427b934e6c41cc759be2d0a52155868308e915328c8feb2b\",\"dweb:/ipfs/QmbFNHtWAoNhe82Hy6yKTePWJRczqzp1APSBfLS9XfAN6e\"]},\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"keccak256\":\"0x2690a9b7f4f7489b8d25a4fc6bffc02ec3971fb41ed6c8b59adef2833bdab07c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8148c99452b6793ac9599abdc8bdaf4eeb47f34590beea8aa01089be14e2990c\",\"dweb:/ipfs/QmNdenmZ4EDfH9TuBas3pHeGuZvDNo2rsfgUj6ka8vuH37\"]},\"@openzeppelin/contracts/token/ERC721/ERC721Holder.sol\":{\"keccak256\":\"0xdb2133d55b8f3a94313af8f4371ae0501a58e412d471b03d8581214c5ea2ce33\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cea1e4bf769f27c8c9c1442f1518b49ef6c8b71a4bd4ce88353da9e9a8ba1704\",\"dweb:/ipfs/QmR1b8sj7fxgeHqDksV4GYTjZS1qajWC3yg9VCMUJus2bF\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x52146049d6709c870e8ddcd988b5155cb6c5d640cfcd8978aee52bc1ba2ec4eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada84513617b7c1b2f890b44503735abaec73a1acd030112a17aac7e6c66a4a1\",\"dweb:/ipfs/QmaiFwdio67iJrfjAdkMac24eJ5sS1qD7CZW6PhUU6KjiK\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6a15ddddcbf29d2922a1e0d4151b5d2d33da24b93cc9ebc12390e0d855532f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c119bcaecfa853d564ac88d312777f75fa1126a3bca88a3371adb0ad9f35cb0\",\"dweb:/ipfs/QmY9UPuXeSKq86Zh38fE43VGQPhKMN34mkuFSFqPcr6nvZ\"]},\"abdk-libraries-solidity/ABDKMath64x64.sol\":{\"keccak256\":\"0x67609bc0923563d05d3a8a7c681056f9702a92120777cb0bcbb40d0afbb4a015\",\"license\":\"BSD-4-Clause\",\"urls\":[\"bzz-raw://55e817969394d4e0201a8cd3763ad6776bc9fddc986febe9b4acf120e8b7ad0d\",\"dweb:/ipfs/QmNMve5ZjUfA8DJYic4sYTrDEAN6VyxcC7jWUTX25Wmnnp\"]}},\"version\":1}",
  "bytecode": "0x60806040523480156200001157600080fd5b5060405162003ec138038062003ec18339810160408190526200003491620001f1565b808080620000496301ffc9a760e01b620000a7565b62000054816200012c565b62000066636cdb3d1360e11b620000a7565b620000786303a24d0760e21b620000a7565b506200008d9050630271189760e51b620000a7565b6200009f632d94347160e11b620000a7565b5050620002b0565b6001600160e01b0319808216141562000107576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b80516200014190600390602084019062000145565b5050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200017d5760008555620001c8565b82601f106200019857805160ff1916838001178555620001c8565b82800160010185558215620001c8579182015b82811115620001c8578251825591602001919060010190620001ab565b50620001d6929150620001da565b5090565b5b80821115620001d65760008155600101620001db565b6000602080838503121562000204578182fd5b82516001600160401b03808211156200021b578384fd5b818501915085601f8301126200022f578384fd5b8151818111156200023c57fe5b604051601f8201601f19168101850183811182821017156200025a57fe5b604052818152838201850188101562000271578586fd5b8592505b8183101562000294578383018501518184018601529184019162000275565b81831115620002a557858583830101525b979650505050505050565b613c0180620002c06000396000f3fe608060405234801561001057600080fd5b50600436106101ef5760003560e01c8063837b0f841161010f578063d0ee90c5116100a2578063f23a6e6111610071578063f23a6e6114610466578063f242432a14610479578063f52f368d1461048c578063f59407b41461049f576101ef565b8063d0ee90c51461040c578063d866e25d1461041f578063e985e9c514610440578063ebf38ffb14610453576101ef565b8063bc197c81116100de578063bc197c81146103c0578063bd85b039146103d3578063c3a0d776146103e6578063c3dcfd41146103f9576101ef565b8063837b0f841461037f578063922aac9c1461038757806392d2a6bc1461039a578063a22cb465146103ad576101ef565b80632ef0ce781161018757806356c742dc1161015657806356c742dc1461032657806361fbc14a146103465780636695821f14610359578063770744481461036c576101ef565b80632ef0ce78146102cb57806334fc81c4146102de57806347a2fd8d146102f15780634e1273f414610306576101ef565b80630e89341c116101c35780630e89341c14610265578063150b7a02146102855780632a35cbd8146102a55780632eb2c2d6146102b8576101ef565b8062fdd58e146101f457806301a983df1461021d57806301ffc9a71461023057806305096f2514610250575b600080fd5b6102076102023660046131d5565b6104b2565b604051610214919061381d565b60405180910390f35b61020761022b3660046134fa565b610558565b61024361023e3660046132f4565b610575565b60405161021491906137ac565b61026361025e366004613334565b6105b0565b005b6102786102733660046134e2565b6106be565b604051610214919061380a565b610298610293366004612ffc565b610774565b60405161021491906137b7565b6102636102b336600461358b565b61079d565b6102636102c6366004612e97565b6108d1565b6102636102d93660046133ff565b6109ae565b6102076102ec36600461351e565b610c11565b6102f9610c2d565b6040516102149190613826565b610319610314366004613234565b610c49565b6040516102149190613768565b61033961033436600461351e565b610e2f565b6040516102149190613674565b6103396103543660046134e2565b610e61565b6102076103673660046134fa565b610e89565b61020761037a36600461351e565b610ea6565b6102f9610eb8565b610263610395366004613488565b610ec8565b6102436103a836600461351e565b611190565b6102636103bb366004613147565b611196565b6102986103ce366004612f52565b6112f1565b6102076103e13660046134e2565b61131b565b6102f96103f4366004613178565b61132d565b610263610407366004613200565b6113b4565b61026361041a366004613553565b6114da565b61043261042d36600461351e565b611611565b6040516102149291906137e4565b61024361044e366004612e5f565b611643565b6102076104613660046133a3565b61167e565b6102986104743660046130e0565b6116a9565b610263610487366004613066565b6116d3565b61024361049a3660046131d5565b611728565b6102636104ad366004613538565b611760565b600073ffffffffffffffffffffffffffffffffffffffff8316610520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613a3e602b913960400191505060405180910390fd5b50600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020545b92915050565b600a60209081526000928352604080842090915290825290205481565b7fffffffff00000000000000000000000000000000000000000000000000000000811660009081526020819052604090205460ff165b919050565b60006105bd86868661181d565b905060006105cb87876118a0565b9050600061067f6105dc30846104b2565b604080517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018b9052905173ffffffffffffffffffffffffffffffffffffffff8c169162fdd58e916044808301926020929190829003018186803b15801561064d57600080fd5b505afa158015610661573d6000803e3d6000fd5b505050506040513d602081101561067757600080fd5b5051906118f7565b9050600061068d30846104b2565b61069730866104b2565b8302816106a057fe5b0490506106b38989898430308c8c6109ae565b505050505050505050565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107685780601f1061073d57610100808354040283529160200191610768565b820191906000526020600020905b81548152906001019060200180831161074b57829003601f168201915b50505050509050919050565b7f150b7a0200000000000000000000000000000000000000000000000000000000949350505050565b826107a781611940565b61081257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f49742773206e6f7420796f757220636f6e646974696f6e616c2e000000000000604482015290519081900360640190fd5b67ffffffffffffffff85166000908152600d602052604090206108373386868661194e565b805460018201546040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163f242432a9161089791339130918a908a90600401613695565b600060405180830381600087803b1580156108b157600080fd5b505af11580156108c5573d6000803e3d6000fd5b50505050505050505050565b60005b85811015610900576108f88787838181106108eb57fe5b905060200201358a6119fd565b6001016108d4565b506109a4888888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808c0282810182019093528b82529093508b92508a91829185019084908082843760009201919091525050604080516020601f8b018190048102820181019092528981529250899150889081908401838280828437600092019190915250611a8b92505050565b5050505050505050565b60006109bb89898961181d565b90506109ff84828886868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d6792505050565b6000610a0b8a8a6118a0565b9050610a4f85828987878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d6792505050565b8573ffffffffffffffffffffffffffffffffffffffff16898b73ffffffffffffffffffffffffffffffffffffffff167fe29f51ae5c82c0500c7c66f9ab40c2f68e940a624c8ba42e287ee98eeced4e378a898989604051808581526020018473ffffffffffffffffffffffffffffffffffffffff168152602001806020018281038252848482818152602001925080828437600083820152604051601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690920182900397509095505050505050a48973ffffffffffffffffffffffffffffffffffffffff1663f242432a87308c8b89896040518763ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015610bed57600080fd5b505af1158015610c01573d6000803e3d6000fd5b5050505050505050505050505050565b67ffffffffffffffff1660009081526007602052604090205490565b60055468010000000000000000900467ffffffffffffffff1681565b60608151835114610ca5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180613b826029913960400191505060405180910390fd5b6000835167ffffffffffffffff81118015610cbf57600080fd5b50604051908082528060200260200182016040528015610ce9578160200160208202803683370190505b50905060005b8451811015610e2757600073ffffffffffffffffffffffffffffffffffffffff16858281518110610d1c57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415610d91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180613a696031913960400191505060405180910390fd5b60016000858381518110610da157fe5b602002602001015181526020019081526020016000206000868381518110610dc557fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054828281518110610e1457fe5b6020908102919091010152600101610cef565b509392505050565b67ffffffffffffffff1660009081526006602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b600c6020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b600960209081526000928352604080842090915290825290205481565b600b6020526000908152604090205481565b60055467ffffffffffffffff1681565b610ed184611190565b610f3c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f746f6f206561726c790000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6000610f4785611e45565b336000818152600860209081526040808320898452909152812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790559192508190610fa1908a908a908a908a9088611e64565b9150915080600014611000576000610fb88361131b565b90508315610fe15760008381526009602090815260408083203384529091529020819055610ffe565b6000838152600a6020908152604080832033845290915290208190555b505b826110445767ffffffffffffffff87166000908152600b60205260409020546110299082611f69565b67ffffffffffffffff88166000908152600b60205260409020555b8873ffffffffffffffffffffffffffffffffffffffff1663f242432a30338b858a8a6040518763ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b15801561110f57600080fd5b505af1158015611123573d6000803e3d6000fd5b50506040805133815260208101859052815167ffffffffffffffff8c1694508c935073ffffffffffffffffffffffffffffffffffffffff8e16927f72d4fd47a9fbaff0f6860417149191d0520595c12e2f7d4828bac210e6ad3dbc928290030190a4505050505050505050565b50600190565b8173ffffffffffffffffffffffffffffffffffffffff166111b5611fdd565b73ffffffffffffffffffffffffffffffffffffffff161415611222576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180613b2a6029913960400191505060405180910390fd5b806002600061122f611fdd565b73ffffffffffffffffffffffffffffffffffffffff90811682526020808301939093526040918201600090812091871680825291909352912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169215159290921790915561129e611fdd565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b7fbc197c810000000000000000000000000000000000000000000000000000000095945050505050565b60009081526004602052604090205490565b60008061133984611fe2565b67ffffffffffffffff81166000908152600d6020526040902090915083906113618282613964565b505060405161137190849061363b565b6040519081900381209067ffffffffffffffff8316907fccbe6925a35a7eab934fc74faad8e09bf5ed7170964e8478fd3d12c7791a117190600090a39392505050565b67ffffffffffffffff8116600090815260066020526040902054819073ffffffffffffffffffffffffffffffffffffffff16331461145357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4e6f7420746865206f7261636c65206f776e65722e0000000000000000000000604482015290519081900360640190fd5b67ffffffffffffffff821660008181526006602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8816908117909155905190917f74793e794a02a6a170c6c9946770eee45a5b771297549c7a134b186d7004f2d491a3505050565b846114e481611940565b61154f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f49742773206e6f7420796f757220636f6e646974696f6e616c2e000000000000604482015290519081900360640190fd5b67ffffffffffffffff87166000908152600d602052604090206115733388876120fc565b805460018201546040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163f242432a916115d59130918b918b908b908b906004016136e5565b600060405180830381600087803b1580156115ef57600080fd5b505af1158015611603573d6000803e3d6000fd5b505050505050505050505050565b600d602052600090815260409020805460019091015473ffffffffffffffffffffffffffffffffffffffff9091169082565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205460ff1690565b60008061168a85611e45565b9050600061169c888888888887611e64565b9998505050505050505050565b7ff23a6e610000000000000000000000000000000000000000000000000000000095945050505050565b6116dd84876119fd565b6117208686868686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061216492505050565b505050505050565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600860209081526040808320938352929052205460ff1690565b67ffffffffffffffff8216600090815260066020526040902054829073ffffffffffffffffffffffffffffffffffffffff1633146117ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4e6f7420746865206f7261636c65206f776e65722e0000000000000000000000604482015290519081900360640190fd5b5067ffffffffffffffff909116600090815260076020526040902055565b6040805160609490941b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016602080860191909152603485019390935260c09190911b7fffffffffffffffff0000000000000000000000000000000000000000000000001660548401528051808403603c018152605c9093019052815191012090565b6040805160609390931b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020808501919091526034808501939093528151808503909301835260549093019052805191012090565b600061193983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061231c565b9392505050565b680100000000000000001190565b6000838152600c602052604090205473ffffffffffffffffffffffffffffffffffffffff8581169116146119e357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4f7468657227732073616c6172792067657420617474656d70742e0000000000604482015290519081900360640190fd5b6119f76119ef85611fdf565b848484611d67565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260086020908152604080832085845290915290205460ff1615611a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180613a9a6030913960400191505060405180910390fd5b5050565b8151835114611ae5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613b53602f913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8416611b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613aca6028913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8516331480611baa575073ffffffffffffffffffffffffffffffffffffffff8516600090815260026020908152604080832033845290915290205460ff1615156001145b611bff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180613af26038913960400191505060405180910390fd5b60005b8351811015611c51576000848281518110611c1957fe5b602002602001015190506000848381518110611c3157fe5b60200260200101519050611c47828989846123cd565b5050600101611c02565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015611cfe578181015183820152602001611ce6565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015611d3d578181015183820152602001611d25565b5050505090500194505050505060405180910390a4611d60338686868686612483565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff8416611dd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613bab6021913960400191505060405180910390fd5b611dde8484846127b5565b6040805184815260208101849052815173ffffffffffffffffffffffffffffffffffffffff87169260009233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62929181900390910190a46119f733600086868686612815565b67ffffffffffffffff1660009081526007602052604090205442111590565b6000806000611e7385876104b2565b9050600084611e9b5767ffffffffffffffff88166000908152600b6020526040902054611ea4565b611ea48761131b565b9050611eb18a8a8a61181d565b93506000611ebf8383612a05565b9050600086611efd576000868152600a6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8c168452909152902054611f2e565b600086815260096020908152604080832073ffffffffffffffffffffffffffffffffffffffff8c1684529091529020545b611f378761131b565b0390506000611f478b8b85610552565b9050611f57600f82900b83612a4e565b95505050505050965096945050505050565b60008282018381101561193957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b335b90565b600580547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008116600167ffffffffffffffff92831601918216908117909255600082815260066020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8816179055805133815291820194909452835191937f3a39e4ca958a680cb67189b53ab4494bee80524d836f52094ab41cea81219ffe92918290030190a160405167ffffffffffffffff82169073ffffffffffffffffffffffffffffffffffffffff8516907f74793e794a02a6a170c6c9946770eee45a5b771297549c7a134b186d7004f2d490600090a392915050565b612107838383612ad0565b6040805183815260208101839052815160009273ffffffffffffffffffffffffffffffffffffffff87169233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62929181900390910190a4505050565b73ffffffffffffffffffffffffffffffffffffffff84166121d0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613aca6028913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8516331480612229575073ffffffffffffffffffffffffffffffffffffffff8516600090815260026020908152604080832033845290915290205460ff1615156001145b61227e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180613af26038913960400191505060405180910390fd5b61228a838686856123cd565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628686604051808381526020018281526020019250505060405180910390a4611d60338686868686612815565b600081848411156123c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561238a578181015183820152602001612372565b50505050905090810190601f1680156123b75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600084815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915290205461240790826118f7565b600085815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff888116855292528083209390935584168152205461244c908290611f69565b600094855260016020908152604080872073ffffffffffffffffffffffffffffffffffffffff909516875293905291909320555050565b6124a28473ffffffffffffffffffffffffffffffffffffffff16612b53565b15611720578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b8381101561255757818101518382015260200161253f565b50505050905001848103835286818151815260200191508051906020019060200280838360005b8381101561259657818101518382015260200161257e565b50505050905001848103825285818151815260200191508051906020019080838360005b838110156125d25781810151838201526020016125ba565b50505050905090810190601f1680156125ff5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b15801561262457600080fd5b505af192505050801561264957506040513d602081101561264457600080fd5b505160015b61271257612655613883565b8061266057506126c1565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181815283516024840152835184939192839260440191908501908083836000831561238a578181015183820152602001612372565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806139e26034913960400191505060405180910390fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c8100000000000000000000000000000000000000000000000000000000146127ac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613a166028913960400191505060405180910390fd5b50505050505050565b6000828152600460205260409020546127ce9082611f69565b6000928352600460209081526040808520929092556001815281842073ffffffffffffffffffffffffffffffffffffffff9590951684529390935291902080549091019055565b6128348473ffffffffffffffffffffffffffffffffffffffff16612b53565b15611720578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156128ea5781810151838201526020016128d2565b50505050905090810190601f1680156129175780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15801561293a57600080fd5b505af192505050801561295f57506040513d602081101561295a57600080fd5b505160015b61296b57612655613883565b7fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e6100000000000000000000000000000000000000000000000000000000146127ac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613a166028913960400191505060405180910390fd5b600081612a1157600080fd5b6000612a1d8484612b59565b90506f7fffffffffffffffffffffffffffffff6fffffffffffffffffffffffffffffffff8216111561193957600080fd5b600081612a5d57506000610552565b600083600f0b1215612a6e57600080fd5b600f83900b6fffffffffffffffffffffffffffffffff8316810260401c90608084901c0277ffffffffffffffffffffffffffffffffffffffffffffffff811115612ab757600080fd5b60401b8119811115612ac857600080fd5b019392505050565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152902054612b0a90826118f7565b600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff909716835295815285822092909255928352600490529190208054919091039055565b3b151590565b600081612b6557600080fd5b600077ffffffffffffffffffffffffffffffffffffffffffffffff8411612b9b5782604085901b81612b9357fe5b049050612cb2565b60c084811c6401000000008110612bb4576020918201911c5b620100008110612bc6576010918201911c5b6101008110612bd7576008918201911c5b60108110612be7576004918201911c5b60048110612bf7576002918201911c5b60028110612c06576001820191505b60bf820360018603901c6001018260ff0387901b81612c2157fe5b0492506fffffffffffffffffffffffffffffffff831115612c4157600080fd5b608085901c83026fffffffffffffffffffffffffffffffff8616840260c088901c604089901b82811015612c76576001820391505b608084901b92900382811015612c8d576001820391505b829003608084901c8214612c9d57fe5b888181612ca657fe5b04870196505050505050505b6fffffffffffffffffffffffffffffffff81111561193957600080fd5b60008083601f840112612ce0578182fd5b50813567ffffffffffffffff811115612cf7578182fd5b6020830191508360208083028501011115612d1157600080fd5b9250929050565b600082601f830112612d28578081fd5b81356020612d3d612d388361385f565b61383b565b8281528181019085830183850287018401881015612d59578586fd5b855b85811015612d7757813584529284019290840190600101612d5b565b5090979650505050505050565b60008083601f840112612d95578182fd5b50813567ffffffffffffffff811115612dac578182fd5b602083019150836020828501011115612d1157600080fd5b600082601f830112612dd4578081fd5b813567ffffffffffffffff811115612de857fe5b612e1960207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161383b565b818152846020838601011115612e2d578283fd5b816020850160208301379081016020019190915292915050565b803567ffffffffffffffff811681146105ab57600080fd5b60008060408385031215612e71578182fd5b8235612e7c816139bc565b91506020830135612e8c816139bc565b809150509250929050565b60008060008060008060008060a0898b031215612eb2578384fd5b8835612ebd816139bc565b97506020890135612ecd816139bc565b9650604089013567ffffffffffffffff80821115612ee9578586fd5b612ef58c838d01612ccf565b909850965060608b0135915080821115612f0d578586fd5b612f198c838d01612ccf565b909650945060808b0135915080821115612f31578384fd5b50612f3e8b828c01612d84565b999c989b5096995094979396929594505050565b600080600080600060a08688031215612f69578081fd5b8535612f74816139bc565b94506020860135612f84816139bc565b9350604086013567ffffffffffffffff80821115612fa0578283fd5b612fac89838a01612d18565b94506060880135915080821115612fc1578283fd5b612fcd89838a01612d18565b93506080880135915080821115612fe2578283fd5b50612fef88828901612dc4565b9150509295509295909350565b60008060008060808587031215613011578384fd5b843561301c816139bc565b9350602085013561302c816139bc565b925060408501359150606085013567ffffffffffffffff81111561304e578182fd5b61305a87828801612dc4565b91505092959194509250565b60008060008060008060a0878903121561307e578182fd5b8635613089816139bc565b95506020870135613099816139bc565b94506040870135935060608701359250608087013567ffffffffffffffff8111156130c2578283fd5b6130ce89828a01612d84565b979a9699509497509295939492505050565b600080600080600060a086880312156130f7578283fd5b8535613102816139bc565b94506020860135613112816139bc565b93506040860135925060608601359150608086013567ffffffffffffffff81111561313b578182fd5b612fef88828901612dc4565b60008060408385031215613159578182fd5b8235613164816139bc565b915060208301358015158114612e8c578182fd5b600080828403606081121561318b578283fd5b8335613196816139bc565b925060407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0820112156131c7578182fd5b506020830190509250929050565b600080604083850312156131e7578182fd5b82356131f2816139bc565b946020939093013593505050565b60008060408385031215613212578182fd5b823561321d816139bc565b915061322b60208401612e47565b90509250929050565b60008060408385031215613246578182fd5b823567ffffffffffffffff8082111561325d578384fd5b818501915085601f830112613270578384fd5b81356020613280612d388361385f565b82815281810190858301838502870184018b101561329c578889fd5b8896505b848710156132c75780356132b3816139bc565b8352600196909601959183019183016132a0565b50965050860135925050808211156132dd578283fd5b506132ea85828601612d18565b9150509250929050565b600060208284031215613305578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611939578182fd5b60008060008060006080868803121561334b578283fd5b8535613356816139bc565b94506020860135935061336b60408701612e47565b9250606086013567ffffffffffffffff811115613386578182fd5b61339288828901612d84565b969995985093965092949392505050565b600080600080600060a086880312156133ba578283fd5b85356133c5816139bc565b9450602086013593506133da60408701612e47565b92506060860135915060808601356133f1816139bc565b809150509295509295909350565b60008060008060008060008060e0898b03121561341a578182fd5b8835613425816139bc565b97506020890135965061343a60408a01612e47565b9550606089013594506080890135613451816139bc565b935060a0890135613461816139bc565b925060c089013567ffffffffffffffff81111561347c578283fd5b612f3e8b828c01612d84565b60008060008060008060a087890312156134a0578384fd5b86356134ab816139bc565b9550602087013594506134c060408801612e47565b935060608701359250608087013567ffffffffffffffff8111156130c2578283fd5b6000602082840312156134f3578081fd5b5035919050565b6000806040838503121561350c578182fd5b823591506020830135612e8c816139bc565b60006020828403121561352f578081fd5b61193982612e47565b6000806040838503121561354a578182fd5b6131f283612e47565b60008060008060008060a0878903121561356b578384fd5b61357487612e47565b95506020870135945060408701356134c0816139bc565b600080600080608085870312156135a0578182fd5b6135a985612e47565b93506020850135925060408501359150606085013567ffffffffffffffff81111561304e578182fd5b60008151808452815b818110156135f7576020818501810151868301820152016135db565b818111156136085782602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008235613648816139bc565b73ffffffffffffffffffffffffffffffffffffffff168252506020918201359181019190915260400190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015283606083015260a060808301526136da60a08301846135d2565b979650505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a060808301528260a0830152828460c084013781830160c090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010195945050505050565b6020808252825182820181905260009190848201906040850190845b818110156137a057835183529284019291840191600101613784565b50909695505050505050565b901515815260200190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b60006020825261193960208301846135d2565b90815260200190565b67ffffffffffffffff91909116815260200190565b60405181810167ffffffffffffffff8111828210171561385757fe5b604052919050565b600067ffffffffffffffff82111561387357fe5b5060209081020190565b60e01c90565b600060443d101561389357611fdf565b600481823e6308c379a06138a7825161387d565b146138b157611fdf565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d67ffffffffffffffff81602484011181841117156138ff5750505050611fdf565b828401925082519150808211156139195750505050611fdf565b503d8301602082840101111561393157505050611fdf565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810160200160405291505090565b813561396f816139bc565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550602082013560018201555050565b73ffffffffffffffffffffffffffffffffffffffff811681146139de57600080fd5b5056fe455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73455243313135353a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373455243313135353a2062617463682062616c616e636520717565727920666f7220746865207a65726f2061646472657373596f752063616e277420747261646520636f6e646974696f6e616c20746f6b656e732061667465722072656465656d2e455243313135353a207461726765742061646472657373206d757374206265206e6f6e2d7a65726f455243313135353a206e656564206f70657261746f7220617070726f76616c20666f7220337264207061727479207472616e73666572732e455243313135353a2073657474696e6720617070726f76616c2073746174757320666f722073656c66455243313135353a2049447320616e64205f76616c756573206d75737420686176652073616d65206c656e67746873455243313135353a206163636f756e747320616e6420696473206c656e677468206d69736d61746368455243313135353a206d696e7420746f20746865207a65726f2061646472657373a26469706673582212207cceda158cf074a2a38f572676462d1fce5cbec0c493fea422ec4c90c43e393664736f6c63430007060033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101ef5760003560e01c8063837b0f841161010f578063d0ee90c5116100a2578063f23a6e6111610071578063f23a6e6114610466578063f242432a14610479578063f52f368d1461048c578063f59407b41461049f576101ef565b8063d0ee90c51461040c578063d866e25d1461041f578063e985e9c514610440578063ebf38ffb14610453576101ef565b8063bc197c81116100de578063bc197c81146103c0578063bd85b039146103d3578063c3a0d776146103e6578063c3dcfd41146103f9576101ef565b8063837b0f841461037f578063922aac9c1461038757806392d2a6bc1461039a578063a22cb465146103ad576101ef565b80632ef0ce781161018757806356c742dc1161015657806356c742dc1461032657806361fbc14a146103465780636695821f14610359578063770744481461036c576101ef565b80632ef0ce78146102cb57806334fc81c4146102de57806347a2fd8d146102f15780634e1273f414610306576101ef565b80630e89341c116101c35780630e89341c14610265578063150b7a02146102855780632a35cbd8146102a55780632eb2c2d6146102b8576101ef565b8062fdd58e146101f457806301a983df1461021d57806301ffc9a71461023057806305096f2514610250575b600080fd5b6102076102023660046131d5565b6104b2565b604051610214919061381d565b60405180910390f35b61020761022b3660046134fa565b610558565b61024361023e3660046132f4565b610575565b60405161021491906137ac565b61026361025e366004613334565b6105b0565b005b6102786102733660046134e2565b6106be565b604051610214919061380a565b610298610293366004612ffc565b610774565b60405161021491906137b7565b6102636102b336600461358b565b61079d565b6102636102c6366004612e97565b6108d1565b6102636102d93660046133ff565b6109ae565b6102076102ec36600461351e565b610c11565b6102f9610c2d565b6040516102149190613826565b610319610314366004613234565b610c49565b6040516102149190613768565b61033961033436600461351e565b610e2f565b6040516102149190613674565b6103396103543660046134e2565b610e61565b6102076103673660046134fa565b610e89565b61020761037a36600461351e565b610ea6565b6102f9610eb8565b610263610395366004613488565b610ec8565b6102436103a836600461351e565b611190565b6102636103bb366004613147565b611196565b6102986103ce366004612f52565b6112f1565b6102076103e13660046134e2565b61131b565b6102f96103f4366004613178565b61132d565b610263610407366004613200565b6113b4565b61026361041a366004613553565b6114da565b61043261042d36600461351e565b611611565b6040516102149291906137e4565b61024361044e366004612e5f565b611643565b6102076104613660046133a3565b61167e565b6102986104743660046130e0565b6116a9565b610263610487366004613066565b6116d3565b61024361049a3660046131d5565b611728565b6102636104ad366004613538565b611760565b600073ffffffffffffffffffffffffffffffffffffffff8316610520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613a3e602b913960400191505060405180910390fd5b50600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020545b92915050565b600a60209081526000928352604080842090915290825290205481565b7fffffffff00000000000000000000000000000000000000000000000000000000811660009081526020819052604090205460ff165b919050565b60006105bd86868661181d565b905060006105cb87876118a0565b9050600061067f6105dc30846104b2565b604080517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018b9052905173ffffffffffffffffffffffffffffffffffffffff8c169162fdd58e916044808301926020929190829003018186803b15801561064d57600080fd5b505afa158015610661573d6000803e3d6000fd5b505050506040513d602081101561067757600080fd5b5051906118f7565b9050600061068d30846104b2565b61069730866104b2565b8302816106a057fe5b0490506106b38989898430308c8c6109ae565b505050505050505050565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107685780601f1061073d57610100808354040283529160200191610768565b820191906000526020600020905b81548152906001019060200180831161074b57829003601f168201915b50505050509050919050565b7f150b7a0200000000000000000000000000000000000000000000000000000000949350505050565b826107a781611940565b61081257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f49742773206e6f7420796f757220636f6e646974696f6e616c2e000000000000604482015290519081900360640190fd5b67ffffffffffffffff85166000908152600d602052604090206108373386868661194e565b805460018201546040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163f242432a9161089791339130918a908a90600401613695565b600060405180830381600087803b1580156108b157600080fd5b505af11580156108c5573d6000803e3d6000fd5b50505050505050505050565b60005b85811015610900576108f88787838181106108eb57fe5b905060200201358a6119fd565b6001016108d4565b506109a4888888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808c0282810182019093528b82529093508b92508a91829185019084908082843760009201919091525050604080516020601f8b018190048102820181019092528981529250899150889081908401838280828437600092019190915250611a8b92505050565b5050505050505050565b60006109bb89898961181d565b90506109ff84828886868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d6792505050565b6000610a0b8a8a6118a0565b9050610a4f85828987878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d6792505050565b8573ffffffffffffffffffffffffffffffffffffffff16898b73ffffffffffffffffffffffffffffffffffffffff167fe29f51ae5c82c0500c7c66f9ab40c2f68e940a624c8ba42e287ee98eeced4e378a898989604051808581526020018473ffffffffffffffffffffffffffffffffffffffff168152602001806020018281038252848482818152602001925080828437600083820152604051601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690920182900397509095505050505050a48973ffffffffffffffffffffffffffffffffffffffff1663f242432a87308c8b89896040518763ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015610bed57600080fd5b505af1158015610c01573d6000803e3d6000fd5b5050505050505050505050505050565b67ffffffffffffffff1660009081526007602052604090205490565b60055468010000000000000000900467ffffffffffffffff1681565b60608151835114610ca5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180613b826029913960400191505060405180910390fd5b6000835167ffffffffffffffff81118015610cbf57600080fd5b50604051908082528060200260200182016040528015610ce9578160200160208202803683370190505b50905060005b8451811015610e2757600073ffffffffffffffffffffffffffffffffffffffff16858281518110610d1c57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415610d91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180613a696031913960400191505060405180910390fd5b60016000858381518110610da157fe5b602002602001015181526020019081526020016000206000868381518110610dc557fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054828281518110610e1457fe5b6020908102919091010152600101610cef565b509392505050565b67ffffffffffffffff1660009081526006602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b600c6020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b600960209081526000928352604080842090915290825290205481565b600b6020526000908152604090205481565b60055467ffffffffffffffff1681565b610ed184611190565b610f3c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f746f6f206561726c790000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6000610f4785611e45565b336000818152600860209081526040808320898452909152812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790559192508190610fa1908a908a908a908a9088611e64565b9150915080600014611000576000610fb88361131b565b90508315610fe15760008381526009602090815260408083203384529091529020819055610ffe565b6000838152600a6020908152604080832033845290915290208190555b505b826110445767ffffffffffffffff87166000908152600b60205260409020546110299082611f69565b67ffffffffffffffff88166000908152600b60205260409020555b8873ffffffffffffffffffffffffffffffffffffffff1663f242432a30338b858a8a6040518763ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b15801561110f57600080fd5b505af1158015611123573d6000803e3d6000fd5b50506040805133815260208101859052815167ffffffffffffffff8c1694508c935073ffffffffffffffffffffffffffffffffffffffff8e16927f72d4fd47a9fbaff0f6860417149191d0520595c12e2f7d4828bac210e6ad3dbc928290030190a4505050505050505050565b50600190565b8173ffffffffffffffffffffffffffffffffffffffff166111b5611fdd565b73ffffffffffffffffffffffffffffffffffffffff161415611222576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180613b2a6029913960400191505060405180910390fd5b806002600061122f611fdd565b73ffffffffffffffffffffffffffffffffffffffff90811682526020808301939093526040918201600090812091871680825291909352912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169215159290921790915561129e611fdd565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b7fbc197c810000000000000000000000000000000000000000000000000000000095945050505050565b60009081526004602052604090205490565b60008061133984611fe2565b67ffffffffffffffff81166000908152600d6020526040902090915083906113618282613964565b505060405161137190849061363b565b6040519081900381209067ffffffffffffffff8316907fccbe6925a35a7eab934fc74faad8e09bf5ed7170964e8478fd3d12c7791a117190600090a39392505050565b67ffffffffffffffff8116600090815260066020526040902054819073ffffffffffffffffffffffffffffffffffffffff16331461145357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4e6f7420746865206f7261636c65206f776e65722e0000000000000000000000604482015290519081900360640190fd5b67ffffffffffffffff821660008181526006602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8816908117909155905190917f74793e794a02a6a170c6c9946770eee45a5b771297549c7a134b186d7004f2d491a3505050565b846114e481611940565b61154f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f49742773206e6f7420796f757220636f6e646974696f6e616c2e000000000000604482015290519081900360640190fd5b67ffffffffffffffff87166000908152600d602052604090206115733388876120fc565b805460018201546040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163f242432a916115d59130918b918b908b908b906004016136e5565b600060405180830381600087803b1580156115ef57600080fd5b505af1158015611603573d6000803e3d6000fd5b505050505050505050505050565b600d602052600090815260409020805460019091015473ffffffffffffffffffffffffffffffffffffffff9091169082565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205460ff1690565b60008061168a85611e45565b9050600061169c888888888887611e64565b9998505050505050505050565b7ff23a6e610000000000000000000000000000000000000000000000000000000095945050505050565b6116dd84876119fd565b6117208686868686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061216492505050565b505050505050565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600860209081526040808320938352929052205460ff1690565b67ffffffffffffffff8216600090815260066020526040902054829073ffffffffffffffffffffffffffffffffffffffff1633146117ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4e6f7420746865206f7261636c65206f776e65722e0000000000000000000000604482015290519081900360640190fd5b5067ffffffffffffffff909116600090815260076020526040902055565b6040805160609490941b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016602080860191909152603485019390935260c09190911b7fffffffffffffffff0000000000000000000000000000000000000000000000001660548401528051808403603c018152605c9093019052815191012090565b6040805160609390931b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020808501919091526034808501939093528151808503909301835260549093019052805191012090565b600061193983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061231c565b9392505050565b680100000000000000001190565b6000838152600c602052604090205473ffffffffffffffffffffffffffffffffffffffff8581169116146119e357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4f7468657227732073616c6172792067657420617474656d70742e0000000000604482015290519081900360640190fd5b6119f76119ef85611fdf565b848484611d67565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260086020908152604080832085845290915290205460ff1615611a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180613a9a6030913960400191505060405180910390fd5b5050565b8151835114611ae5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613b53602f913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8416611b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613aca6028913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8516331480611baa575073ffffffffffffffffffffffffffffffffffffffff8516600090815260026020908152604080832033845290915290205460ff1615156001145b611bff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180613af26038913960400191505060405180910390fd5b60005b8351811015611c51576000848281518110611c1957fe5b602002602001015190506000848381518110611c3157fe5b60200260200101519050611c47828989846123cd565b5050600101611c02565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015611cfe578181015183820152602001611ce6565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015611d3d578181015183820152602001611d25565b5050505090500194505050505060405180910390a4611d60338686868686612483565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff8416611dd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613bab6021913960400191505060405180910390fd5b611dde8484846127b5565b6040805184815260208101849052815173ffffffffffffffffffffffffffffffffffffffff87169260009233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62929181900390910190a46119f733600086868686612815565b67ffffffffffffffff1660009081526007602052604090205442111590565b6000806000611e7385876104b2565b9050600084611e9b5767ffffffffffffffff88166000908152600b6020526040902054611ea4565b611ea48761131b565b9050611eb18a8a8a61181d565b93506000611ebf8383612a05565b9050600086611efd576000868152600a6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8c168452909152902054611f2e565b600086815260096020908152604080832073ffffffffffffffffffffffffffffffffffffffff8c1684529091529020545b611f378761131b565b0390506000611f478b8b85610552565b9050611f57600f82900b83612a4e565b95505050505050965096945050505050565b60008282018381101561193957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b335b90565b600580547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008116600167ffffffffffffffff92831601918216908117909255600082815260066020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8816179055805133815291820194909452835191937f3a39e4ca958a680cb67189b53ab4494bee80524d836f52094ab41cea81219ffe92918290030190a160405167ffffffffffffffff82169073ffffffffffffffffffffffffffffffffffffffff8516907f74793e794a02a6a170c6c9946770eee45a5b771297549c7a134b186d7004f2d490600090a392915050565b612107838383612ad0565b6040805183815260208101839052815160009273ffffffffffffffffffffffffffffffffffffffff87169233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62929181900390910190a4505050565b73ffffffffffffffffffffffffffffffffffffffff84166121d0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613aca6028913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8516331480612229575073ffffffffffffffffffffffffffffffffffffffff8516600090815260026020908152604080832033845290915290205460ff1615156001145b61227e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180613af26038913960400191505060405180910390fd5b61228a838686856123cd565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628686604051808381526020018281526020019250505060405180910390a4611d60338686868686612815565b600081848411156123c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561238a578181015183820152602001612372565b50505050905090810190601f1680156123b75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600084815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915290205461240790826118f7565b600085815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff888116855292528083209390935584168152205461244c908290611f69565b600094855260016020908152604080872073ffffffffffffffffffffffffffffffffffffffff909516875293905291909320555050565b6124a28473ffffffffffffffffffffffffffffffffffffffff16612b53565b15611720578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b8381101561255757818101518382015260200161253f565b50505050905001848103835286818151815260200191508051906020019060200280838360005b8381101561259657818101518382015260200161257e565b50505050905001848103825285818151815260200191508051906020019080838360005b838110156125d25781810151838201526020016125ba565b50505050905090810190601f1680156125ff5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b15801561262457600080fd5b505af192505050801561264957506040513d602081101561264457600080fd5b505160015b61271257612655613883565b8061266057506126c1565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181815283516024840152835184939192839260440191908501908083836000831561238a578181015183820152602001612372565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806139e26034913960400191505060405180910390fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c8100000000000000000000000000000000000000000000000000000000146127ac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613a166028913960400191505060405180910390fd5b50505050505050565b6000828152600460205260409020546127ce9082611f69565b6000928352600460209081526040808520929092556001815281842073ffffffffffffffffffffffffffffffffffffffff9590951684529390935291902080549091019055565b6128348473ffffffffffffffffffffffffffffffffffffffff16612b53565b15611720578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156128ea5781810151838201526020016128d2565b50505050905090810190601f1680156129175780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15801561293a57600080fd5b505af192505050801561295f57506040513d602081101561295a57600080fd5b505160015b61296b57612655613883565b7fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e6100000000000000000000000000000000000000000000000000000000146127ac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613a166028913960400191505060405180910390fd5b600081612a1157600080fd5b6000612a1d8484612b59565b90506f7fffffffffffffffffffffffffffffff6fffffffffffffffffffffffffffffffff8216111561193957600080fd5b600081612a5d57506000610552565b600083600f0b1215612a6e57600080fd5b600f83900b6fffffffffffffffffffffffffffffffff8316810260401c90608084901c0277ffffffffffffffffffffffffffffffffffffffffffffffff811115612ab757600080fd5b60401b8119811115612ac857600080fd5b019392505050565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152902054612b0a90826118f7565b600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff909716835295815285822092909255928352600490529190208054919091039055565b3b151590565b600081612b6557600080fd5b600077ffffffffffffffffffffffffffffffffffffffffffffffff8411612b9b5782604085901b81612b9357fe5b049050612cb2565b60c084811c6401000000008110612bb4576020918201911c5b620100008110612bc6576010918201911c5b6101008110612bd7576008918201911c5b60108110612be7576004918201911c5b60048110612bf7576002918201911c5b60028110612c06576001820191505b60bf820360018603901c6001018260ff0387901b81612c2157fe5b0492506fffffffffffffffffffffffffffffffff831115612c4157600080fd5b608085901c83026fffffffffffffffffffffffffffffffff8616840260c088901c604089901b82811015612c76576001820391505b608084901b92900382811015612c8d576001820391505b829003608084901c8214612c9d57fe5b888181612ca657fe5b04870196505050505050505b6fffffffffffffffffffffffffffffffff81111561193957600080fd5b60008083601f840112612ce0578182fd5b50813567ffffffffffffffff811115612cf7578182fd5b6020830191508360208083028501011115612d1157600080fd5b9250929050565b600082601f830112612d28578081fd5b81356020612d3d612d388361385f565b61383b565b8281528181019085830183850287018401881015612d59578586fd5b855b85811015612d7757813584529284019290840190600101612d5b565b5090979650505050505050565b60008083601f840112612d95578182fd5b50813567ffffffffffffffff811115612dac578182fd5b602083019150836020828501011115612d1157600080fd5b600082601f830112612dd4578081fd5b813567ffffffffffffffff811115612de857fe5b612e1960207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161383b565b818152846020838601011115612e2d578283fd5b816020850160208301379081016020019190915292915050565b803567ffffffffffffffff811681146105ab57600080fd5b60008060408385031215612e71578182fd5b8235612e7c816139bc565b91506020830135612e8c816139bc565b809150509250929050565b60008060008060008060008060a0898b031215612eb2578384fd5b8835612ebd816139bc565b97506020890135612ecd816139bc565b9650604089013567ffffffffffffffff80821115612ee9578586fd5b612ef58c838d01612ccf565b909850965060608b0135915080821115612f0d578586fd5b612f198c838d01612ccf565b909650945060808b0135915080821115612f31578384fd5b50612f3e8b828c01612d84565b999c989b5096995094979396929594505050565b600080600080600060a08688031215612f69578081fd5b8535612f74816139bc565b94506020860135612f84816139bc565b9350604086013567ffffffffffffffff80821115612fa0578283fd5b612fac89838a01612d18565b94506060880135915080821115612fc1578283fd5b612fcd89838a01612d18565b93506080880135915080821115612fe2578283fd5b50612fef88828901612dc4565b9150509295509295909350565b60008060008060808587031215613011578384fd5b843561301c816139bc565b9350602085013561302c816139bc565b925060408501359150606085013567ffffffffffffffff81111561304e578182fd5b61305a87828801612dc4565b91505092959194509250565b60008060008060008060a0878903121561307e578182fd5b8635613089816139bc565b95506020870135613099816139bc565b94506040870135935060608701359250608087013567ffffffffffffffff8111156130c2578283fd5b6130ce89828a01612d84565b979a9699509497509295939492505050565b600080600080600060a086880312156130f7578283fd5b8535613102816139bc565b94506020860135613112816139bc565b93506040860135925060608601359150608086013567ffffffffffffffff81111561313b578182fd5b612fef88828901612dc4565b60008060408385031215613159578182fd5b8235613164816139bc565b915060208301358015158114612e8c578182fd5b600080828403606081121561318b578283fd5b8335613196816139bc565b925060407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0820112156131c7578182fd5b506020830190509250929050565b600080604083850312156131e7578182fd5b82356131f2816139bc565b946020939093013593505050565b60008060408385031215613212578182fd5b823561321d816139bc565b915061322b60208401612e47565b90509250929050565b60008060408385031215613246578182fd5b823567ffffffffffffffff8082111561325d578384fd5b818501915085601f830112613270578384fd5b81356020613280612d388361385f565b82815281810190858301838502870184018b101561329c578889fd5b8896505b848710156132c75780356132b3816139bc565b8352600196909601959183019183016132a0565b50965050860135925050808211156132dd578283fd5b506132ea85828601612d18565b9150509250929050565b600060208284031215613305578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611939578182fd5b60008060008060006080868803121561334b578283fd5b8535613356816139bc565b94506020860135935061336b60408701612e47565b9250606086013567ffffffffffffffff811115613386578182fd5b61339288828901612d84565b969995985093965092949392505050565b600080600080600060a086880312156133ba578283fd5b85356133c5816139bc565b9450602086013593506133da60408701612e47565b92506060860135915060808601356133f1816139bc565b809150509295509295909350565b60008060008060008060008060e0898b03121561341a578182fd5b8835613425816139bc565b97506020890135965061343a60408a01612e47565b9550606089013594506080890135613451816139bc565b935060a0890135613461816139bc565b925060c089013567ffffffffffffffff81111561347c578283fd5b612f3e8b828c01612d84565b60008060008060008060a087890312156134a0578384fd5b86356134ab816139bc565b9550602087013594506134c060408801612e47565b935060608701359250608087013567ffffffffffffffff8111156130c2578283fd5b6000602082840312156134f3578081fd5b5035919050565b6000806040838503121561350c578182fd5b823591506020830135612e8c816139bc565b60006020828403121561352f578081fd5b61193982612e47565b6000806040838503121561354a578182fd5b6131f283612e47565b60008060008060008060a0878903121561356b578384fd5b61357487612e47565b95506020870135945060408701356134c0816139bc565b600080600080608085870312156135a0578182fd5b6135a985612e47565b93506020850135925060408501359150606085013567ffffffffffffffff81111561304e578182fd5b60008151808452815b818110156135f7576020818501810151868301820152016135db565b818111156136085782602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008235613648816139bc565b73ffffffffffffffffffffffffffffffffffffffff168252506020918201359181019190915260400190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015283606083015260a060808301526136da60a08301846135d2565b979650505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a060808301528260a0830152828460c084013781830160c090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010195945050505050565b6020808252825182820181905260009190848201906040850190845b818110156137a057835183529284019291840191600101613784565b50909695505050505050565b901515815260200190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b60006020825261193960208301846135d2565b90815260200190565b67ffffffffffffffff91909116815260200190565b60405181810167ffffffffffffffff8111828210171561385757fe5b604052919050565b600067ffffffffffffffff82111561387357fe5b5060209081020190565b60e01c90565b600060443d101561389357611fdf565b600481823e6308c379a06138a7825161387d565b146138b157611fdf565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d67ffffffffffffffff81602484011181841117156138ff5750505050611fdf565b828401925082519150808211156139195750505050611fdf565b503d8301602082840101111561393157505050611fdf565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810160200160405291505090565b813561396f816139bc565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550602082013560018201555050565b73ffffffffffffffffffffffffffffffffffffffff811681146139de57600080fd5b5056fe455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73455243313135353a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373455243313135353a2062617463682062616c616e636520717565727920666f7220746865207a65726f2061646472657373596f752063616e277420747261646520636f6e646974696f6e616c20746f6b656e732061667465722072656465656d2e455243313135353a207461726765742061646472657373206d757374206265206e6f6e2d7a65726f455243313135353a206e656564206f70657261746f7220617070726f76616c20666f7220337264207061727479207472616e73666572732e455243313135353a2073657474696e6720617070726f76616c2073746174757320666f722073656c66455243313135353a2049447320616e64205f76616c756573206d75737420686176652073616d65206c656e67746873455243313135353a206163636f756e747320616e6420696473206c656e677468206d69736d61746368455243313135353a206d696e7420746f20746865207a65726f2061646472657373a26469706673582212207cceda158cf074a2a38f572676462d1fce5cbec0c493fea422ec4c90c43e393664736f6c63430007060033",
  "immutableReferences": {},
  "generatedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:1105:33",
        "statements": [
          {
            "nodeType": "YulBlock",
            "src": "6:3:33",
            "statements": []
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "105:998:33",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "115:12:33",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "125:2:33",
                    "type": "",
                    "value": "32"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "119:2:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "172:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "181:6:33"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "189:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "174:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "174:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "174:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "147:7:33"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "156:9:33"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "143:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "143:23:33"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "168:2:33"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "139:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "139:32:33"
                  },
                  "nodeType": "YulIf",
                  "src": "136:2:33"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "207:30:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "227:9:33"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "221:5:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "221:16:33"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "211:6:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "246:28:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "264:2:33",
                            "type": "",
                            "value": "64"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "268:1:33",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "260:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "260:10:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "272:1:33",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nodeType": "YulIdentifier",
                      "src": "256:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "256:18:33"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "250:2:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "301:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "310:6:33"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "318:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "303:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "303:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "303:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "289:6:33"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "297:2:33"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "286:2:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "286:14:33"
                  },
                  "nodeType": "YulIf",
                  "src": "283:2:33"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "336:32:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "350:9:33"
                      },
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "361:6:33"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "346:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "346:22:33"
                  },
                  "variables": [
                    {
                      "name": "_3",
                      "nodeType": "YulTypedName",
                      "src": "340:2:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "416:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "425:6:33"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "433:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "418:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "418:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "418:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_3",
                                "nodeType": "YulIdentifier",
                                "src": "395:2:33"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "399:4:33",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "391:3:33"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "391:13:33"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "406:7:33"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "387:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "387:27:33"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "380:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "380:35:33"
                  },
                  "nodeType": "YulIf",
                  "src": "377:2:33"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "451:19:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "_3",
                        "nodeType": "YulIdentifier",
                        "src": "467:2:33"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "461:5:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "461:9:33"
                  },
                  "variables": [
                    {
                      "name": "_4",
                      "nodeType": "YulTypedName",
                      "src": "455:2:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "493:13:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "invalid",
                            "nodeType": "YulIdentifier",
                            "src": "495:7:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "495:9:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "495:9:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "_4",
                        "nodeType": "YulIdentifier",
                        "src": "485:2:33"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "489:2:33"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "482:2:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "482:10:33"
                  },
                  "nodeType": "YulIf",
                  "src": "479:2:33"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "515:23:33",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "535:2:33",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "529:5:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "529:9:33"
                  },
                  "variables": [
                    {
                      "name": "memPtr",
                      "nodeType": "YulTypedName",
                      "src": "519:6:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "547:67:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "573:6:33"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "589:2:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "593:4:33",
                                    "type": "",
                                    "value": "0x1f"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "585:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "585:13:33"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "604:2:33",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "600:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "600:7:33"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "581:3:33"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "581:27:33"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "569:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "569:40:33"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "611:2:33"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "565:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "565:49:33"
                  },
                  "variables": [
                    {
                      "name": "newFreePtr",
                      "nodeType": "YulTypedName",
                      "src": "551:10:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "673:13:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "invalid",
                            "nodeType": "YulIdentifier",
                            "src": "675:7:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "675:9:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "675:9:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "632:10:33"
                          },
                          {
                            "name": "_2",
                            "nodeType": "YulIdentifier",
                            "src": "644:2:33"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "629:2:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "629:18:33"
                      },
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "652:10:33"
                          },
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "664:6:33"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "649:2:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "649:22:33"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nodeType": "YulIdentifier",
                      "src": "626:2:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "626:46:33"
                  },
                  "nodeType": "YulIf",
                  "src": "623:2:33"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "702:2:33",
                        "type": "",
                        "value": "64"
                      },
                      {
                        "name": "newFreePtr",
                        "nodeType": "YulIdentifier",
                        "src": "706:10:33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "695:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "695:22:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "695:22:33"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "733:6:33"
                      },
                      {
                        "name": "_4",
                        "nodeType": "YulIdentifier",
                        "src": "741:2:33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "726:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "726:18:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "726:18:33"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "790:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "799:6:33"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "807:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "792:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "792:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "792:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_3",
                                "nodeType": "YulIdentifier",
                                "src": "767:2:33"
                              },
                              {
                                "name": "_4",
                                "nodeType": "YulIdentifier",
                                "src": "771:2:33"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "763:3:33"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "763:11:33"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "776:2:33"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "759:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "759:20:33"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "781:7:33"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "756:2:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "756:33:33"
                  },
                  "nodeType": "YulIf",
                  "src": "753:2:33"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "825:15:33",
                  "value": {
                    "name": "value0",
                    "nodeType": "YulIdentifier",
                    "src": "834:6:33"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "829:1:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "895:83:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "memPtr",
                                      "nodeType": "YulIdentifier",
                                      "src": "924:6:33"
                                    },
                                    {
                                      "name": "i",
                                      "nodeType": "YulIdentifier",
                                      "src": "932:1:33"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "920:3:33"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "920:14:33"
                                },
                                {
                                  "name": "_1",
                                  "nodeType": "YulIdentifier",
                                  "src": "936:2:33"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "916:3:33"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "916:23:33"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "955:2:33"
                                        },
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "959:1:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "951:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "951:10:33"
                                    },
                                    {
                                      "name": "_1",
                                      "nodeType": "YulIdentifier",
                                      "src": "963:2:33"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "947:3:33"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "947:19:33"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "941:5:33"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "941:26:33"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "909:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "909:59:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "909:59:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "860:1:33"
                      },
                      {
                        "name": "_4",
                        "nodeType": "YulIdentifier",
                        "src": "863:2:33"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "857:2:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "857:9:33"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "867:19:33",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "869:15:33",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "878:1:33"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "881:2:33"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "874:3:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "874:10:33"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "869:1:33"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "853:3:33",
                    "statements": []
                  },
                  "src": "849:129:33"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1008:64:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "memPtr",
                                      "nodeType": "YulIdentifier",
                                      "src": "1037:6:33"
                                    },
                                    {
                                      "name": "_4",
                                      "nodeType": "YulIdentifier",
                                      "src": "1045:2:33"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "1033:3:33"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "1033:15:33"
                                },
                                {
                                  "name": "_1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1050:2:33"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "1029:3:33"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1029:24:33"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "1055:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "1022:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1022:40:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1022:40:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "993:1:33"
                      },
                      {
                        "name": "_4",
                        "nodeType": "YulIdentifier",
                        "src": "996:2:33"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "990:2:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "990:9:33"
                  },
                  "nodeType": "YulIf",
                  "src": "987:2:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1081:16:33",
                  "value": {
                    "name": "memPtr",
                    "nodeType": "YulIdentifier",
                    "src": "1091:6:33"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "1081:6:33"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_string_memory_ptr_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "71:9:33",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "82:7:33",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "94:6:33",
                "type": ""
              }
            ],
            "src": "14:1089:33"
          }
        ]
      },
      "contents": "{\n    { }\n    function abi_decode_tuple_t_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        let _1 := 32\n        if slt(sub(dataEnd, headStart), _1) { revert(value0, value0) }\n        let offset := mload(headStart)\n        let _2 := sub(shl(64, 1), 1)\n        if gt(offset, _2) { revert(value0, value0) }\n        let _3 := add(headStart, offset)\n        if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(value0, value0) }\n        let _4 := mload(_3)\n        if gt(_4, _2) { invalid() }\n        let memPtr := mload(64)\n        let newFreePtr := add(add(memPtr, and(add(_4, 0x1f), not(31))), _1)\n        if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { invalid() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _4)\n        if gt(add(add(_3, _4), _1), dataEnd) { revert(value0, value0) }\n        let i := value0\n        for { } lt(i, _4) { i := add(i, _1) }\n        {\n            mstore(add(add(memPtr, i), _1), mload(add(add(_3, i), _1)))\n        }\n        if gt(i, _4)\n        {\n            mstore(add(add(memPtr, _4), _1), value0)\n        }\n        value0 := memPtr\n    }\n}",
      "id": 33,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "deployedGeneratedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:23115:33",
        "statements": [
          {
            "nodeType": "YulBlock",
            "src": "6:3:33",
            "statements": []
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "104:314:33",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "153:30:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "arrayPos",
                              "nodeType": "YulIdentifier",
                              "src": "162:8:33"
                            },
                            {
                              "name": "arrayPos",
                              "nodeType": "YulIdentifier",
                              "src": "172:8:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "155:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "155:26:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "155:26:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "132:6:33"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "140:4:33",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "128:3:33"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "128:17:33"
                          },
                          {
                            "name": "end",
                            "nodeType": "YulIdentifier",
                            "src": "147:3:33"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "124:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "124:27:33"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "117:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "117:35:33"
                  },
                  "nodeType": "YulIf",
                  "src": "114:2:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "192:30:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "215:6:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "202:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "202:20:33"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nodeType": "YulIdentifier",
                      "src": "192:6:33"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "265:30:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "arrayPos",
                              "nodeType": "YulIdentifier",
                              "src": "274:8:33"
                            },
                            {
                              "name": "arrayPos",
                              "nodeType": "YulIdentifier",
                              "src": "284:8:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "267:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "267:26:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "267:26:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "237:6:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "245:18:33",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "234:2:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "234:30:33"
                  },
                  "nodeType": "YulIf",
                  "src": "231:2:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "304:29:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "320:6:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "328:4:33",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "316:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "316:17:33"
                  },
                  "variableNames": [
                    {
                      "name": "arrayPos",
                      "nodeType": "YulIdentifier",
                      "src": "304:8:33"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "396:16:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "405:1:33",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "408:1:33",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "398:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "398:12:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "398:12:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "356:6:33"
                              },
                              {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "368:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "376:4:33",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "364:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "364:17:33"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "352:3:33"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "352:30:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "384:4:33",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "348:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "348:41:33"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "391:3:33"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "345:2:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "345:50:33"
                  },
                  "nodeType": "YulIf",
                  "src": "342:2:33"
                }
              ]
            },
            "name": "abi_decode_t_array$_t_uint256_$dyn_calldata",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "67:6:33",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "75:3:33",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "arrayPos",
                "nodeType": "YulTypedName",
                "src": "83:8:33",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "93:6:33",
                "type": ""
              }
            ],
            "src": "14:404:33"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "493:635:33",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "542:24:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "551:5:33"
                            },
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "558:5:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "544:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "544:20:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "544:20:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "521:6:33"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "529:4:33",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "517:3:33"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "517:17:33"
                          },
                          {
                            "name": "end",
                            "nodeType": "YulIdentifier",
                            "src": "536:3:33"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "513:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "513:27:33"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "506:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "506:35:33"
                  },
                  "nodeType": "YulIf",
                  "src": "503:2:33"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "575:30:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "598:6:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "585:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "585:20:33"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "579:2:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "614:14:33",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "624:4:33",
                    "type": "",
                    "value": "0x20"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "618:2:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "637:76:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "709:2:33"
                          }
                        ],
                        "functionName": {
                          "name": "array_allocation_size_t_array$_t_address_$dyn",
                          "nodeType": "YulIdentifier",
                          "src": "663:45:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "663:49:33"
                      }
                    ],
                    "functionName": {
                      "name": "allocateMemory",
                      "nodeType": "YulIdentifier",
                      "src": "648:14:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "648:65:33"
                  },
                  "variables": [
                    {
                      "name": "dst",
                      "nodeType": "YulTypedName",
                      "src": "641:3:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "722:16:33",
                  "value": {
                    "name": "dst",
                    "nodeType": "YulIdentifier",
                    "src": "735:3:33"
                  },
                  "variables": [
                    {
                      "name": "dst_1",
                      "nodeType": "YulTypedName",
                      "src": "726:5:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "dst",
                        "nodeType": "YulIdentifier",
                        "src": "754:3:33"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "759:2:33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "747:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "747:15:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "747:15:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "771:19:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "dst",
                        "nodeType": "YulIdentifier",
                        "src": "782:3:33"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "787:2:33"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "778:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "778:12:33"
                  },
                  "variableNames": [
                    {
                      "name": "dst",
                      "nodeType": "YulIdentifier",
                      "src": "771:3:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "799:26:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "814:6:33"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "822:2:33"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "810:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "810:15:33"
                  },
                  "variables": [
                    {
                      "name": "src",
                      "nodeType": "YulTypedName",
                      "src": "803:3:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "880:24:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "889:5:33"
                            },
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "896:5:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "882:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "882:20:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "882:20:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "848:6:33"
                              },
                              {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "860:2:33"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "864:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "856:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "856:11:33"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "844:3:33"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "844:24:33"
                          },
                          {
                            "name": "_2",
                            "nodeType": "YulIdentifier",
                            "src": "870:2:33"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "840:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "840:33:33"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "875:3:33"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "837:2:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "837:42:33"
                  },
                  "nodeType": "YulIf",
                  "src": "834:2:33"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "913:14:33",
                  "value": {
                    "name": "array",
                    "nodeType": "YulIdentifier",
                    "src": "922:5:33"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "917:1:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "981:118:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "dst",
                              "nodeType": "YulIdentifier",
                              "src": "1002:3:33"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "src",
                                  "nodeType": "YulIdentifier",
                                  "src": "1020:3:33"
                                }
                              ],
                              "functionName": {
                                "name": "calldataload",
                                "nodeType": "YulIdentifier",
                                "src": "1007:12:33"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1007:17:33"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "995:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "995:30:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "995:30:33"
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "1038:19:33",
                        "value": {
                          "arguments": [
                            {
                              "name": "dst",
                              "nodeType": "YulIdentifier",
                              "src": "1049:3:33"
                            },
                            {
                              "name": "_2",
                              "nodeType": "YulIdentifier",
                              "src": "1054:2:33"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "1045:3:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1045:12:33"
                        },
                        "variableNames": [
                          {
                            "name": "dst",
                            "nodeType": "YulIdentifier",
                            "src": "1038:3:33"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "1070:19:33",
                        "value": {
                          "arguments": [
                            {
                              "name": "src",
                              "nodeType": "YulIdentifier",
                              "src": "1081:3:33"
                            },
                            {
                              "name": "_2",
                              "nodeType": "YulIdentifier",
                              "src": "1086:2:33"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "1077:3:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1077:12:33"
                        },
                        "variableNames": [
                          {
                            "name": "src",
                            "nodeType": "YulIdentifier",
                            "src": "1070:3:33"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "947:1:33"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "950:2:33"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "944:2:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "944:9:33"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "954:18:33",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "956:14:33",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "965:1:33"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "968:1:33",
                              "type": "",
                              "value": "1"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "961:3:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "961:9:33"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "956:1:33"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "940:3:33",
                    "statements": []
                  },
                  "src": "936:163:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1108:14:33",
                  "value": {
                    "name": "dst_1",
                    "nodeType": "YulIdentifier",
                    "src": "1117:5:33"
                  },
                  "variableNames": [
                    {
                      "name": "array",
                      "nodeType": "YulIdentifier",
                      "src": "1108:5:33"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_t_array$_t_uint256_$dyn",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "467:6:33",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "475:3:33",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "array",
                "nodeType": "YulTypedName",
                "src": "483:5:33",
                "type": ""
              }
            ],
            "src": "423:705:33"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1207:303:33",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1256:30:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "arrayPos",
                              "nodeType": "YulIdentifier",
                              "src": "1265:8:33"
                            },
                            {
                              "name": "arrayPos",
                              "nodeType": "YulIdentifier",
                              "src": "1275:8:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1258:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1258:26:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1258:26:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "1235:6:33"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1243:4:33",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1231:3:33"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1231:17:33"
                          },
                          {
                            "name": "end",
                            "nodeType": "YulIdentifier",
                            "src": "1250:3:33"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "1227:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1227:27:33"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "1220:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1220:35:33"
                  },
                  "nodeType": "YulIf",
                  "src": "1217:2:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1295:30:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "1318:6:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "1305:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1305:20:33"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nodeType": "YulIdentifier",
                      "src": "1295:6:33"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1368:30:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "arrayPos",
                              "nodeType": "YulIdentifier",
                              "src": "1377:8:33"
                            },
                            {
                              "name": "arrayPos",
                              "nodeType": "YulIdentifier",
                              "src": "1387:8:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1370:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1370:26:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1370:26:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "1340:6:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1348:18:33",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "1337:2:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1337:30:33"
                  },
                  "nodeType": "YulIf",
                  "src": "1334:2:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1407:29:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "1423:6:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1431:4:33",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "1419:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1419:17:33"
                  },
                  "variableNames": [
                    {
                      "name": "arrayPos",
                      "nodeType": "YulIdentifier",
                      "src": "1407:8:33"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1488:16:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1497:1:33",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1500:1:33",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1490:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1490:12:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1490:12:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "1459:6:33"
                              },
                              {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "1467:6:33"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1455:3:33"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1455:19:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1476:4:33",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1451:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1451:30:33"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "1483:3:33"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "1448:2:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1448:39:33"
                  },
                  "nodeType": "YulIf",
                  "src": "1445:2:33"
                }
              ]
            },
            "name": "abi_decode_t_bytes_calldata",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "1170:6:33",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "1178:3:33",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "arrayPos",
                "nodeType": "YulTypedName",
                "src": "1186:8:33",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "1196:6:33",
                "type": ""
              }
            ],
            "src": "1133:377:33"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1569:547:33",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1618:24:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "1627:5:33"
                            },
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "1634:5:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1620:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1620:20:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1620:20:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "1597:6:33"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1605:4:33",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1593:3:33"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1593:17:33"
                          },
                          {
                            "name": "end",
                            "nodeType": "YulIdentifier",
                            "src": "1612:3:33"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "1589:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1589:27:33"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "1582:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1582:35:33"
                  },
                  "nodeType": "YulIf",
                  "src": "1579:2:33"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1651:30:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "1674:6:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "1661:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1661:20:33"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "1655:2:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1720:13:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "invalid",
                            "nodeType": "YulIdentifier",
                            "src": "1722:7:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1722:9:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1722:9:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "1696:2:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1700:18:33",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "1693:2:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1693:26:33"
                  },
                  "nodeType": "YulIf",
                  "src": "1690:2:33"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1742:128:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1784:2:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1788:4:33",
                                    "type": "",
                                    "value": "0x1f"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1780:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1780:13:33"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1795:66:33",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "1776:3:33"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1776:86:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1864:4:33",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1772:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1772:97:33"
                      }
                    ],
                    "functionName": {
                      "name": "allocateMemory",
                      "nodeType": "YulIdentifier",
                      "src": "1757:14:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1757:113:33"
                  },
                  "variables": [
                    {
                      "name": "array_1",
                      "nodeType": "YulTypedName",
                      "src": "1746:7:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "array_1",
                        "nodeType": "YulIdentifier",
                        "src": "1886:7:33"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "1895:2:33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1879:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1879:19:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1879:19:33"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1946:24:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "1955:5:33"
                            },
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "1962:5:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1948:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1948:20:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1948:20:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "1921:6:33"
                              },
                              {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "1929:2:33"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1917:3:33"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1917:15:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1934:4:33",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1913:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1913:26:33"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "1941:3:33"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "1910:2:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1910:35:33"
                  },
                  "nodeType": "YulIf",
                  "src": "1907:2:33"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "array_1",
                            "nodeType": "YulIdentifier",
                            "src": "1996:7:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2005:4:33",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1992:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1992:18:33"
                      },
                      {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "2016:6:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2024:4:33",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2012:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2012:17:33"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "2031:2:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldatacopy",
                      "nodeType": "YulIdentifier",
                      "src": "1979:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1979:55:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1979:55:33"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "array_1",
                                "nodeType": "YulIdentifier",
                                "src": "2058:7:33"
                              },
                              {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "2067:2:33"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "2054:3:33"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2054:16:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2072:4:33",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2050:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2050:27:33"
                      },
                      {
                        "name": "array",
                        "nodeType": "YulIdentifier",
                        "src": "2079:5:33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2043:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2043:42:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2043:42:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2094:16:33",
                  "value": {
                    "name": "array_1",
                    "nodeType": "YulIdentifier",
                    "src": "2103:7:33"
                  },
                  "variableNames": [
                    {
                      "name": "array",
                      "nodeType": "YulIdentifier",
                      "src": "2094:5:33"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_t_bytes",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "1543:6:33",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "1551:3:33",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "array",
                "nodeType": "YulTypedName",
                "src": "1559:5:33",
                "type": ""
              }
            ],
            "src": "1515:601:33"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2171:123:33",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "2181:29:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "2203:6:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2190:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2190:20:33"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nodeType": "YulIdentifier",
                      "src": "2181:5:33"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2272:16:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2281:1:33",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2284:1:33",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2274:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2274:12:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2274:12:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "2232:5:33"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2243:5:33"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2250:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "2239:3:33"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2239:30:33"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "2229:2:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2229:41:33"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "2222:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2222:49:33"
                  },
                  "nodeType": "YulIf",
                  "src": "2219:2:33"
                }
              ]
            },
            "name": "abi_decode_t_uint64",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "2150:6:33",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "2161:5:33",
                "type": ""
              }
            ],
            "src": "2121:173:33"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2386:315:33",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2432:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "2441:6:33"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "2449:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2434:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2434:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2434:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "2407:7:33"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2416:9:33"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "2403:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2403:23:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2428:2:33",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "2399:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2399:32:33"
                  },
                  "nodeType": "YulIf",
                  "src": "2396:2:33"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2467:36:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2493:9:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2480:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2480:23:33"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "2471:5:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "2539:5:33"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_address",
                      "nodeType": "YulIdentifier",
                      "src": "2512:26:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2512:33:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2512:33:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2554:15:33",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "2564:5:33"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "2554:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2578:47:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2610:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2621:2:33",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2606:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2606:18:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2593:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2593:32:33"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nodeType": "YulTypedName",
                      "src": "2582:7:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nodeType": "YulIdentifier",
                        "src": "2661:7:33"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_address",
                      "nodeType": "YulIdentifier",
                      "src": "2634:26:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2634:35:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2634:35:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2678:17:33",
                  "value": {
                    "name": "value_1",
                    "nodeType": "YulIdentifier",
                    "src": "2688:7:33"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "2678:6:33"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "2344:9:33",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "2355:7:33",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "2367:6:33",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "2375:6:33",
                "type": ""
              }
            ],
            "src": "2299:402:33"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2933:1169:33",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2980:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "2989:6:33"
                            },
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "2997:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2982:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2982:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2982:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "2954:7:33"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2963:9:33"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "2950:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2950:23:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2975:3:33",
                        "type": "",
                        "value": "160"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "2946:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2946:33:33"
                  },
                  "nodeType": "YulIf",
                  "src": "2943:2:33"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3015:36:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3041:9:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "3028:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3028:23:33"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "3019:5:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "3087:5:33"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_address",
                      "nodeType": "YulIdentifier",
                      "src": "3060:26:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3060:33:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3060:33:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3102:15:33",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "3112:5:33"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "3102:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3126:47:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3158:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3169:2:33",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3154:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3154:18:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "3141:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3141:32:33"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nodeType": "YulTypedName",
                      "src": "3130:7:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nodeType": "YulIdentifier",
                        "src": "3209:7:33"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_address",
                      "nodeType": "YulIdentifier",
                      "src": "3182:26:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3182:35:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3182:35:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3226:17:33",
                  "value": {
                    "name": "value_1",
                    "nodeType": "YulIdentifier",
                    "src": "3236:7:33"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "3226:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3252:46:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3283:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3294:2:33",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3279:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3279:18:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "3266:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3266:32:33"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "3256:6:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3307:28:33",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "3317:18:33",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "3311:2:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3362:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "3371:6:33"
                            },
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "3379:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3364:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3364:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3364:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "3350:6:33"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "3358:2:33"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "3347:2:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3347:14:33"
                  },
                  "nodeType": "YulIf",
                  "src": "3344:2:33"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3397:102:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3471:9:33"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "3482:6:33"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3467:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3467:22:33"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "3491:7:33"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_t_array$_t_uint256_$dyn_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "3423:43:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3423:76:33"
                  },
                  "variables": [
                    {
                      "name": "value2_1",
                      "nodeType": "YulTypedName",
                      "src": "3401:8:33",
                      "type": ""
                    },
                    {
                      "name": "value3_1",
                      "nodeType": "YulTypedName",
                      "src": "3411:8:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3508:18:33",
                  "value": {
                    "name": "value2_1",
                    "nodeType": "YulIdentifier",
                    "src": "3518:8:33"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "3508:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3535:18:33",
                  "value": {
                    "name": "value3_1",
                    "nodeType": "YulIdentifier",
                    "src": "3545:8:33"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "3535:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3562:48:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3595:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3606:2:33",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3591:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3591:18:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "3578:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3578:32:33"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "3566:8:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3639:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "3648:6:33"
                            },
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "3656:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3641:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3641:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3641:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "3625:8:33"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "3635:2:33"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "3622:2:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3622:16:33"
                  },
                  "nodeType": "YulIf",
                  "src": "3619:2:33"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3674:104:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3748:9:33"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "3759:8:33"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3744:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3744:24:33"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "3770:7:33"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_t_array$_t_uint256_$dyn_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "3700:43:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3700:78:33"
                  },
                  "variables": [
                    {
                      "name": "value4_1",
                      "nodeType": "YulTypedName",
                      "src": "3678:8:33",
                      "type": ""
                    },
                    {
                      "name": "value5_1",
                      "nodeType": "YulTypedName",
                      "src": "3688:8:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3787:18:33",
                  "value": {
                    "name": "value4_1",
                    "nodeType": "YulIdentifier",
                    "src": "3797:8:33"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nodeType": "YulIdentifier",
                      "src": "3787:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3814:18:33",
                  "value": {
                    "name": "value5_1",
                    "nodeType": "YulIdentifier",
                    "src": "3824:8:33"
                  },
                  "variableNames": [
                    {
                      "name": "value5",
                      "nodeType": "YulIdentifier",
                      "src": "3814:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3841:49:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3874:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3885:3:33",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3870:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3870:19:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "3857:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3857:33:33"
                  },
                  "variables": [
                    {
                      "name": "offset_2",
                      "nodeType": "YulTypedName",
                      "src": "3845:8:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3919:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value6",
                              "nodeType": "YulIdentifier",
                              "src": "3928:6:33"
                            },
                            {
                              "name": "value6",
                              "nodeType": "YulIdentifier",
                              "src": "3936:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3921:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3921:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3921:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_2",
                        "nodeType": "YulIdentifier",
                        "src": "3905:8:33"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "3915:2:33"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "3902:2:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3902:16:33"
                  },
                  "nodeType": "YulIf",
                  "src": "3899:2:33"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3954:88:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4012:9:33"
                          },
                          {
                            "name": "offset_2",
                            "nodeType": "YulIdentifier",
                            "src": "4023:8:33"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4008:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4008:24:33"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "4034:7:33"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_t_bytes_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "3980:27:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3980:62:33"
                  },
                  "variables": [
                    {
                      "name": "value6_1",
                      "nodeType": "YulTypedName",
                      "src": "3958:8:33",
                      "type": ""
                    },
                    {
                      "name": "value7_1",
                      "nodeType": "YulTypedName",
                      "src": "3968:8:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4051:18:33",
                  "value": {
                    "name": "value6_1",
                    "nodeType": "YulIdentifier",
                    "src": "4061:8:33"
                  },
                  "variableNames": [
                    {
                      "name": "value6",
                      "nodeType": "YulIdentifier",
                      "src": "4051:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4078:18:33",
                  "value": {
                    "name": "value7_1",
                    "nodeType": "YulIdentifier",
                    "src": "4088:8:33"
                  },
                  "variableNames": [
                    {
                      "name": "value7",
                      "nodeType": "YulIdentifier",
                      "src": "4078:6:33"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptrt_bytes_calldata_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "2843:9:33",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "2854:7:33",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "2866:6:33",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "2874:6:33",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "2882:6:33",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "2890:6:33",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "2898:6:33",
                "type": ""
              },
              {
                "name": "value5",
                "nodeType": "YulTypedName",
                "src": "2906:6:33",
                "type": ""
              },
              {
                "name": "value6",
                "nodeType": "YulTypedName",
                "src": "2914:6:33",
                "type": ""
              },
              {
                "name": "value7",
                "nodeType": "YulTypedName",
                "src": "2922:6:33",
                "type": ""
              }
            ],
            "src": "2706:1396:33"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4304:932:33",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4351:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "4360:6:33"
                            },
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "4368:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4353:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4353:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4353:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "4325:7:33"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4334:9:33"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "4321:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4321:23:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4346:3:33",
                        "type": "",
                        "value": "160"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "4317:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4317:33:33"
                  },
                  "nodeType": "YulIf",
                  "src": "4314:2:33"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4386:36:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4412:9:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "4399:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4399:23:33"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "4390:5:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "4458:5:33"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_address",
                      "nodeType": "YulIdentifier",
                      "src": "4431:26:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4431:33:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4431:33:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4473:15:33",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "4483:5:33"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "4473:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4497:47:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4529:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4540:2:33",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4525:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4525:18:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "4512:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4512:32:33"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nodeType": "YulTypedName",
                      "src": "4501:7:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nodeType": "YulIdentifier",
                        "src": "4580:7:33"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_address",
                      "nodeType": "YulIdentifier",
                      "src": "4553:26:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4553:35:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4553:35:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4597:17:33",
                  "value": {
                    "name": "value_1",
                    "nodeType": "YulIdentifier",
                    "src": "4607:7:33"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "4597:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4623:46:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4654:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4665:2:33",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4650:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4650:18:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "4637:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4637:32:33"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "4627:6:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4678:28:33",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "4688:18:33",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "4682:2:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4733:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "4742:6:33"
                            },
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "4750:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4735:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4735:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4735:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "4721:6:33"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "4729:2:33"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "4718:2:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4718:14:33"
                  },
                  "nodeType": "YulIf",
                  "src": "4715:2:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4768:77:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4817:9:33"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "4828:6:33"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4813:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4813:22:33"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "4837:7:33"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_t_array$_t_uint256_$dyn",
                      "nodeType": "YulIdentifier",
                      "src": "4778:34:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4778:67:33"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "4768:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4854:48:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4887:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4898:2:33",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4883:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4883:18:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "4870:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4870:32:33"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "4858:8:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4931:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "4940:6:33"
                            },
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "4948:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4933:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4933:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4933:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "4917:8:33"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "4927:2:33"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "4914:2:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4914:16:33"
                  },
                  "nodeType": "YulIf",
                  "src": "4911:2:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4966:79:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5015:9:33"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "5026:8:33"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5011:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5011:24:33"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "5037:7:33"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_t_array$_t_uint256_$dyn",
                      "nodeType": "YulIdentifier",
                      "src": "4976:34:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4976:69:33"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "4966:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5054:49:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5087:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5098:3:33",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5083:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5083:19:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "5070:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5070:33:33"
                  },
                  "variables": [
                    {
                      "name": "offset_2",
                      "nodeType": "YulTypedName",
                      "src": "5058:8:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5132:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "5141:6:33"
                            },
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "5149:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "5134:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5134:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5134:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_2",
                        "nodeType": "YulIdentifier",
                        "src": "5118:8:33"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "5128:2:33"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "5115:2:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5115:16:33"
                  },
                  "nodeType": "YulIf",
                  "src": "5112:2:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5167:63:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5200:9:33"
                          },
                          {
                            "name": "offset_2",
                            "nodeType": "YulIdentifier",
                            "src": "5211:8:33"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5196:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5196:24:33"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "5222:7:33"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_t_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "5177:18:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5177:53:33"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nodeType": "YulIdentifier",
                      "src": "5167:6:33"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "4238:9:33",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "4249:7:33",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "4261:6:33",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "4269:6:33",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "4277:6:33",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "4285:6:33",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "4293:6:33",
                "type": ""
              }
            ],
            "src": "4107:1129:33"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5371:561:33",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5418:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "5427:6:33"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "5435:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "5420:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5420:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5420:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "5392:7:33"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5401:9:33"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "5388:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5388:23:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5413:3:33",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "5384:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5384:33:33"
                  },
                  "nodeType": "YulIf",
                  "src": "5381:2:33"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5453:36:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5479:9:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "5466:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5466:23:33"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "5457:5:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "5525:5:33"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_address",
                      "nodeType": "YulIdentifier",
                      "src": "5498:26:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5498:33:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5498:33:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5540:15:33",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "5550:5:33"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "5540:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5564:47:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5596:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5607:2:33",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5592:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5592:18:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "5579:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5579:32:33"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nodeType": "YulTypedName",
                      "src": "5568:7:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nodeType": "YulIdentifier",
                        "src": "5647:7:33"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_address",
                      "nodeType": "YulIdentifier",
                      "src": "5620:26:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5620:35:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5620:35:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5664:17:33",
                  "value": {
                    "name": "value_1",
                    "nodeType": "YulIdentifier",
                    "src": "5674:7:33"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "5664:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5690:42:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5717:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5728:2:33",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5713:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5713:18:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "5700:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5700:32:33"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "5690:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5741:46:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5772:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5783:2:33",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5768:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5768:18:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "5755:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5755:32:33"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "5745:6:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5830:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value3",
                              "nodeType": "YulIdentifier",
                              "src": "5839:6:33"
                            },
                            {
                              "name": "value3",
                              "nodeType": "YulIdentifier",
                              "src": "5847:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "5832:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5832:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5832:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "5802:6:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5810:18:33",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "5799:2:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5799:30:33"
                  },
                  "nodeType": "YulIf",
                  "src": "5796:2:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5865:61:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5898:9:33"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "5909:6:33"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5894:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5894:22:33"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "5918:7:33"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_t_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "5875:18:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5875:51:33"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "5865:6:33"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "5313:9:33",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "5324:7:33",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "5336:6:33",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "5344:6:33",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "5352:6:33",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "5360:6:33",
                "type": ""
              }
            ],
            "src": "5241:691:33"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6094:692:33",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6141:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "6150:6:33"
                            },
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "6158:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "6143:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6143:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6143:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "6115:7:33"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6124:9:33"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "6111:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6111:23:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6136:3:33",
                        "type": "",
                        "value": "160"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "6107:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6107:33:33"
                  },
                  "nodeType": "YulIf",
                  "src": "6104:2:33"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6176:36:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "6202:9:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "6189:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6189:23:33"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "6180:5:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "6248:5:33"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_address",
                      "nodeType": "YulIdentifier",
                      "src": "6221:26:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6221:33:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6221:33:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6263:15:33",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "6273:5:33"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "6263:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6287:47:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6319:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6330:2:33",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6315:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6315:18:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "6302:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6302:32:33"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nodeType": "YulTypedName",
                      "src": "6291:7:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nodeType": "YulIdentifier",
                        "src": "6370:7:33"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_address",
                      "nodeType": "YulIdentifier",
                      "src": "6343:26:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6343:35:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6343:35:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6387:17:33",
                  "value": {
                    "name": "value_1",
                    "nodeType": "YulIdentifier",
                    "src": "6397:7:33"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "6387:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6413:42:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6440:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6451:2:33",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6436:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6436:18:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "6423:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6423:32:33"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "6413:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6464:42:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6491:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6502:2:33",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6487:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6487:18:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "6474:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6474:32:33"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "6464:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6515:47:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6546:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6557:3:33",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6542:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6542:19:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "6529:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6529:33:33"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "6519:6:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6605:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "6614:6:33"
                            },
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "6622:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "6607:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6607:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6607:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "6577:6:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6585:18:33",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "6574:2:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6574:30:33"
                  },
                  "nodeType": "YulIf",
                  "src": "6571:2:33"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6640:86:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6698:9:33"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "6709:6:33"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6694:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6694:22:33"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "6718:7:33"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_t_bytes_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "6666:27:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6666:60:33"
                  },
                  "variables": [
                    {
                      "name": "value4_1",
                      "nodeType": "YulTypedName",
                      "src": "6644:8:33",
                      "type": ""
                    },
                    {
                      "name": "value5_1",
                      "nodeType": "YulTypedName",
                      "src": "6654:8:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6735:18:33",
                  "value": {
                    "name": "value4_1",
                    "nodeType": "YulIdentifier",
                    "src": "6745:8:33"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nodeType": "YulIdentifier",
                      "src": "6735:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6762:18:33",
                  "value": {
                    "name": "value5_1",
                    "nodeType": "YulIdentifier",
                    "src": "6772:8:33"
                  },
                  "variableNames": [
                    {
                      "name": "value5",
                      "nodeType": "YulIdentifier",
                      "src": "6762:6:33"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_calldata_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "6020:9:33",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "6031:7:33",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "6043:6:33",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "6051:6:33",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "6059:6:33",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "6067:6:33",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "6075:6:33",
                "type": ""
              },
              {
                "name": "value5",
                "nodeType": "YulTypedName",
                "src": "6083:6:33",
                "type": ""
              }
            ],
            "src": "5937:849:33"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6938:613:33",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6985:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "6994:6:33"
                            },
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "7002:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "6987:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6987:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6987:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "6959:7:33"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6968:9:33"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "6955:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6955:23:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6980:3:33",
                        "type": "",
                        "value": "160"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "6951:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6951:33:33"
                  },
                  "nodeType": "YulIf",
                  "src": "6948:2:33"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7020:36:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7046:9:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "7033:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7033:23:33"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "7024:5:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "7092:5:33"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_address",
                      "nodeType": "YulIdentifier",
                      "src": "7065:26:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7065:33:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7065:33:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7107:15:33",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "7117:5:33"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "7107:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7131:47:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7163:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7174:2:33",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7159:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7159:18:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "7146:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7146:32:33"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nodeType": "YulTypedName",
                      "src": "7135:7:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nodeType": "YulIdentifier",
                        "src": "7214:7:33"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_address",
                      "nodeType": "YulIdentifier",
                      "src": "7187:26:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7187:35:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7187:35:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7231:17:33",
                  "value": {
                    "name": "value_1",
                    "nodeType": "YulIdentifier",
                    "src": "7241:7:33"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "7231:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7257:42:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7284:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7295:2:33",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7280:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7280:18:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "7267:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7267:32:33"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "7257:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7308:42:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7335:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7346:2:33",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7331:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7331:18:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "7318:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7318:32:33"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "7308:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7359:47:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7390:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7401:3:33",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7386:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7386:19:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "7373:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7373:33:33"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "7363:6:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "7449:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "7458:6:33"
                            },
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "7466:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "7451:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7451:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "7451:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "7421:6:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7429:18:33",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "7418:2:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7418:30:33"
                  },
                  "nodeType": "YulIf",
                  "src": "7415:2:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7484:61:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7517:9:33"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "7528:6:33"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7513:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7513:22:33"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "7537:7:33"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_t_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "7494:18:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7494:51:33"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nodeType": "YulIdentifier",
                      "src": "7484:6:33"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "6872:9:33",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "6883:7:33",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "6895:6:33",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "6903:6:33",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "6911:6:33",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "6919:6:33",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "6927:6:33",
                "type": ""
              }
            ],
            "src": "6791:760:33"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7640:354:33",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "7686:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "7695:6:33"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "7703:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "7688:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7688:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "7688:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "7661:7:33"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7670:9:33"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "7657:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7657:23:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7682:2:33",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "7653:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7653:32:33"
                  },
                  "nodeType": "YulIf",
                  "src": "7650:2:33"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7721:36:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7747:9:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "7734:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7734:23:33"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "7725:5:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "7793:5:33"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_address",
                      "nodeType": "YulIdentifier",
                      "src": "7766:26:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7766:33:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7766:33:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7808:15:33",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "7818:5:33"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "7808:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7832:47:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7864:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7875:2:33",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7860:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7860:18:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "7847:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7847:32:33"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nodeType": "YulTypedName",
                      "src": "7836:7:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "7936:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value1",
                              "nodeType": "YulIdentifier",
                              "src": "7945:6:33"
                            },
                            {
                              "name": "value1",
                              "nodeType": "YulIdentifier",
                              "src": "7953:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "7938:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7938:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "7938:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value_1",
                            "nodeType": "YulIdentifier",
                            "src": "7901:7:33"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7924:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "7917:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7917:15:33"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nodeType": "YulIdentifier",
                              "src": "7910:6:33"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "7910:23:33"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "7898:2:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7898:36:33"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "7891:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7891:44:33"
                  },
                  "nodeType": "YulIf",
                  "src": "7888:2:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7971:17:33",
                  "value": {
                    "name": "value_1",
                    "nodeType": "YulIdentifier",
                    "src": "7981:7:33"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "7971:6:33"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_bool",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "7598:9:33",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "7609:7:33",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "7621:6:33",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "7629:6:33",
                "type": ""
              }
            ],
            "src": "7556:438:33"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "8118:370:33",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8128:33:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "8142:7:33"
                      },
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "8151:9:33"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nodeType": "YulIdentifier",
                      "src": "8138:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8138:23:33"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "8132:2:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8185:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "8194:6:33"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "8202:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "8187:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8187:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8187:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "8177:2:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8181:2:33",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "8173:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8173:11:33"
                  },
                  "nodeType": "YulIf",
                  "src": "8170:2:33"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8220:36:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "8246:9:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "8233:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8233:23:33"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "8224:5:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "8292:5:33"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_address",
                      "nodeType": "YulIdentifier",
                      "src": "8265:26:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8265:33:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8265:33:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8307:15:33",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "8317:5:33"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "8307:6:33"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8419:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value1",
                              "nodeType": "YulIdentifier",
                              "src": "8428:6:33"
                            },
                            {
                              "name": "value1",
                              "nodeType": "YulIdentifier",
                              "src": "8436:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "8421:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8421:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8421:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "8342:2:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8346:66:33",
                            "type": "",
                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8338:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8338:75:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8415:2:33",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "8334:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8334:84:33"
                  },
                  "nodeType": "YulIf",
                  "src": "8331:2:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8454:28:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "8468:9:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8479:2:33",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "8464:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8464:18:33"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "8454:6:33"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_struct$_ERC1155Token_$3671_calldata_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "8076:9:33",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "8087:7:33",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "8099:6:33",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "8107:6:33",
                "type": ""
              }
            ],
            "src": "7999:489:33"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "8580:240:33",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8626:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "8635:6:33"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "8643:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "8628:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8628:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8628:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "8601:7:33"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8610:9:33"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "8597:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8597:23:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8622:2:33",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "8593:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8593:32:33"
                  },
                  "nodeType": "YulIf",
                  "src": "8590:2:33"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8661:36:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "8687:9:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "8674:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8674:23:33"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "8665:5:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "8733:5:33"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_address",
                      "nodeType": "YulIdentifier",
                      "src": "8706:26:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8706:33:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8706:33:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8748:15:33",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "8758:5:33"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "8748:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8772:42:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8799:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8810:2:33",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8795:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8795:18:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "8782:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8782:32:33"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "8772:6:33"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "8538:9:33",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "8549:7:33",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "8561:6:33",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "8569:6:33",
                "type": ""
              }
            ],
            "src": "8493:327:33"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "8911:247:33",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8957:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "8966:6:33"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "8974:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "8959:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8959:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8959:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "8932:7:33"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8941:9:33"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "8928:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8928:23:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8953:2:33",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "8924:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8924:32:33"
                  },
                  "nodeType": "YulIf",
                  "src": "8921:2:33"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8992:36:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "9018:9:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "9005:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9005:23:33"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "8996:5:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "9064:5:33"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_address",
                      "nodeType": "YulIdentifier",
                      "src": "9037:26:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9037:33:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9037:33:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9079:15:33",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "9089:5:33"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "9079:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9103:49:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9137:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9148:2:33",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9133:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9133:18:33"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_t_uint64",
                      "nodeType": "YulIdentifier",
                      "src": "9113:19:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9113:39:33"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "9103:6:33"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_uint64",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "8869:9:33",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "8880:7:33",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "8892:6:33",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "8900:6:33",
                "type": ""
              }
            ],
            "src": "8825:333:33"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "9300:1158:33",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "9346:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "9355:6:33"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "9363:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "9348:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9348:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "9348:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "9321:7:33"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9330:9:33"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "9317:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9317:23:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9342:2:33",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "9313:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9313:32:33"
                  },
                  "nodeType": "YulIf",
                  "src": "9310:2:33"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9381:37:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "9408:9:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "9395:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9395:23:33"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "9385:6:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9427:28:33",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "9437:18:33",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "9431:2:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "9482:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "9491:6:33"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "9499:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "9484:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9484:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "9484:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "9470:6:33"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "9478:2:33"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "9467:2:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9467:14:33"
                  },
                  "nodeType": "YulIf",
                  "src": "9464:2:33"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9517:32:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "9531:9:33"
                      },
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "9542:6:33"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "9527:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9527:22:33"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "9521:2:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "9597:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "9606:6:33"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "9614:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "9599:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9599:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "9599:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_2",
                                "nodeType": "YulIdentifier",
                                "src": "9576:2:33"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9580:4:33",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "9572:3:33"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "9572:13:33"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "9587:7:33"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "9568:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9568:27:33"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "9561:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9561:35:33"
                  },
                  "nodeType": "YulIf",
                  "src": "9558:2:33"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9632:26:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "9655:2:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "9642:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9642:16:33"
                  },
                  "variables": [
                    {
                      "name": "_3",
                      "nodeType": "YulTypedName",
                      "src": "9636:2:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9667:14:33",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "9677:4:33",
                    "type": "",
                    "value": "0x20"
                  },
                  "variables": [
                    {
                      "name": "_4",
                      "nodeType": "YulTypedName",
                      "src": "9671:2:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9690:76:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "_3",
                            "nodeType": "YulIdentifier",
                            "src": "9762:2:33"
                          }
                        ],
                        "functionName": {
                          "name": "array_allocation_size_t_array$_t_address_$dyn",
                          "nodeType": "YulIdentifier",
                          "src": "9716:45:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9716:49:33"
                      }
                    ],
                    "functionName": {
                      "name": "allocateMemory",
                      "nodeType": "YulIdentifier",
                      "src": "9701:14:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9701:65:33"
                  },
                  "variables": [
                    {
                      "name": "dst",
                      "nodeType": "YulTypedName",
                      "src": "9694:3:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9775:16:33",
                  "value": {
                    "name": "dst",
                    "nodeType": "YulIdentifier",
                    "src": "9788:3:33"
                  },
                  "variables": [
                    {
                      "name": "dst_1",
                      "nodeType": "YulTypedName",
                      "src": "9779:5:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "dst",
                        "nodeType": "YulIdentifier",
                        "src": "9807:3:33"
                      },
                      {
                        "name": "_3",
                        "nodeType": "YulIdentifier",
                        "src": "9812:2:33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9800:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9800:15:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9800:15:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9824:19:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "dst",
                        "nodeType": "YulIdentifier",
                        "src": "9835:3:33"
                      },
                      {
                        "name": "_4",
                        "nodeType": "YulIdentifier",
                        "src": "9840:2:33"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "9831:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9831:12:33"
                  },
                  "variableNames": [
                    {
                      "name": "dst",
                      "nodeType": "YulIdentifier",
                      "src": "9824:3:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9852:22:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "9867:2:33"
                      },
                      {
                        "name": "_4",
                        "nodeType": "YulIdentifier",
                        "src": "9871:2:33"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "9863:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9863:11:33"
                  },
                  "variables": [
                    {
                      "name": "src",
                      "nodeType": "YulTypedName",
                      "src": "9856:3:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "9929:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "9938:6:33"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "9946:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "9931:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9931:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "9931:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_2",
                                "nodeType": "YulIdentifier",
                                "src": "9897:2:33"
                              },
                              {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "9905:2:33"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "9909:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "9901:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9901:11:33"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "9893:3:33"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "9893:20:33"
                          },
                          {
                            "name": "_4",
                            "nodeType": "YulIdentifier",
                            "src": "9915:2:33"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9889:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9889:29:33"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "9920:7:33"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "9886:2:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9886:42:33"
                  },
                  "nodeType": "YulIf",
                  "src": "9883:2:33"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9964:15:33",
                  "value": {
                    "name": "value0",
                    "nodeType": "YulIdentifier",
                    "src": "9973:6:33"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "9968:1:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "10033:195:33",
                    "statements": [
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "10047:30:33",
                        "value": {
                          "arguments": [
                            {
                              "name": "src",
                              "nodeType": "YulIdentifier",
                              "src": "10073:3:33"
                            }
                          ],
                          "functionName": {
                            "name": "calldataload",
                            "nodeType": "YulIdentifier",
                            "src": "10060:12:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10060:17:33"
                        },
                        "variables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "10051:5:33",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value",
                              "nodeType": "YulIdentifier",
                              "src": "10117:5:33"
                            }
                          ],
                          "functionName": {
                            "name": "validator_revert_t_address",
                            "nodeType": "YulIdentifier",
                            "src": "10090:26:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10090:33:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "10090:33:33"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "dst",
                              "nodeType": "YulIdentifier",
                              "src": "10143:3:33"
                            },
                            {
                              "name": "value",
                              "nodeType": "YulIdentifier",
                              "src": "10148:5:33"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "10136:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10136:18:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "10136:18:33"
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "10167:19:33",
                        "value": {
                          "arguments": [
                            {
                              "name": "dst",
                              "nodeType": "YulIdentifier",
                              "src": "10178:3:33"
                            },
                            {
                              "name": "_4",
                              "nodeType": "YulIdentifier",
                              "src": "10183:2:33"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "10174:3:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10174:12:33"
                        },
                        "variableNames": [
                          {
                            "name": "dst",
                            "nodeType": "YulIdentifier",
                            "src": "10167:3:33"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "10199:19:33",
                        "value": {
                          "arguments": [
                            {
                              "name": "src",
                              "nodeType": "YulIdentifier",
                              "src": "10210:3:33"
                            },
                            {
                              "name": "_4",
                              "nodeType": "YulIdentifier",
                              "src": "10215:2:33"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "10206:3:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10206:12:33"
                        },
                        "variableNames": [
                          {
                            "name": "src",
                            "nodeType": "YulIdentifier",
                            "src": "10199:3:33"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "9999:1:33"
                      },
                      {
                        "name": "_3",
                        "nodeType": "YulIdentifier",
                        "src": "10002:2:33"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "9996:2:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9996:9:33"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "10006:18:33",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "10008:14:33",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "10017:1:33"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "10020:1:33",
                              "type": "",
                              "value": "1"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "10013:3:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10013:9:33"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "10008:1:33"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "9992:3:33",
                    "statements": []
                  },
                  "src": "9988:240:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10237:15:33",
                  "value": {
                    "name": "dst_1",
                    "nodeType": "YulIdentifier",
                    "src": "10247:5:33"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "10237:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "10261:48:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10294:9:33"
                          },
                          {
                            "name": "_4",
                            "nodeType": "YulIdentifier",
                            "src": "10305:2:33"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10290:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10290:18:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "10277:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10277:32:33"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "10265:8:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "10338:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value1",
                              "nodeType": "YulIdentifier",
                              "src": "10347:6:33"
                            },
                            {
                              "name": "value1",
                              "nodeType": "YulIdentifier",
                              "src": "10355:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "10340:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10340:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "10340:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "10324:8:33"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "10334:2:33"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "10321:2:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10321:16:33"
                  },
                  "nodeType": "YulIf",
                  "src": "10318:2:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10373:79:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10422:9:33"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "10433:8:33"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10418:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10418:24:33"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "10444:7:33"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_t_array$_t_uint256_$dyn",
                      "nodeType": "YulIdentifier",
                      "src": "10383:34:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10383:69:33"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "10373:6:33"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "9258:9:33",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "9269:7:33",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "9281:6:33",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "9289:6:33",
                "type": ""
              }
            ],
            "src": "9163:1295:33"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10532:283:33",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "10578:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "10587:6:33"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "10595:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "10580:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10580:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "10580:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "10553:7:33"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10562:9:33"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "10549:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10549:23:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10574:2:33",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "10545:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10545:32:33"
                  },
                  "nodeType": "YulIf",
                  "src": "10542:2:33"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "10613:36:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "10639:9:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "10626:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10626:23:33"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "10617:5:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "10759:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "10768:6:33"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "10776:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "10761:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10761:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "10761:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "10671:5:33"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "10682:5:33"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "10689:66:33",
                                "type": "",
                                "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "10678:3:33"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "10678:78:33"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "10668:2:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10668:89:33"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "10661:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10661:97:33"
                  },
                  "nodeType": "YulIf",
                  "src": "10658:2:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10794:15:33",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "10804:5:33"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "10794:6:33"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes4",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "10498:9:33",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "10509:7:33",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "10521:6:33",
                "type": ""
              }
            ],
            "src": "10463:352:33"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10976:572:33",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "11023:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "11032:6:33"
                            },
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "11040:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "11025:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "11025:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "11025:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "10997:7:33"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11006:9:33"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "10993:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10993:23:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11018:3:33",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "10989:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10989:33:33"
                  },
                  "nodeType": "YulIf",
                  "src": "10986:2:33"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "11058:36:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "11084:9:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "11071:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11071:23:33"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "11062:5:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "11130:5:33"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_address",
                      "nodeType": "YulIdentifier",
                      "src": "11103:26:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11103:33:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11103:33:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "11145:15:33",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "11155:5:33"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "11145:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "11169:42:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11196:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11207:2:33",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11192:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11192:18:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "11179:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11179:32:33"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "11169:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "11220:49:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11254:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11265:2:33",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11250:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11250:18:33"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_t_uint64",
                      "nodeType": "YulIdentifier",
                      "src": "11230:19:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11230:39:33"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "11220:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "11278:46:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11309:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11320:2:33",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11305:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11305:18:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "11292:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11292:32:33"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "11282:6:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "11367:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "11376:6:33"
                            },
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "11384:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "11369:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "11369:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "11369:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "11339:6:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11347:18:33",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "11336:2:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11336:30:33"
                  },
                  "nodeType": "YulIf",
                  "src": "11333:2:33"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "11402:86:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11460:9:33"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "11471:6:33"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11456:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11456:22:33"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "11480:7:33"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_t_bytes_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "11428:27:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11428:60:33"
                  },
                  "variables": [
                    {
                      "name": "value3_1",
                      "nodeType": "YulTypedName",
                      "src": "11406:8:33",
                      "type": ""
                    },
                    {
                      "name": "value4_1",
                      "nodeType": "YulTypedName",
                      "src": "11416:8:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "11497:18:33",
                  "value": {
                    "name": "value3_1",
                    "nodeType": "YulIdentifier",
                    "src": "11507:8:33"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "11497:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "11524:18:33",
                  "value": {
                    "name": "value4_1",
                    "nodeType": "YulIdentifier",
                    "src": "11534:8:33"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nodeType": "YulIdentifier",
                      "src": "11524:6:33"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_contract$_IERC1155_$4654t_uint256t_uint64t_bytes_calldata_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "10910:9:33",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "10921:7:33",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "10933:6:33",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "10941:6:33",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "10949:6:33",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "10957:6:33",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "10965:6:33",
                "type": ""
              }
            ],
            "src": "10820:728:33"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "11707:477:33",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "11754:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "11763:6:33"
                            },
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "11771:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "11756:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "11756:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "11756:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "11728:7:33"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11737:9:33"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "11724:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11724:23:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11749:3:33",
                        "type": "",
                        "value": "160"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "11720:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11720:33:33"
                  },
                  "nodeType": "YulIf",
                  "src": "11717:2:33"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "11789:36:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "11815:9:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "11802:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11802:23:33"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "11793:5:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "11861:5:33"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_address",
                      "nodeType": "YulIdentifier",
                      "src": "11834:26:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11834:33:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11834:33:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "11876:15:33",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "11886:5:33"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "11876:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "11900:42:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11927:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11938:2:33",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11923:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11923:18:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "11910:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11910:32:33"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "11900:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "11951:49:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11985:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11996:2:33",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11981:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11981:18:33"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_t_uint64",
                      "nodeType": "YulIdentifier",
                      "src": "11961:19:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11961:39:33"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "11951:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12009:42:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12036:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12047:2:33",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12032:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12032:18:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "12019:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12019:32:33"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "12009:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "12060:48:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12092:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12103:3:33",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12088:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12088:19:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "12075:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12075:33:33"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nodeType": "YulTypedName",
                      "src": "12064:7:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nodeType": "YulIdentifier",
                        "src": "12144:7:33"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_address",
                      "nodeType": "YulIdentifier",
                      "src": "12117:26:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12117:35:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12117:35:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12161:17:33",
                  "value": {
                    "name": "value_1",
                    "nodeType": "YulIdentifier",
                    "src": "12171:7:33"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nodeType": "YulIdentifier",
                      "src": "12161:6:33"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_contract$_IERC1155_$4654t_uint256t_uint64t_uint256t_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "11641:9:33",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "11652:7:33",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "11664:6:33",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "11672:6:33",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "11680:6:33",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "11688:6:33",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "11696:6:33",
                "type": ""
              }
            ],
            "src": "11553:631:33"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "12396:878:33",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "12443:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value6",
                              "nodeType": "YulIdentifier",
                              "src": "12452:6:33"
                            },
                            {
                              "name": "value6",
                              "nodeType": "YulIdentifier",
                              "src": "12460:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "12445:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "12445:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "12445:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "12417:7:33"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12426:9:33"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "12413:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12413:23:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12438:3:33",
                        "type": "",
                        "value": "224"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "12409:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12409:33:33"
                  },
                  "nodeType": "YulIf",
                  "src": "12406:2:33"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "12478:36:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "12504:9:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "12491:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12491:23:33"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "12482:5:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "12550:5:33"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_address",
                      "nodeType": "YulIdentifier",
                      "src": "12523:26:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12523:33:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12523:33:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12565:15:33",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "12575:5:33"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "12565:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12589:42:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12616:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12627:2:33",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12612:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12612:18:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "12599:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12599:32:33"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "12589:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12640:49:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12674:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12685:2:33",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12670:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12670:18:33"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_t_uint64",
                      "nodeType": "YulIdentifier",
                      "src": "12650:19:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12650:39:33"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "12640:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12698:42:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12725:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12736:2:33",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12721:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12721:18:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "12708:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12708:32:33"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "12698:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "12749:48:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12781:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12792:3:33",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12777:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12777:19:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "12764:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12764:33:33"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nodeType": "YulTypedName",
                      "src": "12753:7:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nodeType": "YulIdentifier",
                        "src": "12833:7:33"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_address",
                      "nodeType": "YulIdentifier",
                      "src": "12806:26:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12806:35:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12806:35:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12850:17:33",
                  "value": {
                    "name": "value_1",
                    "nodeType": "YulIdentifier",
                    "src": "12860:7:33"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nodeType": "YulIdentifier",
                      "src": "12850:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "12876:48:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12908:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12919:3:33",
                            "type": "",
                            "value": "160"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12904:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12904:19:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "12891:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12891:33:33"
                  },
                  "variables": [
                    {
                      "name": "value_2",
                      "nodeType": "YulTypedName",
                      "src": "12880:7:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_2",
                        "nodeType": "YulIdentifier",
                        "src": "12960:7:33"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_address",
                      "nodeType": "YulIdentifier",
                      "src": "12933:26:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12933:35:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12933:35:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12977:17:33",
                  "value": {
                    "name": "value_2",
                    "nodeType": "YulIdentifier",
                    "src": "12987:7:33"
                  },
                  "variableNames": [
                    {
                      "name": "value5",
                      "nodeType": "YulIdentifier",
                      "src": "12977:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "13003:47:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13034:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13045:3:33",
                            "type": "",
                            "value": "192"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13030:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13030:19:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "13017:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13017:33:33"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "13007:6:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "13093:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value6",
                              "nodeType": "YulIdentifier",
                              "src": "13102:6:33"
                            },
                            {
                              "name": "value6",
                              "nodeType": "YulIdentifier",
                              "src": "13110:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "13095:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "13095:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "13095:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "13065:6:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13073:18:33",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "13062:2:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13062:30:33"
                  },
                  "nodeType": "YulIf",
                  "src": "13059:2:33"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "13128:86:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13186:9:33"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "13197:6:33"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13182:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13182:22:33"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "13206:7:33"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_t_bytes_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "13154:27:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13154:60:33"
                  },
                  "variables": [
                    {
                      "name": "value6_1",
                      "nodeType": "YulTypedName",
                      "src": "13132:8:33",
                      "type": ""
                    },
                    {
                      "name": "value7_1",
                      "nodeType": "YulTypedName",
                      "src": "13142:8:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "13223:18:33",
                  "value": {
                    "name": "value6_1",
                    "nodeType": "YulIdentifier",
                    "src": "13233:8:33"
                  },
                  "variableNames": [
                    {
                      "name": "value6",
                      "nodeType": "YulIdentifier",
                      "src": "13223:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "13250:18:33",
                  "value": {
                    "name": "value7_1",
                    "nodeType": "YulIdentifier",
                    "src": "13260:8:33"
                  },
                  "variableNames": [
                    {
                      "name": "value7",
                      "nodeType": "YulIdentifier",
                      "src": "13250:6:33"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_contract$_IERC1155_$4654t_uint256t_uint64t_uint256t_addresst_addresst_bytes_calldata_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "12306:9:33",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "12317:7:33",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "12329:6:33",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "12337:6:33",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "12345:6:33",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "12353:6:33",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "12361:6:33",
                "type": ""
              },
              {
                "name": "value5",
                "nodeType": "YulTypedName",
                "src": "12369:6:33",
                "type": ""
              },
              {
                "name": "value6",
                "nodeType": "YulTypedName",
                "src": "12377:6:33",
                "type": ""
              },
              {
                "name": "value7",
                "nodeType": "YulTypedName",
                "src": "12385:6:33",
                "type": ""
              }
            ],
            "src": "12189:1085:33"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "13452:624:33",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "13499:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "13508:6:33"
                            },
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "13516:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "13501:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "13501:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "13501:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "13473:7:33"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13482:9:33"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "13469:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13469:23:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13494:3:33",
                        "type": "",
                        "value": "160"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "13465:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13465:33:33"
                  },
                  "nodeType": "YulIf",
                  "src": "13462:2:33"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "13534:36:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "13560:9:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "13547:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13547:23:33"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "13538:5:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "13606:5:33"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_address",
                      "nodeType": "YulIdentifier",
                      "src": "13579:26:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13579:33:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13579:33:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "13621:15:33",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "13631:5:33"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "13621:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "13645:42:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13672:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13683:2:33",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13668:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13668:18:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "13655:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13655:32:33"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "13645:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "13696:49:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13730:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13741:2:33",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13726:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13726:18:33"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_t_uint64",
                      "nodeType": "YulIdentifier",
                      "src": "13706:19:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13706:39:33"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "13696:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "13754:42:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13781:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13792:2:33",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13777:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13777:18:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "13764:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13764:32:33"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "13754:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "13805:47:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13836:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13847:3:33",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13832:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13832:19:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "13819:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13819:33:33"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "13809:6:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "13895:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "13904:6:33"
                            },
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "13912:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "13897:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "13897:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "13897:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "13867:6:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13875:18:33",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "13864:2:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13864:30:33"
                  },
                  "nodeType": "YulIf",
                  "src": "13861:2:33"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "13930:86:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13988:9:33"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "13999:6:33"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13984:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13984:22:33"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "14008:7:33"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_t_bytes_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "13956:27:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13956:60:33"
                  },
                  "variables": [
                    {
                      "name": "value4_1",
                      "nodeType": "YulTypedName",
                      "src": "13934:8:33",
                      "type": ""
                    },
                    {
                      "name": "value5_1",
                      "nodeType": "YulTypedName",
                      "src": "13944:8:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "14025:18:33",
                  "value": {
                    "name": "value4_1",
                    "nodeType": "YulIdentifier",
                    "src": "14035:8:33"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nodeType": "YulIdentifier",
                      "src": "14025:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "14052:18:33",
                  "value": {
                    "name": "value5_1",
                    "nodeType": "YulIdentifier",
                    "src": "14062:8:33"
                  },
                  "variableNames": [
                    {
                      "name": "value5",
                      "nodeType": "YulIdentifier",
                      "src": "14052:6:33"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_contract$_IERC1155_$4654t_uint256t_uint64t_uint256t_bytes_calldata_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "13378:9:33",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "13389:7:33",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "13401:6:33",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "13409:6:33",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "13417:6:33",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "13425:6:33",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "13433:6:33",
                "type": ""
              },
              {
                "name": "value5",
                "nodeType": "YulTypedName",
                "src": "13441:6:33",
                "type": ""
              }
            ],
            "src": "13279:797:33"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "14151:120:33",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "14197:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "14206:6:33"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "14214:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "14199:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "14199:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "14199:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "14172:7:33"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14181:9:33"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "14168:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14168:23:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14193:2:33",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "14164:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14164:32:33"
                  },
                  "nodeType": "YulIf",
                  "src": "14161:2:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "14232:33:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "14255:9:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "14242:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14242:23:33"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "14232:6:33"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "14117:9:33",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "14128:7:33",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "14140:6:33",
                "type": ""
              }
            ],
            "src": "14081:190:33"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "14363:240:33",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "14409:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "14418:6:33"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "14426:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "14411:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "14411:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "14411:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "14384:7:33"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14393:9:33"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "14380:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14380:23:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14405:2:33",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "14376:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14376:32:33"
                  },
                  "nodeType": "YulIf",
                  "src": "14373:2:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "14444:33:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "14467:9:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "14454:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14454:23:33"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "14444:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "14486:45:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14516:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14527:2:33",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "14512:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14512:18:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "14499:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14499:32:33"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "14490:5:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "14567:5:33"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_address",
                      "nodeType": "YulIdentifier",
                      "src": "14540:26:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14540:33:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14540:33:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "14582:15:33",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "14592:5:33"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "14582:6:33"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint256t_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "14321:9:33",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "14332:7:33",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "14344:6:33",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "14352:6:33",
                "type": ""
              }
            ],
            "src": "14276:327:33"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "14677:127:33",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "14723:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "14732:6:33"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "14740:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "14725:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "14725:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "14725:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "14698:7:33"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14707:9:33"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "14694:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14694:23:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14719:2:33",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "14690:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14690:32:33"
                  },
                  "nodeType": "YulIf",
                  "src": "14687:2:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "14758:40:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "14788:9:33"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_t_uint64",
                      "nodeType": "YulIdentifier",
                      "src": "14768:19:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14768:30:33"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "14758:6:33"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint64",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "14643:9:33",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "14654:7:33",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "14666:6:33",
                "type": ""
              }
            ],
            "src": "14608:196:33"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "14895:178:33",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "14941:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "14950:6:33"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "14958:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "14943:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "14943:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "14943:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "14916:7:33"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14925:9:33"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "14912:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14912:23:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14937:2:33",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "14908:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14908:32:33"
                  },
                  "nodeType": "YulIf",
                  "src": "14905:2:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "14976:40:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "15006:9:33"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_t_uint64",
                      "nodeType": "YulIdentifier",
                      "src": "14986:19:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14986:30:33"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "14976:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "15025:42:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15052:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15063:2:33",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15048:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15048:18:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "15035:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15035:32:33"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "15025:6:33"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint64t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "14853:9:33",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "14864:7:33",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "14876:6:33",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "14884:6:33",
                "type": ""
              }
            ],
            "src": "14809:264:33"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "15234:624:33",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "15281:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "15290:6:33"
                            },
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "15298:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "15283:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "15283:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "15283:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "15255:7:33"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15264:9:33"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "15251:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15251:23:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15276:3:33",
                        "type": "",
                        "value": "160"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "15247:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15247:33:33"
                  },
                  "nodeType": "YulIf",
                  "src": "15244:2:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "15316:40:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "15346:9:33"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_t_uint64",
                      "nodeType": "YulIdentifier",
                      "src": "15326:19:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15326:30:33"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "15316:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "15365:42:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15392:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15403:2:33",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15388:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15388:18:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "15375:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15375:32:33"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "15365:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "15416:45:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15446:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15457:2:33",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15442:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15442:18:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "15429:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15429:32:33"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "15420:5:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "15497:5:33"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_address",
                      "nodeType": "YulIdentifier",
                      "src": "15470:26:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15470:33:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15470:33:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "15512:15:33",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "15522:5:33"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "15512:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "15536:42:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15563:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15574:2:33",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15559:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15559:18:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "15546:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15546:32:33"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "15536:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "15587:47:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15618:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15629:3:33",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15614:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15614:19:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "15601:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15601:33:33"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "15591:6:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "15677:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "15686:6:33"
                            },
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "15694:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "15679:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "15679:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "15679:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "15649:6:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15657:18:33",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "15646:2:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15646:30:33"
                  },
                  "nodeType": "YulIf",
                  "src": "15643:2:33"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "15712:86:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15770:9:33"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "15781:6:33"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15766:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15766:22:33"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "15790:7:33"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_t_bytes_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "15738:27:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15738:60:33"
                  },
                  "variables": [
                    {
                      "name": "value4_1",
                      "nodeType": "YulTypedName",
                      "src": "15716:8:33",
                      "type": ""
                    },
                    {
                      "name": "value5_1",
                      "nodeType": "YulTypedName",
                      "src": "15726:8:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "15807:18:33",
                  "value": {
                    "name": "value4_1",
                    "nodeType": "YulIdentifier",
                    "src": "15817:8:33"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nodeType": "YulIdentifier",
                      "src": "15807:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "15834:18:33",
                  "value": {
                    "name": "value5_1",
                    "nodeType": "YulIdentifier",
                    "src": "15844:8:33"
                  },
                  "variableNames": [
                    {
                      "name": "value5",
                      "nodeType": "YulIdentifier",
                      "src": "15834:6:33"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint64t_uint256t_addresst_uint256t_bytes_calldata_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "15160:9:33",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "15171:7:33",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "15183:6:33",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "15191:6:33",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "15199:6:33",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "15207:6:33",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "15215:6:33",
                "type": ""
              },
              {
                "name": "value5",
                "nodeType": "YulTypedName",
                "src": "15223:6:33",
                "type": ""
              }
            ],
            "src": "15078:780:33"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "15992:424:33",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "16039:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "16048:6:33"
                            },
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "16056:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "16041:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "16041:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "16041:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "16013:7:33"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "16022:9:33"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "16009:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16009:23:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "16034:3:33",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "16005:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16005:33:33"
                  },
                  "nodeType": "YulIf",
                  "src": "16002:2:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "16074:40:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "16104:9:33"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_t_uint64",
                      "nodeType": "YulIdentifier",
                      "src": "16084:19:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16084:30:33"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "16074:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "16123:42:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "16150:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "16161:2:33",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "16146:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16146:18:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "16133:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16133:32:33"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "16123:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "16174:42:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "16201:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "16212:2:33",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "16197:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16197:18:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "16184:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16184:32:33"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "16174:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "16225:46:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "16256:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "16267:2:33",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "16252:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16252:18:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "16239:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16239:32:33"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "16229:6:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "16314:26:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value3",
                              "nodeType": "YulIdentifier",
                              "src": "16323:6:33"
                            },
                            {
                              "name": "value3",
                              "nodeType": "YulIdentifier",
                              "src": "16331:6:33"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "16316:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "16316:22:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "16316:22:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "16286:6:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "16294:18:33",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "16283:2:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16283:30:33"
                  },
                  "nodeType": "YulIf",
                  "src": "16280:2:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "16349:61:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "16382:9:33"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "16393:6:33"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "16378:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16378:22:33"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "16402:7:33"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_t_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "16359:18:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16359:51:33"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "16349:6:33"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint64t_uint256t_uint256t_bytes_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "15934:9:33",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "15945:7:33",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "15957:6:33",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "15965:6:33",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "15973:6:33",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "15981:6:33",
                "type": ""
              }
            ],
            "src": "15863:553:33"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "16472:485:33",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "16482:26:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "16502:5:33"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "16496:5:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16496:12:33"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "16486:6:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "16524:3:33"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "16529:6:33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "16517:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16517:19:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "16517:19:33"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "16545:12:33",
                  "value": {
                    "name": "end",
                    "nodeType": "YulIdentifier",
                    "src": "16554:3:33"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "16549:1:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "16618:110:33",
                    "statements": [
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "16632:14:33",
                        "value": {
                          "kind": "number",
                          "nodeType": "YulLiteral",
                          "src": "16642:4:33",
                          "type": "",
                          "value": "0x20"
                        },
                        "variables": [
                          {
                            "name": "_1",
                            "nodeType": "YulTypedName",
                            "src": "16636:2:33",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "pos",
                                      "nodeType": "YulIdentifier",
                                      "src": "16674:3:33"
                                    },
                                    {
                                      "name": "i",
                                      "nodeType": "YulIdentifier",
                                      "src": "16679:1:33"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "16670:3:33"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "16670:11:33"
                                },
                                {
                                  "name": "_1",
                                  "nodeType": "YulIdentifier",
                                  "src": "16683:2:33"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "16666:3:33"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "16666:20:33"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "16702:5:33"
                                        },
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "16709:1:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "16698:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16698:13:33"
                                    },
                                    {
                                      "name": "_1",
                                      "nodeType": "YulIdentifier",
                                      "src": "16713:2:33"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "16694:3:33"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "16694:22:33"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "16688:5:33"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "16688:29:33"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "16659:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "16659:59:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "16659:59:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "16577:1:33"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "16580:6:33"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "16574:2:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16574:13:33"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "16588:21:33",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "16590:17:33",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "16599:1:33"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "16602:4:33",
                              "type": "",
                              "value": "0x20"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "16595:3:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "16595:12:33"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "16590:1:33"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "16570:3:33",
                    "statements": []
                  },
                  "src": "16566:162:33"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "16762:64:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "pos",
                                      "nodeType": "YulIdentifier",
                                      "src": "16791:3:33"
                                    },
                                    {
                                      "name": "length",
                                      "nodeType": "YulIdentifier",
                                      "src": "16796:6:33"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "16787:3:33"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "16787:16:33"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "16805:4:33",
                                  "type": "",
                                  "value": "0x20"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "16783:3:33"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "16783:27:33"
                            },
                            {
                              "name": "end",
                              "nodeType": "YulIdentifier",
                              "src": "16812:3:33"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "16776:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "16776:40:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "16776:40:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "16743:1:33"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "16746:6:33"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "16740:2:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16740:13:33"
                  },
                  "nodeType": "YulIf",
                  "src": "16737:2:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "16835:116:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "16850:3:33"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "16863:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16871:2:33",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16859:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16859:15:33"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "16876:66:33",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "16855:3:33"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "16855:88:33"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "16846:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16846:98:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "16946:4:33",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "16842:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16842:109:33"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "16835:3:33"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_bytes",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "16449:5:33",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "16456:3:33",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "16464:3:33",
                "type": ""
              }
            ],
            "src": "16421:536:33"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "17143:259:33",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "17153:33:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "17179:6:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "17166:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17166:20:33"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "17157:5:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "17222:5:33"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_address",
                      "nodeType": "YulIdentifier",
                      "src": "17195:26:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17195:33:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "17195:33:33"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "17244:3:33"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "17253:5:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "17260:42:33",
                            "type": "",
                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "17249:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17249:54:33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "17237:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17237:67:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "17237:67:33"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "17324:3:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "17329:4:33",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "17320:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17320:14:33"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value0",
                                "nodeType": "YulIdentifier",
                                "src": "17353:6:33"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "17361:4:33",
                                "type": "",
                                "value": "0x20"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "17349:3:33"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "17349:17:33"
                          }
                        ],
                        "functionName": {
                          "name": "calldataload",
                          "nodeType": "YulIdentifier",
                          "src": "17336:12:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17336:31:33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "17313:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17313:55:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "17313:55:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "17377:19:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "17388:3:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "17393:2:33",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "17384:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17384:12:33"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "17377:3:33"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_struct$_ERC1155Token_$3671_calldata_ptr__to_t_struct$_ERC1155Token_$3671_memory_ptr__nonPadded_inplace_fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "17119:3:33",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "17124:6:33",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "17135:3:33",
                "type": ""
              }
            ],
            "src": "16962:440:33"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "17508:125:33",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "17518:26:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "17530:9:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "17541:2:33",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "17526:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17526:18:33"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "17518:4:33"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "17560:9:33"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "17575:6:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "17583:42:33",
                            "type": "",
                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "17571:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17571:55:33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "17553:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17553:74:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "17553:74:33"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "17477:9:33",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "17488:6:33",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "17499:4:33",
                "type": ""
              }
            ],
            "src": "17407:226:33"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "17877:354:33",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "17887:52:33",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "17897:42:33",
                    "type": "",
                    "value": "0xffffffffffffffffffffffffffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "17891:2:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "17955:9:33"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "17970:6:33"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "17978:2:33"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "17966:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17966:15:33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "17948:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17948:34:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "17948:34:33"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "18002:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "18013:2:33",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "17998:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17998:18:33"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nodeType": "YulIdentifier",
                            "src": "18022:6:33"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "18030:2:33"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "18018:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18018:15:33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "17991:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17991:43:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "17991:43:33"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "18054:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "18065:2:33",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "18050:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18050:18:33"
                      },
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "18070:6:33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18043:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18043:34:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18043:34:33"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "18097:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "18108:2:33",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "18093:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18093:18:33"
                      },
                      {
                        "name": "value3",
                        "nodeType": "YulIdentifier",
                        "src": "18113:6:33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18086:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18086:34:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18086:34:33"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "18140:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "18151:3:33",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "18136:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18136:19:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "18157:3:33",
                        "type": "",
                        "value": "160"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18129:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18129:32:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18129:32:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "18170:55:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "value4",
                        "nodeType": "YulIdentifier",
                        "src": "18197:6:33"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "18209:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "18220:3:33",
                            "type": "",
                            "value": "160"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "18205:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18205:19:33"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "18178:18:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18178:47:33"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "18170:4:33"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_payable_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "17814:9:33",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "17825:6:33",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "17833:6:33",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "17841:6:33",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "17849:6:33",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "17857:6:33",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "17868:4:33",
                "type": ""
              }
            ],
            "src": "17638:593:33"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "18477:578:33",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "18487:52:33",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "18497:42:33",
                    "type": "",
                    "value": "0xffffffffffffffffffffffffffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "18491:2:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "18555:9:33"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "18570:6:33"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "18578:2:33"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "18566:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18566:15:33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18548:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18548:34:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18548:34:33"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "18602:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "18613:2:33",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "18598:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18598:18:33"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nodeType": "YulIdentifier",
                            "src": "18622:6:33"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "18630:2:33"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "18618:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18618:15:33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18591:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18591:43:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18591:43:33"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "18654:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "18665:2:33",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "18650:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18650:18:33"
                      },
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "18670:6:33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18643:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18643:34:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18643:34:33"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "18697:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "18708:2:33",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "18693:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18693:18:33"
                      },
                      {
                        "name": "value3",
                        "nodeType": "YulIdentifier",
                        "src": "18713:6:33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18686:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18686:34:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18686:34:33"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "18740:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "18751:3:33",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "18736:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18736:19:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "18757:3:33",
                        "type": "",
                        "value": "160"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18729:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18729:32:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18729:32:33"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "18781:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "18792:3:33",
                            "type": "",
                            "value": "160"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "18777:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18777:19:33"
                      },
                      {
                        "name": "value5",
                        "nodeType": "YulIdentifier",
                        "src": "18798:6:33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18770:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18770:35:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18770:35:33"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "18831:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "18842:3:33",
                            "type": "",
                            "value": "192"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "18827:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18827:19:33"
                      },
                      {
                        "name": "value4",
                        "nodeType": "YulIdentifier",
                        "src": "18848:6:33"
                      },
                      {
                        "name": "value5",
                        "nodeType": "YulIdentifier",
                        "src": "18856:6:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldatacopy",
                      "nodeType": "YulIdentifier",
                      "src": "18814:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18814:49:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18814:49:33"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "18887:9:33"
                              },
                              {
                                "name": "value5",
                                "nodeType": "YulIdentifier",
                                "src": "18898:6:33"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "18883:3:33"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "18883:22:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "18907:3:33",
                            "type": "",
                            "value": "192"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "18879:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18879:32:33"
                      },
                      {
                        "name": "tail",
                        "nodeType": "YulIdentifier",
                        "src": "18913:4:33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18872:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18872:46:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18872:46:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "18927:122:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "18943:9:33"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "value5",
                                    "nodeType": "YulIdentifier",
                                    "src": "18962:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18970:2:33",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18958:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18958:15:33"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "18975:66:33",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "18954:3:33"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "18954:88:33"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "18939:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18939:104:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "19045:3:33",
                        "type": "",
                        "value": "192"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "18935:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18935:114:33"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "18927:4:33"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_calldata_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "18406:9:33",
                "type": ""
              },
              {
                "name": "value5",
                "nodeType": "YulTypedName",
                "src": "18417:6:33",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "18425:6:33",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "18433:6:33",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "18441:6:33",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "18449:6:33",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "18457:6:33",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "18468:4:33",
                "type": ""
              }
            ],
            "src": "18236:819:33"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "19211:484:33",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "19221:12:33",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "19231:2:33",
                    "type": "",
                    "value": "32"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "19225:2:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "19242:32:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "19260:9:33"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "19271:2:33"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "19256:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19256:18:33"
                  },
                  "variables": [
                    {
                      "name": "tail_1",
                      "nodeType": "YulTypedName",
                      "src": "19246:6:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "19290:9:33"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "19301:2:33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19283:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19283:21:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19283:21:33"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "19313:17:33",
                  "value": {
                    "name": "tail_1",
                    "nodeType": "YulIdentifier",
                    "src": "19324:6:33"
                  },
                  "variables": [
                    {
                      "name": "pos",
                      "nodeType": "YulTypedName",
                      "src": "19317:3:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "19339:27:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "19359:6:33"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "19353:5:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19353:13:33"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "19343:6:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "tail_1",
                        "nodeType": "YulIdentifier",
                        "src": "19382:6:33"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "19390:6:33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19375:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19375:22:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19375:22:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "19406:25:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "19417:9:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "19428:2:33",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "19413:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19413:18:33"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "19406:3:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "19440:29:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "19458:6:33"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "19466:2:33"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "19454:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19454:15:33"
                  },
                  "variables": [
                    {
                      "name": "srcPtr",
                      "nodeType": "YulTypedName",
                      "src": "19444:6:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "19478:13:33",
                  "value": {
                    "name": "tail",
                    "nodeType": "YulIdentifier",
                    "src": "19487:4:33"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "19482:1:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "19549:120:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "pos",
                              "nodeType": "YulIdentifier",
                              "src": "19570:3:33"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "19581:6:33"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "19575:5:33"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "19575:13:33"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "19563:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "19563:26:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "19563:26:33"
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "19602:19:33",
                        "value": {
                          "arguments": [
                            {
                              "name": "pos",
                              "nodeType": "YulIdentifier",
                              "src": "19613:3:33"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "19618:2:33"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "19609:3:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "19609:12:33"
                        },
                        "variableNames": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "19602:3:33"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "19634:25:33",
                        "value": {
                          "arguments": [
                            {
                              "name": "srcPtr",
                              "nodeType": "YulIdentifier",
                              "src": "19648:6:33"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "19656:2:33"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "19644:3:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "19644:15:33"
                        },
                        "variableNames": [
                          {
                            "name": "srcPtr",
                            "nodeType": "YulIdentifier",
                            "src": "19634:6:33"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "19511:1:33"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "19514:6:33"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "19508:2:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19508:13:33"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "19522:18:33",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "19524:14:33",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "19533:1:33"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "19536:1:33",
                              "type": "",
                              "value": "1"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "19529:3:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "19529:9:33"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "19524:1:33"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "19504:3:33",
                    "statements": []
                  },
                  "src": "19500:169:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "19678:11:33",
                  "value": {
                    "name": "pos",
                    "nodeType": "YulIdentifier",
                    "src": "19686:3:33"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "19678:4:33"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "19180:9:33",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "19191:6:33",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "19202:4:33",
                "type": ""
              }
            ],
            "src": "19060:635:33"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "19795:92:33",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "19805:26:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "19817:9:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "19828:2:33",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "19813:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19813:18:33"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "19805:4:33"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "19847:9:33"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value0",
                                "nodeType": "YulIdentifier",
                                "src": "19872:6:33"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nodeType": "YulIdentifier",
                              "src": "19865:6:33"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "19865:14:33"
                          }
                        ],
                        "functionName": {
                          "name": "iszero",
                          "nodeType": "YulIdentifier",
                          "src": "19858:6:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "19858:22:33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19840:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19840:41:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19840:41:33"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "19764:9:33",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "19775:6:33",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "19786:4:33",
                "type": ""
              }
            ],
            "src": "19700:187:33"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "19991:149:33",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "20001:26:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "20013:9:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "20024:2:33",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "20009:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20009:18:33"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "20001:4:33"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "20043:9:33"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "20058:6:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "20066:66:33",
                            "type": "",
                            "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "20054:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "20054:79:33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "20036:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20036:98:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20036:98:33"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "19960:9:33",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "19971:6:33",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "19982:4:33",
                "type": ""
              }
            ],
            "src": "19892:248:33"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "20291:168:33",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "20301:26:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "20313:9:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "20324:2:33",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "20309:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20309:18:33"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "20301:4:33"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "20343:9:33"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "20358:6:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "20366:42:33",
                            "type": "",
                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "20354:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "20354:55:33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "20336:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20336:74:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20336:74:33"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "20430:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "20441:2:33",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "20426:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "20426:18:33"
                      },
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "20446:6:33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "20419:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20419:34:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20419:34:33"
                }
              ]
            },
            "name": "abi_encode_tuple_t_contract$_IERC1155_$4654_t_uint256__to_t_address_t_uint256__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "20252:9:33",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "20263:6:33",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "20271:6:33",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "20282:4:33",
                "type": ""
              }
            ],
            "src": "20145:314:33"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "20585:100:33",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "20602:9:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "20613:2:33",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "20595:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20595:21:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20595:21:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "20625:54:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "20652:6:33"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "20664:9:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "20675:2:33",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "20660:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "20660:18:33"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "20633:18:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20633:46:33"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "20625:4:33"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "20554:9:33",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "20565:6:33",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "20576:4:33",
                "type": ""
              }
            ],
            "src": "20464:221:33"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "20791:76:33",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "20801:26:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "20813:9:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "20824:2:33",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "20809:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20809:18:33"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "20801:4:33"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "20843:9:33"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "20854:6:33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "20836:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20836:25:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20836:25:33"
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "20760:9:33",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "20771:6:33",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "20782:4:33",
                "type": ""
              }
            ],
            "src": "20690:177:33"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "20971:101:33",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "20981:26:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "20993:9:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21004:2:33",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "20989:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20989:18:33"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "20981:4:33"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "21023:9:33"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "21038:6:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "21046:18:33",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "21034:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "21034:31:33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "21016:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21016:50:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "21016:50:33"
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "20940:9:33",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "20951:6:33",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "20962:4:33",
                "type": ""
              }
            ],
            "src": "20872:200:33"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "21121:198:33",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "21131:19:33",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21147:2:33",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "21141:5:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21141:9:33"
                  },
                  "variableNames": [
                    {
                      "name": "memPtr",
                      "nodeType": "YulIdentifier",
                      "src": "21131:6:33"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "21159:35:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "21181:6:33"
                      },
                      {
                        "name": "size",
                        "nodeType": "YulIdentifier",
                        "src": "21189:4:33"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "21177:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21177:17:33"
                  },
                  "variables": [
                    {
                      "name": "newFreePtr",
                      "nodeType": "YulTypedName",
                      "src": "21163:10:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "21269:13:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "invalid",
                            "nodeType": "YulIdentifier",
                            "src": "21271:7:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "21271:9:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "21271:9:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "21212:10:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "21224:18:33",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "21209:2:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "21209:34:33"
                      },
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "21248:10:33"
                          },
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "21260:6:33"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "21245:2:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "21245:22:33"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nodeType": "YulIdentifier",
                      "src": "21206:2:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21206:62:33"
                  },
                  "nodeType": "YulIf",
                  "src": "21203:2:33"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21298:2:33",
                        "type": "",
                        "value": "64"
                      },
                      {
                        "name": "newFreePtr",
                        "nodeType": "YulIdentifier",
                        "src": "21302:10:33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "21291:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21291:22:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "21291:22:33"
                }
              ]
            },
            "name": "allocateMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "size",
                "nodeType": "YulTypedName",
                "src": "21101:4:33",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "memPtr",
                "nodeType": "YulTypedName",
                "src": "21110:6:33",
                "type": ""
              }
            ],
            "src": "21077:242:33"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "21399:108:33",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "21443:13:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "invalid",
                            "nodeType": "YulIdentifier",
                            "src": "21445:7:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "21445:9:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "21445:9:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "21415:6:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21423:18:33",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "21412:2:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21412:30:33"
                  },
                  "nodeType": "YulIf",
                  "src": "21409:2:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "21465:36:33",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "21481:6:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "21489:4:33",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "mul",
                          "nodeType": "YulIdentifier",
                          "src": "21477:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "21477:17:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21496:4:33",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "21473:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21473:28:33"
                  },
                  "variableNames": [
                    {
                      "name": "size",
                      "nodeType": "YulIdentifier",
                      "src": "21465:4:33"
                    }
                  ]
                }
              ]
            },
            "name": "array_allocation_size_t_array$_t_address_$dyn",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "21379:6:33",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "size",
                "nodeType": "YulTypedName",
                "src": "21390:4:33",
                "type": ""
              }
            ],
            "src": "21324:183:33"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "21569:31:33",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "21571:27:33",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21587:3:33",
                        "type": "",
                        "value": "224"
                      },
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "21592:5:33"
                      }
                    ],
                    "functionName": {
                      "name": "shr",
                      "nodeType": "YulIdentifier",
                      "src": "21583:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21583:15:33"
                  },
                  "variableNames": [
                    {
                      "name": "newValue",
                      "nodeType": "YulIdentifier",
                      "src": "21571:8:33"
                    }
                  ]
                }
              ]
            },
            "name": "shift_right_224_unsigned",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "21546:5:33",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "newValue",
                "nodeType": "YulTypedName",
                "src": "21556:8:33",
                "type": ""
              }
            ],
            "src": "21512:88:33"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "21652:836:33",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "21692:9:33",
                    "statements": [
                      {
                        "nodeType": "YulLeave",
                        "src": "21694:5:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [],
                        "functionName": {
                          "name": "returndatasize",
                          "nodeType": "YulIdentifier",
                          "src": "21668:14:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "21668:16:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21686:4:33",
                        "type": "",
                        "value": "0x44"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "21665:2:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21665:26:33"
                  },
                  "nodeType": "YulIf",
                  "src": "21662:2:33"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "ret",
                        "nodeType": "YulIdentifier",
                        "src": "21725:3:33"
                      },
                      {
                        "name": "ret",
                        "nodeType": "YulIdentifier",
                        "src": "21730:3:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21735:1:33",
                        "type": "",
                        "value": "4"
                      }
                    ],
                    "functionName": {
                      "name": "returndatacopy",
                      "nodeType": "YulIdentifier",
                      "src": "21710:14:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21710:27:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "21710:27:33"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "21810:9:33",
                    "statements": [
                      {
                        "nodeType": "YulLeave",
                        "src": "21812:5:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "ret",
                                    "nodeType": "YulIdentifier",
                                    "src": "21790:3:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "21784:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21784:10:33"
                              }
                            ],
                            "functionName": {
                              "name": "shift_right_224_unsigned",
                              "nodeType": "YulIdentifier",
                              "src": "21759:24:33"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "21759:36:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "21797:10:33",
                            "type": "",
                            "value": "0x08c379a0"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "21756:2:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "21756:52:33"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "21749:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21749:60:33"
                  },
                  "nodeType": "YulIf",
                  "src": "21746:2:33"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "21828:21:33",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21846:2:33",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "21840:5:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21840:9:33"
                  },
                  "variables": [
                    {
                      "name": "data",
                      "nodeType": "YulTypedName",
                      "src": "21832:4:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "21873:4:33"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21879:1:33",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "functionName": {
                              "name": "returndatasize",
                              "nodeType": "YulIdentifier",
                              "src": "21886:14:33"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "21886:16:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "21904:66:33",
                            "type": "",
                            "value": "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "21882:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "21882:89:33"
                      }
                    ],
                    "functionName": {
                      "name": "returndatacopy",
                      "nodeType": "YulIdentifier",
                      "src": "21858:14:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21858:114:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "21858:114:33"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "21981:25:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "22001:4:33"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "21995:5:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21995:11:33"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "21985:6:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "22015:26:33",
                  "value": {
                    "arguments": [],
                    "functionName": {
                      "name": "returndatasize",
                      "nodeType": "YulIdentifier",
                      "src": "22025:14:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22025:16:33"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "22019:2:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "22050:28:33",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "22060:18:33",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "22054:2:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "22136:9:33",
                    "statements": [
                      {
                        "nodeType": "YulLeave",
                        "src": "22138:5:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "22096:6:33"
                          },
                          {
                            "name": "_2",
                            "nodeType": "YulIdentifier",
                            "src": "22104:2:33"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "22093:2:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "22093:14:33"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "22116:6:33"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "22124:4:33",
                                "type": "",
                                "value": "0x24"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "22112:3:33"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "22112:17:33"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "22131:2:33"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "22109:2:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "22109:25:33"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nodeType": "YulIdentifier",
                      "src": "22090:2:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22090:45:33"
                  },
                  "nodeType": "YulIf",
                  "src": "22087:2:33"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "22154:28:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "22169:4:33"
                      },
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "22175:6:33"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "22165:3:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22165:17:33"
                  },
                  "variables": [
                    {
                      "name": "msg",
                      "nodeType": "YulTypedName",
                      "src": "22158:3:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "22191:24:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "msg",
                        "nodeType": "YulIdentifier",
                        "src": "22211:3:33"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "22205:5:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22205:10:33"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "22195:6:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "22242:9:33",
                    "statements": [
                      {
                        "nodeType": "YulLeave",
                        "src": "22244:5:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "22230:6:33"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "22238:2:33"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "22227:2:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22227:14:33"
                  },
                  "nodeType": "YulIf",
                  "src": "22224:2:33"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "22324:9:33",
                    "statements": [
                      {
                        "nodeType": "YulLeave",
                        "src": "22326:5:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "msg",
                                "nodeType": "YulIdentifier",
                                "src": "22274:3:33"
                              },
                              {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "22279:6:33"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "22270:3:33"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "22270:16:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "22288:4:33",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "22266:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "22266:27:33"
                      },
                      {
                        "arguments": [
                          {
                            "name": "data",
                            "nodeType": "YulIdentifier",
                            "src": "22299:4:33"
                          },
                          {
                            "arguments": [],
                            "functionName": {
                              "name": "returndatasize",
                              "nodeType": "YulIdentifier",
                              "src": "22305:14:33"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "22305:16:33"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "22295:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "22295:27:33"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "22263:2:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22263:60:33"
                  },
                  "nodeType": "YulIf",
                  "src": "22260:2:33"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "22349:2:33",
                        "type": "",
                        "value": "64"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "msg",
                                "nodeType": "YulIdentifier",
                                "src": "22361:3:33"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "22374:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22382:2:33",
                                        "type": "",
                                        "value": "31"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22370:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22370:15:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22387:66:33",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "22366:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22366:88:33"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "22357:3:33"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "22357:98:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "22457:4:33",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "22353:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "22353:109:33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "22342:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22342:121:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "22342:121:33"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "22472:10:33",
                  "value": {
                    "name": "msg",
                    "nodeType": "YulIdentifier",
                    "src": "22479:3:33"
                  },
                  "variableNames": [
                    {
                      "name": "ret",
                      "nodeType": "YulIdentifier",
                      "src": "22472:3:33"
                    }
                  ]
                }
              ]
            },
            "name": "try_decode_error_message",
            "nodeType": "YulFunctionDefinition",
            "returnVariables": [
              {
                "name": "ret",
                "nodeType": "YulTypedName",
                "src": "21644:3:33",
                "type": ""
              }
            ],
            "src": "21605:883:33"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "22630:322:33",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "22640:34:33",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "22668:5:33"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "22655:12:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22655:19:33"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nodeType": "YulTypedName",
                      "src": "22644:7:33",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nodeType": "YulIdentifier",
                        "src": "22710:7:33"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_address",
                      "nodeType": "YulIdentifier",
                      "src": "22683:26:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22683:35:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "22683:35:33"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "slot",
                        "nodeType": "YulIdentifier",
                        "src": "22734:4:33"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "slot",
                                    "nodeType": "YulIdentifier",
                                    "src": "22753:4:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "sload",
                                  "nodeType": "YulIdentifier",
                                  "src": "22747:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22747:11:33"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "22760:66:33",
                                "type": "",
                                "value": "0xffffffffffffffffffffffff0000000000000000000000000000000000000000"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "22743:3:33"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "22743:84:33"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "22833:7:33"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "22842:42:33",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "22829:3:33"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "22829:56:33"
                          }
                        ],
                        "functionName": {
                          "name": "or",
                          "nodeType": "YulIdentifier",
                          "src": "22740:2:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "22740:146:33"
                      }
                    ],
                    "functionName": {
                      "name": "sstore",
                      "nodeType": "YulIdentifier",
                      "src": "22727:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22727:160:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "22727:160:33"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "slot",
                            "nodeType": "YulIdentifier",
                            "src": "22907:4:33"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "22913:1:33",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "22903:3:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "22903:12:33"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "22934:5:33"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "22941:2:33",
                                "type": "",
                                "value": "32"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "22930:3:33"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "22930:14:33"
                          }
                        ],
                        "functionName": {
                          "name": "calldataload",
                          "nodeType": "YulIdentifier",
                          "src": "22917:12:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "22917:28:33"
                      }
                    ],
                    "functionName": {
                      "name": "sstore",
                      "nodeType": "YulIdentifier",
                      "src": "22896:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22896:50:33"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "22896:50:33"
                }
              ]
            },
            "name": "update_storage_value_offset_0t_struct$_ERC1155Token_$3671_calldata_ptr_to_t_struct$_ERC1155Token_$3671_storage",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "slot",
                "nodeType": "YulTypedName",
                "src": "22613:4:33",
                "type": ""
              },
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "22619:5:33",
                "type": ""
              }
            ],
            "src": "22493:459:33"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "23004:109:33",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "23091:16:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "23100:1:33",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "23103:1:33",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "23093:6:33"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "23093:12:33"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "23093:12:33"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "23027:5:33"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "23038:5:33"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "23045:42:33",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "23034:3:33"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "23034:54:33"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "23024:2:33"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "23024:65:33"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "23017:6:33"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23017:73:33"
                  },
                  "nodeType": "YulIf",
                  "src": "23014:2:33"
                }
              ]
            },
            "name": "validator_revert_t_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "22993:5:33",
                "type": ""
              }
            ],
            "src": "22957:156:33"
          }
        ]
      },
      "contents": "{\n    { }\n    function abi_decode_t_array$_t_uint256_$dyn_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(arrayPos, arrayPos) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(arrayPos, arrayPos) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, mul(length, 0x20)), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_t_array$_t_uint256_$dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let _1 := calldataload(offset)\n        let _2 := 0x20\n        let dst := allocateMemory(array_allocation_size_t_array$_t_address_$dyn(_1))\n        let dst_1 := dst\n        mstore(dst, _1)\n        dst := add(dst, _2)\n        let src := add(offset, _2)\n        if gt(add(add(offset, mul(_1, _2)), _2), end) { revert(array, array) }\n        let i := array\n        for { } lt(i, _1) { i := add(i, 1) }\n        {\n            mstore(dst, calldataload(src))\n            dst := add(dst, _2)\n            src := add(src, _2)\n        }\n        array := dst_1\n    }\n    function abi_decode_t_bytes_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(arrayPos, arrayPos) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(arrayPos, arrayPos) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_t_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let _1 := calldataload(offset)\n        if gt(_1, 0xffffffffffffffff) { invalid() }\n        let array_1 := allocateMemory(add(and(add(_1, 0x1f), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0), 0x20))\n        mstore(array_1, _1)\n        if gt(add(add(offset, _1), 0x20), end) { revert(array, array) }\n        calldatacopy(add(array_1, 0x20), add(offset, 0x20), _1)\n        mstore(add(add(array_1, _1), 0x20), array)\n        array := array_1\n    }\n    function abi_decode_t_uint64(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptrt_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value4, value4) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value4, value4) }\n        let value2_1, value3_1 := abi_decode_t_array$_t_uint256_$dyn_calldata(add(headStart, offset), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(value4, value4) }\n        let value4_1, value5_1 := abi_decode_t_array$_t_uint256_$dyn_calldata(add(headStart, offset_1), dataEnd)\n        value4 := value4_1\n        value5 := value5_1\n        let offset_2 := calldataload(add(headStart, 128))\n        if gt(offset_2, _1) { revert(value6, value6) }\n        let value6_1, value7_1 := abi_decode_t_bytes_calldata(add(headStart, offset_2), dataEnd)\n        value6 := value6_1\n        value7 := value7_1\n    }\n    function abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value4, value4) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value4, value4) }\n        value2 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(value4, value4) }\n        value3 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 128))\n        if gt(offset_2, _1) { revert(value4, value4) }\n        value4 := abi_decode_t_bytes(add(headStart, offset_2), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        let offset := calldataload(add(headStart, 96))\n        if gt(offset, 0xffffffffffffffff) { revert(value3, value3) }\n        value3 := abi_decode_t_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value4, value4) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        let offset := calldataload(add(headStart, 128))\n        if gt(offset, 0xffffffffffffffff) { revert(value4, value4) }\n        let value4_1, value5_1 := abi_decode_t_bytes_calldata(add(headStart, offset), dataEnd)\n        value4 := value4_1\n        value5 := value5_1\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value2, value2) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        let offset := calldataload(add(headStart, 128))\n        if gt(offset, 0xffffffffffffffff) { revert(value4, value4) }\n        value4 := abi_decode_t_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        if iszero(eq(value_1, iszero(iszero(value_1)))) { revert(value1, value1) }\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_addresst_struct$_ERC1155Token_$3671_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        let _1 := sub(dataEnd, headStart)\n        if slt(_1, 96) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        if slt(add(_1, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0), 64) { revert(value1, value1) }\n        value1 := add(headStart, 32)\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_uint64(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        value1 := abi_decode_t_uint64(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value0, value0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(value0, value0) }\n        let _3 := calldataload(_2)\n        let _4 := 0x20\n        let dst := allocateMemory(array_allocation_size_t_array$_t_address_$dyn(_3))\n        let dst_1 := dst\n        mstore(dst, _3)\n        dst := add(dst, _4)\n        let src := add(_2, _4)\n        if gt(add(add(_2, mul(_3, _4)), _4), dataEnd) { revert(value0, value0) }\n        let i := value0\n        for { } lt(i, _3) { i := add(i, 1) }\n        {\n            let value := calldataload(src)\n            validator_revert_t_address(value)\n            mstore(dst, value)\n            dst := add(dst, _4)\n            src := add(src, _4)\n        }\n        value0 := dst_1\n        let offset_1 := calldataload(add(headStart, _4))\n        if gt(offset_1, _1) { revert(value1, value1) }\n        value1 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(value0, value0) }\n        value0 := value\n    }\n    function abi_decode_tuple_t_contract$_IERC1155_$4654t_uint256t_uint64t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(value2, value2) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        value2 := abi_decode_t_uint64(add(headStart, 64))\n        let offset := calldataload(add(headStart, 96))\n        if gt(offset, 0xffffffffffffffff) { revert(value4, value4) }\n        let value3_1, value4_1 := abi_decode_t_bytes_calldata(add(headStart, offset), dataEnd)\n        value3 := value3_1\n        value4 := value4_1\n    }\n    function abi_decode_tuple_t_contract$_IERC1155_$4654t_uint256t_uint64t_uint256t_address(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value2, value2) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        value2 := abi_decode_t_uint64(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        let value_1 := calldataload(add(headStart, 128))\n        validator_revert_t_address(value_1)\n        value4 := value_1\n    }\n    function abi_decode_tuple_t_contract$_IERC1155_$4654t_uint256t_uint64t_uint256t_addresst_addresst_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7\n    {\n        if slt(sub(dataEnd, headStart), 224) { revert(value6, value6) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        value2 := abi_decode_t_uint64(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        let value_1 := calldataload(add(headStart, 128))\n        validator_revert_t_address(value_1)\n        value4 := value_1\n        let value_2 := calldataload(add(headStart, 160))\n        validator_revert_t_address(value_2)\n        value5 := value_2\n        let offset := calldataload(add(headStart, 192))\n        if gt(offset, 0xffffffffffffffff) { revert(value6, value6) }\n        let value6_1, value7_1 := abi_decode_t_bytes_calldata(add(headStart, offset), dataEnd)\n        value6 := value6_1\n        value7 := value7_1\n    }\n    function abi_decode_tuple_t_contract$_IERC1155_$4654t_uint256t_uint64t_uint256t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value2, value2) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        value2 := abi_decode_t_uint64(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        let offset := calldataload(add(headStart, 128))\n        if gt(offset, 0xffffffffffffffff) { revert(value4, value4) }\n        let value4_1, value5_1 := abi_decode_t_bytes_calldata(add(headStart, offset), dataEnd)\n        value4 := value4_1\n        value5 := value5_1\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_decode_tuple_t_uint256t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_t_address(value)\n        value1 := value\n    }\n    function abi_decode_tuple_t_uint64(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := abi_decode_t_uint64(headStart)\n    }\n    function abi_decode_tuple_t_uint64t_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := abi_decode_t_uint64(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_uint64t_uint256t_addresst_uint256t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value2, value2) }\n        value0 := abi_decode_t_uint64(headStart)\n        value1 := calldataload(add(headStart, 32))\n        let value := calldataload(add(headStart, 64))\n        validator_revert_t_address(value)\n        value2 := value\n        value3 := calldataload(add(headStart, 96))\n        let offset := calldataload(add(headStart, 128))\n        if gt(offset, 0xffffffffffffffff) { revert(value4, value4) }\n        let value4_1, value5_1 := abi_decode_t_bytes_calldata(add(headStart, offset), dataEnd)\n        value4 := value4_1\n        value5 := value5_1\n    }\n    function abi_decode_tuple_t_uint64t_uint256t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(value2, value2) }\n        value0 := abi_decode_t_uint64(headStart)\n        value1 := calldataload(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        let offset := calldataload(add(headStart, 96))\n        if gt(offset, 0xffffffffffffffff) { revert(value3, value3) }\n        value3 := abi_decode_t_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_encode_t_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let i := end\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            let _1 := 0x20\n            mstore(add(add(pos, i), _1), mload(add(add(value, i), _1)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(pos, length), 0x20), end)\n        }\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_tuple_packed_t_struct$_ERC1155Token_$3671_calldata_ptr__to_t_struct$_ERC1155Token_$3671_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let value := calldataload(value0)\n        validator_revert_t_address(value)\n        mstore(pos, and(value, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(pos, 0x20), calldataload(add(value0, 0x20)))\n        end := add(pos, 64)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_address_payable_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), 160)\n        tail := abi_encode_t_bytes(value4, add(headStart, 160))\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_calldata_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), 160)\n        mstore(add(headStart, 160), value5)\n        calldatacopy(add(headStart, 192), value4, value5)\n        mstore(add(add(headStart, value5), 192), tail)\n        tail := add(add(headStart, and(add(value5, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 192)\n    }\n    function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := tail\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, mload(srcPtr))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffff00000000000000000000000000000000000000000000000000000000))\n    }\n    function abi_encode_tuple_t_contract$_IERC1155_$4654_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_t_bytes(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffff))\n    }\n    function allocateMemory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, size)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { invalid() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_t_array$_t_address_$dyn(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { invalid() }\n        size := add(mul(length, 0x20), 0x20)\n    }\n    function shift_right_224_unsigned(value) -> newValue\n    { newValue := shr(224, value) }\n    function try_decode_error_message() -> ret\n    {\n        if lt(returndatasize(), 0x44) { leave }\n        returndatacopy(ret, ret, 4)\n        if iszero(eq(shift_right_224_unsigned(mload(ret)), 0x08c379a0)) { leave }\n        let data := mload(64)\n        returndatacopy(data, 4, add(returndatasize(), 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc))\n        let offset := mload(data)\n        let _1 := returndatasize()\n        let _2 := 0xffffffffffffffff\n        if or(gt(offset, _2), gt(add(offset, 0x24), _1)) { leave }\n        let msg := add(data, offset)\n        let length := mload(msg)\n        if gt(length, _2) { leave }\n        if gt(add(add(msg, length), 0x20), add(data, returndatasize())) { leave }\n        mstore(64, add(add(msg, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20))\n        ret := msg\n    }\n    function update_storage_value_offset_0t_struct$_ERC1155Token_$3671_calldata_ptr_to_t_struct$_ERC1155Token_$3671_storage(slot, value)\n    {\n        let value_1 := calldataload(value)\n        validator_revert_t_address(value_1)\n        sstore(slot, or(and(sload(slot), 0xffffffffffffffffffffffff0000000000000000000000000000000000000000), and(value_1, 0xffffffffffffffffffffffffffffffffffffffff)))\n        sstore(add(slot, 1), calldataload(add(value, 32)))\n    }\n    function validator_revert_t_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n}",
      "id": 33,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "sourceMap": "589:2890:7:-:0;;;1122:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1163:4;;;768:40:14;-1:-1:-1;;;768:18:14;:40::i;:::-;2199:13:5;2207:4;2199:7;:13::i;:::-;2301:41;-1:-1:-1;;;2301:18:5;:41::i;:::-;2442:54;-1:-1:-1;;;2442:18:5;:54::i;:::-;-1:-1:-1;282:152:18;;-1:-1:-1;;;;282:18:18;:152::i;:::-;4753:190:1::1;-1:-1:-1::0;;;4753:18:1::1;:190::i;:::-;4687:263:::0;1122:50:7;589:2890;;1499:198:14;-1:-1:-1;;;;;;1582:25:14;;;;;1574:66;;;;;-1:-1:-1;;;1574:66:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1650:33:14;:20;:33;;;;;;;;;;:40;;-1:-1:-1;;1650:40:14;1686:4;1650:40;;;1499:198::o;7807:86:5:-;7873:13;;;;:4;;:13;;;;;:::i;:::-;;7807:86;:::o;589:2890:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;589:2890:7;;;-1:-1:-1;589:2890:7;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:1089:33;;125:2;168;156:9;147:7;143:23;139:32;136:2;;;189:6;181;174:22;136:2;221:16;;-1:-1:-1;;;;;286:14:33;;;283:2;;;318:6;310;303:22;283:2;361:6;350:9;346:22;336:32;;406:7;399:4;395:2;391:13;387:27;377:2;;433:6;425;418:22;377:2;467;461:9;489:2;485;482:10;479:2;;;495:9;479:2;535;529:9;604:2;585:13;;-1:-1:-1;;581:27:33;569:40;;565:49;;629:18;;;649:22;;;626:46;623:2;;;675:9;623:2;702;695:22;726:18;;;763:11;;;759:20;;756:33;-1:-1:-1;753:2:33;;;807:6;799;792:22;753:2;834:6;825:15;;849:129;863:2;860:1;857:9;849:129;;;951:10;;;947:19;;941:26;920:14;;;916:23;;909:59;874:10;;;;849:129;;;996:2;993:1;990:9;987:2;;;1055:6;1050:2;1045;1037:6;1033:15;1029:24;1022:40;987:2;1091:6;105:998;-1:-1:-1;;;;;;;105:998:33:o;:::-;589:2890:7;;;;;;",
  "deployedSourceMap": "589:2890:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3141:228:5;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4244:90:1;;;;;;:::i;:::-;;:::i;965:140:14:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;7966:1184:1:-;;;;;;:::i;:::-;;:::i;:::-;;2902:97:5;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;538:162:23:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1710:513:7:-;;;;;;:::i;:::-;;:::i;13551:398:1:-;;;;;;:::i;:::-;;:::i;6723:889::-;;;;;;:::i;:::-;;:::i;14894:119::-;;;;;;:::i;:::-;;:::i;3468:28::-;;;:::i;:::-;;;;;;;:::i;3526:631:5:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;14044:119:1:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4552:50::-;;;;;;:::i;:::-;;:::i;4045:89::-;;;;;;:::i;:::-;;:::i;4436:59::-;;;;;;:::i;:::-;;:::i;3397:25::-;;;:::i;10987:1916::-;;;;;;:::i;:::-;;:::i;14272:110::-;;;;;;:::i;:::-;;:::i;4225:306:5:-;;;;;;:::i;:::-;;:::i;366:201:17:-;;;;;;:::i;:::-;;:::i;1240:104:6:-;;;;;;:::i;:::-;;:::i;1206:284:7:-;;;;;;:::i;:::-;;:::i;5297:220:1:-;;;;;;:::i;:::-;;:::i;2483:504:7:-;;;;;;:::i;:::-;;:::i;991:59::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;4598:166:5:-;;;;;;:::i;:::-;;:::i;9570:467:1:-;;;;;;:::i;:::-;;:::i;187:173:17:-;;;;;;:::i;:::-;;:::i;13081:292:1:-;;;;;;:::i;:::-;;:::i;14648:151::-;;;;;;:::i;:::-;;:::i;5868:140::-;;;;;;:::i;:::-;;:::i;3141:228:5:-;3227:7;3254:21;;;3246:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3340:13:5;;;;:9;:13;;;;;;;;:22;;;;;;;;;;;3141:228;;;;;:::o;4244:90:1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;965:140:14:-;1065:33;;;1042:4;1065:33;;;;;;;;;;;;;965:140;;;;:::o;7966:1184:1:-;8153:39;8195:93;8230:26;8258:18;8278:9;8195:34;:93::i;:::-;8153:135;;8298:30;8331:73;8357:26;8385:18;8331:25;:73::i;:::-;8298:106;;8476:19;8510:145;8603:51;8621:4;8628:25;8603:9;:51::i;:::-;8510:71;;;;;;8555:4;8510:71;;;;;;;;;;;;:36;;;;;;:71;;;;;;;;;;;;;;:36;:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8510:71:1;;:75;:145::i;:::-;8476:179;;8665:15;8834:51;8852:4;8859:25;8834:9;:51::i;:::-;8759:60;8777:4;8784:34;8759:9;:60::i;:::-;8733:11;:86;:152;;;;;;8665:220;;8947:196;8967:26;9007:18;9039:9;9062:7;9091:4;9118;9137:5;;8947:6;:196::i;:::-;7966:1184;;;;;;;;;:::o;2902:97:5:-;2988:4;2981:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2956:13;;2981:11;;2988:4;;2981:11;;2988:4;2981:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2902:97;;;:::o;538:162:23:-;663:30;538:162;;;;;;:::o;1710:513:7:-;1853:19;22165:24:1;22180:8;22165:14;:24::i;:::-;22157:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1932:31:7::1;::::0;::::1;1888:41;1932:31:::0;;;:20:::1;:31;::::0;;;;1973:64:::1;1989:10;2001:19:::0;2022:7;2031:5;1973:15:::1;:64::i;:::-;2090:36:::0;;;2171:28;::::1;::::0;2090:126:::1;::::0;;;;:36:::1;::::0;;::::1;::::0;:53:::1;::::0;:126:::1;::::0;2144:10:::1;::::0;2164:4:::1;::::0;2201:7;;2210:5;;2090:126:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22230:1:1;1710:513:7::0;;;;;:::o;13551:398:1:-;13773:7;13769:104;13786:16;;;13769:104;;;13824:38;13846:4;;13851:2;13846:8;;;;;;;;;;;;;13856:5;13824:21;:38::i;:::-;13804:4;;13769:104;;;;13882:60;13909:5;13916:3;13921:4;;13882:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13882:60:1;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13927:7:1;;-1:-1:-1;13927:7:1;;;;13882:60;;;13927:7;;13882:60;13927:7;13882:60;;;;;;;;;-1:-1:-1;;13882:60:1;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13936:5:1;;-1:-1:-1;13936:5:1;;;;13882:60;;13936:5;;;;13882:60;;;;;;;;;-1:-1:-1;13882:26:1;;-1:-1:-1;;;13882:60:1:i;:::-;13551:398;;;;;;;;:::o;6723:889::-;6967:39;7009:93;7044:26;7072:18;7092:9;7009:34;:93::i;:::-;6967:135;;7112:62;7118:3;7123:34;7159:7;7168:5;;7112:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7112:5:1;;-1:-1:-1;;;7112:62:1:i;:::-;7184:30;7217:73;7243:26;7271:18;7217:25;:73::i;:::-;7184:106;;7300:53;7306:3;7311:25;7338:7;7347:5;;7300:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7300:5:1;;-1:-1:-1;;;7300:53:1:i;:::-;7433:5;7368:92;;7413:18;7385:26;7368:92;;;7440:7;7449:3;7454:5;;7368:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7368:92:1;;-1:-1:-1;;;;;;7368:92:1;7470:26;:43;;;7514:5;7529:4;7536:18;7556:7;7565:5;;7470:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6723:889;;;;;;;;;;:::o;14894:119::-;14980:26;;14957:4;14980:26;;;:15;:26;;;;;;;14894:119::o;3468:28::-;;;;;;;;;:::o;3526:631:5:-;3699:16;3758:3;:10;3739:8;:15;:29;3731:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3825:30;3872:8;:15;3858:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3858:30:5;;3825:63;;3904:9;3899:221;3923:8;:15;3919:1;:19;3899:221;;;3990:1;3967:25;;:8;3976:1;3967:11;;;;;;;;;;;;;;:25;;;;3959:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4079:9;:17;4089:3;4093:1;4089:6;;;;;;;;;;;;;;4079:17;;;;;;;;;;;:30;4097:8;4106:1;4097:11;;;;;;;;;;;;;;4079:30;;;;;;;;;;;;;;;;4060:13;4074:1;4060:16;;;;;;;;;;;;;;;;;:49;3940:3;;3899:221;;;-1:-1:-1;4137:13:5;3526:631;-1:-1:-1;;;3526:631:5:o;14044:119:1:-;14130:26;;14104:7;14130:26;;;:15;:26;;;;;;;;;14044:119::o;4552:50::-;;;;;;;;;;;;;;;:::o;4045:89::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;4436:59::-;;;;;;;;;;;;;:::o;3397:25::-;;;;;;:::o;10987:1916::-;11212:27;11229:9;11212:16;:27::i;:::-;11204:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11327:18;11348:26;11364:9;11348:15;:26::i;:::-;11402:10;11384:29;;;;:17;:29;;;;;;;;:41;;;;;;;;:48;;;;11428:4;11384:48;;;11327:47;;-1:-1:-1;11384:29:1;;11652:118;;11673:26;;11701:18;;11721:9;;11414:10;;11327:47;11652:20;:118::i;:::-;11573:197;;;;11986:13;12003:1;11986:18;11982:409;;12020:17;12040:47;12052:34;12040:11;:47::i;:::-;12020:67;;12105:13;12101:280;;;12138:70;;;;:34;:70;;;;;;;;12209:10;12138:82;;;;;;;:94;;;12101:280;;;12271:71;;;;:35;:71;;;;;;;;12343:10;12271:83;;;;;;;:95;;;12101:280;11982:409;;12405:13;12400:139;;12473:36;;;;;;;:25;:36;;;;;;:55;;12514:13;12473:40;:55::i;:::-;12434:36;;;;;;;:25;:36;;;;;:94;12400:139;12594:26;:43;;;12646:4;12653:10;12665:18;12685:13;12700:5;;12594:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12721:175:1;;;12849:10;12721:175;;;;;;;;;;;;;;-1:-1:-1;12794:18:1;;-1:-1:-1;12721:175:1;;;;;;;;;;;;10987:1916;;;;;;;;;:::o;14272:110::-;-1:-1:-1;14371:4:1;;14272:110::o;4225:306:5:-;4343:8;4327:24;;:12;:10;:12::i;:::-;:24;;;;4319:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4453:8;4408:18;:32;4427:12;:10;:12::i;:::-;4408:32;;;;;;;;;;;;;;;;;;-1:-1:-1;4408:32:5;;;:42;;;;;;;;;;;;:53;;;;;;;;;;;;;;4491:12;:10;:12::i;:::-;4476:48;;;4515:8;4476:48;;;;;;;;;;;;;;;;;;;;4225:306;;:::o;366:201:17:-;524:36;366:201;;;;;;;:::o;1240:104:6:-;1294:7;1320:17;;;:13;:17;;;;;;;1240:104::o;1206:284:7:-;1298:6;1316:16;1335:27;1349:12;1335:13;:27::i;:::-;1372:31;;;;;;;:20;:31;;;;;1316:46;;-1:-1:-1;1406:6:7;;1372:40;1406:6;1372:31;:40;:::i;:::-;-1:-1:-1;;1427:30:7;;;;1450:6;;1427:30;:::i;:::-;;;;;;;;;;;;;;;;;;;1474:9;1206:284;-1:-1:-1;;;1206:284:7:o;5297:220:1:-;22011:26;;;;;;;:15;:26;;;;;;5384:9;;22011:40;:26;22041:10;22011:40;22003:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5405:26:::1;::::0;::::1;;::::0;;;:15:::1;:26;::::0;;;;;:44;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;5464:46;;5405:44;;5464:46:::1;::::0;::::1;5297:220:::0;;;:::o;2483:504:7:-;2641:19;22165:24:1;22180:8;22165:14;:24::i;:::-;22157:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2720:31:7::1;::::0;::::1;2676:41;2720:31:::0;;;:20:::1;:31;::::0;;;;2761:47:::1;2767:10;2779:19:::0;2800:7;2761:5:::1;:47::i;:::-;2861:36:::0;;;2935:28;::::1;::::0;2861:119:::1;::::0;;;;:36:::1;::::0;;::::1;::::0;:53:::1;::::0;:119:::1;::::0;2923:4:::1;::::0;2930:3;;2965:7;;2974:5;;;;2861:119:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22230:1:1;2483:504:7::0;;;;;;;:::o;991:59::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;4598:166:5:-;4720:27;;;;4697:4;4720:27;;;:18;:27;;;;;;;;:37;;;;;;;;;;;;;;;4598:166::o;9570:467:1:-;9781:7;9800:18;9821:26;9837:9;9821:15;:26::i;:::-;9800:47;;9860:16;9892:113;9913:26;9941:18;9961:9;9972:10;9984:5;9991:13;9892:20;:113::i;:::-;9857:148;9570:467;-1:-1:-1;;;;;;;;;9570:467:1:o;187:173:17:-;322:31;187:173;;;;;;;:::o;13081:292:1:-;13270:33;13292:3;13297:5;13270:21;:33::i;:::-;13313:53;13335:5;13342:3;13347;13352:6;13360:5;;13313:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13313:21:1;;-1:-1:-1;;;13313:53:1:i;:::-;13081:292;;;;;;:::o;14648:151::-;14756:24;;;;;14733:4;14756:24;;;:17;:24;;;;;;;;:36;;;;;;;;;;;14648:151::o;5868:140::-;22011:26;;;;;;;:15;:26;;;;;;5946:9;;22011:40;:26;22041:10;22011:40;22003:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5967:26:1::1;::::0;;::::1;;::::0;;;:15:::1;:26;::::0;;;;:34;5868:140::o;16853:290::-;17059:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17049:86;;;;;;16853:290::o;17531:252::-;17710:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17700:75;;;;;;17531:252::o;1329:134:16:-;1387:7;1413:43;1417:1;1420;1413:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1406:50;1329:134;-1:-1:-1;;;1329:134:16:o;21679:271:1:-;21937:5;-1:-1:-1;21925:18:1;21679:271::o;15332:307::-;15480:27;;;;:15;:27;;;;;;:40;;;;:27;;:40;15472:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15562:70;15568:35;15593:9;15568:24;:35::i;:::-;15605:10;15617:7;15626:5;15562;:70::i;:::-;15332:307;;;;:::o;17789:181::-;17881:24;;;;;;;:17;:24;;;;;;;;:29;;;;;;;;;;;17880:30;17872:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17789:181;;:::o;18565:921::-;18797:7;:14;18782:4;:11;:29;18774:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18881:17;;;18873:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18974:19;;;18983:10;18974:19;;:68;;-1:-1:-1;18997:25:1;;;;;;;:18;:25;;;;;;;;19023:10;18997:37;;;;;;;;;;:45;;:37;:45;18974:68;18953:171;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19140:10;19135:185;19161:4;:11;19156:2;:16;19135:185;;;19194:11;19208:4;19213:2;19208:8;;;;;;;;;;;;;;19194:22;;19230:14;19247:7;19255:2;19247:11;;;;;;;;;;;;;;19230:28;;19273:36;19285:3;19290:5;19297:3;19302:6;19273:11;:36::i;:::-;-1:-1:-1;;19174:4:1;;19135:185;;;;19368:3;19335:52;;19361:5;19335:52;;19349:10;19335:52;;;19373:4;19379:7;19335:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19398:81;19434:10;19446:5;19453:3;19458:4;19464:7;19473:5;19398:35;:81::i;:::-;18565:921;;;;;:::o;1509:357:6:-;1618:16;;;1610:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1683:22;1691:2;1695;1699:5;1683:7;:22::i;:::-;1720:53;;;;;;;;;;;;;;;;;;1755:1;;1735:10;;1720:53;;;;;;;;;;;1784:75;1815:10;1835:1;1839:2;1843;1847:5;1854:4;1784:30;:75::i;21532:141:1:-;21640:26;;21598:4;21640:26;;;:15;:26;;;;;;21621:15;:45;;;21532:141::o;20249:1277::-;20501:39;20542:16;20574:27;20604:28;20614:5;20621:10;20604:9;:28::i;:::-;20574:58;;20642:32;20689:13;:78;;20731:36;;;;;;;:25;:36;;;;;;20689:78;;;20705:23;20717:10;20705:11;:23::i;:::-;20642:125;;20814:93;20849:26;20877:18;20897:9;20814:34;:93::i;:::-;20777:130;;20966:19;20988:65;21007:19;21028:24;20988:18;:65::i;:::-;20966:87;;21063:28;21169:13;:207;;21298:71;;;;:35;:71;;;;;;;;:78;;;;;;;;;;;21169:207;;;21201:70;;;;:34;:70;;;;;;;;:77;;;;;;;;;;;21169:207;21106:47;21118:34;21106:11;:47::i;:::-;:271;21063:314;;21387:18;21408:52;21424:9;21435:10;21447:12;21408:15;:52::i;:::-;21387:73;-1:-1:-1;21481:38:1;:16;;;;21498:20;21481:16;:38::i;:::-;21470:49;;20249:1277;;;;;;;;;;;;;;:::o;882:176:16:-;940:7;971:5;;;994:6;;;;986:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;598:104:12;685:10;598:104;;:::o;19492:306:1:-;19594:11;19592:13;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19615:26:1;;;:15;:26;;;;;;;;:41;;;;;;;;;;19671:36;;19685:10;19671:36;;;;;;;;;;;-1:-1:-1;;19671:36:1;;;;;;;;;19722:43;;;;;;;;;;;;;;;19782:9;19492:306;-1:-1:-1;;19492:306:1:o;2736:188:6:-;2821:25;2829:5;2836:2;2840:5;2821:7;:25::i;:::-;2861:56;;;;;;;;;;;;;;2903:1;;2861:56;;;;2876:10;;2861:56;;;;;;;;;;;2736:188;;;:::o;17976:583:1:-;18110:17;;;18102:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18203:19;;;18212:10;18203:19;;:68;;-1:-1:-1;18226:25:1;;;;;;;:18;:25;;;;;;;;18252:10;18226:37;;;;;;;;;;:45;;:37;:45;18203:68;18182:171;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18364:36;18376:3;18381:5;18388:3;18393:6;18364:11;:36::i;:::-;18450:3;18416:51;;18443:5;18416:51;;18431:10;18416:51;;;18455:3;18460:6;18416:51;;;;;;;;;;;;;;;;;;;;;;;;18478:74;18509:10;18521:5;18528:3;18533;18538:6;18546:5;18478:30;:74::i;1754:187:16:-;1840:7;1875:12;1867:6;;;;1859:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1910:5:16;;;1754:187::o;16162:232:1:-;16291:14;;;;:9;:14;;;;;;;;:21;;;;;;;;;;;:33;;16317:6;16291:25;:33::i;:::-;16267:14;;;;:9;:14;;;;;;;;:21;;;;;;;;;;;:57;;;;16367:19;;;;;;16356:31;;:6;;:10;:31::i;:::-;16334:14;;;;:9;:14;;;;;;;;:19;;;;;;;;;;;;;:53;-1:-1:-1;;16162:232:1:o;13494:779:5:-;13739:15;:2;:13;;;:15::i;:::-;13735:532;;;13791:2;13774:43;;;13818:8;13828:4;13834:3;13839:7;13848:4;13774:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13774:79:5;;;13770:487;;;;:::i;:::-;;;;;;;;14126:14;;;;;;;;;;;;;;;;;;;;14133:6;;14126:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13770:487;14180:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13770:487;13902:64;;;13914:52;13902:64;13898:161;;13990:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13898:161;13854:219;13494:779;;;;;;:::o;3454:250:6:-;3548:17;;;;:13;:17;;;;;;:28;;3570:5;3548:21;:28::i;:::-;3528:17;;;;:13;:17;;;;;;;;:48;;;;3606:9;:13;;;;;:17;;;;;;;;;;;;;;;;:25;;;3586:45;;3454:250::o;12746:742:5:-;12966:15;:2;:13;;;:15::i;:::-;12962:520;;;13018:2;13001:38;;;13040:8;13050:4;13056:2;13060:6;13068:4;13001:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13001:72:5;;;12997:475;;;;:::i;:::-;13122:59;;;13134:47;13122:59;13118:156;;13205:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8234:203:32;8294:6;8317;8308:16;;;;;;8330:14;8347:12;8354:1;8357;8347:5;:12::i;:::-;8330:29;-1:-1:-1;978:34:32;8374:29;;;;;8365:39;;;;;5958:455;6017:7;6036:6;6032:20;;-1:-1:-1;6051:1:32;6044:8;;6032:20;6073:1;6068;:6;;;;6059:16;;;;;;6096:11;;;;6115:34;6111:38;;6096:54;;6155:2;6095:62;;6196:3;6191:8;;;6176:24;6222:50;6216:56;;;6207:66;;;;;;6286:2;6279:9;6316:71;;6304:83;;;6295:93;;;;;;6401:7;;5958:455;-1:-1:-1;;;5958:455:32:o;3710:256:6:-;3808:13;;;;:9;:13;;;;;;;;:19;;;;;;;;;;;:30;;3832:5;3808:23;:30::i;:::-;3786:13;;;;:9;:13;;;;;;;;:19;;;;;;;;;;;;:52;;;;3868:17;;;:13;:17;;;;;;;:25;;;;3848:45;;3710:256::o;726:413:28:-;1086:20;1124:8;;;726:413::o;20447:1218:32:-;20507:7;20531:6;20522:16;;;;;;20545:14;20575:50;20570:1;:55;20566:1005;;20654:1;20648:2;20643:1;:7;;20642:13;;;;;;20633:22;;20566:1005;;;20688:3;20712:8;;;20738:11;20732:17;;20728:48;;20760:2;20764:9;;;;20753;20728:48;20793:7;20787:2;:13;20783:44;;20811:2;20815:9;;;;20804;20783:44;20844:5;20838:2;:11;20834:40;;20860:1;20863:8;;;;20853;20834:40;20891:4;20885:2;:10;20881:39;;20906:1;20909:8;;;;20899;20881:39;20937:3;20931:2;:9;20927:38;;20951:1;20954:8;;;;20944;20927:38;20982:3;20976:2;:9;20972:23;;20994:1;20987:8;;;;20972:23;21081:3;21075;:9;21070:1;21066;:5;:18;;21088:1;21065:24;21057:3;21051;:9;21046:1;:14;;21045:45;;;;;;21036:54;;21117:34;21107:6;:44;;21098:54;;;;;;21189:3;21184:8;;;21174:19;;21228:34;21224:38;;21214:49;;21290:3;21285:8;;;21319:2;21314:7;;;21334;;;21330:20;;;21349:1;21343:7;;;;21330:20;21422:3;21416:9;;;;21358:8;;21437:7;;;21433:20;;;21452:1;21446:7;;;;21433:20;21461:8;;;21535:3;21529:9;;;21523:15;;21515:24;;;;21563:1;21558:2;:6;;;;;;21548:16;;;;20566:1005;;;;;;;21596:34;21586:6;:44;;21577:54;;;;;14:404:33;;;147:3;140:4;132:6;128:17;124:27;114:2;;172:8;162;155:26;114:2;-1:-1:-1;202:20:33;;245:18;234:30;;231:2;;;284:8;274;267:26;231:2;328:4;320:6;316:17;304:29;;391:3;384:4;376;368:6;364:17;356:6;352:30;348:41;345:50;342:2;;;408:1;405;398:12;342:2;104:314;;;;;:::o;423:705::-;;536:3;529:4;521:6;517:17;513:27;503:2;;558:5;551;544:20;503:2;598:6;585:20;624:4;648:65;663:49;709:2;663:49;:::i;:::-;648:65;:::i;:::-;747:15;;;778:12;;;;810:15;;;856:11;;;844:24;;840:33;;837:42;-1:-1:-1;834:2:33;;;896:5;889;882:20;834:2;922:5;936:163;950:2;947:1;944:9;936:163;;;1007:17;;995:30;;1045:12;;;;1077;;;;968:1;961:9;936:163;;;-1:-1:-1;1117:5:33;;493:635;-1:-1:-1;;;;;;;493:635:33:o;1133:377::-;;;1250:3;1243:4;1235:6;1231:17;1227:27;1217:2;;1275:8;1265;1258:26;1217:2;-1:-1:-1;1305:20:33;;1348:18;1337:30;;1334:2;;;1387:8;1377;1370:26;1334:2;1431:4;1423:6;1419:17;1407:29;;1483:3;1476:4;1467:6;1459;1455:19;1451:30;1448:39;1445:2;;;1500:1;1497;1490:12;1515:601;;1612:3;1605:4;1597:6;1593:17;1589:27;1579:2;;1634:5;1627;1620:20;1579:2;1674:6;1661:20;1700:18;1696:2;1693:26;1690:2;;;1722:9;1690:2;1757:113;1864:4;1795:66;1788:4;1784:2;1780:13;1776:86;1772:97;1757:113;:::i;:::-;1895:2;1886:7;1879:19;1941:3;1934:4;1929:2;1921:6;1917:15;1913:26;1910:35;1907:2;;;1962:5;1955;1948:20;1907:2;2031;2024:4;2016:6;2012:17;2005:4;1996:7;1992:18;1979:55;2054:16;;;2072:4;2050:27;2043:42;;;;2058:7;1569:547;-1:-1:-1;;1569:547:33:o;2121:173::-;2190:20;;2250:18;2239:30;;2229:41;;2219:2;;2284:1;2281;2274:12;2299:402;;;2428:2;2416:9;2407:7;2403:23;2399:32;2396:2;;;2449:6;2441;2434:22;2396:2;2493:9;2480:23;2512:33;2539:5;2512:33;:::i;:::-;2564:5;-1:-1:-1;2621:2:33;2606:18;;2593:32;2634:35;2593:32;2634:35;:::i;:::-;2688:7;2678:17;;;2386:315;;;;;:::o;2706:1396::-;;;;;;;;;2975:3;2963:9;2954:7;2950:23;2946:33;2943:2;;;2997:6;2989;2982:22;2943:2;3041:9;3028:23;3060:33;3087:5;3060:33;:::i;:::-;3112:5;-1:-1:-1;3169:2:33;3154:18;;3141:32;3182:35;3141:32;3182:35;:::i;:::-;3236:7;-1:-1:-1;3294:2:33;3279:18;;3266:32;3317:18;3347:14;;;3344:2;;;3379:6;3371;3364:22;3344:2;3423:76;3491:7;3482:6;3471:9;3467:22;3423:76;:::i;:::-;3518:8;;-1:-1:-1;3397:102:33;-1:-1:-1;3606:2:33;3591:18;;3578:32;;-1:-1:-1;3622:16:33;;;3619:2;;;3656:6;3648;3641:22;3619:2;3700:78;3770:7;3759:8;3748:9;3744:24;3700:78;:::i;:::-;3797:8;;-1:-1:-1;3674:104:33;-1:-1:-1;3885:3:33;3870:19;;3857:33;;-1:-1:-1;3902:16:33;;;3899:2;;;3936:6;3928;3921:22;3899:2;;3980:62;4034:7;4023:8;4012:9;4008:24;3980:62;:::i;:::-;2933:1169;;;;-1:-1:-1;2933:1169:33;;-1:-1:-1;2933:1169:33;;;;;;4061:8;-1:-1:-1;;;2933:1169:33:o;4107:1129::-;;;;;;4346:3;4334:9;4325:7;4321:23;4317:33;4314:2;;;4368:6;4360;4353:22;4314:2;4412:9;4399:23;4431:33;4458:5;4431:33;:::i;:::-;4483:5;-1:-1:-1;4540:2:33;4525:18;;4512:32;4553:35;4512:32;4553:35;:::i;:::-;4607:7;-1:-1:-1;4665:2:33;4650:18;;4637:32;4688:18;4718:14;;;4715:2;;;4750:6;4742;4735:22;4715:2;4778:67;4837:7;4828:6;4817:9;4813:22;4778:67;:::i;:::-;4768:77;;4898:2;4887:9;4883:18;4870:32;4854:48;;4927:2;4917:8;4914:16;4911:2;;;4948:6;4940;4933:22;4911:2;4976:69;5037:7;5026:8;5015:9;5011:24;4976:69;:::i;:::-;4966:79;;5098:3;5087:9;5083:19;5070:33;5054:49;;5128:2;5118:8;5115:16;5112:2;;;5149:6;5141;5134:22;5112:2;;5177:53;5222:7;5211:8;5200:9;5196:24;5177:53;:::i;:::-;5167:63;;;4304:932;;;;;;;;:::o;5241:691::-;;;;;5413:3;5401:9;5392:7;5388:23;5384:33;5381:2;;;5435:6;5427;5420:22;5381:2;5479:9;5466:23;5498:33;5525:5;5498:33;:::i;:::-;5550:5;-1:-1:-1;5607:2:33;5592:18;;5579:32;5620:35;5579:32;5620:35;:::i;:::-;5674:7;-1:-1:-1;5728:2:33;5713:18;;5700:32;;-1:-1:-1;5783:2:33;5768:18;;5755:32;5810:18;5799:30;;5796:2;;;5847:6;5839;5832:22;5796:2;5875:51;5918:7;5909:6;5898:9;5894:22;5875:51;:::i;:::-;5865:61;;;5371:561;;;;;;;:::o;5937:849::-;;;;;;;6136:3;6124:9;6115:7;6111:23;6107:33;6104:2;;;6158:6;6150;6143:22;6104:2;6202:9;6189:23;6221:33;6248:5;6221:33;:::i;:::-;6273:5;-1:-1:-1;6330:2:33;6315:18;;6302:32;6343:35;6302:32;6343:35;:::i;:::-;6397:7;-1:-1:-1;6451:2:33;6436:18;;6423:32;;-1:-1:-1;6502:2:33;6487:18;;6474:32;;-1:-1:-1;6557:3:33;6542:19;;6529:33;6585:18;6574:30;;6571:2;;;6622:6;6614;6607:22;6571:2;6666:60;6718:7;6709:6;6698:9;6694:22;6666:60;:::i;:::-;6094:692;;;;-1:-1:-1;6094:692:33;;-1:-1:-1;6094:692:33;;6745:8;;6094:692;-1:-1:-1;;;6094:692:33:o;6791:760::-;;;;;;6980:3;6968:9;6959:7;6955:23;6951:33;6948:2;;;7002:6;6994;6987:22;6948:2;7046:9;7033:23;7065:33;7092:5;7065:33;:::i;:::-;7117:5;-1:-1:-1;7174:2:33;7159:18;;7146:32;7187:35;7146:32;7187:35;:::i;:::-;7241:7;-1:-1:-1;7295:2:33;7280:18;;7267:32;;-1:-1:-1;7346:2:33;7331:18;;7318:32;;-1:-1:-1;7401:3:33;7386:19;;7373:33;7429:18;7418:30;;7415:2;;;7466:6;7458;7451:22;7415:2;7494:51;7537:7;7528:6;7517:9;7513:22;7494:51;:::i;7556:438::-;;;7682:2;7670:9;7661:7;7657:23;7653:32;7650:2;;;7703:6;7695;7688:22;7650:2;7747:9;7734:23;7766:33;7793:5;7766:33;:::i;:::-;7818:5;-1:-1:-1;7875:2:33;7860:18;;7847:32;7917:15;;7910:23;7898:36;;7888:2;;7953:6;7945;7938:22;7999:489;;;8151:9;8142:7;8138:23;8181:2;8177;8173:11;8170:2;;;8202:6;8194;8187:22;8170:2;8246:9;8233:23;8265:33;8292:5;8265:33;:::i;:::-;8317:5;-1:-1:-1;8415:2:33;8346:66;8338:75;;8334:84;8331:2;;;8436:6;8428;8421:22;8331:2;;8479;8468:9;8464:18;8454:28;;8118:370;;;;;:::o;8493:327::-;;;8622:2;8610:9;8601:7;8597:23;8593:32;8590:2;;;8643:6;8635;8628:22;8590:2;8687:9;8674:23;8706:33;8733:5;8706:33;:::i;:::-;8758:5;8810:2;8795:18;;;;8782:32;;-1:-1:-1;;;8580:240:33:o;8825:333::-;;;8953:2;8941:9;8932:7;8928:23;8924:32;8921:2;;;8974:6;8966;8959:22;8921:2;9018:9;9005:23;9037:33;9064:5;9037:33;:::i;:::-;9089:5;-1:-1:-1;9113:39:33;9148:2;9133:18;;9113:39;:::i;:::-;9103:49;;8911:247;;;;;:::o;9163:1295::-;;;9342:2;9330:9;9321:7;9317:23;9313:32;9310:2;;;9363:6;9355;9348:22;9310:2;9408:9;9395:23;9437:18;9478:2;9470:6;9467:14;9464:2;;;9499:6;9491;9484:22;9464:2;9542:6;9531:9;9527:22;9517:32;;9587:7;9580:4;9576:2;9572:13;9568:27;9558:2;;9614:6;9606;9599:22;9558:2;9655;9642:16;9677:4;9701:65;9716:49;9762:2;9716:49;:::i;9701:65::-;9800:15;;;9831:12;;;;9863:11;;;9901;;;9893:20;;9889:29;;9886:42;-1:-1:-1;9883:2:33;;;9946:6;9938;9931:22;9883:2;9973:6;9964:15;;9988:240;10002:2;9999:1;9996:9;9988:240;;;10073:3;10060:17;10090:33;10117:5;10090:33;:::i;:::-;10136:18;;10020:1;10013:9;;;;;10174:12;;;;10206;;9988:240;;;-1:-1:-1;10247:5:33;-1:-1:-1;;10290:18:33;;10277:32;;-1:-1:-1;;10321:16:33;;;10318:2;;;10355:6;10347;10340:22;10318:2;;10383:69;10444:7;10433:8;10422:9;10418:24;10383:69;:::i;:::-;10373:79;;;9300:1158;;;;;:::o;10463:352::-;;10574:2;10562:9;10553:7;10549:23;10545:32;10542:2;;;10595:6;10587;10580:22;10542:2;10639:9;10626:23;10689:66;10682:5;10678:78;10671:5;10668:89;10658:2;;10776:6;10768;10761:22;10820:728;;;;;;11018:3;11006:9;10997:7;10993:23;10989:33;10986:2;;;11040:6;11032;11025:22;10986:2;11084:9;11071:23;11103:33;11130:5;11103:33;:::i;:::-;11155:5;-1:-1:-1;11207:2:33;11192:18;;11179:32;;-1:-1:-1;11230:39:33;11265:2;11250:18;;11230:39;:::i;:::-;11220:49;;11320:2;11309:9;11305:18;11292:32;11347:18;11339:6;11336:30;11333:2;;;11384:6;11376;11369:22;11333:2;11428:60;11480:7;11471:6;11460:9;11456:22;11428:60;:::i;:::-;10976:572;;;;-1:-1:-1;10976:572:33;;-1:-1:-1;11507:8:33;;11402:86;10976:572;-1:-1:-1;;;10976:572:33:o;11553:631::-;;;;;;11749:3;11737:9;11728:7;11724:23;11720:33;11717:2;;;11771:6;11763;11756:22;11717:2;11815:9;11802:23;11834:33;11861:5;11834:33;:::i;:::-;11886:5;-1:-1:-1;11938:2:33;11923:18;;11910:32;;-1:-1:-1;11961:39:33;11996:2;11981:18;;11961:39;:::i;:::-;11951:49;;12047:2;12036:9;12032:18;12019:32;12009:42;;12103:3;12092:9;12088:19;12075:33;12117:35;12144:7;12117:35;:::i;:::-;12171:7;12161:17;;;11707:477;;;;;;;;:::o;12189:1085::-;;;;;;;;;12438:3;12426:9;12417:7;12413:23;12409:33;12406:2;;;12460:6;12452;12445:22;12406:2;12504:9;12491:23;12523:33;12550:5;12523:33;:::i;:::-;12575:5;-1:-1:-1;12627:2:33;12612:18;;12599:32;;-1:-1:-1;12650:39:33;12685:2;12670:18;;12650:39;:::i;:::-;12640:49;;12736:2;12725:9;12721:18;12708:32;12698:42;;12792:3;12781:9;12777:19;12764:33;12806:35;12833:7;12806:35;:::i;:::-;12860:7;-1:-1:-1;12919:3:33;12904:19;;12891:33;12933:35;12891:33;12933:35;:::i;:::-;12987:7;-1:-1:-1;13045:3:33;13030:19;;13017:33;13073:18;13062:30;;13059:2;;;13110:6;13102;13095:22;13059:2;13154:60;13206:7;13197:6;13186:9;13182:22;13154:60;:::i;13279:797::-;;;;;;;13494:3;13482:9;13473:7;13469:23;13465:33;13462:2;;;13516:6;13508;13501:22;13462:2;13560:9;13547:23;13579:33;13606:5;13579:33;:::i;:::-;13631:5;-1:-1:-1;13683:2:33;13668:18;;13655:32;;-1:-1:-1;13706:39:33;13741:2;13726:18;;13706:39;:::i;:::-;13696:49;;13792:2;13781:9;13777:18;13764:32;13754:42;;13847:3;13836:9;13832:19;13819:33;13875:18;13867:6;13864:30;13861:2;;;13912:6;13904;13897:22;14081:190;;14193:2;14181:9;14172:7;14168:23;14164:32;14161:2;;;14214:6;14206;14199:22;14161:2;-1:-1:-1;14242:23:33;;14151:120;-1:-1:-1;14151:120:33:o;14276:327::-;;;14405:2;14393:9;14384:7;14380:23;14376:32;14373:2;;;14426:6;14418;14411:22;14373:2;14467:9;14454:23;14444:33;;14527:2;14516:9;14512:18;14499:32;14540:33;14567:5;14540:33;:::i;14608:196::-;;14719:2;14707:9;14698:7;14694:23;14690:32;14687:2;;;14740:6;14732;14725:22;14687:2;14768:30;14788:9;14768:30;:::i;14809:264::-;;;14937:2;14925:9;14916:7;14912:23;14908:32;14905:2;;;14958:6;14950;14943:22;14905:2;14986:30;15006:9;14986:30;:::i;15078:780::-;;;;;;;15276:3;15264:9;15255:7;15251:23;15247:33;15244:2;;;15298:6;15290;15283:22;15244:2;15326:30;15346:9;15326:30;:::i;:::-;15316:40;;15403:2;15392:9;15388:18;15375:32;15365:42;;15457:2;15446:9;15442:18;15429:32;15470:33;15497:5;15470:33;:::i;15863:553::-;;;;;16034:3;16022:9;16013:7;16009:23;16005:33;16002:2;;;16056:6;16048;16041:22;16002:2;16084:30;16104:9;16084:30;:::i;:::-;16074:40;;16161:2;16150:9;16146:18;16133:32;16123:42;;16212:2;16201:9;16197:18;16184:32;16174:42;;16267:2;16256:9;16252:18;16239:32;16294:18;16286:6;16283:30;16280:2;;;16331:6;16323;16316:22;16421:536;;16502:5;16496:12;16529:6;16524:3;16517:19;16554:3;16566:162;16580:6;16577:1;16574:13;16566:162;;;16642:4;16698:13;;;16694:22;;16688:29;16670:11;;;16666:20;;16659:59;16595:12;16566:162;;;16746:6;16743:1;16740:13;16737:2;;;16812:3;16805:4;16796:6;16791:3;16787:16;16783:27;16776:40;16737:2;-1:-1:-1;16871:2:33;16859:15;16876:66;16855:88;16846:98;;;;16946:4;16842:109;;16472:485;-1:-1:-1;;16472:485:33:o;16962:440::-;;17179:6;17166:20;17195:33;17222:5;17195:33;:::i;:::-;17260:42;17249:54;17237:67;;-1:-1:-1;17361:4:33;17349:17;;;17336:31;17320:14;;;17313:55;;;;17393:2;17384:12;;17143:259::o;17407:226::-;17583:42;17571:55;;;;17553:74;;17541:2;17526:18;;17508:125::o;17638:593::-;;17897:42;17978:2;17970:6;17966:15;17955:9;17948:34;18030:2;18022:6;18018:15;18013:2;18002:9;17998:18;17991:43;;18070:6;18065:2;18054:9;18050:18;18043:34;18113:6;18108:2;18097:9;18093:18;18086:34;18157:3;18151;18140:9;18136:19;18129:32;18178:47;18220:3;18209:9;18205:19;18197:6;18178:47;:::i;:::-;18170:55;17877:354;-1:-1:-1;;;;;;;17877:354:33:o;18236:819::-;;18497:42;18578:2;18570:6;18566:15;18555:9;18548:34;18630:2;18622:6;18618:15;18613:2;18602:9;18598:18;18591:43;;18670:6;18665:2;18654:9;18650:18;18643:34;18713:6;18708:2;18697:9;18693:18;18686:34;18757:3;18751;18740:9;18736:19;18729:32;18798:6;18792:3;18781:9;18777:19;18770:35;18856:6;18848;18842:3;18831:9;18827:19;18814:49;18883:22;;;18907:3;18879:32;;;18872:46;;;;18970:2;18958:15;;;18975:66;18954:88;18939:104;18935:114;;18477:578;-1:-1:-1;;;;;18477:578:33:o;19060:635::-;19231:2;19283:21;;;19353:13;;19256:18;;;19375:22;;;19060:635;;19231:2;19454:15;;;;19428:2;19413:18;;;19060:635;19500:169;19514:6;19511:1;19508:13;19500:169;;;19575:13;;19563:26;;19644:15;;;;19609:12;;;;19536:1;19529:9;19500:169;;;-1:-1:-1;19686:3:33;;19211:484;-1:-1:-1;;;;;;19211:484:33:o;19700:187::-;19865:14;;19858:22;19840:41;;19828:2;19813:18;;19795:92::o;19892:248::-;20066:66;20054:79;;;;20036:98;;20024:2;20009:18;;19991:149::o;20145:314::-;20366:42;20354:55;;;;20336:74;;20441:2;20426:18;;20419:34;20324:2;20309:18;;20291:168::o;20464:221::-;;20613:2;20602:9;20595:21;20633:46;20675:2;20664:9;20660:18;20652:6;20633:46;:::i;20690:177::-;20836:25;;;20824:2;20809:18;;20791:76::o;20872:200::-;21046:18;21034:31;;;;21016:50;;21004:2;20989:18;;20971:101::o;21077:242::-;21147:2;21141:9;21177:17;;;21224:18;21209:34;;21245:22;;;21206:62;21203:2;;;21271:9;21203:2;21298;21291:22;21121:198;;-1:-1:-1;21121:198:33:o;21324:183::-;;21423:18;21415:6;21412:30;21409:2;;;21445:9;21409:2;-1:-1:-1;21496:4:33;21477:17;;;21473:28;;21399:108::o;21512:88::-;21587:3;21583:15;;21569:31::o;21605:883::-;;21686:4;21668:16;21665:26;21662:2;;;21694:5;;21662:2;21735:1;21730:3;21725;21710:27;21797:10;21759:36;21790:3;21784:10;21759:36;:::i;:::-;21756:52;21746:2;;21812:5;;21746:2;21846;21840:9;21904:66;21886:16;21882:89;21879:1;21873:4;21858:114;22001:4;21995:11;22025:16;22060:18;22131:2;22124:4;22116:6;22112:17;22109:25;22104:2;22096:6;22093:14;22090:45;22087:2;;;22138:5;;;;;;22087:2;22175:6;22169:4;22165:17;22154:28;;22211:3;22205:10;22191:24;;22238:2;22230:6;22227:14;22224:2;;;22244:5;;;;;;22224:2;;22305:16;22299:4;22295:27;22288:4;22279:6;22274:3;22270:16;22266:27;22263:60;22260:2;;;22326:5;;;;;22260:2;22382;22370:15;22387:66;22366:88;22357:98;;22457:4;22353:109;22349:2;22342:121;22361:3;-1:-1:-1;;21652:836:33;:::o;22493:459::-;22668:5;22655:19;22683:35;22710:7;22683:35;:::i;:::-;22842:42;22833:7;22829:56;22760:66;22753:4;22747:11;22743:84;22740:146;22734:4;22727:160;;22941:2;22934:5;22930:14;22917:28;22913:1;22907:4;22903:12;22896:50;22630:322;;:::o;22957:156::-;23045:42;23038:5;23034:54;23027:5;23024:65;23014:2;;23103:1;23100;23093:12;23014:2;23004:109;:::o",
  "source": "// SPDX-License-Identifier: LGPL-3.0-or-later\npragma solidity ^0.7.1;\npragma abicoder v2;\nimport { ABDKMath64x64 } from \"abdk-libraries-solidity/ABDKMath64x64.sol\";\nimport { IERC1155 } from \"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\";\nimport { BaseLock } from \"./BaseLock.sol\";\n\n/// @title Locking a token for a collateral.\n/// @author Victor Porton\n/// @notice Not audited, not enough tested.\n/// Lock a token to exchange it for a collateral in the future.\n///\n/// We have only one condition ID: `0`.\n///\n/// TODO: This contract is somehow gas-inefficient. Should we release it?\ncontract Lock is BaseLock {\n    using ABDKMath64x64 for int128;\n\n    struct ERC1155Token {\n        IERC1155 contractAddress;\n        uint256 tokenId;\n    }\n\n    /// Assign a token to an orcle\n    /// @param oracleId The oracle ID.\n    /// @param token The token.\n    event OracleToken(uint64 indexed oracleId, ERC1155Token indexed token);\n\n    /// Mapping (oracleId => external conditional token).\n    mapping(uint64 => ERC1155Token) public externalConditionals;\n\n    /// Constructor.\n    /// @param _uri The ERC-1155 token URI.\n    constructor(string memory _uri) BaseLock(_uri) { }\n\n    /// Create a new oracle\n    function createOracle(address _oracleOwner, ERC1155Token calldata _token) external returns (uint64) {\n        uint64 _oracleId = _createOracle(_oracleOwner);\n        externalConditionals[_oracleId] = _token;\n        emit OracleToken(_oracleId, _token);\n        return _oracleId;\n    }\n\n    /// Mint a conditional token\n    /// @param _oracleId The oracle ID.\n    /// @param _conditionalTokenId The conditional token ID.\n    /// @param _amount The minted amount.\n    /// @param _data Additional data.\n    function mintConditional(uint64 _oracleId, uint256 _conditionalTokenId, uint256 _amount, bytes memory _data)\n        public checkIsConditional(_conditionalTokenId)\n    {\n        ERC1155Token storage _externalConditional = externalConditionals[_oracleId];\n        _mintToCustomer(msg.sender, _conditionalTokenId, _amount, _data);\n        // Last against reentrancy attack:\n        _externalConditional.contractAddress.safeTransferFrom(msg.sender, address(this), _externalConditional.tokenId, _amount, _data);\n    }\n\n    /// Burn a conditional token\n    /// @param _oracleId The oracle ID.\n    /// @param _conditionalTokenId The conditional token ID.\n    /// @param _to The token recepient.\n    /// @param _amount The minted amount.\n    /// @param _data Additional data.\n    function burnConditional(uint64 _oracleId, uint256 _conditionalTokenId, address _to, uint256 _amount, bytes calldata _data)\n        public checkIsConditional(_conditionalTokenId)\n    {\n        ERC1155Token storage _externalConditional = externalConditionals[_oracleId];\n        _burn(msg.sender, _conditionalTokenId, _amount);\n        // Last against reentrancy attack:\n        _externalConditional.contractAddress.safeTransferFrom(address(this), _to, _externalConditional.tokenId, _amount, _data);\n    }\n\n    function _calcRewardShare(uint64 /*oracleId*/, uint256 _condition)\n        internal virtual override view returns (int128)\n    {\n        require(_condition == 1, \"We support only one condition.\");\n        return int128(1).div(1);\n    }\n\n    // We have just one token, so the multiplier is one.\n    function _calcMultiplier(uint64 /*oracleId*/, uint256 /*condition*/, int128 _oracleShare)\n        internal virtual override view returns (int128)\n    {\n        return _oracleShare;\n    }\n}\n",
  "sourcePath": "/home/user/Projects/future-contracts/contracts/Lock.sol",
  "ast": {
    "absolutePath": "/home/user/Projects/future-contracts/contracts/Lock.sol",
    "exportedSymbols": {
      "ABDKMath64x64": [
        9904
      ],
      "BaseLock": [
        1494
      ],
      "IERC1155": [
        4654
      ],
      "Lock": [
        3859
      ]
    },
    "id": 3860,
    "license": "LGPL-3.0-or-later",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 3653,
        "literals": [
          "solidity",
          "^",
          "0.7",
          ".1"
        ],
        "nodeType": "PragmaDirective",
        "src": "46:23:7"
      },
      {
        "id": 3654,
        "literals": [
          "abicoder",
          "v2"
        ],
        "nodeType": "PragmaDirective",
        "src": "70:19:7"
      },
      {
        "absolutePath": "abdk-libraries-solidity/ABDKMath64x64.sol",
        "file": "abdk-libraries-solidity/ABDKMath64x64.sol",
        "id": 3656,
        "nodeType": "ImportDirective",
        "scope": 3860,
        "sourceUnit": 9905,
        "src": "90:74:7",
        "symbolAliases": [
          {
            "foreign": {
              "id": 3655,
              "name": "ABDKMath64x64",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "99:13:7",
              "typeDescriptions": {}
            }
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/token/ERC1155/IERC1155.sol",
        "file": "@openzeppelin/contracts/token/ERC1155/IERC1155.sol",
        "id": 3658,
        "nodeType": "ImportDirective",
        "scope": 3860,
        "sourceUnit": 4655,
        "src": "165:78:7",
        "symbolAliases": [
          {
            "foreign": {
              "id": 3657,
              "name": "IERC1155",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "174:8:7",
              "typeDescriptions": {}
            }
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/user/Projects/future-contracts/contracts/BaseLock.sol",
        "file": "./BaseLock.sol",
        "id": 3660,
        "nodeType": "ImportDirective",
        "scope": 3860,
        "sourceUnit": 1495,
        "src": "244:42:7",
        "symbolAliases": [
          {
            "foreign": {
              "id": 3659,
              "name": "BaseLock",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "253:8:7",
              "typeDescriptions": {}
            }
          }
        ],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 3662,
              "name": "BaseLock",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1494,
              "src": "606:8:7",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BaseLock_$1494",
                "typeString": "contract BaseLock"
              }
            },
            "id": 3663,
            "nodeType": "InheritanceSpecifier",
            "src": "606:8:7"
          }
        ],
        "contractDependencies": [
          1494,
          3318,
          3651,
          4079,
          4245,
          4257,
          4504,
          4532,
          4654,
          4669,
          4710,
          5668,
          5860
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 3661,
          "nodeType": "StructuredDocumentation",
          "src": "288:301:7",
          "text": "@title Locking a token for a collateral.\n @author Victor Porton\n @notice Not audited, not enough tested.\n Lock a token to exchange it for a collateral in the future.\n We have only one condition ID: `0`.\n TODO: This contract is somehow gas-inefficient. Should we release it?"
        },
        "fullyImplemented": true,
        "id": 3859,
        "linearizedBaseContracts": [
          3859,
          1494,
          5668,
          5860,
          4504,
          4532,
          4710,
          3651,
          3318,
          4669,
          4654,
          4245,
          4257,
          4079
        ],
        "name": "Lock",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 3666,
            "libraryName": {
              "id": 3664,
              "name": "ABDKMath64x64",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 9904,
              "src": "627:13:7",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ABDKMath64x64_$9904",
                "typeString": "library ABDKMath64x64"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "621:31:7",
            "typeName": {
              "id": 3665,
              "name": "int128",
              "nodeType": "ElementaryTypeName",
              "src": "645:6:7",
              "typeDescriptions": {
                "typeIdentifier": "t_int128",
                "typeString": "int128"
              }
            }
          },
          {
            "canonicalName": "Lock.ERC1155Token",
            "id": 3671,
            "members": [
              {
                "constant": false,
                "id": 3668,
                "mutability": "mutable",
                "name": "contractAddress",
                "nodeType": "VariableDeclaration",
                "scope": 3671,
                "src": "688:24:7",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_IERC1155_$4654",
                  "typeString": "contract IERC1155"
                },
                "typeName": {
                  "id": 3667,
                  "name": "IERC1155",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 4654,
                  "src": "688:8:7",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC1155_$4654",
                    "typeString": "contract IERC1155"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3670,
                "mutability": "mutable",
                "name": "tokenId",
                "nodeType": "VariableDeclaration",
                "scope": 3671,
                "src": "722:15:7",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3669,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "722:7:7",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "ERC1155Token",
            "nodeType": "StructDefinition",
            "scope": 3859,
            "src": "658:86:7",
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 3672,
              "nodeType": "StructuredDocumentation",
              "src": "750:101:7",
              "text": "Assign a token to an orcle\n @param oracleId The oracle ID.\n @param token The token."
            },
            "id": 3678,
            "name": "OracleToken",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 3677,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3674,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "oracleId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3678,
                  "src": "874:23:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 3673,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "874:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3676,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "token",
                  "nodeType": "VariableDeclaration",
                  "scope": 3678,
                  "src": "899:26:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ERC1155Token_$3671_memory_ptr",
                    "typeString": "struct Lock.ERC1155Token"
                  },
                  "typeName": {
                    "id": 3675,
                    "name": "ERC1155Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3671,
                    "src": "899:12:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ERC1155Token_$3671_storage_ptr",
                      "typeString": "struct Lock.ERC1155Token"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "873:53:7"
            },
            "src": "856:71:7"
          },
          {
            "constant": false,
            "documentation": {
              "id": 3679,
              "nodeType": "StructuredDocumentation",
              "src": "933:53:7",
              "text": "Mapping (oracleId => external conditional token)."
            },
            "functionSelector": "d866e25d",
            "id": 3683,
            "mutability": "mutable",
            "name": "externalConditionals",
            "nodeType": "VariableDeclaration",
            "scope": 3859,
            "src": "991:59:7",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_ERC1155Token_$3671_storage_$",
              "typeString": "mapping(uint64 => struct Lock.ERC1155Token)"
            },
            "typeName": {
              "id": 3682,
              "keyType": {
                "id": 3680,
                "name": "uint64",
                "nodeType": "ElementaryTypeName",
                "src": "999:6:7",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                }
              },
              "nodeType": "Mapping",
              "src": "991:31:7",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_ERC1155Token_$3671_storage_$",
                "typeString": "mapping(uint64 => struct Lock.ERC1155Token)"
              },
              "valueType": {
                "id": 3681,
                "name": "ERC1155Token",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 3671,
                "src": "1009:12:7",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_ERC1155Token_$3671_storage_ptr",
                  "typeString": "struct Lock.ERC1155Token"
                }
              }
            },
            "visibility": "public"
          },
          {
            "body": {
              "id": 3692,
              "nodeType": "Block",
              "src": "1169:3:7",
              "statements": []
            },
            "documentation": {
              "id": 3684,
              "nodeType": "StructuredDocumentation",
              "src": "1057:60:7",
              "text": "Constructor.\n @param _uri The ERC-1155 token URI."
            },
            "id": 3693,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 3689,
                    "name": "_uri",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3686,
                    "src": "1163:4:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  }
                ],
                "id": 3690,
                "modifierName": {
                  "id": 3688,
                  "name": "BaseLock",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1494,
                  "src": "1154:8:7",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_BaseLock_$1494_$",
                    "typeString": "type(contract BaseLock)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1154:14:7"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3687,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3686,
                  "mutability": "mutable",
                  "name": "_uri",
                  "nodeType": "VariableDeclaration",
                  "scope": 3693,
                  "src": "1134:18:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3685,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1134:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1133:20:7"
            },
            "returnParameters": {
              "id": 3691,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1169:0:7"
            },
            "scope": 3859,
            "src": "1122:50:7",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3722,
              "nodeType": "Block",
              "src": "1306:184:7",
              "statements": [
                {
                  "assignments": [
                    3704
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3704,
                      "mutability": "mutable",
                      "name": "_oracleId",
                      "nodeType": "VariableDeclaration",
                      "scope": 3722,
                      "src": "1316:16:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 3703,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "1316:6:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 3708,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 3706,
                        "name": "_oracleOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3696,
                        "src": "1349:12:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 3705,
                      "name": "_createOracle",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1313,
                      "src": "1335:13:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$_t_uint64_$",
                        "typeString": "function (address) returns (uint64)"
                      }
                    },
                    "id": 3707,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1335:27:7",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1316:46:7"
                },
                {
                  "expression": {
                    "id": 3713,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 3709,
                        "name": "externalConditionals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3683,
                        "src": "1372:20:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_ERC1155Token_$3671_storage_$",
                          "typeString": "mapping(uint64 => struct Lock.ERC1155Token storage ref)"
                        }
                      },
                      "id": 3711,
                      "indexExpression": {
                        "id": 3710,
                        "name": "_oracleId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3704,
                        "src": "1393:9:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1372:31:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ERC1155Token_$3671_storage",
                        "typeString": "struct Lock.ERC1155Token storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 3712,
                      "name": "_token",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3698,
                      "src": "1406:6:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ERC1155Token_$3671_calldata_ptr",
                        "typeString": "struct Lock.ERC1155Token calldata"
                      }
                    },
                    "src": "1372:40:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ERC1155Token_$3671_storage",
                      "typeString": "struct Lock.ERC1155Token storage ref"
                    }
                  },
                  "id": 3714,
                  "nodeType": "ExpressionStatement",
                  "src": "1372:40:7"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 3716,
                        "name": "_oracleId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3704,
                        "src": "1439:9:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      {
                        "id": 3717,
                        "name": "_token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3698,
                        "src": "1450:6:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ERC1155Token_$3671_calldata_ptr",
                          "typeString": "struct Lock.ERC1155Token calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        {
                          "typeIdentifier": "t_struct$_ERC1155Token_$3671_calldata_ptr",
                          "typeString": "struct Lock.ERC1155Token calldata"
                        }
                      ],
                      "id": 3715,
                      "name": "OracleToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3678,
                      "src": "1427:11:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$_t_struct$_ERC1155Token_$3671_memory_ptr_$returns$__$",
                        "typeString": "function (uint64,struct Lock.ERC1155Token memory)"
                      }
                    },
                    "id": 3718,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1427:30:7",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3719,
                  "nodeType": "EmitStatement",
                  "src": "1422:35:7"
                },
                {
                  "expression": {
                    "id": 3720,
                    "name": "_oracleId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3704,
                    "src": "1474:9:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "functionReturnParameters": 3702,
                  "id": 3721,
                  "nodeType": "Return",
                  "src": "1467:16:7"
                }
              ]
            },
            "documentation": {
              "id": 3694,
              "nodeType": "StructuredDocumentation",
              "src": "1178:23:7",
              "text": "Create a new oracle"
            },
            "functionSelector": "c3a0d776",
            "id": 3723,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "createOracle",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3699,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3696,
                  "mutability": "mutable",
                  "name": "_oracleOwner",
                  "nodeType": "VariableDeclaration",
                  "scope": 3723,
                  "src": "1228:20:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3695,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1228:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3698,
                  "mutability": "mutable",
                  "name": "_token",
                  "nodeType": "VariableDeclaration",
                  "scope": 3723,
                  "src": "1250:28:7",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ERC1155Token_$3671_calldata_ptr",
                    "typeString": "struct Lock.ERC1155Token"
                  },
                  "typeName": {
                    "id": 3697,
                    "name": "ERC1155Token",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3671,
                    "src": "1250:12:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ERC1155Token_$3671_storage_ptr",
                      "typeString": "struct Lock.ERC1155Token"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1227:52:7"
            },
            "returnParameters": {
              "id": 3702,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3701,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3723,
                  "src": "1298:6:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 3700,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "1298:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1297:8:7"
            },
            "scope": 3859,
            "src": "1206:284:7",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3769,
              "nodeType": "Block",
              "src": "1878:345:7",
              "statements": [
                {
                  "assignments": [
                    3739
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3739,
                      "mutability": "mutable",
                      "name": "_externalConditional",
                      "nodeType": "VariableDeclaration",
                      "scope": 3769,
                      "src": "1888:41:7",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ERC1155Token_$3671_storage_ptr",
                        "typeString": "struct Lock.ERC1155Token"
                      },
                      "typeName": {
                        "id": 3738,
                        "name": "ERC1155Token",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3671,
                        "src": "1888:12:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ERC1155Token_$3671_storage_ptr",
                          "typeString": "struct Lock.ERC1155Token"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 3743,
                  "initialValue": {
                    "baseExpression": {
                      "id": 3740,
                      "name": "externalConditionals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3683,
                      "src": "1932:20:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_ERC1155Token_$3671_storage_$",
                        "typeString": "mapping(uint64 => struct Lock.ERC1155Token storage ref)"
                      }
                    },
                    "id": 3742,
                    "indexExpression": {
                      "id": 3741,
                      "name": "_oracleId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3726,
                      "src": "1953:9:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1932:31:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ERC1155Token_$3671_storage",
                      "typeString": "struct Lock.ERC1155Token storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1888:75:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 3745,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967281,
                          "src": "1989:3:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3746,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "1989:10:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 3747,
                        "name": "_conditionalTokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3728,
                        "src": "2001:19:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 3748,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3730,
                        "src": "2022:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 3749,
                        "name": "_data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3732,
                        "src": "2031:5:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 3744,
                      "name": "_mintToCustomer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 970,
                      "src": "1973:15:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,uint256,uint256,bytes memory)"
                      }
                    },
                    "id": 3750,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1973:64:7",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3751,
                  "nodeType": "ExpressionStatement",
                  "src": "1973:64:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 3757,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967281,
                          "src": "2144:3:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3758,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "2144:10:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 3761,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967268,
                            "src": "2164:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Lock_$3859",
                              "typeString": "contract Lock"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Lock_$3859",
                              "typeString": "contract Lock"
                            }
                          ],
                          "id": 3760,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2156:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 3759,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2156:7:7",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 3762,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2156:13:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "expression": {
                          "id": 3763,
                          "name": "_externalConditional",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3739,
                          "src": "2171:20:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ERC1155Token_$3671_storage_ptr",
                            "typeString": "struct Lock.ERC1155Token storage pointer"
                          }
                        },
                        "id": 3764,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "tokenId",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3670,
                        "src": "2171:28:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 3765,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3730,
                        "src": "2201:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 3766,
                        "name": "_data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3732,
                        "src": "2210:5:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "expression": {
                          "id": 3752,
                          "name": "_externalConditional",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3739,
                          "src": "2090:20:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ERC1155Token_$3671_storage_ptr",
                            "typeString": "struct Lock.ERC1155Token storage pointer"
                          }
                        },
                        "id": 3755,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "contractAddress",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3668,
                        "src": "2090:36:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155_$4654",
                          "typeString": "contract IERC1155"
                        }
                      },
                      "id": 3756,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "safeTransferFrom",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4637,
                      "src": "2090:53:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,address,uint256,uint256,bytes memory) external"
                      }
                    },
                    "id": 3767,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2090:126:7",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3768,
                  "nodeType": "ExpressionStatement",
                  "src": "2090:126:7"
                }
              ]
            },
            "documentation": {
              "id": 3724,
              "nodeType": "StructuredDocumentation",
              "src": "1496:209:7",
              "text": "Mint a conditional token\n @param _oracleId The oracle ID.\n @param _conditionalTokenId The conditional token ID.\n @param _amount The minted amount.\n @param _data Additional data."
            },
            "functionSelector": "2a35cbd8",
            "id": 3770,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 3735,
                    "name": "_conditionalTokenId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3728,
                    "src": "1853:19:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 3736,
                "modifierName": {
                  "id": 3734,
                  "name": "checkIsConditional",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1493,
                  "src": "1834:18:7",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1834:39:7"
              }
            ],
            "name": "mintConditional",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3733,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3726,
                  "mutability": "mutable",
                  "name": "_oracleId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3770,
                  "src": "1735:16:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 3725,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "1735:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3728,
                  "mutability": "mutable",
                  "name": "_conditionalTokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3770,
                  "src": "1753:27:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3727,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1753:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3730,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 3770,
                  "src": "1782:15:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3729,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1782:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3732,
                  "mutability": "mutable",
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 3770,
                  "src": "1799:18:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3731,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1799:5:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1734:84:7"
            },
            "returnParameters": {
              "id": 3737,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1878:0:7"
            },
            "scope": 3859,
            "src": "1710:513:7",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 3816,
              "nodeType": "Block",
              "src": "2666:321:7",
              "statements": [
                {
                  "assignments": [
                    3788
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3788,
                      "mutability": "mutable",
                      "name": "_externalConditional",
                      "nodeType": "VariableDeclaration",
                      "scope": 3816,
                      "src": "2676:41:7",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ERC1155Token_$3671_storage_ptr",
                        "typeString": "struct Lock.ERC1155Token"
                      },
                      "typeName": {
                        "id": 3787,
                        "name": "ERC1155Token",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3671,
                        "src": "2676:12:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ERC1155Token_$3671_storage_ptr",
                          "typeString": "struct Lock.ERC1155Token"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 3792,
                  "initialValue": {
                    "baseExpression": {
                      "id": 3789,
                      "name": "externalConditionals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3683,
                      "src": "2720:20:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_ERC1155Token_$3671_storage_$",
                        "typeString": "mapping(uint64 => struct Lock.ERC1155Token storage ref)"
                      }
                    },
                    "id": 3791,
                    "indexExpression": {
                      "id": 3790,
                      "name": "_oracleId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3773,
                      "src": "2741:9:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2720:31:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ERC1155Token_$3671_storage",
                      "typeString": "struct Lock.ERC1155Token storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2676:75:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 3794,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967281,
                          "src": "2767:3:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3795,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "2767:10:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 3796,
                        "name": "_conditionalTokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3775,
                        "src": "2779:19:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 3797,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3779,
                        "src": "2800:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3793,
                      "name": "_burn",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3523
                      ],
                      "referencedDeclaration": 3523,
                      "src": "2761:5:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,uint256)"
                      }
                    },
                    "id": 3798,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2761:47:7",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3799,
                  "nodeType": "ExpressionStatement",
                  "src": "2761:47:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 3807,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967268,
                            "src": "2923:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Lock_$3859",
                              "typeString": "contract Lock"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Lock_$3859",
                              "typeString": "contract Lock"
                            }
                          ],
                          "id": 3806,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2915:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 3805,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2915:7:7",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 3808,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2915:13:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 3809,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3777,
                        "src": "2930:3:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "expression": {
                          "id": 3810,
                          "name": "_externalConditional",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3788,
                          "src": "2935:20:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ERC1155Token_$3671_storage_ptr",
                            "typeString": "struct Lock.ERC1155Token storage pointer"
                          }
                        },
                        "id": 3811,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "tokenId",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3670,
                        "src": "2935:28:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 3812,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3779,
                        "src": "2965:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 3813,
                        "name": "_data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3781,
                        "src": "2974:5:7",
                        "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_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      ],
                      "expression": {
                        "expression": {
                          "id": 3800,
                          "name": "_externalConditional",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3788,
                          "src": "2861:20:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ERC1155Token_$3671_storage_ptr",
                            "typeString": "struct Lock.ERC1155Token storage pointer"
                          }
                        },
                        "id": 3803,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "contractAddress",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3668,
                        "src": "2861:36:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155_$4654",
                          "typeString": "contract IERC1155"
                        }
                      },
                      "id": 3804,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "safeTransferFrom",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4637,
                      "src": "2861:53:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,address,uint256,uint256,bytes memory) external"
                      }
                    },
                    "id": 3814,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2861:119:7",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3815,
                  "nodeType": "ExpressionStatement",
                  "src": "2861:119:7"
                }
              ]
            },
            "documentation": {
              "id": 3771,
              "nodeType": "StructuredDocumentation",
              "src": "2229:249:7",
              "text": "Burn a conditional token\n @param _oracleId The oracle ID.\n @param _conditionalTokenId The conditional token ID.\n @param _to The token recepient.\n @param _amount The minted amount.\n @param _data Additional data."
            },
            "functionSelector": "d0ee90c5",
            "id": 3817,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 3784,
                    "name": "_conditionalTokenId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3775,
                    "src": "2641:19:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 3785,
                "modifierName": {
                  "id": 3783,
                  "name": "checkIsConditional",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1493,
                  "src": "2622:18:7",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2622:39:7"
              }
            ],
            "name": "burnConditional",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3782,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3773,
                  "mutability": "mutable",
                  "name": "_oracleId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3817,
                  "src": "2508:16:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 3772,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "2508:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3775,
                  "mutability": "mutable",
                  "name": "_conditionalTokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 3817,
                  "src": "2526:27:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3774,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2526:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3777,
                  "mutability": "mutable",
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 3817,
                  "src": "2555:11:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3776,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2555:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3779,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 3817,
                  "src": "2568:15:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3778,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2568:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3781,
                  "mutability": "mutable",
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 3817,
                  "src": "2585:20:7",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3780,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2585:5:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2507:99:7"
            },
            "returnParameters": {
              "id": 3786,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2666:0:7"
            },
            "scope": 3859,
            "src": "2483:504:7",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              980
            ],
            "body": {
              "id": 3842,
              "nodeType": "Block",
              "src": "3120:108:7",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3830,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 3828,
                          "name": "_condition",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3821,
                          "src": "3138:10:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "hexValue": "31",
                          "id": 3829,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3152:1:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "3138:15:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "576520737570706f7274206f6e6c79206f6e6520636f6e646974696f6e2e",
                        "id": 3831,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3155:32:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_38ff99f8030b648d2ef47352d4e8ef7aaf54290e16ae4d7c2ad63388ec95ac93",
                          "typeString": "literal_string \"We support only one condition.\""
                        },
                        "value": "We support only one condition."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_38ff99f8030b648d2ef47352d4e8ef7aaf54290e16ae4d7c2ad63388ec95ac93",
                          "typeString": "literal_string \"We support only one condition.\""
                        }
                      ],
                      "id": 3827,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "3130:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3832,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3130:58:7",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3833,
                  "nodeType": "ExpressionStatement",
                  "src": "3130:58:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "31",
                        "id": 3839,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3219:1:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "expression": {
                        "arguments": [
                          {
                            "hexValue": "31",
                            "id": 3836,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3212:1:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            }
                          ],
                          "id": 3835,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3205:6:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_int128_$",
                            "typeString": "type(int128)"
                          },
                          "typeName": {
                            "id": 3834,
                            "name": "int128",
                            "nodeType": "ElementaryTypeName",
                            "src": "3205:6:7",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 3837,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3205:9:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_int128",
                          "typeString": "int128"
                        }
                      },
                      "id": 3838,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "div",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7595,
                      "src": "3205:13:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_int128_$_t_int128_$returns$_t_int128_$bound_to$_t_int128_$",
                        "typeString": "function (int128,int128) pure returns (int128)"
                      }
                    },
                    "id": 3840,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3205:16:7",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int128",
                      "typeString": "int128"
                    }
                  },
                  "functionReturnParameters": 3826,
                  "id": 3841,
                  "nodeType": "Return",
                  "src": "3198:23:7"
                }
              ]
            },
            "id": 3843,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_calcRewardShare",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 3823,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3085:8:7"
            },
            "parameters": {
              "id": 3822,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3819,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3843,
                  "src": "3019:6:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 3818,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "3019:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3821,
                  "mutability": "mutable",
                  "name": "_condition",
                  "nodeType": "VariableDeclaration",
                  "scope": 3843,
                  "src": "3040:18:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3820,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3040:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3018:41:7"
            },
            "returnParameters": {
              "id": 3826,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3825,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3843,
                  "src": "3108:6:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int128",
                    "typeString": "int128"
                  },
                  "typeName": {
                    "id": 3824,
                    "name": "int128",
                    "nodeType": "ElementaryTypeName",
                    "src": "3108:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int128",
                      "typeString": "int128"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3107:8:7"
            },
            "scope": 3859,
            "src": "2993:235:7",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "baseFunctions": [
              1004
            ],
            "body": {
              "id": 3857,
              "nodeType": "Block",
              "src": "3441:36:7",
              "statements": [
                {
                  "expression": {
                    "id": 3855,
                    "name": "_oracleShare",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3849,
                    "src": "3458:12:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int128",
                      "typeString": "int128"
                    }
                  },
                  "functionReturnParameters": 3854,
                  "id": 3856,
                  "nodeType": "Return",
                  "src": "3451:19:7"
                }
              ]
            },
            "id": 3858,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_calcMultiplier",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 3851,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3406:8:7"
            },
            "parameters": {
              "id": 3850,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3845,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3858,
                  "src": "3316:6:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 3844,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "3316:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3847,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3858,
                  "src": "3337:7:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3846,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3337:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3849,
                  "mutability": "mutable",
                  "name": "_oracleShare",
                  "nodeType": "VariableDeclaration",
                  "scope": 3858,
                  "src": "3360:19:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int128",
                    "typeString": "int128"
                  },
                  "typeName": {
                    "id": 3848,
                    "name": "int128",
                    "nodeType": "ElementaryTypeName",
                    "src": "3360:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int128",
                      "typeString": "int128"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3315:65:7"
            },
            "returnParameters": {
              "id": 3854,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3853,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3858,
                  "src": "3429:6:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int128",
                    "typeString": "int128"
                  },
                  "typeName": {
                    "id": 3852,
                    "name": "int128",
                    "nodeType": "ElementaryTypeName",
                    "src": "3429:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int128",
                      "typeString": "int128"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3428:8:7"
            },
            "scope": 3859,
            "src": "3291:186:7",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "internal"
          }
        ],
        "scope": 3860,
        "src": "589:2890:7"
      }
    ],
    "src": "46:3434:7"
  },
  "legacyAST": {
    "attributes": {
      "absolutePath": "/home/user/Projects/future-contracts/contracts/Lock.sol",
      "exportedSymbols": {
        "ABDKMath64x64": [
          9904
        ],
        "BaseLock": [
          1494
        ],
        "IERC1155": [
          4654
        ],
        "Lock": [
          3859
        ]
      },
      "license": "LGPL-3.0-or-later"
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "^",
            "0.7",
            ".1"
          ]
        },
        "id": 3653,
        "name": "PragmaDirective",
        "src": "46:23:7"
      },
      {
        "attributes": {
          "literals": [
            "abicoder",
            "v2"
          ]
        },
        "id": 3654,
        "name": "PragmaDirective",
        "src": "70:19:7"
      },
      {
        "attributes": {
          "SourceUnit": 9905,
          "absolutePath": "abdk-libraries-solidity/ABDKMath64x64.sol",
          "file": "abdk-libraries-solidity/ABDKMath64x64.sol",
          "scope": 3860,
          "symbolAliases": [
            {
              "foreign": {
                "attributes": {
                  "overloadedDeclarations": [
                    null
                  ],
                  "value": "ABDKMath64x64"
                },
                "id": 3655,
                "name": "Identifier",
                "src": "99:13:7"
              }
            }
          ],
          "unitAlias": ""
        },
        "id": 3656,
        "name": "ImportDirective",
        "src": "90:74:7"
      },
      {
        "attributes": {
          "SourceUnit": 4655,
          "absolutePath": "@openzeppelin/contracts/token/ERC1155/IERC1155.sol",
          "file": "@openzeppelin/contracts/token/ERC1155/IERC1155.sol",
          "scope": 3860,
          "symbolAliases": [
            {
              "foreign": {
                "attributes": {
                  "overloadedDeclarations": [
                    null
                  ],
                  "value": "IERC1155"
                },
                "id": 3657,
                "name": "Identifier",
                "src": "174:8:7"
              }
            }
          ],
          "unitAlias": ""
        },
        "id": 3658,
        "name": "ImportDirective",
        "src": "165:78:7"
      },
      {
        "attributes": {
          "SourceUnit": 1495,
          "absolutePath": "/home/user/Projects/future-contracts/contracts/BaseLock.sol",
          "file": "./BaseLock.sol",
          "scope": 3860,
          "symbolAliases": [
            {
              "foreign": {
                "attributes": {
                  "overloadedDeclarations": [
                    null
                  ],
                  "value": "BaseLock"
                },
                "id": 3659,
                "name": "Identifier",
                "src": "253:8:7"
              }
            }
          ],
          "unitAlias": ""
        },
        "id": 3660,
        "name": "ImportDirective",
        "src": "244:42:7"
      },
      {
        "attributes": {
          "abstract": false,
          "contractDependencies": [
            1494,
            3318,
            3651,
            4079,
            4245,
            4257,
            4504,
            4532,
            4654,
            4669,
            4710,
            5668,
            5860
          ],
          "contractKind": "contract",
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            3859,
            1494,
            5668,
            5860,
            4504,
            4532,
            4710,
            3651,
            3318,
            4669,
            4654,
            4245,
            4257,
            4079
          ],
          "name": "Lock",
          "scope": 3860
        },
        "children": [
          {
            "attributes": {
              "text": "@title Locking a token for a collateral.\n @author Victor Porton\n @notice Not audited, not enough tested.\n Lock a token to exchange it for a collateral in the future.\n We have only one condition ID: `0`.\n TODO: This contract is somehow gas-inefficient. Should we release it?"
            },
            "id": 3661,
            "name": "StructuredDocumentation",
            "src": "288:301:7"
          },
          {
            "attributes": {},
            "children": [
              {
                "attributes": {
                  "name": "BaseLock",
                  "referencedDeclaration": 1494,
                  "type": "contract BaseLock"
                },
                "id": 3662,
                "name": "UserDefinedTypeName",
                "src": "606:8:7"
              }
            ],
            "id": 3663,
            "name": "InheritanceSpecifier",
            "src": "606:8:7"
          },
          {
            "children": [
              {
                "attributes": {
                  "name": "ABDKMath64x64",
                  "referencedDeclaration": 9904,
                  "type": "library ABDKMath64x64"
                },
                "id": 3664,
                "name": "UserDefinedTypeName",
                "src": "627:13:7"
              },
              {
                "attributes": {
                  "name": "int128",
                  "type": "int128"
                },
                "id": 3665,
                "name": "ElementaryTypeName",
                "src": "645:6:7"
              }
            ],
            "id": 3666,
            "name": "UsingForDirective",
            "src": "621:31:7"
          },
          {
            "attributes": {
              "canonicalName": "Lock.ERC1155Token",
              "name": "ERC1155Token",
              "scope": 3859,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "contractAddress",
                  "scope": 3671,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "contract IERC1155",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "IERC1155",
                      "referencedDeclaration": 4654,
                      "type": "contract IERC1155"
                    },
                    "id": 3667,
                    "name": "UserDefinedTypeName",
                    "src": "688:8:7"
                  }
                ],
                "id": 3668,
                "name": "VariableDeclaration",
                "src": "688:24:7"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "scope": 3671,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint256",
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint256",
                      "type": "uint256"
                    },
                    "id": 3669,
                    "name": "ElementaryTypeName",
                    "src": "722:7:7"
                  }
                ],
                "id": 3670,
                "name": "VariableDeclaration",
                "src": "722:15:7"
              }
            ],
            "id": 3671,
            "name": "StructDefinition",
            "src": "658:86:7"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "OracleToken"
            },
            "children": [
              {
                "attributes": {
                  "text": "Assign a token to an orcle\n @param oracleId The oracle ID.\n @param token The token."
                },
                "id": 3672,
                "name": "StructuredDocumentation",
                "src": "750:101:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "oracleId",
                      "scope": 3678,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 3673,
                        "name": "ElementaryTypeName",
                        "src": "874:6:7"
                      }
                    ],
                    "id": 3674,
                    "name": "VariableDeclaration",
                    "src": "874:23:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "token",
                      "scope": 3678,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "struct Lock.ERC1155Token",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "ERC1155Token",
                          "referencedDeclaration": 3671,
                          "type": "struct Lock.ERC1155Token"
                        },
                        "id": 3675,
                        "name": "UserDefinedTypeName",
                        "src": "899:12:7"
                      }
                    ],
                    "id": 3676,
                    "name": "VariableDeclaration",
                    "src": "899:26:7"
                  }
                ],
                "id": 3677,
                "name": "ParameterList",
                "src": "873:53:7"
              }
            ],
            "id": 3678,
            "name": "EventDefinition",
            "src": "856:71:7"
          },
          {
            "attributes": {
              "constant": false,
              "functionSelector": "d866e25d",
              "mutability": "mutable",
              "name": "externalConditionals",
              "scope": 3859,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "mapping(uint64 => struct Lock.ERC1155Token)",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "type": "mapping(uint64 => struct Lock.ERC1155Token)"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint64",
                      "type": "uint64"
                    },
                    "id": 3680,
                    "name": "ElementaryTypeName",
                    "src": "999:6:7"
                  },
                  {
                    "attributes": {
                      "name": "ERC1155Token",
                      "referencedDeclaration": 3671,
                      "type": "struct Lock.ERC1155Token"
                    },
                    "id": 3681,
                    "name": "UserDefinedTypeName",
                    "src": "1009:12:7"
                  }
                ],
                "id": 3682,
                "name": "Mapping",
                "src": "991:31:7"
              },
              {
                "attributes": {
                  "text": "Mapping (oracleId => external conditional token)."
                },
                "id": 3679,
                "name": "StructuredDocumentation",
                "src": "933:53:7"
              }
            ],
            "id": 3683,
            "name": "VariableDeclaration",
            "src": "991:59:7"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": true,
              "kind": "constructor",
              "name": "",
              "scope": 3859,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "text": "Constructor.\n @param _uri The ERC-1155 token URI."
                },
                "id": 3684,
                "name": "StructuredDocumentation",
                "src": "1057:60:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_uri",
                      "scope": 3693,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "string",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string"
                        },
                        "id": 3685,
                        "name": "ElementaryTypeName",
                        "src": "1134:6:7"
                      }
                    ],
                    "id": 3686,
                    "name": "VariableDeclaration",
                    "src": "1134:18:7"
                  }
                ],
                "id": 3687,
                "name": "ParameterList",
                "src": "1133:20:7"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 3691,
                "name": "ParameterList",
                "src": "1169:0:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 1494,
                      "type": "type(contract BaseLock)",
                      "value": "BaseLock"
                    },
                    "id": 3688,
                    "name": "Identifier",
                    "src": "1154:8:7"
                  },
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 3686,
                      "type": "string memory",
                      "value": "_uri"
                    },
                    "id": 3689,
                    "name": "Identifier",
                    "src": "1163:4:7"
                  }
                ],
                "id": 3690,
                "name": "ModifierInvocation",
                "src": "1154:14:7"
              },
              {
                "attributes": {
                  "statements": [
                    null
                  ]
                },
                "children": [],
                "id": 3692,
                "name": "Block",
                "src": "1169:3:7"
              }
            ],
            "id": 3693,
            "name": "FunctionDefinition",
            "src": "1122:50:7"
          },
          {
            "attributes": {
              "functionSelector": "c3a0d776",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "createOracle",
              "scope": 3859,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "text": "Create a new oracle"
                },
                "id": 3694,
                "name": "StructuredDocumentation",
                "src": "1178:23:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_oracleOwner",
                      "scope": 3723,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 3695,
                        "name": "ElementaryTypeName",
                        "src": "1228:7:7"
                      }
                    ],
                    "id": 3696,
                    "name": "VariableDeclaration",
                    "src": "1228:20:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_token",
                      "scope": 3723,
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "type": "struct Lock.ERC1155Token",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "ERC1155Token",
                          "referencedDeclaration": 3671,
                          "type": "struct Lock.ERC1155Token"
                        },
                        "id": 3697,
                        "name": "UserDefinedTypeName",
                        "src": "1250:12:7"
                      }
                    ],
                    "id": 3698,
                    "name": "VariableDeclaration",
                    "src": "1250:28:7"
                  }
                ],
                "id": 3699,
                "name": "ParameterList",
                "src": "1227:52:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 3723,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 3700,
                        "name": "ElementaryTypeName",
                        "src": "1298:6:7"
                      }
                    ],
                    "id": 3701,
                    "name": "VariableDeclaration",
                    "src": "1298:6:7"
                  }
                ],
                "id": 3702,
                "name": "ParameterList",
                "src": "1297:8:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        3704
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "_oracleId",
                          "scope": 3722,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint64",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint64",
                              "type": "uint64"
                            },
                            "id": 3703,
                            "name": "ElementaryTypeName",
                            "src": "1316:6:7"
                          }
                        ],
                        "id": 3704,
                        "name": "VariableDeclaration",
                        "src": "1316:16:7"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint64",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1313,
                              "type": "function (address) returns (uint64)",
                              "value": "_createOracle"
                            },
                            "id": 3705,
                            "name": "Identifier",
                            "src": "1335:13:7"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3696,
                              "type": "address",
                              "value": "_oracleOwner"
                            },
                            "id": 3706,
                            "name": "Identifier",
                            "src": "1349:12:7"
                          }
                        ],
                        "id": 3707,
                        "name": "FunctionCall",
                        "src": "1335:27:7"
                      }
                    ],
                    "id": 3708,
                    "name": "VariableDeclarationStatement",
                    "src": "1316:46:7"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "struct Lock.ERC1155Token storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "struct Lock.ERC1155Token storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3683,
                                  "type": "mapping(uint64 => struct Lock.ERC1155Token storage ref)",
                                  "value": "externalConditionals"
                                },
                                "id": 3709,
                                "name": "Identifier",
                                "src": "1372:20:7"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3704,
                                  "type": "uint64",
                                  "value": "_oracleId"
                                },
                                "id": 3710,
                                "name": "Identifier",
                                "src": "1393:9:7"
                              }
                            ],
                            "id": 3711,
                            "name": "IndexAccess",
                            "src": "1372:31:7"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3698,
                              "type": "struct Lock.ERC1155Token calldata",
                              "value": "_token"
                            },
                            "id": 3712,
                            "name": "Identifier",
                            "src": "1406:6:7"
                          }
                        ],
                        "id": 3713,
                        "name": "Assignment",
                        "src": "1372:40:7"
                      }
                    ],
                    "id": 3714,
                    "name": "ExpressionStatement",
                    "src": "1372:40:7"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                },
                                {
                                  "typeIdentifier": "t_struct$_ERC1155Token_$3671_calldata_ptr",
                                  "typeString": "struct Lock.ERC1155Token calldata"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3678,
                              "type": "function (uint64,struct Lock.ERC1155Token memory)",
                              "value": "OracleToken"
                            },
                            "id": 3715,
                            "name": "Identifier",
                            "src": "1427:11:7"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3704,
                              "type": "uint64",
                              "value": "_oracleId"
                            },
                            "id": 3716,
                            "name": "Identifier",
                            "src": "1439:9:7"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3698,
                              "type": "struct Lock.ERC1155Token calldata",
                              "value": "_token"
                            },
                            "id": 3717,
                            "name": "Identifier",
                            "src": "1450:6:7"
                          }
                        ],
                        "id": 3718,
                        "name": "FunctionCall",
                        "src": "1427:30:7"
                      }
                    ],
                    "id": 3719,
                    "name": "EmitStatement",
                    "src": "1422:35:7"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 3702
                    },
                    "children": [
                      {
                        "attributes": {
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 3704,
                          "type": "uint64",
                          "value": "_oracleId"
                        },
                        "id": 3720,
                        "name": "Identifier",
                        "src": "1474:9:7"
                      }
                    ],
                    "id": 3721,
                    "name": "Return",
                    "src": "1467:16:7"
                  }
                ],
                "id": 3722,
                "name": "Block",
                "src": "1306:184:7"
              }
            ],
            "id": 3723,
            "name": "FunctionDefinition",
            "src": "1206:284:7"
          },
          {
            "attributes": {
              "functionSelector": "2a35cbd8",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "name": "mintConditional",
              "scope": 3859,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "text": "Mint a conditional token\n @param _oracleId The oracle ID.\n @param _conditionalTokenId The conditional token ID.\n @param _amount The minted amount.\n @param _data Additional data."
                },
                "id": 3724,
                "name": "StructuredDocumentation",
                "src": "1496:209:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_oracleId",
                      "scope": 3770,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 3725,
                        "name": "ElementaryTypeName",
                        "src": "1735:6:7"
                      }
                    ],
                    "id": 3726,
                    "name": "VariableDeclaration",
                    "src": "1735:16:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_conditionalTokenId",
                      "scope": 3770,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3727,
                        "name": "ElementaryTypeName",
                        "src": "1753:7:7"
                      }
                    ],
                    "id": 3728,
                    "name": "VariableDeclaration",
                    "src": "1753:27:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_amount",
                      "scope": 3770,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3729,
                        "name": "ElementaryTypeName",
                        "src": "1782:7:7"
                      }
                    ],
                    "id": 3730,
                    "name": "VariableDeclaration",
                    "src": "1782:15:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_data",
                      "scope": 3770,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 3731,
                        "name": "ElementaryTypeName",
                        "src": "1799:5:7"
                      }
                    ],
                    "id": 3732,
                    "name": "VariableDeclaration",
                    "src": "1799:18:7"
                  }
                ],
                "id": 3733,
                "name": "ParameterList",
                "src": "1734:84:7"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 3737,
                "name": "ParameterList",
                "src": "1878:0:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 1493,
                      "type": "modifier (uint256)",
                      "value": "checkIsConditional"
                    },
                    "id": 3734,
                    "name": "Identifier",
                    "src": "1834:18:7"
                  },
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 3728,
                      "type": "uint256",
                      "value": "_conditionalTokenId"
                    },
                    "id": 3735,
                    "name": "Identifier",
                    "src": "1853:19:7"
                  }
                ],
                "id": 3736,
                "name": "ModifierInvocation",
                "src": "1834:39:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        3739
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "_externalConditional",
                          "scope": 3769,
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "type": "struct Lock.ERC1155Token",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "ERC1155Token",
                              "referencedDeclaration": 3671,
                              "type": "struct Lock.ERC1155Token"
                            },
                            "id": 3738,
                            "name": "UserDefinedTypeName",
                            "src": "1888:12:7"
                          }
                        ],
                        "id": 3739,
                        "name": "VariableDeclaration",
                        "src": "1888:41:7"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "struct Lock.ERC1155Token storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3683,
                              "type": "mapping(uint64 => struct Lock.ERC1155Token storage ref)",
                              "value": "externalConditionals"
                            },
                            "id": 3740,
                            "name": "Identifier",
                            "src": "1932:20:7"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3726,
                              "type": "uint64",
                              "value": "_oracleId"
                            },
                            "id": 3741,
                            "name": "Identifier",
                            "src": "1953:9:7"
                          }
                        ],
                        "id": 3742,
                        "name": "IndexAccess",
                        "src": "1932:31:7"
                      }
                    ],
                    "id": 3743,
                    "name": "VariableDeclarationStatement",
                    "src": "1888:75:7"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 970,
                              "type": "function (address,uint256,uint256,bytes memory)",
                              "value": "_mintToCustomer"
                            },
                            "id": 3744,
                            "name": "Identifier",
                            "src": "1973:15:7"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4294967281,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 3745,
                                "name": "Identifier",
                                "src": "1989:3:7"
                              }
                            ],
                            "id": 3746,
                            "name": "MemberAccess",
                            "src": "1989:10:7"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3728,
                              "type": "uint256",
                              "value": "_conditionalTokenId"
                            },
                            "id": 3747,
                            "name": "Identifier",
                            "src": "2001:19:7"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3730,
                              "type": "uint256",
                              "value": "_amount"
                            },
                            "id": 3748,
                            "name": "Identifier",
                            "src": "2022:7:7"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3732,
                              "type": "bytes memory",
                              "value": "_data"
                            },
                            "id": 3749,
                            "name": "Identifier",
                            "src": "2031:5:7"
                          }
                        ],
                        "id": 3750,
                        "name": "FunctionCall",
                        "src": "1973:64:7"
                      }
                    ],
                    "id": 3751,
                    "name": "ExpressionStatement",
                    "src": "1973:64:7"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "safeTransferFrom",
                              "referencedDeclaration": 4637,
                              "type": "function (address,address,uint256,uint256,bytes memory) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "contractAddress",
                                  "referencedDeclaration": 3668,
                                  "type": "contract IERC1155"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3739,
                                      "type": "struct Lock.ERC1155Token storage pointer",
                                      "value": "_externalConditional"
                                    },
                                    "id": 3752,
                                    "name": "Identifier",
                                    "src": "2090:20:7"
                                  }
                                ],
                                "id": 3755,
                                "name": "MemberAccess",
                                "src": "2090:36:7"
                              }
                            ],
                            "id": 3756,
                            "name": "MemberAccess",
                            "src": "2090:53:7"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4294967281,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 3757,
                                "name": "Identifier",
                                "src": "2144:3:7"
                              }
                            ],
                            "id": 3758,
                            "name": "MemberAccess",
                            "src": "2144:10:7"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "address",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_Lock_$3859",
                                      "typeString": "contract Lock"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "address"
                                    },
                                    "id": 3759,
                                    "name": "ElementaryTypeName",
                                    "src": "2156:7:7"
                                  }
                                ],
                                "id": 3760,
                                "name": "ElementaryTypeNameExpression",
                                "src": "2156:7:7"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4294967268,
                                  "type": "contract Lock",
                                  "value": "this"
                                },
                                "id": 3761,
                                "name": "Identifier",
                                "src": "2164:4:7"
                              }
                            ],
                            "id": 3762,
                            "name": "FunctionCall",
                            "src": "2156:13:7"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "tokenId",
                              "referencedDeclaration": 3670,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3739,
                                  "type": "struct Lock.ERC1155Token storage pointer",
                                  "value": "_externalConditional"
                                },
                                "id": 3763,
                                "name": "Identifier",
                                "src": "2171:20:7"
                              }
                            ],
                            "id": 3764,
                            "name": "MemberAccess",
                            "src": "2171:28:7"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3730,
                              "type": "uint256",
                              "value": "_amount"
                            },
                            "id": 3765,
                            "name": "Identifier",
                            "src": "2201:7:7"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3732,
                              "type": "bytes memory",
                              "value": "_data"
                            },
                            "id": 3766,
                            "name": "Identifier",
                            "src": "2210:5:7"
                          }
                        ],
                        "id": 3767,
                        "name": "FunctionCall",
                        "src": "2090:126:7"
                      }
                    ],
                    "id": 3768,
                    "name": "ExpressionStatement",
                    "src": "2090:126:7"
                  }
                ],
                "id": 3769,
                "name": "Block",
                "src": "1878:345:7"
              }
            ],
            "id": 3770,
            "name": "FunctionDefinition",
            "src": "1710:513:7"
          },
          {
            "attributes": {
              "functionSelector": "d0ee90c5",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "name": "burnConditional",
              "scope": 3859,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "text": "Burn a conditional token\n @param _oracleId The oracle ID.\n @param _conditionalTokenId The conditional token ID.\n @param _to The token recepient.\n @param _amount The minted amount.\n @param _data Additional data."
                },
                "id": 3771,
                "name": "StructuredDocumentation",
                "src": "2229:249:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_oracleId",
                      "scope": 3817,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 3772,
                        "name": "ElementaryTypeName",
                        "src": "2508:6:7"
                      }
                    ],
                    "id": 3773,
                    "name": "VariableDeclaration",
                    "src": "2508:16:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_conditionalTokenId",
                      "scope": 3817,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3774,
                        "name": "ElementaryTypeName",
                        "src": "2526:7:7"
                      }
                    ],
                    "id": 3775,
                    "name": "VariableDeclaration",
                    "src": "2526:27:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_to",
                      "scope": 3817,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 3776,
                        "name": "ElementaryTypeName",
                        "src": "2555:7:7"
                      }
                    ],
                    "id": 3777,
                    "name": "VariableDeclaration",
                    "src": "2555:11:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_amount",
                      "scope": 3817,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3778,
                        "name": "ElementaryTypeName",
                        "src": "2568:7:7"
                      }
                    ],
                    "id": 3779,
                    "name": "VariableDeclaration",
                    "src": "2568:15:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_data",
                      "scope": 3817,
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "type": "bytes",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 3780,
                        "name": "ElementaryTypeName",
                        "src": "2585:5:7"
                      }
                    ],
                    "id": 3781,
                    "name": "VariableDeclaration",
                    "src": "2585:20:7"
                  }
                ],
                "id": 3782,
                "name": "ParameterList",
                "src": "2507:99:7"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 3786,
                "name": "ParameterList",
                "src": "2666:0:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 1493,
                      "type": "modifier (uint256)",
                      "value": "checkIsConditional"
                    },
                    "id": 3783,
                    "name": "Identifier",
                    "src": "2622:18:7"
                  },
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 3775,
                      "type": "uint256",
                      "value": "_conditionalTokenId"
                    },
                    "id": 3784,
                    "name": "Identifier",
                    "src": "2641:19:7"
                  }
                ],
                "id": 3785,
                "name": "ModifierInvocation",
                "src": "2622:39:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        3788
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "_externalConditional",
                          "scope": 3816,
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "type": "struct Lock.ERC1155Token",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "ERC1155Token",
                              "referencedDeclaration": 3671,
                              "type": "struct Lock.ERC1155Token"
                            },
                            "id": 3787,
                            "name": "UserDefinedTypeName",
                            "src": "2676:12:7"
                          }
                        ],
                        "id": 3788,
                        "name": "VariableDeclaration",
                        "src": "2676:41:7"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "struct Lock.ERC1155Token storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3683,
                              "type": "mapping(uint64 => struct Lock.ERC1155Token storage ref)",
                              "value": "externalConditionals"
                            },
                            "id": 3789,
                            "name": "Identifier",
                            "src": "2720:20:7"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3773,
                              "type": "uint64",
                              "value": "_oracleId"
                            },
                            "id": 3790,
                            "name": "Identifier",
                            "src": "2741:9:7"
                          }
                        ],
                        "id": 3791,
                        "name": "IndexAccess",
                        "src": "2720:31:7"
                      }
                    ],
                    "id": 3792,
                    "name": "VariableDeclarationStatement",
                    "src": "2676:75:7"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                3523
                              ],
                              "referencedDeclaration": 3523,
                              "type": "function (address,uint256,uint256)",
                              "value": "_burn"
                            },
                            "id": 3793,
                            "name": "Identifier",
                            "src": "2761:5:7"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4294967281,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 3794,
                                "name": "Identifier",
                                "src": "2767:3:7"
                              }
                            ],
                            "id": 3795,
                            "name": "MemberAccess",
                            "src": "2767:10:7"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3775,
                              "type": "uint256",
                              "value": "_conditionalTokenId"
                            },
                            "id": 3796,
                            "name": "Identifier",
                            "src": "2779:19:7"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3779,
                              "type": "uint256",
                              "value": "_amount"
                            },
                            "id": 3797,
                            "name": "Identifier",
                            "src": "2800:7:7"
                          }
                        ],
                        "id": 3798,
                        "name": "FunctionCall",
                        "src": "2761:47:7"
                      }
                    ],
                    "id": 3799,
                    "name": "ExpressionStatement",
                    "src": "2761:47:7"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "safeTransferFrom",
                              "referencedDeclaration": 4637,
                              "type": "function (address,address,uint256,uint256,bytes memory) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "contractAddress",
                                  "referencedDeclaration": 3668,
                                  "type": "contract IERC1155"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3788,
                                      "type": "struct Lock.ERC1155Token storage pointer",
                                      "value": "_externalConditional"
                                    },
                                    "id": 3800,
                                    "name": "Identifier",
                                    "src": "2861:20:7"
                                  }
                                ],
                                "id": 3803,
                                "name": "MemberAccess",
                                "src": "2861:36:7"
                              }
                            ],
                            "id": 3804,
                            "name": "MemberAccess",
                            "src": "2861:53:7"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "address",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_Lock_$3859",
                                      "typeString": "contract Lock"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "address"
                                    },
                                    "id": 3805,
                                    "name": "ElementaryTypeName",
                                    "src": "2915:7:7"
                                  }
                                ],
                                "id": 3806,
                                "name": "ElementaryTypeNameExpression",
                                "src": "2915:7:7"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4294967268,
                                  "type": "contract Lock",
                                  "value": "this"
                                },
                                "id": 3807,
                                "name": "Identifier",
                                "src": "2923:4:7"
                              }
                            ],
                            "id": 3808,
                            "name": "FunctionCall",
                            "src": "2915:13:7"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3777,
                              "type": "address",
                              "value": "_to"
                            },
                            "id": 3809,
                            "name": "Identifier",
                            "src": "2930:3:7"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "tokenId",
                              "referencedDeclaration": 3670,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3788,
                                  "type": "struct Lock.ERC1155Token storage pointer",
                                  "value": "_externalConditional"
                                },
                                "id": 3810,
                                "name": "Identifier",
                                "src": "2935:20:7"
                              }
                            ],
                            "id": 3811,
                            "name": "MemberAccess",
                            "src": "2935:28:7"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3779,
                              "type": "uint256",
                              "value": "_amount"
                            },
                            "id": 3812,
                            "name": "Identifier",
                            "src": "2965:7:7"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3781,
                              "type": "bytes calldata",
                              "value": "_data"
                            },
                            "id": 3813,
                            "name": "Identifier",
                            "src": "2974:5:7"
                          }
                        ],
                        "id": 3814,
                        "name": "FunctionCall",
                        "src": "2861:119:7"
                      }
                    ],
                    "id": 3815,
                    "name": "ExpressionStatement",
                    "src": "2861:119:7"
                  }
                ],
                "id": 3816,
                "name": "Block",
                "src": "2666:321:7"
              }
            ],
            "id": 3817,
            "name": "FunctionDefinition",
            "src": "2483:504:7"
          },
          {
            "attributes": {
              "baseFunctions": [
                980
              ],
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_calcRewardShare",
              "scope": 3859,
              "stateMutability": "view",
              "virtual": true,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 3823,
                "name": "OverrideSpecifier",
                "src": "3085:8:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 3843,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 3818,
                        "name": "ElementaryTypeName",
                        "src": "3019:6:7"
                      }
                    ],
                    "id": 3819,
                    "name": "VariableDeclaration",
                    "src": "3019:6:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_condition",
                      "scope": 3843,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3820,
                        "name": "ElementaryTypeName",
                        "src": "3040:7:7"
                      }
                    ],
                    "id": 3821,
                    "name": "VariableDeclaration",
                    "src": "3040:18:7"
                  }
                ],
                "id": 3822,
                "name": "ParameterList",
                "src": "3018:41:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 3843,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int128",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int128",
                          "type": "int128"
                        },
                        "id": 3824,
                        "name": "ElementaryTypeName",
                        "src": "3108:6:7"
                      }
                    ],
                    "id": 3825,
                    "name": "VariableDeclaration",
                    "src": "3108:6:7"
                  }
                ],
                "id": 3826,
                "name": "ParameterList",
                "src": "3107:8:7"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_38ff99f8030b648d2ef47352d4e8ef7aaf54290e16ae4d7c2ad63388ec95ac93",
                                  "typeString": "literal_string \"We support only one condition.\""
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 3827,
                            "name": "Identifier",
                            "src": "3130:7:7"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3821,
                                  "type": "uint256",
                                  "value": "_condition"
                                },
                                "id": 3828,
                                "name": "Identifier",
                                "src": "3138:10:7"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "31",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 1",
                                  "value": "1"
                                },
                                "id": 3829,
                                "name": "Literal",
                                "src": "3152:1:7"
                              }
                            ],
                            "id": 3830,
                            "name": "BinaryOperation",
                            "src": "3138:15:7"
                          },
                          {
                            "attributes": {
                              "hexvalue": "576520737570706f7274206f6e6c79206f6e6520636f6e646974696f6e2e",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"We support only one condition.\"",
                              "value": "We support only one condition."
                            },
                            "id": 3831,
                            "name": "Literal",
                            "src": "3155:32:7"
                          }
                        ],
                        "id": 3832,
                        "name": "FunctionCall",
                        "src": "3130:58:7"
                      }
                    ],
                    "id": 3833,
                    "name": "ExpressionStatement",
                    "src": "3130:58:7"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 3826
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "int128",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "div",
                              "referencedDeclaration": 7595,
                              "type": "function (int128,int128) pure returns (int128)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "int128",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(int128)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "int128"
                                        },
                                        "id": 3834,
                                        "name": "ElementaryTypeName",
                                        "src": "3205:6:7"
                                      }
                                    ],
                                    "id": 3835,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "3205:6:7"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "31",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 1",
                                      "value": "1"
                                    },
                                    "id": 3836,
                                    "name": "Literal",
                                    "src": "3212:1:7"
                                  }
                                ],
                                "id": 3837,
                                "name": "FunctionCall",
                                "src": "3205:9:7"
                              }
                            ],
                            "id": 3838,
                            "name": "MemberAccess",
                            "src": "3205:13:7"
                          },
                          {
                            "attributes": {
                              "hexvalue": "31",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 1",
                              "value": "1"
                            },
                            "id": 3839,
                            "name": "Literal",
                            "src": "3219:1:7"
                          }
                        ],
                        "id": 3840,
                        "name": "FunctionCall",
                        "src": "3205:16:7"
                      }
                    ],
                    "id": 3841,
                    "name": "Return",
                    "src": "3198:23:7"
                  }
                ],
                "id": 3842,
                "name": "Block",
                "src": "3120:108:7"
              }
            ],
            "id": 3843,
            "name": "FunctionDefinition",
            "src": "2993:235:7"
          },
          {
            "attributes": {
              "baseFunctions": [
                1004
              ],
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_calcMultiplier",
              "scope": 3859,
              "stateMutability": "view",
              "virtual": true,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 3851,
                "name": "OverrideSpecifier",
                "src": "3406:8:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 3858,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 3844,
                        "name": "ElementaryTypeName",
                        "src": "3316:6:7"
                      }
                    ],
                    "id": 3845,
                    "name": "VariableDeclaration",
                    "src": "3316:6:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 3858,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3846,
                        "name": "ElementaryTypeName",
                        "src": "3337:7:7"
                      }
                    ],
                    "id": 3847,
                    "name": "VariableDeclaration",
                    "src": "3337:7:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_oracleShare",
                      "scope": 3858,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int128",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int128",
                          "type": "int128"
                        },
                        "id": 3848,
                        "name": "ElementaryTypeName",
                        "src": "3360:6:7"
                      }
                    ],
                    "id": 3849,
                    "name": "VariableDeclaration",
                    "src": "3360:19:7"
                  }
                ],
                "id": 3850,
                "name": "ParameterList",
                "src": "3315:65:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 3858,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int128",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int128",
                          "type": "int128"
                        },
                        "id": 3852,
                        "name": "ElementaryTypeName",
                        "src": "3429:6:7"
                      }
                    ],
                    "id": 3853,
                    "name": "VariableDeclaration",
                    "src": "3429:6:7"
                  }
                ],
                "id": 3854,
                "name": "ParameterList",
                "src": "3428:8:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 3854
                    },
                    "children": [
                      {
                        "attributes": {
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 3849,
                          "type": "int128",
                          "value": "_oracleShare"
                        },
                        "id": 3855,
                        "name": "Identifier",
                        "src": "3458:12:7"
                      }
                    ],
                    "id": 3856,
                    "name": "Return",
                    "src": "3451:19:7"
                  }
                ],
                "id": 3857,
                "name": "Block",
                "src": "3441:36:7"
              }
            ],
            "id": 3858,
            "name": "FunctionDefinition",
            "src": "3291:186:7"
          }
        ],
        "id": 3859,
        "name": "ContractDefinition",
        "src": "589:2890:7"
      }
    ],
    "id": 3860,
    "name": "SourceUnit",
    "src": "46:3434:7"
  },
  "compiler": {
    "name": "solc",
    "version": "0.7.6+commit.7338295f.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.1",
  "updatedAt": "2021-06-09T23:19:50.261Z",
  "devdoc": {
    "author": "Victor Porton",
    "events": {
      "OracleToken(uint64,(address,uint256))": {
        "params": {
          "oracleId": "The oracle ID.",
          "token": "The token."
        }
      }
    },
    "kind": "dev",
    "methods": {
      "balanceOf(address,uint256)": {
        "details": "See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address."
      },
      "balanceOfBatch(address[],uint256[])": {
        "details": "See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length."
      },
      "burnConditional(uint64,uint256,address,uint256,bytes)": {
        "params": {
          "_amount": "The minted amount.",
          "_conditionalTokenId": "The conditional token ID.",
          "_data": "Additional data.",
          "_oracleId": "The oracle ID.",
          "_to": "The token recepient."
        }
      },
      "changeOracleOwner(address,uint64)": {
        "params": {
          "_newOracleOwner": "New owner.",
          "_oracleId": "The oracle whose owner to change."
        }
      },
      "collateralOwing(address,uint256,uint64,uint256,address)": {
        "params": {
          "_collateralContractAddress": "The ERC-1155 collateral token contract.",
          "_collateralTokenId": "The ERC-1155 collateral token ID.",
          "_condition": "The condition (the original receiver of a conditional token).",
          "_oracleId": "From which oracle's \"account\" to withdraw.",
          "_user": "The user to which we may owe."
        }
      },
      "constructor": {
        "params": {
          "_uri": "The ERC-1155 token URI."
        }
      },
      "donate(address,uint256,uint64,uint256,address,address,bytes)": {
        "params": {
          "_amount": "The amount to donate.",
          "_collateralContractAddress": "The collateral ERC-1155 contract address.",
          "_collateralTokenId": "The collateral ERC-1155 token ID.",
          "_data": "Additional transaction data.",
          "_from": "From whom to take the donation.",
          "_oracleId": "The oracle ID to whose ecosystem to donate to.",
          "_to": "On whose account the donation amount is assigned."
        }
      },
      "gatherDeFiProfit(address,uint256,uint64,bytes)": {
        "params": {
          "_collateralContractAddress": "The collateral ERC-1155 contract address.",
          "_collateralTokenId": "The collateral ERC-1155 token ID.",
          "_data": "Additional transaction data.",
          "_oracleId": "The oracle ID to whose ecosystem to donate to."
        }
      },
      "gracePeriodEnd(uint64)": {
        "params": {
          "_oracleId": "For which oracle."
        }
      },
      "isApprovedForAll(address,address)": {
        "details": "See {IERC1155-isApprovedForAll}."
      },
      "isConditionalLocked(address,uint256)": {
        "params": {
          "_condition": "The condition (the original receiver of a conditional token).",
          "_user": "Querying if locked for this user."
        }
      },
      "mintConditional(uint64,uint256,uint256,bytes)": {
        "params": {
          "_amount": "The minted amount.",
          "_conditionalTokenId": "The conditional token ID.",
          "_data": "Additional data.",
          "_oracleId": "The oracle ID."
        }
      },
      "onERC721Received(address,address,uint256,bytes)": {
        "details": "See {IERC721Receiver-onERC721Received}. Always returns `IERC721Receiver.onERC721Received.selector`."
      },
      "oracleOwner(uint64)": {
        "params": {
          "_oracleId": "The oracle ID."
        }
      },
      "setApprovalForAll(address,bool)": {
        "details": "See {IERC1155-setApprovalForAll}."
      },
      "supportsInterface(bytes4)": {
        "details": "See {IERC165-supportsInterface}. Time complexity O(1), guaranteed to always use less than 30 000 gas."
      },
      "totalSupply(uint256)": {
        "params": {
          "id": "Token ID."
        },
        "returns": {
          "_0": "Total supply."
        }
      },
      "uri(uint256)": {
        "details": "See {IERC1155MetadataURI-uri}. This implementation returns the same URI for *all* token types. It relies on the token type ID substitution mechanism https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. Clients calling this function must replace the `\\{id\\}` substring with the actual token type ID."
      },
      "withdrawCollateral(address,uint256,uint64,uint256,bytes)": {
        "params": {
          "_collateralContractAddress": "The ERC-1155 collateral token contract.",
          "_collateralTokenId": "The ERC-1155 collateral token ID.",
          "_condition": "The condition.",
          "_data": "Additional data. Notes: - It is made impossible to withdraw somebody's other collateral, as otherwise we can't mark non-active   accounts in grace period. - We can't transfer to somebody other than `msg.sender` because anybody can transfer   (needed for multi-level transfers). - After this function is called, it becomes impossible to transfer the corresponding conditional token   of `msg.sender` (to prevent its repeated withdrawal).",
          "_oracleId": "From which oracle's \"account\" to withdraw."
        }
      }
    },
    "title": "Locking a token for a collateral.",
    "version": 1
  },
  "userdoc": {
    "events": {
      "CollateralWithdrawn(address,uint256,uint64,address,uint256)": {
        "notice": "Emitted when collateral is withdrawn."
      },
      "ConditionCreated(address,address,uint256,bytes)": {
        "notice": "Emitted when an oracle owner is set."
      },
      "DonateCollateral(address,uint256,address,uint256,address,bytes)": {
        "notice": "Emitted when a collateral is donated."
      },
      "OracleCreated(address,uint64)": {
        "notice": "Emitted when an oracle is created."
      },
      "OracleFinished(uint64)": {
        "notice": "Emitted when an oracle is marked as having finished its work."
      },
      "OracleOwnerChanged(address,uint64)": {
        "notice": "Emitted when an oracle owner is set."
      },
      "OracleToken(uint64,(address,uint256))": {
        "notice": "Assign a token to an orcle"
      }
    },
    "kind": "user",
    "methods": {
      "burnConditional(uint64,uint256,address,uint256,bytes)": {
        "notice": "Burn a conditional token"
      },
      "changeOracleOwner(address,uint64)": {
        "notice": "Modify the owner of an oracle."
      },
      "collateralOwing(address,uint256,uint64,uint256,address)": {
        "notice": "Calculate how much collateral is owed to a user."
      },
      "constructor": {
        "notice": "Constructor."
      },
      "createOracle(address,(address,uint256))": {
        "notice": "Create a new oracle"
      },
      "donate(address,uint256,uint64,uint256,address,address,bytes)": {
        "notice": "Donate funds in an ERC-1155 token. First, the collateral token need to be approved to be spent by this contract from the address `_from`. It also mints a token (with a different ID), that counts donations in that token."
      },
      "externalConditionals(uint64)": {
        "notice": "Mapping (oracleId => external conditional token)."
      },
      "gatherDeFiProfit(address,uint256,uint64,bytes)": {
        "notice": "Gather a DeFi profit of a token previous donated to this contact."
      },
      "gracePeriodEnd(uint64)": {
        "notice": "Retrieve the end of the grace period."
      },
      "isConditionalLocked(address,uint256)": {
        "notice": "Are transfers of a conditinal token locked? This is used to prevent its repeated withdrawal."
      },
      "isOracleFinished(uint64)": {
        "notice": "Is the oracle marked as having finished its work? `oracleId` is the oracle ID."
      },
      "mintConditional(uint64,uint256,uint256,bytes)": {
        "notice": "Mint a conditional token"
      },
      "oracleOwner(uint64)": {
        "notice": "Get the oracle owner."
      },
      "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": {
        "notice": "An ERC-1155 function. We disallow transfers of conditional tokens after redeem `_to` prevent \"gathering\" them before redeeming each oracle."
      },
      "safeTransferFrom(address,address,uint256,uint256,bytes)": {
        "notice": "An ERC-1155 function. We disallow transfers of conditional tokens after redeem `_to` prevent \"gathering\" them before redeeming each oracle."
      },
      "totalSupply(uint256)": {
        "notice": "Total supply of a token (conforms to `IERC1155Views`)."
      },
      "updateGracePeriodEnds(uint64,uint256)": {
        "notice": "Set the end time of the grace period. The first withdrawal can be done *only* during the grace period. The second withdrawal can be done after the end of the grace period and only if the first withdrawal was done. The intention of the grace period is to check which of users are active (\"alive\")."
      },
      "usersWithdrewInFirstRound(uint64)": {
        "notice": "Mapping (oracleId => amount user withdrew in first round) (see `docs/Calculations.md`)."
      },
      "withdrawCollateral(address,uint256,uint64,uint256,bytes)": {
        "notice": "Transfer to `msg.sender` the collateral ERC-1155 token. The amount transferred is proportional to the score of `_condition` by the oracle."
      }
    },
    "notice": "Not audited, not enough tested. Lock a token to exchange it for a collateral in the future. We have only one condition ID: `0`. TODO: This contract is somehow gas-inefficient. Should we release it?",
    "version": 1
  }
}