Obligation Receipt

The ObligationReceipt contract is used to handle rights and obligations of NFTs held in collateral by the borrower. The holder of an obligation receipt receives the underlying NFT when the loan is repaid and is able to control rights delegation; for example, to receive airdrops or gain access to token-gated events.

Methods

setDelegate()

function setDelegate(uint256 tokenId, address to, bool value)

Sets delegation rights for the underlying of a given obligation receipt tokenId to a given address.

Parameter NameTypeDescription

tokenId

uint256

tokenId of the obligation receipt which is linked to a specific loan

to

address

target address for rights delegation

value

bool

true to grant delegation rights, false to remove

View Methods

exists()

function exists(uint256 tokenId)

Checks if there exists an obligation receipt for a given tokenId.

Parameter NameTypeDescription

tokenId

uint256

tokenId of the obligation receipt which is linked to a specific loan

Returns true if the tokenId exists.

getLoan()

function getLoan(uint256 tokenId)

Retrieves loan data for a given tokenId.

Parameter NameTypeDescription

tokenId

uint256

tokenId of the obligation receipt which is linked to a specific loan

Return

Parameter NameTypeDescription

loan

DataTypes.TokenizedLoan memory

tokenized loan data consisting of the collatateral address, tokenId and loan id

ABI

Obligation Receipts ABI
{
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "approved",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "ApprovalForAll",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "previousAdminRole",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "newAdminRole",
          "type": "bytes32"
        }
      ],
      "name": "RoleAdminChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleGranted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleRevoked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DEFAULT_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "baseURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "burn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "exists",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getApproved",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "getLoan",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "collateral",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            }
          ],
          "internalType": "struct DataTypes.TokenizedLoan",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleAdmin",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "grantRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasRole",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_addressProvider_",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "_isLiquidDelegate_",
          "type": "bool"
        },
        {
          "internalType": "string",
          "name": "_name",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "_symbol",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "_customBaseURI",
          "type": "string"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "isApprovedForAll",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "loans",
      "outputs": [
        {
          "internalType": "address",
          "name": "collateral",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_tokenizedId",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "mint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ownerOf",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "renounceRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "revokeRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "setApprovalForAll",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_customBaseURI",
          "type": "string"
        }
      ],
      "name": "setBaseURI",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "value",
          "type": "bool"
        }
      ],
      "name": "setDelegate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "_interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "tokenURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": {
    "object": "0x608060405234801561001057600080fd5b50612817806100206000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80636352211e116100f9578063a217fddf11610097578063c87b56dd11610071578063c87b56dd146103ea578063d547741f146103fd578063e1ec3c6814610410578063e985e9c51461046e57600080fd5b8063a217fddf146103bc578063a22cb465146103c4578063b88d4fde146103d757600080fd5b806390bd6748116100d357806390bd67481461037b57806391d148541461038e57806394d008ef146103a157806395d89b41146103b457600080fd5b80636352211e1461034d5780636c0360eb1461036057806370a082311461036857600080fd5b80632f2ff15d1161016657806342966c681161014057806342966c68146102d65780634f558e79146102e9578063504006ca146102fc57806355f804b31461033a57600080fd5b80632f2ff15d1461029d57806336568abe146102b057806342842e0e146102c357600080fd5b8063081812fc116101a2578063081812fc1461021b578063095ea7b31461024657806323b872dd14610259578063248a9ca31461026c57600080fd5b806301ffc9a7146101c957806303baae35146101f157806306fdde0314610206575b600080fd5b6101dc6101d7366004611eff565b6104aa565b60405190151581526020015b60405180910390f35b6102046101ff366004611fe9565b6104bb565b005b61020e610608565b6040516101e891906120e5565b61022e6102293660046120f8565b61069a565b6040516001600160a01b0390911681526020016101e8565b610204610254366004612111565b6106c1565b61020461026736600461213d565b6107d6565b61028f61027a3660046120f8565b60009081526097602052604090206001015490565b6040519081526020016101e8565b6102046102ab36600461217e565b610807565b6102046102be36600461217e565b61082c565b6102046102d136600461213d565b6108aa565b6102046102e43660046120f8565b6108c5565b6101dc6102f73660046120f8565b6109be565b61030f61030a3660046120f8565b6109dd565b6040805182516001600160a01b031681526020808401519082015291810151908201526060016101e8565b6102046103483660046121ae565b610a4c565b61022e61035b3660046120f8565b610b1b565b61020e610b7b565b61028f6103763660046121e3565b610c09565b610204610389366004612200565b610c8f565b6101dc61039c36600461217e565b610df2565b6102046103af36600461223e565b610e1d565b61020e6110a9565b61028f600081565b6102046103d2366004612297565b6110b8565b6102046103e53660046122cc565b6110c3565b61020e6103f83660046120f8565b6110fb565b61020461040b36600461217e565b611162565b61044961041e3660046120f8565b60cb602052600090815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b0390941684526020840192909252908201526060016101e8565b6101dc61047c366004612338565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b60006104b582611187565b92915050565b600054610100900460ff16158080156104db5750600054600160ff909116105b806104f55750303b1580156104f5575060005460ff166001145b61055d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610580576000805461ff0019166101001790555b61058a84846111ac565b610593826111dd565b60c98054861515600160a01b026001600160a81b03199091166001600160a01b038916171790558015610600576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b60606065805461061790612366565b80601f016020809104026020016040519081016040528092919081815260200182805461064390612366565b80156106905780601f1061066557610100808354040283529160200191610690565b820191906000526020600020905b81548152906001019060200180831161067357829003601f168201915b5050505050905090565b60006106a58261122b565b506000908152606960205260409020546001600160a01b031690565b60006106cc82610b1b565b9050806001600160a01b0316836001600160a01b0316036107395760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610554565b336001600160a01b03821614806107555750610755813361047c565b6107c75760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610554565b6107d1838361128a565b505050565b6107e033826112f8565b6107fc5760405162461bcd60e51b8152600401610554906123a0565b6107d1838383611377565b600082815260976020526040902060010154610822816114e8565b6107d183836114f2565b6001600160a01b038116331461089c5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610554565b6108a68282611578565b5050565b6107d1838383604051806020016040528060008152506110c3565b60c960009054906101000a90046001600160a01b03166001600160a01b0316630261bf8b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c91906123ed565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b8152509061098a5760405162461bcd60e51b815260040161055491906120e5565b50600081815260cb6020526040812080546001600160a01b031916815560018101829055600201556109bb816115df565b50565b6000818152606760205260408120546001600160a01b031615156104b5565b610a0a604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b50600090815260cb6020908152604091829020825160608101845281546001600160a01b03168152600182015492810192909252600201549181019190915290565b60c960009054906101000a90046001600160a01b03166001600160a01b0316639b7ae5ec6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac391906123ed565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203430360ec1b81525090610b115760405162461bcd60e51b815260040161055491906120e5565b506109bb816111dd565b6000818152606760205260408120546001600160a01b0316806104b55760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610554565b60ca8054610b8890612366565b80601f0160208091040260200160405190810160405280929190818152602001828054610bb490612366565b8015610c015780601f10610bd657610100808354040283529160200191610c01565b820191906000526020600020905b815481529060010190602001808311610be457829003601f168201915b505050505081565b60006001600160a01b038216610c735760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610554565b506001600160a01b031660009081526068602052604090205490565b610c9883610b1b565b6001600160a01b0316336001600160a01b031614610cea5760405162461bcd60e51b815260206004820152600f60248201526e3297b6bab9ba16b13296b7bbb732b960891b6044820152606401610554565b60c960009054906101000a90046001600160a01b03166001600160a01b03166357d600a16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6191906123ed565b600084815260cb6020526040908190208054600190910154915163537a5c3d60e01b81526001600160a01b038681166004830152918216602482015260448101929092528315156064830152919091169063537a5c3d90608401600060405180830381600087803b158015610dd557600080fd5b505af1158015610de9573d6000803e3d6000fd5b50505050505050565b60009182526097602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60c960009054906101000a90046001600160a01b03166001600160a01b0316630261bf8b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9491906123ed565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b81525090610ee25760405162461bcd60e51b815260040161055491906120e5565b5060008151116040518060400160405280600381526020016238303160e81b81525090610f225760405162461bcd60e51b815260040161055491906120e5565b50600080600083806020019051810190610f3c919061240a565b604080516060810182526001600160a01b038581168252602080830186815283850186815260008e815260cb90935294909120925183546001600160a01b0319169216919091178255516001820155905160029091015591945092509050610fa5868686611682565b60c954600160a01b900460ff16156106005760c960009054906101000a90046001600160a01b03166001600160a01b03166357d600a16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561100a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102e91906123ed565b60405163537a5c3d60e01b81526001600160a01b03888116600483015285811660248301526044820185905260016064830152919091169063537a5c3d90608401600060405180830381600087803b15801561108957600080fd5b505af115801561109d573d6000803e3d6000fd5b50505050505050505050565b60606066805461061790612366565b6108a63383836116b5565b6110cd33836112f8565b6110e95760405162461bcd60e51b8152600401610554906123a0565b6110f584848484611783565b50505050565b60606111068261122b565b60006111106117b6565b90506000815111611130576040518060200160405280600081525061115b565b8061113a846117c5565b60405160200161114b929190612441565b6040516020818303038152906040525b9392505050565b60008281526097602052604090206001015461117d816114e8565b6107d18383611578565b60006001600160e01b03198216637965db0b60e01b14806104b557506104b582611858565b600054610100900460ff166111d35760405162461bcd60e51b815260040161055490612470565b6108a682826118a8565b60008151116111fb576040518060200160405280600081525061121e565b804660405160200161120e9291906124bb565b6040516020818303038152906040525b60ca906108a69082612533565b6000818152606760205260409020546001600160a01b03166109bb5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610554565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906112bf82610b1b565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061130483610b1b565b9050806001600160a01b0316846001600160a01b0316148061134b57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b8061136f5750836001600160a01b03166113648461069a565b6001600160a01b0316145b949350505050565b826001600160a01b031661138a82610b1b565b6001600160a01b0316146113b05760405162461bcd60e51b8152600401610554906125f3565b6001600160a01b0382166114125760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610554565b61141f83838360016118e8565b826001600160a01b031661143282610b1b565b6001600160a01b0316146114585760405162461bcd60e51b8152600401610554906125f3565b600081815260696020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260688552838620805460001901905590871680865283862080546001019055868652606790945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6109bb8133611970565b6114fc8282610df2565b6108a65760008281526097602090815260408083206001600160a01b03851684529091529020805460ff191660011790556115343390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6115828282610df2565b156108a65760008281526097602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60006115ea82610b1b565b90506115fa8160008460016118e8565b61160382610b1b565b600083815260696020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526068845282852080546000190190558785526067909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b61168c83836119c9565b6116996000848484611b62565b6107d15760405162461bcd60e51b815260040161055490612638565b816001600160a01b0316836001600160a01b0316036117165760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610554565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61178e848484611377565b61179a84848484611b62565b6110f55760405162461bcd60e51b815260040161055490612638565b606060ca805461061790612366565b606060006117d283611c63565b600101905060008167ffffffffffffffff8111156117f2576117f2611f46565b6040519080825280601f01601f19166020018201604052801561181c576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461182657509392505050565b60006001600160e01b031982166380ac58cd60e01b148061188957506001600160e01b03198216635b5e139f60e01b145b806104b557506301ffc9a760e01b6001600160e01b03198316146104b5565b600054610100900460ff166118cf5760405162461bcd60e51b815260040161055490612470565b60656118db8382612533565b5060666107d18282612533565b60018111156110f5576001600160a01b0384161561192e576001600160a01b038416600090815260686020526040812080548392906119289084906126a0565b90915550505b6001600160a01b038316156110f5576001600160a01b038316600090815260686020526040812080548392906119659084906126b3565b909155505050505050565b61197a8282610df2565b6108a65761198781611d3b565b611992836020611d4d565b6040516020016119a39291906126c6565b60408051601f198184030181529082905262461bcd60e51b8252610554916004016120e5565b6001600160a01b038216611a1f5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610554565b6000818152606760205260409020546001600160a01b031615611a845760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610554565b611a926000838360016118e8565b6000818152606760205260409020546001600160a01b031615611af75760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610554565b6001600160a01b038216600081815260686020908152604080832080546001019055848352606790915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15611c5857604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611ba690339089908890889060040161273b565b6020604051808303816000875af1925050508015611be1575060408051601f3d908101601f19168201909252611bde91810190612778565b60015b611c3e573d808015611c0f576040519150601f19603f3d011682016040523d82523d6000602084013e611c14565b606091505b508051600003611c365760405162461bcd60e51b815260040161055490612638565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061136f565b506001949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611ca25772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611cce576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611cec57662386f26fc10000830492506010015b6305f5e1008310611d04576305f5e100830492506008015b6127108310611d1857612710830492506004015b60648310611d2a576064830492506002015b600a83106104b55760010192915050565b60606104b56001600160a01b03831660145b60606000611d5c836002612795565b611d679060026126b3565b67ffffffffffffffff811115611d7f57611d7f611f46565b6040519080825280601f01601f191660200182016040528015611da9576020820181803683370190505b509050600360fc1b81600081518110611dc457611dc46127b4565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611df357611df36127b4565b60200101906001600160f81b031916908160001a9053506000611e17846002612795565b611e229060016126b3565b90505b6001811115611e9a576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611e5657611e566127b4565b1a60f81b828281518110611e6c57611e6c6127b4565b60200101906001600160f81b031916908160001a90535060049490941c93611e93816127ca565b9050611e25565b50831561115b5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610554565b6001600160e01b0319811681146109bb57600080fd5b600060208284031215611f1157600080fd5b813561115b81611ee9565b6001600160a01b03811681146109bb57600080fd5b80358015158114611f4157600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611f6d57600080fd5b813567ffffffffffffffff80821115611f8857611f88611f46565b604051601f8301601f19908116603f01168101908282118183101715611fb057611fb0611f46565b81604052838152866020858801011115611fc957600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a0868803121561200157600080fd5b853561200c81611f1c565b945061201a60208701611f31565b9350604086013567ffffffffffffffff8082111561203757600080fd5b61204389838a01611f5c565b9450606088013591508082111561205957600080fd5b61206589838a01611f5c565b9350608088013591508082111561207b57600080fd5b5061208888828901611f5c565b9150509295509295909350565b60005b838110156120b0578181015183820152602001612098565b50506000910152565b600081518084526120d1816020860160208601612095565b601f01601f19169290920160200192915050565b60208152600061115b60208301846120b9565b60006020828403121561210a57600080fd5b5035919050565b6000806040838503121561212457600080fd5b823561212f81611f1c565b946020939093013593505050565b60008060006060848603121561215257600080fd5b833561215d81611f1c565b9250602084013561216d81611f1c565b929592945050506040919091013590565b6000806040838503121561219157600080fd5b8235915060208301356121a381611f1c565b809150509250929050565b6000602082840312156121c057600080fd5b813567ffffffffffffffff8111156121d757600080fd5b61136f84828501611f5c565b6000602082840312156121f557600080fd5b813561115b81611f1c565b60008060006060848603121561221557600080fd5b83359250602084013561222781611f1c565b915061223560408501611f31565b90509250925092565b60008060006060848603121561225357600080fd5b833561225e81611f1c565b925060208401359150604084013567ffffffffffffffff81111561228157600080fd5b61228d86828701611f5c565b9150509250925092565b600080604083850312156122aa57600080fd5b82356122b581611f1c565b91506122c360208401611f31565b90509250929050565b600080600080608085870312156122e257600080fd5b84356122ed81611f1c565b935060208501356122fd81611f1c565b925060408501359150606085013567ffffffffffffffff81111561232057600080fd5b61232c87828801611f5c565b91505092959194509250565b6000806040838503121561234b57600080fd5b823561235681611f1c565b915060208301356121a381611f1c565b600181811c9082168061237a57607f821691505b60208210810361239a57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b6000602082840312156123ff57600080fd5b815161115b81611f1c565b60008060006060848603121561241f57600080fd5b835161242a81611f1c565b602085015160409095015190969495509392505050565b60008351612453818460208801612095565b835190830190612467818360208801612095565b01949350505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600083516124cd818460208801612095565b602f60f81b92018281526001810193909352506021820152602201919050565b601f8211156107d157600081815260208120601f850160051c810160208610156125145750805b601f850160051c820191505b8181101561060057828155600101612520565b815167ffffffffffffffff81111561254d5761254d611f46565b6125618161255b8454612366565b846124ed565b602080601f831160018114612596576000841561257e5750858301515b600019600386901b1c1916600185901b178555610600565b600085815260208120601f198616915b828110156125c5578886015182559484019460019091019084016125a6565b50858210156125e35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b818103818111156104b5576104b561268a565b808201808211156104b5576104b561268a565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516126fe816017850160208801612095565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835161272f816028840160208801612095565b01602801949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061276e908301846120b9565b9695505050505050565b60006020828403121561278a57600080fd5b815161115b81611ee9565b60008160001904831182151516156127af576127af61268a565b500290565b634e487b7160e01b600052603260045260246000fd5b6000816127d9576127d961268a565b50600019019056fea2646970667358221220d4068efbf84400b60cda169f6074a2a96ca499a2d6aa63d578341ba5e624fd2f64736f6c63430008100033",
    "sourceMap": "198:1328:159:-:0;;;;;;;;;;;;;;;;;;;",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x608060405234801561001057600080fd5b50600436106101c45760003560e01c80636352211e116100f9578063a217fddf11610097578063c87b56dd11610071578063c87b56dd146103ea578063d547741f146103fd578063e1ec3c6814610410578063e985e9c51461046e57600080fd5b8063a217fddf146103bc578063a22cb465146103c4578063b88d4fde146103d757600080fd5b806390bd6748116100d357806390bd67481461037b57806391d148541461038e57806394d008ef146103a157806395d89b41146103b457600080fd5b80636352211e1461034d5780636c0360eb1461036057806370a082311461036857600080fd5b80632f2ff15d1161016657806342966c681161014057806342966c68146102d65780634f558e79146102e9578063504006ca146102fc57806355f804b31461033a57600080fd5b80632f2ff15d1461029d57806336568abe146102b057806342842e0e146102c357600080fd5b8063081812fc116101a2578063081812fc1461021b578063095ea7b31461024657806323b872dd14610259578063248a9ca31461026c57600080fd5b806301ffc9a7146101c957806303baae35146101f157806306fdde0314610206575b600080fd5b6101dc6101d7366004611eff565b6104aa565b60405190151581526020015b60405180910390f35b6102046101ff366004611fe9565b6104bb565b005b61020e610608565b6040516101e891906120e5565b61022e6102293660046120f8565b61069a565b6040516001600160a01b0390911681526020016101e8565b610204610254366004612111565b6106c1565b61020461026736600461213d565b6107d6565b61028f61027a3660046120f8565b60009081526097602052604090206001015490565b6040519081526020016101e8565b6102046102ab36600461217e565b610807565b6102046102be36600461217e565b61082c565b6102046102d136600461213d565b6108aa565b6102046102e43660046120f8565b6108c5565b6101dc6102f73660046120f8565b6109be565b61030f61030a3660046120f8565b6109dd565b6040805182516001600160a01b031681526020808401519082015291810151908201526060016101e8565b6102046103483660046121ae565b610a4c565b61022e61035b3660046120f8565b610b1b565b61020e610b7b565b61028f6103763660046121e3565b610c09565b610204610389366004612200565b610c8f565b6101dc61039c36600461217e565b610df2565b6102046103af36600461223e565b610e1d565b61020e6110a9565b61028f600081565b6102046103d2366004612297565b6110b8565b6102046103e53660046122cc565b6110c3565b61020e6103f83660046120f8565b6110fb565b61020461040b36600461217e565b611162565b61044961041e3660046120f8565b60cb602052600090815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b0390941684526020840192909252908201526060016101e8565b6101dc61047c366004612338565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b60006104b582611187565b92915050565b600054610100900460ff16158080156104db5750600054600160ff909116105b806104f55750303b1580156104f5575060005460ff166001145b61055d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610580576000805461ff0019166101001790555b61058a84846111ac565b610593826111dd565b60c98054861515600160a01b026001600160a81b03199091166001600160a01b038916171790558015610600576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b60606065805461061790612366565b80601f016020809104026020016040519081016040528092919081815260200182805461064390612366565b80156106905780601f1061066557610100808354040283529160200191610690565b820191906000526020600020905b81548152906001019060200180831161067357829003601f168201915b5050505050905090565b60006106a58261122b565b506000908152606960205260409020546001600160a01b031690565b60006106cc82610b1b565b9050806001600160a01b0316836001600160a01b0316036107395760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610554565b336001600160a01b03821614806107555750610755813361047c565b6107c75760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610554565b6107d1838361128a565b505050565b6107e033826112f8565b6107fc5760405162461bcd60e51b8152600401610554906123a0565b6107d1838383611377565b600082815260976020526040902060010154610822816114e8565b6107d183836114f2565b6001600160a01b038116331461089c5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610554565b6108a68282611578565b5050565b6107d1838383604051806020016040528060008152506110c3565b60c960009054906101000a90046001600160a01b03166001600160a01b0316630261bf8b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c91906123ed565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b8152509061098a5760405162461bcd60e51b815260040161055491906120e5565b50600081815260cb6020526040812080546001600160a01b031916815560018101829055600201556109bb816115df565b50565b6000818152606760205260408120546001600160a01b031615156104b5565b610a0a604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b50600090815260cb6020908152604091829020825160608101845281546001600160a01b03168152600182015492810192909252600201549181019190915290565b60c960009054906101000a90046001600160a01b03166001600160a01b0316639b7ae5ec6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac391906123ed565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203430360ec1b81525090610b115760405162461bcd60e51b815260040161055491906120e5565b506109bb816111dd565b6000818152606760205260408120546001600160a01b0316806104b55760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610554565b60ca8054610b8890612366565b80601f0160208091040260200160405190810160405280929190818152602001828054610bb490612366565b8015610c015780601f10610bd657610100808354040283529160200191610c01565b820191906000526020600020905b815481529060010190602001808311610be457829003601f168201915b505050505081565b60006001600160a01b038216610c735760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610554565b506001600160a01b031660009081526068602052604090205490565b610c9883610b1b565b6001600160a01b0316336001600160a01b031614610cea5760405162461bcd60e51b815260206004820152600f60248201526e3297b6bab9ba16b13296b7bbb732b960891b6044820152606401610554565b60c960009054906101000a90046001600160a01b03166001600160a01b03166357d600a16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6191906123ed565b600084815260cb6020526040908190208054600190910154915163537a5c3d60e01b81526001600160a01b038681166004830152918216602482015260448101929092528315156064830152919091169063537a5c3d90608401600060405180830381600087803b158015610dd557600080fd5b505af1158015610de9573d6000803e3d6000fd5b50505050505050565b60009182526097602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60c960009054906101000a90046001600160a01b03166001600160a01b0316630261bf8b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9491906123ed565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b81525090610ee25760405162461bcd60e51b815260040161055491906120e5565b5060008151116040518060400160405280600381526020016238303160e81b81525090610f225760405162461bcd60e51b815260040161055491906120e5565b50600080600083806020019051810190610f3c919061240a565b604080516060810182526001600160a01b038581168252602080830186815283850186815260008e815260cb90935294909120925183546001600160a01b0319169216919091178255516001820155905160029091015591945092509050610fa5868686611682565b60c954600160a01b900460ff16156106005760c960009054906101000a90046001600160a01b03166001600160a01b03166357d600a16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561100a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102e91906123ed565b60405163537a5c3d60e01b81526001600160a01b03888116600483015285811660248301526044820185905260016064830152919091169063537a5c3d90608401600060405180830381600087803b15801561108957600080fd5b505af115801561109d573d6000803e3d6000fd5b50505050505050505050565b60606066805461061790612366565b6108a63383836116b5565b6110cd33836112f8565b6110e95760405162461bcd60e51b8152600401610554906123a0565b6110f584848484611783565b50505050565b60606111068261122b565b60006111106117b6565b90506000815111611130576040518060200160405280600081525061115b565b8061113a846117c5565b60405160200161114b929190612441565b6040516020818303038152906040525b9392505050565b60008281526097602052604090206001015461117d816114e8565b6107d18383611578565b60006001600160e01b03198216637965db0b60e01b14806104b557506104b582611858565b600054610100900460ff166111d35760405162461bcd60e51b815260040161055490612470565b6108a682826118a8565b60008151116111fb576040518060200160405280600081525061121e565b804660405160200161120e9291906124bb565b6040516020818303038152906040525b60ca906108a69082612533565b6000818152606760205260409020546001600160a01b03166109bb5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610554565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906112bf82610b1b565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061130483610b1b565b9050806001600160a01b0316846001600160a01b0316148061134b57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b8061136f5750836001600160a01b03166113648461069a565b6001600160a01b0316145b949350505050565b826001600160a01b031661138a82610b1b565b6001600160a01b0316146113b05760405162461bcd60e51b8152600401610554906125f3565b6001600160a01b0382166114125760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610554565b61141f83838360016118e8565b826001600160a01b031661143282610b1b565b6001600160a01b0316146114585760405162461bcd60e51b8152600401610554906125f3565b600081815260696020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260688552838620805460001901905590871680865283862080546001019055868652606790945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6109bb8133611970565b6114fc8282610df2565b6108a65760008281526097602090815260408083206001600160a01b03851684529091529020805460ff191660011790556115343390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6115828282610df2565b156108a65760008281526097602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60006115ea82610b1b565b90506115fa8160008460016118e8565b61160382610b1b565b600083815260696020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526068845282852080546000190190558785526067909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b61168c83836119c9565b6116996000848484611b62565b6107d15760405162461bcd60e51b815260040161055490612638565b816001600160a01b0316836001600160a01b0316036117165760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610554565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61178e848484611377565b61179a84848484611b62565b6110f55760405162461bcd60e51b815260040161055490612638565b606060ca805461061790612366565b606060006117d283611c63565b600101905060008167ffffffffffffffff8111156117f2576117f2611f46565b6040519080825280601f01601f19166020018201604052801561181c576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461182657509392505050565b60006001600160e01b031982166380ac58cd60e01b148061188957506001600160e01b03198216635b5e139f60e01b145b806104b557506301ffc9a760e01b6001600160e01b03198316146104b5565b600054610100900460ff166118cf5760405162461bcd60e51b815260040161055490612470565b60656118db8382612533565b5060666107d18282612533565b60018111156110f5576001600160a01b0384161561192e576001600160a01b038416600090815260686020526040812080548392906119289084906126a0565b90915550505b6001600160a01b038316156110f5576001600160a01b038316600090815260686020526040812080548392906119659084906126b3565b909155505050505050565b61197a8282610df2565b6108a65761198781611d3b565b611992836020611d4d565b6040516020016119a39291906126c6565b60408051601f198184030181529082905262461bcd60e51b8252610554916004016120e5565b6001600160a01b038216611a1f5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610554565b6000818152606760205260409020546001600160a01b031615611a845760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610554565b611a926000838360016118e8565b6000818152606760205260409020546001600160a01b031615611af75760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610554565b6001600160a01b038216600081815260686020908152604080832080546001019055848352606790915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15611c5857604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611ba690339089908890889060040161273b565b6020604051808303816000875af1925050508015611be1575060408051601f3d908101601f19168201909252611bde91810190612778565b60015b611c3e573d808015611c0f576040519150601f19603f3d011682016040523d82523d6000602084013e611c14565b606091505b508051600003611c365760405162461bcd60e51b815260040161055490612638565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061136f565b506001949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611ca25772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611cce576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611cec57662386f26fc10000830492506010015b6305f5e1008310611d04576305f5e100830492506008015b6127108310611d1857612710830492506004015b60648310611d2a576064830492506002015b600a83106104b55760010192915050565b60606104b56001600160a01b03831660145b60606000611d5c836002612795565b611d679060026126b3565b67ffffffffffffffff811115611d7f57611d7f611f46565b6040519080825280601f01601f191660200182016040528015611da9576020820181803683370190505b509050600360fc1b81600081518110611dc457611dc46127b4565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611df357611df36127b4565b60200101906001600160f81b031916908160001a9053506000611e17846002612795565b611e229060016126b3565b90505b6001811115611e9a576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611e5657611e566127b4565b1a60f81b828281518110611e6c57611e6c6127b4565b60200101906001600160f81b031916908160001a90535060049490941c93611e93816127ca565b9050611e25565b50831561115b5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610554565b6001600160e01b0319811681146109bb57600080fd5b600060208284031215611f1157600080fd5b813561115b81611ee9565b6001600160a01b03811681146109bb57600080fd5b80358015158114611f4157600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611f6d57600080fd5b813567ffffffffffffffff80821115611f8857611f88611f46565b604051601f8301601f19908116603f01168101908282118183101715611fb057611fb0611f46565b81604052838152866020858801011115611fc957600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a0868803121561200157600080fd5b853561200c81611f1c565b945061201a60208701611f31565b9350604086013567ffffffffffffffff8082111561203757600080fd5b61204389838a01611f5c565b9450606088013591508082111561205957600080fd5b61206589838a01611f5c565b9350608088013591508082111561207b57600080fd5b5061208888828901611f5c565b9150509295509295909350565b60005b838110156120b0578181015183820152602001612098565b50506000910152565b600081518084526120d1816020860160208601612095565b601f01601f19169290920160200192915050565b60208152600061115b60208301846120b9565b60006020828403121561210a57600080fd5b5035919050565b6000806040838503121561212457600080fd5b823561212f81611f1c565b946020939093013593505050565b60008060006060848603121561215257600080fd5b833561215d81611f1c565b9250602084013561216d81611f1c565b929592945050506040919091013590565b6000806040838503121561219157600080fd5b8235915060208301356121a381611f1c565b809150509250929050565b6000602082840312156121c057600080fd5b813567ffffffffffffffff8111156121d757600080fd5b61136f84828501611f5c565b6000602082840312156121f557600080fd5b813561115b81611f1c565b60008060006060848603121561221557600080fd5b83359250602084013561222781611f1c565b915061223560408501611f31565b90509250925092565b60008060006060848603121561225357600080fd5b833561225e81611f1c565b925060208401359150604084013567ffffffffffffffff81111561228157600080fd5b61228d86828701611f5c565b9150509250925092565b600080604083850312156122aa57600080fd5b82356122b581611f1c565b91506122c360208401611f31565b90509250929050565b600080600080608085870312156122e257600080fd5b84356122ed81611f1c565b935060208501356122fd81611f1c565b925060408501359150606085013567ffffffffffffffff81111561232057600080fd5b61232c87828801611f5c565b91505092959194509250565b6000806040838503121561234b57600080fd5b823561235681611f1c565b915060208301356121a381611f1c565b600181811c9082168061237a57607f821691505b60208210810361239a57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b6000602082840312156123ff57600080fd5b815161115b81611f1c565b60008060006060848603121561241f57600080fd5b835161242a81611f1c565b602085015160409095015190969495509392505050565b60008351612453818460208801612095565b835190830190612467818360208801612095565b01949350505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600083516124cd818460208801612095565b602f60f81b92018281526001810193909352506021820152602201919050565b601f8211156107d157600081815260208120601f850160051c810160208610156125145750805b601f850160051c820191505b8181101561060057828155600101612520565b815167ffffffffffffffff81111561254d5761254d611f46565b6125618161255b8454612366565b846124ed565b602080601f831160018114612596576000841561257e5750858301515b600019600386901b1c1916600185901b178555610600565b600085815260208120601f198616915b828110156125c5578886015182559484019460019091019084016125a6565b50858210156125e35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b818103818111156104b5576104b561268a565b808201808211156104b5576104b561268a565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516126fe816017850160208801612095565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835161272f816028840160208801612095565b01602801949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061276e908301846120b9565b9695505050505050565b60006020828403121561278a57600080fd5b815161115b81611ee9565b60008160001904831182151516156127af576127af61268a565b500290565b634e487b7160e01b600052603260045260246000fd5b6000816127d9576127d961268a565b50600019019056fea2646970667358221220d4068efbf84400b60cda169f6074a2a96ca499a2d6aa63d578341ba5e624fd2f64736f6c63430008100033",
    "sourceMap": "198:1328:159:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3310:198:164;;;;;;:::i;:::-;;:::i;:::-;;;565:14:187;;558:22;540:41;;528:2;513:18;3310:198:164;;;;;;;;1066:407;;;;;;:::i;:::-;;:::i;:::-;;2932:98:28;;;:::i;:::-;;;;;;;:::i;4407:167::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;3807:32:187;;;3789:51;;3777:2;3762:18;4407:167:28;3643:203:187;3929:417:28;;;;;;:::i;:::-;;:::i;5084:326::-;;;;;;:::i;:::-;;:::i;4708:129:16:-;;;;;;:::i;:::-;4782:7;4808:12;;;:6;:12;;;;;:22;;;;4708:129;;;;4963:25:187;;;4951:2;4936:18;4708:129:16;4817:177:187;5133:145:16;;;;;;:::i;:::-;;:::i;6242:214::-;;;;;;:::i;:::-;;:::i;5476:179:28:-;;;;;;:::i;:::-;;:::i;2615:129:164:-;;;;;;:::i;:::-;;:::i;2880:102::-;;;;;;:::i;:::-;;:::i;2988:127::-;;;;;;:::i;:::-;;:::i;:::-;;;;5551:13:187;;-1:-1:-1;;;;;5547:39:187;5529:58;;5643:4;5631:17;;;5625:24;5603:20;;;5596:54;5694:17;;;5688:24;5666:20;;;5659:54;5517:2;5502:18;2988:127:164;5319:400:187;2750:121:164;;;;;;:::i;:::-;;:::i;2651:219:28:-;;;;;;:::i;:::-;;:::i;952:21:164:-;;;:::i;2390:204:28:-;;;;;;:::i;:::-;;:::i;627:354:159:-;;;;;;:::i;:::-;;:::i;3203:145:16:-;;;;;;:::i;:::-;;:::i;1793:816:164:-;;;;;;:::i;:::-;;:::i;3094:102:28:-;;;:::i;2324:49:16:-;;2369:4;2324:49;;4641:153:28;;;;;;:::i;:::-;;:::i;5721:314::-;;;;;;:::i;:::-;;:::i;3262:276::-;;;;;;:::i;:::-;;:::i;5558:147:16:-;;;;;;:::i;:::-;;:::i;1003:56:164:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1003:56:164;;;;;;;;;;;-1:-1:-1;;;;;8613:32:187;;;8595:51;;8677:2;8662:18;;8655:34;;;;8705:18;;;8698:34;8583:2;8568:18;1003:56:164;8393:345:187;4860:162:28;;;;;;:::i;:::-;-1:-1:-1;;;;;4980:25:28;;;4957:4;4980:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;4860:162;3310:198:164;3441:4;3464:37;3488:12;3464:23;:37::i;:::-;3457:44;3310:198;-1:-1:-1;;3310:198:164:o;1066:407::-;3268:19:18;3291:13;;;;;;3290:14;;3336:34;;;;-1:-1:-1;3354:12:18;;3369:1;3354:12;;;;:16;3336:34;3335:108;;;-1:-1:-1;3415:4:18;1476:19:32;:23;;;3376:66:18;;-1:-1:-1;3425:12:18;;;;;:17;3376:66;3314:201;;;;-1:-1:-1;;;3314:201:18;;9338:2:187;3314:201:18;;;9320:21:187;9377:2;9357:18;;;9350:30;9416:34;9396:18;;;9389:62;-1:-1:-1;;;9467:18:187;;;9460:44;9521:19;;3314:201:18;;;;;;;;;3525:12;:16;;-1:-1:-1;;3525:16:18;3540:1;3525:16;;;3551:65;;;;3585:13;:20;;-1:-1:-1;;3585:20:18;;;;;3551:65;1288:29:164::1;1302:5;1309:7;1288:13;:29::i;:::-;1327:27;1339:14;1327:11;:27::i;:::-;1364:16;:54:::0;;1428:38;::::1;;-1:-1:-1::0;;;1428:38:164::1;-1:-1:-1::0;;;;;;1428:38:164;;;-1:-1:-1;;;;;1364:54:164;::::1;1428:38:::0;::::1;::::0;;3636:99:18;;;;3686:5;3670:21;;-1:-1:-1;;3670:21:18;;;3710:14;;-1:-1:-1;9703:36:187;;3710:14:18;;9691:2:187;9676:18;3710:14:18;;;;;;;3636:99;3258:483;1066:407:164;;;;;:::o;2932:98:28:-;2986:13;3018:5;3011:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2932:98;:::o;4407:167::-;4483:7;4502:23;4517:7;4502:14;:23::i;:::-;-1:-1:-1;4543:24:28;;;;:15;:24;;;;;;-1:-1:-1;;;;;4543:24:28;;4407:167::o;3929:417::-;4009:13;4025:34;4051:7;4025:25;:34::i;:::-;4009:50;;4083:5;-1:-1:-1;;;;;4077:11:28;:2;-1:-1:-1;;;;;4077:11:28;;4069:57;;;;-1:-1:-1;;;4069:57:28;;10337:2:187;4069:57:28;;;10319:21:187;10376:2;10356:18;;;10349:30;10415:34;10395:18;;;10388:62;-1:-1:-1;;;10466:18:187;;;10459:31;10507:19;;4069:57:28;10135:397:187;4069:57:28;929:10:33;-1:-1:-1;;;;;4158:21:28;;;;:62;;-1:-1:-1;4183:37:28;4200:5;929:10:33;4860:162:28;:::i;4183:37::-;4137:170;;;;-1:-1:-1;;;4137:170:28;;10739:2:187;4137:170:28;;;10721:21:187;10778:2;10758:18;;;10751:30;10817:34;10797:18;;;10790:62;10888:31;10868:18;;;10861:59;10937:19;;4137:170:28;10537:425:187;4137:170:28;4318:21;4327:2;4331:7;4318:8;:21::i;:::-;3999:347;3929:417;;:::o;5084:326::-;5273:41;929:10:33;5306:7:28;5273:18;:41::i;:::-;5265:99;;;;-1:-1:-1;;;5265:99:28;;;;;;;:::i;:::-;5375:28;5385:4;5391:2;5395:7;5375:9;:28::i;5133:145:16:-;4782:7;4808:12;;;:6;:12;;;;;:22;;;2802:16;2813:4;2802:10;:16::i;:::-;5246:25:::1;5257:4;5263:7;5246:10;:25::i;6242:214::-:0;-1:-1:-1;;;;;6337:23:16;;929:10:33;6337:23:16;6329:83;;;;-1:-1:-1;;;6329:83:16;;11583:2:187;6329:83:16;;;11565:21:187;11622:2;11602:18;;;11595:30;11661:34;11641:18;;;11634:62;-1:-1:-1;;;11712:18:187;;;11705:45;11767:19;;6329:83:16;11381:411:187;6329:83:16;6423:26;6435:4;6441:7;6423:11;:26::i;:::-;6242:214;;:::o;5476:179:28:-;5609:39;5626:4;5632:2;5636:7;5609:39;;;;;;;;;;;;:16;:39::i;2615:129:164:-;1540:16;;;;;;;;;-1:-1:-1;;;;;1540:16:164;-1:-1:-1;;;;;1540:31:164;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1524:49:164;929:10:33;-1:-1:-1;;;;;1524:49:164;;1575:37;;;;;;;;;;;;;-1:-1:-1;;;1575:37:164;;;1516:97;;;;;-1:-1:-1;;;1516:97:164;;;;;;;;:::i;:::-;-1:-1:-1;2697:15:164::1;::::0;;;:5:::1;:15;::::0;;;;2690:22;;-1:-1:-1;;;;;;2690:22:164::1;::::0;;;;::::1;::::0;;;::::1;;::::0;2722:15:::1;2703:8:::0;2722:5:::1;:15::i;:::-;2615:129:::0;:::o;2880:102::-;2935:4;7402:16:28;;;:7;:16;;;;;;-1:-1:-1;;;;;7402:16:28;7816:31;;2958:17:164;7728:126:28;2988:127:164;3044:30;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3044:30:164;-1:-1:-1;3093:15:164;;;;:5;:15;;;;;;;;;3086:22;;;;;;;;;-1:-1:-1;;;;;3086:22:164;;;;;;;;;;;;;;;;;;;;;;;;;2988:127::o;2750:121::-;1699:16;;;;;;;;;-1:-1:-1;;;;;1699:16:164;-1:-1:-1;;;;;1699:32:164;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1683:50:164;929:10:33;-1:-1:-1;;;;;1683:50:164;;1735:33;;;;;;;;;;;;;-1:-1:-1;;;1735:33:164;;;1675:94;;;;;-1:-1:-1;;;1675:94:164;;;;;;;;:::i;:::-;;2837:27:::1;2849:14;2837:11;:27::i;2651:219:28:-:0;2723:7;7402:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7402:16:28;;2785:56;;;;-1:-1:-1;;;2785:56:28;;12255:2:187;2785:56:28;;;12237:21:187;12294:2;12274:18;;;12267:30;-1:-1:-1;;;12313:18:187;;;12306:54;12377:18;;2785:56:28;12053:348:187;952:21:164;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2390:204:28:-;2462:7;-1:-1:-1;;;;;2489:19:28;;2481:73;;;;-1:-1:-1;;;2481:73:28;;12608:2:187;2481:73:28;;;12590:21:187;12647:2;12627:18;;;12620:30;12686:34;12666:18;;;12659:62;-1:-1:-1;;;12737:18:187;;;12730:39;12786:19;;2481:73:28;12406:405:187;2481:73:28;-1:-1:-1;;;;;;2571:16:28;;;;;:9;:16;;;;;;;2390:204::o;627:354:159:-;730:16;738:7;730;:16::i;:::-;-1:-1:-1;;;;;716:30:159;:10;-1:-1:-1;;;;;716:30:159;;708:58;;;;-1:-1:-1;;;708:58:159;;13018:2:187;708:58:159;;;13000:21:187;13057:2;13037:18;;;13030:30;-1:-1:-1;;;13076:18:187;;;13069:45;13131:18;;708:58:159;12816:339:187;708:58:159;796:16;;;;;;;;;-1:-1:-1;;;;;796:16:159;-1:-1:-1;;;;;796:38:159;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;884:14;;;;:5;:14;;;;;;;:25;;;923:22;;;;776:198;;-1:-1:-1;;;776:198:159;;-1:-1:-1;;;;;13441:15:187;;;776:198:159;;;13423:34:187;884:25:159;;;13473:18:187;;;13466:43;13525:18;;;13518:34;;;;13595:14;;13588:22;13568:18;;;13561:50;776:78:159;;;;;;;13357:19:187;;776:198:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;627:354;;;:::o;3203:145:16:-;3289:4;3312:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;3312:29:16;;;;;;;;;;;;;;;3203:145::o;1793:816:164:-;1540:16;;;;;;;;;-1:-1:-1;;;;;1540:16:164;-1:-1:-1;;;;;1540:31:164;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1524:49:164;929:10:33;-1:-1:-1;;;;;1524:49:164;;1575:37;;;;;;;;;;;;;-1:-1:-1;;;1575:37:164;;;1516:97;;;;;-1:-1:-1;;;1516:97:164;;;;;;;;:::i;:::-;;1922:1:::1;1907:5;:12;:16;1925:29;;;;;;;;;;;;;-1:-1:-1::0;;;1925:29:164::1;;::::0;1899:56:::1;;;;;-1:-1:-1::0;;;1899:56:164::1;;;;;;;;:::i;:::-;;1979:18;2011:15:::0;2040:14:::1;2079:5;2068:46;;;;;;;;;;;;:::i;:::-;2146:125;::::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;2146:125:164;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;;-1:-1:-1;2124:19:164;;;:5:::1;:19:::0;;;;;;;:147;;;;-1:-1:-1;;;;;;2124:147:164::1;::::0;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;2124:147:164;::::1;::::0;;;::::1;::::0;;::::1;::::0;2146:125;;-1:-1:-1;2146:125:164;-1:-1:-1;2146:125:164;-1:-1:-1;2282:37:164::1;2292:5:::0;2124:19;2313:5;2282:9:::1;:37::i;:::-;2334:17;::::0;-1:-1:-1;;;2334:17:164;::::1;;;2330:273;;;2422:16;;;;;;;;;-1:-1:-1::0;;;;;2422:16:164::1;-1:-1:-1::0;;;;;2422:38:164::1;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2402:190;::::0;-1:-1:-1;;;2402:190:164;;-1:-1:-1;;;;;13441:15:187;;;2402:190:164::1;::::0;::::1;13423:34:187::0;13493:15;;;13473:18;;;13466:43;13525:18;;;13518:34;;;2574:4:164::1;13568:18:187::0;;;13561:50;2402:78:164;;;::::1;::::0;::::1;::::0;13357:19:187;;2402:190:164::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1889:720;;;1793:816:::0;;;:::o;3094:102:28:-;3150:13;3182:7;3175:14;;;;;:::i;4641:153::-;4735:52;929:10:33;4768:8:28;4778;4735:18;:52::i;5721:314::-;5889:41;929:10:33;5922:7:28;5889:18;:41::i;:::-;5881:99;;;;-1:-1:-1;;;5881:99:28;;;;;;;:::i;:::-;5990:38;6004:4;6010:2;6014:7;6023:4;5990:13;:38::i;:::-;5721:314;;;;:::o;3262:276::-;3335:13;3360:23;3375:7;3360:14;:23::i;:::-;3394:21;3418:10;:8;:10::i;:::-;3394:34;;3469:1;3451:7;3445:21;:25;:86;;;;;;;;;;;;;;;;;3497:7;3506:18;:7;:16;:18::i;:::-;3480:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3445:86;3438:93;3262:276;-1:-1:-1;;;3262:276:28:o;5558:147:16:-;4782:7;4808:12;;;:6;:12;;;;;:22;;;2802:16;2813:4;2802:10;:16::i;:::-;5672:26:::1;5684:4;5690:7;5672:11;:26::i;2903:213::-:0;2988:4;-1:-1:-1;;;;;;3011:58:16;;-1:-1:-1;;;3011:58:16;;:98;;;3073:36;3097:11;3073:23;:36::i;1605:149:28:-;5363:13:18;;;;;;;5355:69;;;;-1:-1:-1;;;5355:69:18;;;;;;;:::i;:::-;1708:39:28::1;1732:5;1739:7;1708:23;:39::i;3618:215:164:-:0;3729:1;3704:14;3698:28;:32;:128;;;;;;;;;;;;;;;;;3769:14;3790:13;3752:57;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3698:128;3688:7;;:138;;:7;:138;:::i;14004:133:28:-;7793:4;7402:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7402:16:28;14077:53;;;;-1:-1:-1;;;14077:53:28;;12255:2:187;14077:53:28;;;12237:21:187;12294:2;12274:18;;;12267:30;-1:-1:-1;;;12313:18:187;;;12306:54;12377:18;;14077:53:28;12053:348:187;13295:182:28;13369:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;13369:29:28;-1:-1:-1;;;;;13369:29:28;;;;;;;;:24;;13422:34;13369:24;13422:25;:34::i;:::-;-1:-1:-1;;;;;13413:57:28;;;;;;;;;;;13295:182;;:::o;8012:272::-;8105:4;8121:13;8137:34;8163:7;8137:25;:34::i;:::-;8121:50;;8200:5;-1:-1:-1;;;;;8189:16:28;:7;-1:-1:-1;;;;;8189:16:28;;:52;;;-1:-1:-1;;;;;;4980:25:28;;;4957:4;4980:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;8209:32;8189:87;;;;8269:7;-1:-1:-1;;;;;8245:31:28;:20;8257:7;8245:11;:20::i;:::-;-1:-1:-1;;;;;8245:31:28;;8189:87;8181:96;8012:272;-1:-1:-1;;;;8012:272:28:o;11928:1255::-;12093:4;-1:-1:-1;;;;;12055:42:28;:34;12081:7;12055:25;:34::i;:::-;-1:-1:-1;;;;;12055:42:28;;12047:92;;;;-1:-1:-1;;;12047:92:28;;;;;;;:::i;:::-;-1:-1:-1;;;;;12157:16:28;;12149:65;;;;-1:-1:-1;;;12149:65:28;;18414:2:187;12149:65:28;;;18396:21:187;18453:2;18433:18;;;18426:30;18492:34;18472:18;;;18465:62;-1:-1:-1;;;18543:18:187;;;18536:34;18587:19;;12149:65:28;18212:400:187;12149:65:28;12225:42;12246:4;12252:2;12256:7;12265:1;12225:20;:42::i;:::-;12405:4;-1:-1:-1;;;;;12367:42:28;:34;12393:7;12367:25;:34::i;:::-;-1:-1:-1;;;;;12367:42:28;;12359:92;;;;-1:-1:-1;;;12359:92:28;;;;;;;:::i;:::-;12520:24;;;;:15;:24;;;;;;;;12513:31;;-1:-1:-1;;;;;;12513:31:28;;;;;;-1:-1:-1;;;;;12988:15:28;;;;;;:9;:15;;;;;:20;;-1:-1:-1;;12988:20:28;;;13022:13;;;;;;;;;:18;;12513:31;13022:18;;;13060:16;;;:7;:16;;;;;;:21;;;;;;;;;;13097:27;;12536:7;;13097:27;;;3999:347;3929:417;;:::o;3642:103:16:-;3708:30;3719:4;929:10:33;3708::16;:30::i;7791:233::-;7874:22;7882:4;7888:7;7874;:22::i;:::-;7869:149;;7912:12;;;;:6;:12;;;;;;;;-1:-1:-1;;;;;7912:29:16;;;;;;;;;:36;;-1:-1:-1;;7912:36:16;7944:4;7912:36;;;7994:12;929:10:33;;850:96;7994:12:16;-1:-1:-1;;;;;7967:40:16;7985:7;-1:-1:-1;;;;;7967:40:16;7979:4;7967:40;;;;;;;;;;7791:233;;:::o;8195:234::-;8278:22;8286:4;8292:7;8278;:22::i;:::-;8274:149;;;8348:5;8316:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;8316:29:16;;;;;;;;;;:37;;-1:-1:-1;;8316:37:16;;;8372:40;929:10:33;;8316:12:16;;8372:40;;8348:5;8372:40;8195:234;;:::o;10820:784:28:-;10879:13;10895:34;10921:7;10895:25;:34::i;:::-;10879:50;;10940:51;10961:5;10976:1;10980:7;10989:1;10940:20;:51::i;:::-;11101:34;11127:7;11101:25;:34::i;:::-;11180:24;;;;:15;:24;;;;;;;;11173:31;;-1:-1:-1;;;;;;11173:31:28;;;;;;-1:-1:-1;;;;;11420:16:28;;;;;:9;:16;;;;;:21;;-1:-1:-1;;11420:21:28;;;11468:16;;;:7;:16;;;;;;11461:23;;;;;;;11500:36;11093:42;;-1:-1:-1;11196:7:28;;11500:36;;11180:24;;11500:36;6242:214:16;;:::o;8943:309:28:-;9067:18;9073:2;9077:7;9067:5;:18::i;:::-;9116:53;9147:1;9151:2;9155:7;9164:4;9116:22;:53::i;:::-;9095:150;;;;-1:-1:-1;;;9095:150:28;;;;;;;:::i;13613:307::-;13763:8;-1:-1:-1;;;;;13754:17:28;:5;-1:-1:-1;;;;;13754:17:28;;13746:55;;;;-1:-1:-1;;;13746:55:28;;19238:2:187;13746:55:28;;;19220:21:187;19277:2;19257:18;;;19250:30;19316:27;19296:18;;;19289:55;19361:18;;13746:55:28;19036:349:187;13746:55:28;-1:-1:-1;;;;;13811:25:28;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;13811:46:28;;;;;;;;;;13872:41;;540::187;;;13872::28;;513:18:187;13872:41:28;;;;;;;13613:307;;;:::o;6896:305::-;7046:28;7056:4;7062:2;7066:7;7046:9;:28::i;:::-;7092:47;7115:4;7121:2;7125:7;7134:4;7092:22;:47::i;:::-;7084:110;;;;-1:-1:-1;;;7084:110:28;;;;;;;:::i;3514:98:164:-;3566:13;3598:7;3591:14;;;;;:::i;437:707:35:-;493:13;542:14;559:28;581:5;559:21;:28::i;:::-;590:1;559:32;542:49;;605:20;639:6;628:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;628:18:35;-1:-1:-1;605:41:35;-1:-1:-1;766:28:35;;;782:2;766:28;821:280;-1:-1:-1;;852:5:35;-1:-1:-1;;;986:2:35;975:14;;970:30;852:5;957:44;1045:2;1036:11;;;-1:-1:-1;1065:21:35;821:280;1065:21;-1:-1:-1;1121:6:35;437:707;-1:-1:-1;;;437:707:35:o;1987:344:28:-;2111:4;-1:-1:-1;;;;;;2146:51:28;;-1:-1:-1;;;2146:51:28;;:126;;-1:-1:-1;;;;;;;2213:59:28;;-1:-1:-1;;;2213:59:28;2146:126;:178;;;-1:-1:-1;;;;;;;;;;1168:51:36;;;2288:36:28;1060:166:36;1760:160:28;5363:13:18;;;;;;;5355:69;;;;-1:-1:-1;;;5355:69:18;;;;;;;:::i;:::-;1873:5:28::1;:13;1881:5:::0;1873;:13:::1;:::i;:::-;-1:-1:-1::0;1896:7:28::1;:17;1906:7:::0;1896;:17:::1;:::i;16258:396::-:0;16442:1;16430:9;:13;16426:222;;;-1:-1:-1;;;;;16463:18:28;;;16459:85;;-1:-1:-1;;;;;16501:15:28;;;;;;:9;:15;;;;;:28;;16520:9;;16501:15;:28;;16520:9;;16501:28;:::i;:::-;;;;-1:-1:-1;;16459:85:28;-1:-1:-1;;;;;16561:16:28;;;16557:81;;-1:-1:-1;;;;;16597:13:28;;;;;;:9;:13;;;;;:26;;16614:9;;16597:13;:26;;16614:9;;16597:26;:::i;:::-;;;;-1:-1:-1;;16258:396:28;;;;:::o;4026:501:16:-;4114:22;4122:4;4128:7;4114;:22::i;:::-;4109:412;;4297:39;4328:7;4297:30;:39::i;:::-;4407:49;4446:4;4453:2;4407:30;:49::i;:::-;4204:274;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;4204:274:16;;;;;;;;;;-1:-1:-1;;;4152:358:16;;;;;;;:::i;9574:920:28:-;-1:-1:-1;;;;;9653:16:28;;9645:61;;;;-1:-1:-1;;;9645:61:28;;20936:2:187;9645:61:28;;;20918:21:187;;;20955:18;;;20948:30;21014:34;20994:18;;;20987:62;21066:18;;9645:61:28;20734:356:187;9645:61:28;7793:4;7402:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7402:16:28;7816:31;9716:58;;;;-1:-1:-1;;;9716:58:28;;21297:2:187;9716:58:28;;;21279:21:187;21336:2;21316:18;;;21309:30;21375;21355:18;;;21348:58;21423:18;;9716:58:28;21095:352:187;9716:58:28;9785:48;9814:1;9818:2;9822:7;9831:1;9785:20;:48::i;:::-;7793:4;7402:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7402:16:28;7816:31;9920:58;;;;-1:-1:-1;;;9920:58:28;;21297:2:187;9920:58:28;;;21279:21:187;21336:2;21316:18;;;21309:30;21375;21355:18;;;21348:58;21423:18;;9920:58:28;21095:352:187;9920:58:28;-1:-1:-1;;;;;10320:13:28;;;;;;:9;:13;;;;;;;;:18;;10337:1;10320:18;;;10359:16;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;10359:21:28;;;;;10396:33;10367:7;;10320:13;;10396:33;;10320:13;;10396:33;6242:214:16;;:::o;14689:853:28:-;14838:4;-1:-1:-1;;;;;14858:13:28;;1476:19:32;:23;14854:682:28;;14893:82;;-1:-1:-1;;;14893:82:28;;-1:-1:-1;;;;;14893:47:28;;;;;:82;;929:10:33;;14955:4:28;;14961:7;;14970:4;;14893:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14893:82:28;;;;;;;;-1:-1:-1;;14893:82:28;;;;;;;;;;;;:::i;:::-;;;14889:595;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15153:6;:13;15170:1;15153:18;15149:321;;15195:60;;-1:-1:-1;;;15195:60:28;;;;;;;:::i;15149:321::-;15422:6;15416:13;15407:6;15403:2;15399:15;15392:38;14889:595;-1:-1:-1;;;;;;15025:62:28;-1:-1:-1;;;15025:62:28;;-1:-1:-1;15018:69:28;;14854:682;-1:-1:-1;15521:4:28;14689:853;;;;;;:::o;9900:890:38:-;9953:7;;-1:-1:-1;;;10028:15:38;;10024:99;;-1:-1:-1;;;10063:15:38;;;-1:-1:-1;10106:2:38;10096:12;10024:99;10149:6;10140:5;:15;10136:99;;10184:6;10175:15;;;-1:-1:-1;10218:2:38;10208:12;10136:99;10261:6;10252:5;:15;10248:99;;10296:6;10287:15;;;-1:-1:-1;10330:2:38;10320:12;10248:99;10373:5;10364;:14;10360:96;;10407:5;10398:14;;;-1:-1:-1;10440:1:38;10430:11;10360:96;10482:5;10473;:14;10469:96;;10516:5;10507:14;;;-1:-1:-1;10549:1:38;10539:11;10469:96;10591:5;10582;:14;10578:96;;10625:5;10616:14;;;-1:-1:-1;10658:1:38;10648:11;10578:96;10700:5;10691;:14;10687:64;;10735:1;10725:11;10777:6;9900:890;-1:-1:-1;;9900:890:38:o;2146:149:35:-;2204:13;2236:52;-1:-1:-1;;;;;2248:22:35;;333:2;1557:437;1632:13;1657:19;1689:10;1693:6;1689:1;:10;:::i;:::-;:14;;1702:1;1689:14;:::i;:::-;1679:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1679:25:35;;1657:47;;-1:-1:-1;;;1714:6:35;1721:1;1714:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;1714:15:35;;;;;;;;;-1:-1:-1;;;1739:6:35;1746:1;1739:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;1739:15:35;;;;;;;;-1:-1:-1;1769:9:35;1781:10;1785:6;1781:1;:10;:::i;:::-;:14;;1794:1;1781:14;:::i;:::-;1769:26;;1764:128;1801:1;1797;:5;1764:128;;;-1:-1:-1;;;1844:5:35;1852:3;1844:11;1835:21;;;;;;;:::i;:::-;;;;1823:6;1830:1;1823:9;;;;;;;;:::i;:::-;;;;:33;-1:-1:-1;;;;;1823:33:35;;;;;;;;-1:-1:-1;1880:1:35;1870:11;;;;;1804:3;;;:::i;:::-;;;1764:128;;;-1:-1:-1;1909:10:35;;1901:55;;;;-1:-1:-1;;;1901:55:35;;22848:2:187;1901:55:35;;;22830:21:187;;;22867:18;;;22860:30;22926:34;22906:18;;;22899:62;22978:18;;1901:55:35;22646:356:187;14:131;-1:-1:-1;;;;;;88:32:187;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:131::-;-1:-1:-1;;;;;667:31:187;;657:42;;647:70;;713:1;710;703:12;728:160;793:20;;849:13;;842:21;832:32;;822:60;;878:1;875;868:12;822:60;728:160;;;:::o;893:127::-;954:10;949:3;945:20;942:1;935:31;985:4;982:1;975:15;1009:4;1006:1;999:15;1025:719;1068:5;1121:3;1114:4;1106:6;1102:17;1098:27;1088:55;;1139:1;1136;1129:12;1088:55;1175:6;1162:20;1201:18;1238:2;1234;1231:10;1228:36;;;1244:18;;:::i;:::-;1319:2;1313:9;1287:2;1373:13;;-1:-1:-1;;1369:22:187;;;1393:2;1365:31;1361:40;1349:53;;;1417:18;;;1437:22;;;1414:46;1411:72;;;1463:18;;:::i;:::-;1503:10;1499:2;1492:22;1538:2;1530:6;1523:18;1584:3;1577:4;1572:2;1564:6;1560:15;1556:26;1553:35;1550:55;;;1601:1;1598;1591:12;1550:55;1665:2;1658:4;1650:6;1646:17;1639:4;1631:6;1627:17;1614:54;1712:1;1705:4;1700:2;1692:6;1688:15;1684:26;1677:37;1732:6;1723:15;;;;;;1025:719;;;;:::o;1749:948::-;1871:6;1879;1887;1895;1903;1956:3;1944:9;1935:7;1931:23;1927:33;1924:53;;;1973:1;1970;1963:12;1924:53;2012:9;1999:23;2031:31;2056:5;2031:31;:::i;:::-;2081:5;-1:-1:-1;2105:35:187;2136:2;2121:18;;2105:35;:::i;:::-;2095:45;;2191:2;2180:9;2176:18;2163:32;2214:18;2255:2;2247:6;2244:14;2241:34;;;2271:1;2268;2261:12;2241:34;2294:50;2336:7;2327:6;2316:9;2312:22;2294:50;:::i;:::-;2284:60;;2397:2;2386:9;2382:18;2369:32;2353:48;;2426:2;2416:8;2413:16;2410:36;;;2442:1;2439;2432:12;2410:36;2465:52;2509:7;2498:8;2487:9;2483:24;2465:52;:::i;:::-;2455:62;;2570:3;2559:9;2555:19;2542:33;2526:49;;2600:2;2590:8;2587:16;2584:36;;;2616:1;2613;2606:12;2584:36;;2639:52;2683:7;2672:8;2661:9;2657:24;2639:52;:::i;:::-;2629:62;;;1749:948;;;;;;;;:::o;2702:250::-;2787:1;2797:113;2811:6;2808:1;2805:13;2797:113;;;2887:11;;;2881:18;2868:11;;;2861:39;2833:2;2826:10;2797:113;;;-1:-1:-1;;2944:1:187;2926:16;;2919:27;2702:250::o;2957:271::-;2999:3;3037:5;3031:12;3064:6;3059:3;3052:19;3080:76;3149:6;3142:4;3137:3;3133:14;3126:4;3119:5;3115:16;3080:76;:::i;:::-;3210:2;3189:15;-1:-1:-1;;3185:29:187;3176:39;;;;3217:4;3172:50;;2957:271;-1:-1:-1;;2957:271:187:o;3233:220::-;3382:2;3371:9;3364:21;3345:4;3402:45;3443:2;3432:9;3428:18;3420:6;3402:45;:::i;3458:180::-;3517:6;3570:2;3558:9;3549:7;3545:23;3541:32;3538:52;;;3586:1;3583;3576:12;3538:52;-1:-1:-1;3609:23:187;;3458:180;-1:-1:-1;3458:180:187:o;3851:315::-;3919:6;3927;3980:2;3968:9;3959:7;3955:23;3951:32;3948:52;;;3996:1;3993;3986:12;3948:52;4035:9;4022:23;4054:31;4079:5;4054:31;:::i;:::-;4104:5;4156:2;4141:18;;;;4128:32;;-1:-1:-1;;;3851:315:187:o;4171:456::-;4248:6;4256;4264;4317:2;4305:9;4296:7;4292:23;4288:32;4285:52;;;4333:1;4330;4323:12;4285:52;4372:9;4359:23;4391:31;4416:5;4391:31;:::i;:::-;4441:5;-1:-1:-1;4498:2:187;4483:18;;4470:32;4511:33;4470:32;4511:33;:::i;:::-;4171:456;;4563:7;;-1:-1:-1;;;4617:2:187;4602:18;;;;4589:32;;4171:456::o;4999:315::-;5067:6;5075;5128:2;5116:9;5107:7;5103:23;5099:32;5096:52;;;5144:1;5141;5134:12;5096:52;5180:9;5167:23;5157:33;;5240:2;5229:9;5225:18;5212:32;5253:31;5278:5;5253:31;:::i;:::-;5303:5;5293:15;;;4999:315;;;;;:::o;5724:322::-;5793:6;5846:2;5834:9;5825:7;5821:23;5817:32;5814:52;;;5862:1;5859;5852:12;5814:52;5902:9;5889:23;5935:18;5927:6;5924:30;5921:50;;;5967:1;5964;5957:12;5921:50;5990;6032:7;6023:6;6012:9;6008:22;5990:50;:::i;6051:247::-;6110:6;6163:2;6151:9;6142:7;6138:23;6134:32;6131:52;;;6179:1;6176;6169:12;6131:52;6218:9;6205:23;6237:31;6262:5;6237:31;:::i;6485:383::-;6559:6;6567;6575;6628:2;6616:9;6607:7;6603:23;6599:32;6596:52;;;6644:1;6641;6634:12;6596:52;6680:9;6667:23;6657:33;;6740:2;6729:9;6725:18;6712:32;6753:31;6778:5;6753:31;:::i;:::-;6803:5;-1:-1:-1;6827:35:187;6858:2;6843:18;;6827:35;:::i;:::-;6817:45;;6485:383;;;;;:::o;6873:524::-;6959:6;6967;6975;7028:2;7016:9;7007:7;7003:23;6999:32;6996:52;;;7044:1;7041;7034:12;6996:52;7083:9;7070:23;7102:31;7127:5;7102:31;:::i;:::-;7152:5;-1:-1:-1;7204:2:187;7189:18;;7176:32;;-1:-1:-1;7259:2:187;7244:18;;7231:32;7286:18;7275:30;;7272:50;;;7318:1;7315;7308:12;7272:50;7341;7383:7;7374:6;7363:9;7359:22;7341:50;:::i;:::-;7331:60;;;6873:524;;;;;:::o;7402:315::-;7467:6;7475;7528:2;7516:9;7507:7;7503:23;7499:32;7496:52;;;7544:1;7541;7534:12;7496:52;7583:9;7570:23;7602:31;7627:5;7602:31;:::i;:::-;7652:5;-1:-1:-1;7676:35:187;7707:2;7692:18;;7676:35;:::i;:::-;7666:45;;7402:315;;;;;:::o;7722:666::-;7817:6;7825;7833;7841;7894:3;7882:9;7873:7;7869:23;7865:33;7862:53;;;7911:1;7908;7901:12;7862:53;7950:9;7937:23;7969:31;7994:5;7969:31;:::i;:::-;8019:5;-1:-1:-1;8076:2:187;8061:18;;8048:32;8089:33;8048:32;8089:33;:::i;:::-;8141:7;-1:-1:-1;8195:2:187;8180:18;;8167:32;;-1:-1:-1;8250:2:187;8235:18;;8222:32;8277:18;8266:30;;8263:50;;;8309:1;8306;8299:12;8263:50;8332;8374:7;8365:6;8354:9;8350:22;8332:50;:::i;:::-;8322:60;;;7722:666;;;;;;;:::o;8743:388::-;8811:6;8819;8872:2;8860:9;8851:7;8847:23;8843:32;8840:52;;;8888:1;8885;8878:12;8840:52;8927:9;8914:23;8946:31;8971:5;8946:31;:::i;:::-;8996:5;-1:-1:-1;9053:2:187;9038:18;;9025:32;9066:33;9025:32;9066:33;:::i;9750:380::-;9829:1;9825:12;;;;9872;;;9893:61;;9947:4;9939:6;9935:17;9925:27;;9893:61;10000:2;9992:6;9989:14;9969:18;9966:38;9963:161;;10046:10;10041:3;10037:20;10034:1;10027:31;10081:4;10078:1;10071:15;10109:4;10106:1;10099:15;9963:161;;9750:380;;;:::o;10967:409::-;11169:2;11151:21;;;11208:2;11188:18;;;11181:30;11247:34;11242:2;11227:18;;11220:62;-1:-1:-1;;;11313:2:187;11298:18;;11291:43;11366:3;11351:19;;10967:409::o;11797:251::-;11867:6;11920:2;11908:9;11899:7;11895:23;11891:32;11888:52;;;11936:1;11933;11926:12;11888:52;11968:9;11962:16;11987:31;12012:5;11987:31;:::i;13622:381::-;13718:6;13726;13734;13787:2;13775:9;13766:7;13762:23;13758:32;13755:52;;;13803:1;13800;13793:12;13755:52;13835:9;13829:16;13854:31;13879:5;13854:31;:::i;:::-;13949:2;13934:18;;13928:25;13993:2;13978:18;;;13972:25;13904:5;;13928:25;;-1:-1:-1;13972:25:187;13622:381;-1:-1:-1;;;13622:381:187:o;14008:496::-;14187:3;14225:6;14219:13;14241:66;14300:6;14295:3;14288:4;14280:6;14276:17;14241:66;:::i;:::-;14370:13;;14329:16;;;;14392:70;14370:13;14329:16;14439:4;14427:17;;14392:70;:::i;:::-;14478:20;;14008:496;-1:-1:-1;;;;14008:496:187:o;14509:407::-;14711:2;14693:21;;;14750:2;14730:18;;;14723:30;14789:34;14784:2;14769:18;;14762:62;-1:-1:-1;;;14855:2:187;14840:18;;14833:41;14906:3;14891:19;;14509:407::o;14921:676::-;15282:3;15320:6;15314:13;15336:66;15395:6;15390:3;15383:4;15375:6;15371:17;15336:66;:::i;:::-;-1:-1:-1;;;15424:16:187;;15471:17;;;15515:1;15504:13;;15497:29;;;;-1:-1:-1;15553:2:187;15542:14;;15535:26;15588:2;15577:14;;14921:676;-1:-1:-1;14921:676:187:o;15728:545::-;15830:2;15825:3;15822:11;15819:448;;;15866:1;15891:5;15887:2;15880:17;15936:4;15932:2;15922:19;16006:2;15994:10;15990:19;15987:1;15983:27;15977:4;15973:38;16042:4;16030:10;16027:20;16024:47;;;-1:-1:-1;16065:4:187;16024:47;16120:2;16115:3;16111:12;16108:1;16104:20;16098:4;16094:31;16084:41;;16175:82;16193:2;16186:5;16183:13;16175:82;;;16238:17;;;16219:1;16208:13;16175:82;;16449:1352;16575:3;16569:10;16602:18;16594:6;16591:30;16588:56;;;16624:18;;:::i;:::-;16653:97;16743:6;16703:38;16735:4;16729:11;16703:38;:::i;:::-;16697:4;16653:97;:::i;:::-;16805:4;;16869:2;16858:14;;16886:1;16881:663;;;;17588:1;17605:6;17602:89;;;-1:-1:-1;17657:19:187;;;17651:26;17602:89;-1:-1:-1;;16406:1:187;16402:11;;;16398:24;16394:29;16384:40;16430:1;16426:11;;;16381:57;17704:81;;16851:944;;16881:663;15675:1;15668:14;;;15712:4;15699:18;;-1:-1:-1;;16917:20:187;;;17035:236;17049:7;17046:1;17043:14;17035:236;;;17138:19;;;17132:26;17117:42;;17230:27;;;;17198:1;17186:14;;;;17065:19;;17035:236;;;17039:3;17299:6;17290:7;17287:19;17284:201;;;17360:19;;;17354:26;-1:-1:-1;;17443:1:187;17439:14;;;17455:3;17435:24;17431:37;17427:42;17412:58;17397:74;;17284:201;-1:-1:-1;;;;;17531:1:187;17515:14;;;17511:22;17498:36;;-1:-1:-1;16449:1352:187:o;17806:401::-;18008:2;17990:21;;;18047:2;18027:18;;;18020:30;18086:34;18081:2;18066:18;;18059:62;-1:-1:-1;;;18152:2:187;18137:18;;18130:35;18197:3;18182:19;;17806:401::o;18617:414::-;18819:2;18801:21;;;18858:2;18838:18;;;18831:30;18897:34;18892:2;18877:18;;18870:62;-1:-1:-1;;;18963:2:187;18948:18;;18941:48;19021:3;19006:19;;18617:414::o;19522:127::-;19583:10;19578:3;19574:20;19571:1;19564:31;19614:4;19611:1;19604:15;19638:4;19635:1;19628:15;19654:128;19721:9;;;19742:11;;;19739:37;;;19756:18;;:::i;19787:125::-;19852:9;;;19873:10;;;19870:36;;;19886:18;;:::i;19917:812::-;20328:25;20323:3;20316:38;20298:3;20383:6;20377:13;20399:75;20467:6;20462:2;20457:3;20453:12;20446:4;20438:6;20434:17;20399:75;:::i;:::-;-1:-1:-1;;;20533:2:187;20493:16;;;20525:11;;;20518:40;20583:13;;20605:76;20583:13;20667:2;20659:11;;20652:4;20640:17;;20605:76;:::i;:::-;20701:17;20720:2;20697:26;;19917:812;-1:-1:-1;;;;19917:812:187:o;21452:489::-;-1:-1:-1;;;;;21721:15:187;;;21703:34;;21773:15;;21768:2;21753:18;;21746:43;21820:2;21805:18;;21798:34;;;21868:3;21863:2;21848:18;;21841:31;;;21646:4;;21889:46;;21915:19;;21907:6;21889:46;:::i;:::-;21881:54;21452:489;-1:-1:-1;;;;;;21452:489:187:o;21946:249::-;22015:6;22068:2;22056:9;22047:7;22043:23;22039:32;22036:52;;;22084:1;22081;22074:12;22036:52;22116:9;22110:16;22135:30;22159:5;22135:30;:::i;22200:168::-;22240:7;22306:1;22302;22298:6;22294:14;22291:1;22288:21;22283:1;22276:9;22269:17;22265:45;22262:71;;;22313:18;;:::i;:::-;-1:-1:-1;22353:9:187;;22200:168::o;22373:127::-;22434:10;22429:3;22425:20;22422:1;22415:31;22465:4;22462:1;22455:15;22489:4;22486:1;22479:15;22505:136;22544:3;22572:5;22562:39;;22581:18;;:::i;:::-;-1:-1:-1;;;22617:18:187;;22505:136::o",
    "linkReferences": {}
  },
  "methodIdentifiers": {
    "DEFAULT_ADMIN_ROLE()": "a217fddf",
    "approve(address,uint256)": "095ea7b3",
    "balanceOf(address)": "70a08231",
    "baseURI()": "6c0360eb",
    "burn(uint256)": "42966c68",
    "exists(uint256)": "4f558e79",
    "getApproved(uint256)": "081812fc",
    "getLoan(uint256)": "504006ca",
    "getRoleAdmin(bytes32)": "248a9ca3",
    "grantRole(bytes32,address)": "2f2ff15d",
    "hasRole(bytes32,address)": "91d14854",
    "initialize(address,bool,string,string,string)": "03baae35",
    "isApprovedForAll(address,address)": "e985e9c5",
    "loans(uint256)": "e1ec3c68",
    "mint(address,uint256,bytes)": "94d008ef",
    "name()": "06fdde03",
    "ownerOf(uint256)": "6352211e",
    "renounceRole(bytes32,address)": "36568abe",
    "revokeRole(bytes32,address)": "d547741f",
    "safeTransferFrom(address,address,uint256)": "42842e0e",
    "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
    "setApprovalForAll(address,bool)": "a22cb465",
    "setBaseURI(string)": "55f804b3",
    "setDelegate(uint256,address,bool)": "90bd6748",
    "supportsInterface(bytes4)": "01ffc9a7",
    "symbol()": "95d89b41",
    "tokenURI(uint256)": "c87b56dd",
    "transferFrom(address,address,uint256)": "23b872dd"
  },
  "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"exists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getLoan\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"collateral\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"internalType\":\"struct DataTypes.TokenizedLoan\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addressProvider_\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_isLiquidDelegate_\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_customBaseURI\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"loans\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"collateral\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenizedId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_customBaseURI\",\"type\":\"string\"}],\"name\":\"setBaseURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"value\",\"type\":\"bool\"}],\"name\":\"setDelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"setDelegate(uint256,address,bool)\":{\"details\":\"must be holder of obligation receipt to control delegation rights of the underlying - delegation right transfered to new owner as per _beforeTokenTransfer\",\"params\":{\"to\":\"the target address for delegation rights\",\"tokenId\":\"the tokenId of the obligation receipt\",\"value\":\"true if giving and false if removing delegation rights\"}},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"supportsInterface(bytes4)\":{\"notice\":\"----------------------------------------------------------------------- Internal / Overrides -----------------------------------------------------------------------\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/protocol/tokenization/ObligationReceipt.sol\":\"ObligationReceipt\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@chainlink/=lib/chainlink/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":chainlink/=lib/chainlink/integration-tests/contracts/ethereum/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xe798cadb41e2da274913e4b3183a80f50fb057a42238fe8467e077268100ec27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://899f850f7df5a270bccfb765d70069959ca1c20d3a7381c1c3bda8a3ffee1935\",\"dweb:/ipfs/QmVdnAqwyX2L3nX2HDA5WKGtVBFyH1nKE9A1k7fZnPBkhP\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC721/ERC721Upgradeable.sol\":{\"keccak256\":\"0x2a6a0b9fd2d316dcb4141159a9d13be92654066d6c0ae92757ed908ecdfecff0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05d9be7ee043009eb9f2089b452efc0961345531fc63354a249d7337c69f3bb\",\"dweb:/ipfs/QmTXhzgaYrh6og76BP85i6exNFAv5NYw64uVWyworNogyG\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8bc3c6a456dba727d8dd9fd33420febede490abb49a07469f61d2a3ace66a95a\",\"dweb:/ipfs/QmVAWtEVj7K5AbvgJa9Dz22KiDq9eoptCjnVZqsTMtKXyd\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC721/IERC721Upgradeable.sol\":{\"keccak256\":\"0x2c0b89cef83f353c6f9488c013d8a5968587ffdd6dfc26aad53774214b97e229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a68e662c2a82412308b1feb24f3d61a44b3b8772f44cbd440446237313c3195\",\"dweb:/ipfs/QmfBuWUE2TQef9hghDzzuVkDskw3UGAyPgLmPifTNV7K6g\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ffbd627e6958983d288801acdedbf3491ee0ebf1a430338bce47c96481ce9e3\",\"dweb:/ipfs/QmUM1vpmNgBV34sYf946SthDJNGhwwqjoRggmj4TUUQmdB\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"src/integrations/IDelegationRegistry.sol\":{\"keccak256\":\"0x1d09c96620cb6253c701f5f085f5b3d720fed3998cf137ae473f5b46c7f08b00\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://2ccccee556054de055b6b98d477cb3f97a8492246bffb726a99cd2d5c98dbaca\",\"dweb:/ipfs/QmRwW9St3JwZC2o4g2YWv2H6xi7qknqJjqc9TBVBnzcGQd\"]},\"src/interfaces/IAddressProvider.sol\":{\"keccak256\":\"0x6730abfcd8770e3279dad6137bf619ab98ee8b049e6dd85d2fbe87ba6224fde8\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://9b7d1588eab025b049f858ab2f329be7fec220198d956b9b61bf0b9bddc5761a\",\"dweb:/ipfs/QmTaFkYSUfWmbpsyE2TKC1QvP6eTDggZ72ZWodBhydqt5X\"]},\"src/interfaces/IRedeemable.sol\":{\"keccak256\":\"0x31c4714398dee1b9e7b31dd9f74c19d2d9b9e9647756cc34b5c5d2ee1c7110c6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://288505b7d83d903156e9aa5b8383ed2e779104d8d27f9c45299f556e0e554ac0\",\"dweb:/ipfs/QmSms1HVzDWrneXp74CZqKj6HRuQejhkhAuxVqww14toRX\"]},\"src/protocol/libraries/helpers/Errors.sol\":{\"keccak256\":\"0x490e76871922e89a13ba0bb88977be18c143fa9d0cd9afb033744a3d81479c52\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://1c409d4d1e1689d8d8f3c3e361198d20f3b6476608c5316d8e2d91f52373e8e3\",\"dweb:/ipfs/QmRZaYpxqjmBpbxb51KqswKYPSeCsU3ejbmk5E3MrMxJaM\"]},\"src/protocol/libraries/types/DataTypes.sol\":{\"keccak256\":\"0x070f7865fe84ce4c9ebd86bbe24771607fbdb4e8777510b46cb5064e4d9b90a3\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://504fd0c937cc69cc0737c4ef5dcec477017ccbff609b45b210274fd7bf0792cf\",\"dweb:/ipfs/QmeW1TkAHib7XRBVmgMRTdmsa4Rg9HVToTMnifEE1C7mTi\"]},\"src/protocol/tokenization/ObligationReceipt.sol\":{\"keccak256\":\"0xba811b7cecc33f3345b942324b795ba5c066e74b32642e2d2a7a0b7fb92511e5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://9c91b8f31b7ecef26cb3028c10f8a00bbb92616c052a922fcc796cf0cf8b76c0\",\"dweb:/ipfs/QmQhikCUeyR1RVgCU4tVp4xet5v5rQRVoqWzy6v2H3ETct\"]},\"src/protocol/tokenization/base/Redeemable.sol\":{\"keccak256\":\"0xb49005bc57bdfb2e2e0f2c155dbdd3a6ff51067d40ee72c3c6c742bec465f413\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://790ae5927466f43419196c9255e44848c57678800003f92d3b28c8848c4533bf\",\"dweb:/ipfs/QmfAEBRJa42D41ziGmitjh8fVfpLG1CFe3dRNqq4EKbfWD\"]}},\"version\":1}",
  "metadata": {
    "compiler": {
      "version": "0.8.16+commit.07a7930e"
    },
    "language": "Solidity",
    "output": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "approved",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "Approval",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "operator",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "bool",
              "name": "approved",
              "type": "bool",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "ApprovalForAll",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "uint8",
              "name": "version",
              "type": "uint8",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "Initialized",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32",
              "indexed": true
            },
            {
              "internalType": "bytes32",
              "name": "previousAdminRole",
              "type": "bytes32",
              "indexed": true
            },
            {
              "internalType": "bytes32",
              "name": "newAdminRole",
              "type": "bytes32",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "RoleAdminChanged",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "account",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "sender",
              "type": "address",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "RoleGranted",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "account",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "sender",
              "type": "address",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "RoleRevoked",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "Transfer",
          "anonymous": false
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "DEFAULT_ADMIN_ROLE",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "approve"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "baseURI",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_tokenId",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "burn"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_tokenId",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "exists",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "getApproved",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_tokenId",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "getLoan",
          "outputs": [
            {
              "internalType": "struct DataTypes.TokenizedLoan",
              "name": "",
              "type": "tuple",
              "components": [
                {
                  "internalType": "address",
                  "name": "collateral",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                }
              ]
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "getRoleAdmin",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "grantRole"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "hasRole",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_addressProvider_",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "_isLiquidDelegate_",
              "type": "bool"
            },
            {
              "internalType": "string",
              "name": "_name",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "_symbol",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "_customBaseURI",
              "type": "string"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "initialize"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "operator",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "isApprovedForAll",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "loans",
          "outputs": [
            {
              "internalType": "address",
              "name": "collateral",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "id",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_user",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "_tokenizedId",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "_data",
              "type": "bytes"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "mint"
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "ownerOf",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "renounceRole"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "revokeRole"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "safeTransferFrom"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "safeTransferFrom"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "approved",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setApprovalForAll"
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "_customBaseURI",
              "type": "string"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setBaseURI"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "value",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setDelegate"
        },
        {
          "inputs": [
            {
              "internalType": "bytes4",
              "name": "_interfaceId",
              "type": "bytes4"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "supportsInterface",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "tokenURI",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "transferFrom"
        }
      ],
      "devdoc": {
        "kind": "dev",
        "methods": {
          "approve(address,uint256)": {
            "details": "See {IERC721-approve}."
          },
          "balanceOf(address)": {
            "details": "See {IERC721-balanceOf}."
          },
          "getApproved(uint256)": {
            "details": "See {IERC721-getApproved}."
          },
          "getRoleAdmin(bytes32)": {
            "details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."
          },
          "grantRole(bytes32,address)": {
            "details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."
          },
          "hasRole(bytes32,address)": {
            "details": "Returns `true` if `account` has been granted `role`."
          },
          "isApprovedForAll(address,address)": {
            "details": "See {IERC721-isApprovedForAll}."
          },
          "name()": {
            "details": "See {IERC721Metadata-name}."
          },
          "ownerOf(uint256)": {
            "details": "See {IERC721-ownerOf}."
          },
          "renounceRole(bytes32,address)": {
            "details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event."
          },
          "revokeRole(bytes32,address)": {
            "details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."
          },
          "safeTransferFrom(address,address,uint256)": {
            "details": "See {IERC721-safeTransferFrom}."
          },
          "safeTransferFrom(address,address,uint256,bytes)": {
            "details": "See {IERC721-safeTransferFrom}."
          },
          "setApprovalForAll(address,bool)": {
            "details": "See {IERC721-setApprovalForAll}."
          },
          "setDelegate(uint256,address,bool)": {
            "details": "must be holder of obligation receipt to control delegation rights of the underlying - delegation right transfered to new owner as per _beforeTokenTransfer",
            "params": {
              "to": "the target address for delegation rights",
              "tokenId": "the tokenId of the obligation receipt",
              "value": "true if giving and false if removing delegation rights"
            }
          },
          "symbol()": {
            "details": "See {IERC721Metadata-symbol}."
          },
          "tokenURI(uint256)": {
            "details": "See {IERC721Metadata-tokenURI}."
          },
          "transferFrom(address,address,uint256)": {
            "details": "See {IERC721-transferFrom}."
          }
        },
        "version": 1
      },
      "userdoc": {
        "kind": "user",
        "methods": {
          "supportsInterface(bytes4)": {
            "notice": "----------------------------------------------------------------------- Internal / Overrides -----------------------------------------------------------------------"
          }
        },
        "version": 1
      }
    },
    "settings": {
      "remappings": [
        ":@chainlink/=lib/chainlink/",
        ":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
        ":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
        ":chainlink/=lib/chainlink/integration-tests/contracts/ethereum/src/",
        ":ds-test/=lib/forge-std/lib/ds-test/src/",
        ":forge-std/=lib/forge-std/src/"
      ],
      "optimizer": {
        "enabled": true,
        "runs": 200
      },
      "metadata": {
        "bytecodeHash": "ipfs"
      },
      "compilationTarget": {
        "src/protocol/tokenization/ObligationReceipt.sol": "ObligationReceipt"
      },
      "libraries": {}
    },
    "sources": {
      "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol": {
        "keccak256": "0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a",
        "urls": [
          "bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626",
          "dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol": {
        "keccak256": "0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa",
        "urls": [
          "bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c",
          "dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol": {
        "keccak256": "0xe798cadb41e2da274913e4b3183a80f50fb057a42238fe8467e077268100ec27",
        "urls": [
          "bzz-raw://899f850f7df5a270bccfb765d70069959ca1c20d3a7381c1c3bda8a3ffee1935",
          "dweb:/ipfs/QmVdnAqwyX2L3nX2HDA5WKGtVBFyH1nKE9A1k7fZnPBkhP"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC721/ERC721Upgradeable.sol": {
        "keccak256": "0x2a6a0b9fd2d316dcb4141159a9d13be92654066d6c0ae92757ed908ecdfecff0",
        "urls": [
          "bzz-raw://c05d9be7ee043009eb9f2089b452efc0961345531fc63354a249d7337c69f3bb",
          "dweb:/ipfs/QmTXhzgaYrh6og76BP85i6exNFAv5NYw64uVWyworNogyG"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC721/IERC721ReceiverUpgradeable.sol": {
        "keccak256": "0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5",
        "urls": [
          "bzz-raw://8bc3c6a456dba727d8dd9fd33420febede490abb49a07469f61d2a3ace66a95a",
          "dweb:/ipfs/QmVAWtEVj7K5AbvgJa9Dz22KiDq9eoptCjnVZqsTMtKXyd"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC721/IERC721Upgradeable.sol": {
        "keccak256": "0x2c0b89cef83f353c6f9488c013d8a5968587ffdd6dfc26aad53774214b97e229",
        "urls": [
          "bzz-raw://4a68e662c2a82412308b1feb24f3d61a44b3b8772f44cbd440446237313c3195",
          "dweb:/ipfs/QmfBuWUE2TQef9hghDzzuVkDskw3UGAyPgLmPifTNV7K6g"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC721/extensions/IERC721MetadataUpgradeable.sol": {
        "keccak256": "0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70",
        "urls": [
          "bzz-raw://4ffbd627e6958983d288801acdedbf3491ee0ebf1a430338bce47c96481ce9e3",
          "dweb:/ipfs/QmUM1vpmNgBV34sYf946SthDJNGhwwqjoRggmj4TUUQmdB"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol": {
        "keccak256": "0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183",
        "urls": [
          "bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06",
          "dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol": {
        "keccak256": "0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149",
        "urls": [
          "bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c",
          "dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol": {
        "keccak256": "0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da",
        "urls": [
          "bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8",
          "dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol": {
        "keccak256": "0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a",
        "urls": [
          "bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7",
          "dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol": {
        "keccak256": "0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09",
        "urls": [
          "bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758",
          "dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol": {
        "keccak256": "0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a",
        "urls": [
          "bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4",
          "dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt"
        ],
        "license": "MIT"
      },
      "src/integrations/IDelegationRegistry.sol": {
        "keccak256": "0x1d09c96620cb6253c701f5f085f5b3d720fed3998cf137ae473f5b46c7f08b00",
        "urls": [
          "bzz-raw://2ccccee556054de055b6b98d477cb3f97a8492246bffb726a99cd2d5c98dbaca",
          "dweb:/ipfs/QmRwW9St3JwZC2o4g2YWv2H6xi7qknqJjqc9TBVBnzcGQd"
        ],
        "license": "CC0-1.0"
      },
      "src/interfaces/IAddressProvider.sol": {
        "keccak256": "0x6730abfcd8770e3279dad6137bf619ab98ee8b049e6dd85d2fbe87ba6224fde8",
        "urls": [
          "bzz-raw://9b7d1588eab025b049f858ab2f329be7fec220198d956b9b61bf0b9bddc5761a",
          "dweb:/ipfs/QmTaFkYSUfWmbpsyE2TKC1QvP6eTDggZ72ZWodBhydqt5X"
        ],
        "license": "AGPL-3.0"
      },
      "src/interfaces/IRedeemable.sol": {
        "keccak256": "0x31c4714398dee1b9e7b31dd9f74c19d2d9b9e9647756cc34b5c5d2ee1c7110c6",
        "urls": [
          "bzz-raw://288505b7d83d903156e9aa5b8383ed2e779104d8d27f9c45299f556e0e554ac0",
          "dweb:/ipfs/QmSms1HVzDWrneXp74CZqKj6HRuQejhkhAuxVqww14toRX"
        ],
        "license": "BUSL-1.1"
      },
      "src/protocol/libraries/helpers/Errors.sol": {
        "keccak256": "0x490e76871922e89a13ba0bb88977be18c143fa9d0cd9afb033744a3d81479c52",
        "urls": [
          "bzz-raw://1c409d4d1e1689d8d8f3c3e361198d20f3b6476608c5316d8e2d91f52373e8e3",
          "dweb:/ipfs/QmRZaYpxqjmBpbxb51KqswKYPSeCsU3ejbmk5E3MrMxJaM"
        ],
        "license": "AGPL-3.0"
      },
      "src/protocol/libraries/types/DataTypes.sol": {
        "keccak256": "0x070f7865fe84ce4c9ebd86bbe24771607fbdb4e8777510b46cb5064e4d9b90a3",
        "urls": [
          "bzz-raw://504fd0c937cc69cc0737c4ef5dcec477017ccbff609b45b210274fd7bf0792cf",
          "dweb:/ipfs/QmeW1TkAHib7XRBVmgMRTdmsa4Rg9HVToTMnifEE1C7mTi"
        ],
        "license": "AGPL-3.0"
      },
      "src/protocol/tokenization/ObligationReceipt.sol": {
        "keccak256": "0xba811b7cecc33f3345b942324b795ba5c066e74b32642e2d2a7a0b7fb92511e5",
        "urls": [
          "bzz-raw://9c91b8f31b7ecef26cb3028c10f8a00bbb92616c052a922fcc796cf0cf8b76c0",
          "dweb:/ipfs/QmQhikCUeyR1RVgCU4tVp4xet5v5rQRVoqWzy6v2H3ETct"
        ],
        "license": "BUSL-1.1"
      },
      "src/protocol/tokenization/base/Redeemable.sol": {
        "keccak256": "0xb49005bc57bdfb2e2e0f2c155dbdd3a6ff51067d40ee72c3c6c742bec465f413",
        "urls": [
          "bzz-raw://790ae5927466f43419196c9255e44848c57678800003f92d3b28c8848c4533bf",
          "dweb:/ipfs/QmfAEBRJa42D41ziGmitjh8fVfpLG1CFe3dRNqq4EKbfWD"
        ],
        "license": "BUSL-1.1"
      }
    },
    "version": 1
  },
  "ast": {
    "absolutePath": "src/protocol/tokenization/ObligationReceipt.sol",
    "id": 70328,
    "exportedSymbols": {
      "IDelegationRegistry": [
        46025
      ],
      "ObligationReceipt": [
        70327
      ],
      "Redeemable": [
        72560
      ]
    },
    "nodeType": "SourceUnit",
    "src": "37:1489:159",
    "nodes": [
      {
        "id": 70242,
        "nodeType": "PragmaDirective",
        "src": "37:23:159",
        "nodes": [],
        "literals": [
          "solidity",
          "0.8",
          ".16"
        ]
      },
      {
        "id": 70244,
        "nodeType": "ImportDirective",
        "src": "62:81:159",
        "nodes": [],
        "absolutePath": "src/integrations/IDelegationRegistry.sol",
        "file": "../../integrations/IDelegationRegistry.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 70328,
        "sourceUnit": 46026,
        "symbolAliases": [
          {
            "foreign": {
              "id": 70243,
              "name": "IDelegationRegistry",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 46025,
              "src": "71:19:159",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 70246,
        "nodeType": "ImportDirective",
        "src": "145:51:159",
        "nodes": [],
        "absolutePath": "src/protocol/tokenization/base/Redeemable.sol",
        "file": "./base/Redeemable.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 70328,
        "sourceUnit": 72561,
        "symbolAliases": [
          {
            "foreign": {
              "id": 70245,
              "name": "Redeemable",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 72560,
              "src": "154:10:159",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 70327,
        "nodeType": "ContractDefinition",
        "src": "198:1328:159",
        "nodes": [
          {
            "id": 70287,
            "nodeType": "FunctionDefinition",
            "src": "627:354:159",
            "nodes": [],
            "body": {
              "id": 70286,
              "nodeType": "Block",
              "src": "698:283:159",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 70264,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 70259,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "716:3:159",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 70260,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "720:6:159",
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "716:10:159",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [
                            {
                              "id": 70262,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 70251,
                              "src": "738:7:159",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 70261,
                            "name": "ownerOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27697,
                            "src": "730:7:159",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (uint256) view returns (address)"
                            }
                          },
                          "id": 70263,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "730:16:159",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "716:30:159",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "652f6d7573742d62652d6f776e6572",
                        "id": 70265,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "748:17:159",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_fc0ffd4801b2cfa7ffa7968e4a25f9efe53a75d2f2eb0cb8807b39f24737faaf",
                          "typeString": "literal_string \"e/must-be-owner\""
                        },
                        "value": "e/must-be-owner"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_fc0ffd4801b2cfa7ffa7968e4a25f9efe53a75d2f2eb0cb8807b39f24737faaf",
                          "typeString": "literal_string \"e/must-be-owner\""
                        }
                      ],
                      "id": 70258,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "708:7:159",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 70266,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "708:58:159",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 70267,
                  "nodeType": "ExpressionStatement",
                  "src": "708:58:159"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 70274,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70253,
                        "src": "868:2:159",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "expression": {
                          "baseExpression": {
                            "id": 70275,
                            "name": "loans",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 72314,
                            "src": "884:5:159",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenizedLoan_$65024_storage_$",
                              "typeString": "mapping(uint256 => struct DataTypes.TokenizedLoan storage ref)"
                            }
                          },
                          "id": 70277,
                          "indexExpression": {
                            "id": 70276,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 70251,
                            "src": "890:7:159",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "884:14:159",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_TokenizedLoan_$65024_storage",
                            "typeString": "struct DataTypes.TokenizedLoan storage ref"
                          }
                        },
                        "id": 70278,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "899:10:159",
                        "memberName": "collateral",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 65019,
                        "src": "884:25:159",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "expression": {
                          "baseExpression": {
                            "id": 70279,
                            "name": "loans",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 72314,
                            "src": "923:5:159",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenizedLoan_$65024_storage_$",
                              "typeString": "mapping(uint256 => struct DataTypes.TokenizedLoan storage ref)"
                            }
                          },
                          "id": 70281,
                          "indexExpression": {
                            "id": 70280,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 70251,
                            "src": "929:7:159",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "923:14:159",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_TokenizedLoan_$65024_storage",
                            "typeString": "struct DataTypes.TokenizedLoan storage ref"
                          }
                        },
                        "id": 70282,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "938:7:159",
                        "memberName": "tokenId",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 65021,
                        "src": "923:22:159",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 70283,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70255,
                        "src": "959:5:159",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 70269,
                                "name": "_addressProvider",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 72305,
                                "src": "796:16:159",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAddressProvider_$46447",
                                  "typeString": "contract IAddressProvider"
                                }
                              },
                              "id": 70270,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "813:21:159",
                              "memberName": "getDelegationRegistry",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 46401,
                              "src": "796:38:159",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                "typeString": "function () view external returns (address)"
                              }
                            },
                            "id": 70271,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "796:40:159",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 70268,
                          "name": "IDelegationRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 46025,
                          "src": "776:19:159",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IDelegationRegistry_$46025_$",
                            "typeString": "type(contract IDelegationRegistry)"
                          }
                        },
                        "id": 70272,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "776:61:159",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IDelegationRegistry_$46025",
                          "typeString": "contract IDelegationRegistry"
                        }
                      },
                      "id": 70273,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "838:16:159",
                      "memberName": "delegateForToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 45909,
                      "src": "776:78:159",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$",
                        "typeString": "function (address,address,uint256,bool) external"
                      }
                    },
                    "id": 70284,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "776:198:159",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 70285,
                  "nodeType": "ExpressionStatement",
                  "src": "776:198:159"
                }
              ]
            },
            "documentation": {
              "id": 70249,
              "nodeType": "StructuredDocumentation",
              "src": "250:372:159",
              "text": " @dev must be holder of obligation receipt to control delegation rights of the underlying\n - delegation right transfered to new owner as per _beforeTokenTransfer\n @param tokenId the tokenId of the obligation receipt\n @param to the target address for delegation rights\n @param value true if giving and false if removing delegation rights"
            },
            "functionSelector": "90bd6748",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setDelegate",
            "nameLocation": "636:11:159",
            "parameters": {
              "id": 70256,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 70251,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "656:7:159",
                  "nodeType": "VariableDeclaration",
                  "scope": 70287,
                  "src": "648:15:159",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 70250,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "648:7:159",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 70253,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "673:2:159",
                  "nodeType": "VariableDeclaration",
                  "scope": 70287,
                  "src": "665:10:159",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 70252,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "665:7:159",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 70255,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "682:5:159",
                  "nodeType": "VariableDeclaration",
                  "scope": 70287,
                  "src": "677:10:159",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 70254,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "677:4:159",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "647:41:159"
            },
            "returnParameters": {
              "id": 70257,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "698:0:159"
            },
            "scope": 70327,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 70326,
            "nodeType": "FunctionDefinition",
            "src": "1092:432:159",
            "nodes": [],
            "body": {
              "id": 70325,
              "nodeType": "Block",
              "src": "1204:320:159",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 70297,
                    "name": "from",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 70290,
                    "src": "1214:4:159",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 70298,
                  "nodeType": "ExpressionStatement",
                  "src": "1214:4:159"
                },
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 70300,
                                "name": "_addressProvider",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 72305,
                                "src": "1248:16:159",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAddressProvider_$46447",
                                  "typeString": "contract IAddressProvider"
                                }
                              },
                              "id": 70301,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1265:21:159",
                              "memberName": "getDelegationRegistry",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 46401,
                              "src": "1248:38:159",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                "typeString": "function () view external returns (address)"
                              }
                            },
                            "id": 70302,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1248:40:159",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 70299,
                          "name": "IDelegationRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 46025,
                          "src": "1228:19:159",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IDelegationRegistry_$46025_$",
                            "typeString": "type(contract IDelegationRegistry)"
                          }
                        },
                        "id": 70303,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1228:61:159",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IDelegationRegistry_$46025",
                          "typeString": "contract IDelegationRegistry"
                        }
                      },
                      "id": 70304,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "1290:18:159",
                      "memberName": "revokeAllDelegates",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 45913,
                      "src": "1228:80:159",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                        "typeString": "function () external"
                      }
                    },
                    "id": 70305,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1228:82:159",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 70306,
                  "nodeType": "ExpressionStatement",
                  "src": "1228:82:159"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 70313,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 70292,
                        "src": "1412:2:159",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "expression": {
                          "baseExpression": {
                            "id": 70314,
                            "name": "loans",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 72314,
                            "src": "1428:5:159",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenizedLoan_$65024_storage_$",
                              "typeString": "mapping(uint256 => struct DataTypes.TokenizedLoan storage ref)"
                            }
                          },
                          "id": 70316,
                          "indexExpression": {
                            "id": 70315,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 70294,
                            "src": "1434:7:159",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1428:14:159",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_TokenizedLoan_$65024_storage",
                            "typeString": "struct DataTypes.TokenizedLoan storage ref"
                          }
                        },
                        "id": 70317,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "1443:10:159",
                        "memberName": "collateral",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 65019,
                        "src": "1428:25:159",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "expression": {
                          "baseExpression": {
                            "id": 70318,
                            "name": "loans",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 72314,
                            "src": "1467:5:159",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenizedLoan_$65024_storage_$",
                              "typeString": "mapping(uint256 => struct DataTypes.TokenizedLoan storage ref)"
                            }
                          },
                          "id": 70320,
                          "indexExpression": {
                            "id": 70319,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 70294,
                            "src": "1473:7:159",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1467:14:159",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_TokenizedLoan_$65024_storage",
                            "typeString": "struct DataTypes.TokenizedLoan storage ref"
                          }
                        },
                        "id": 70321,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "1482:7:159",
                        "memberName": "tokenId",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 65021,
                        "src": "1467:22:159",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "hexValue": "74727565",
                        "id": 70322,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1503:4:159",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 70308,
                                "name": "_addressProvider",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 72305,
                                "src": "1340:16:159",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAddressProvider_$46447",
                                  "typeString": "contract IAddressProvider"
                                }
                              },
                              "id": 70309,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1357:21:159",
                              "memberName": "getDelegationRegistry",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 46401,
                              "src": "1340:38:159",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                "typeString": "function () view external returns (address)"
                              }
                            },
                            "id": 70310,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1340:40:159",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 70307,
                          "name": "IDelegationRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 46025,
                          "src": "1320:19:159",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IDelegationRegistry_$46025_$",
                            "typeString": "type(contract IDelegationRegistry)"
                          }
                        },
                        "id": 70311,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1320:61:159",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IDelegationRegistry_$46025",
                          "typeString": "contract IDelegationRegistry"
                        }
                      },
                      "id": 70312,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "1382:16:159",
                      "memberName": "delegateForToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 45909,
                      "src": "1320:78:159",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$",
                        "typeString": "function (address,address,uint256,bool) external"
                      }
                    },
                    "id": 70323,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1320:197:159",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 70324,
                  "nodeType": "ExpressionStatement",
                  "src": "1320:197:159"
                }
              ]
            },
            "documentation": {
              "id": 70288,
              "nodeType": "StructuredDocumentation",
              "src": "991:96:159",
              "text": " @dev revokes all underlying delegation rights and grants these to the new owner"
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_beforeTokenTransfer",
            "nameLocation": "1101:20:159",
            "parameters": {
              "id": 70295,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 70290,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "1139:4:159",
                  "nodeType": "VariableDeclaration",
                  "scope": 70326,
                  "src": "1131:12:159",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 70289,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1131:7:159",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 70292,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "1161:2:159",
                  "nodeType": "VariableDeclaration",
                  "scope": 70326,
                  "src": "1153:10:159",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 70291,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1153:7:159",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 70294,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "1181:7:159",
                  "nodeType": "VariableDeclaration",
                  "scope": 70326,
                  "src": "1173:15:159",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 70293,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1173:7:159",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1121:73:159"
            },
            "returnParameters": {
              "id": 70296,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1204:0:159"
            },
            "scope": 70327,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 70247,
              "name": "Redeemable",
              "nameLocations": [
                "233:10:159"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 72560,
              "src": "233:10:159"
            },
            "id": 70248,
            "nodeType": "InheritanceSpecifier",
            "src": "233:10:159"
          }
        ],
        "canonicalName": "ObligationReceipt",
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "linearizedBaseContracts": [
          70327,
          72560,
          25894,
          28501,
          28662,
          28635,
          29281,
          29293,
          25967,
          28988,
          26136,
          48532
        ],
        "name": "ObligationReceipt",
        "nameLocation": "207:17:159",
        "scope": 70328,
        "usedErrors": []
      }
    ],
    "license": "BUSL-1.1"
  },
  "id": 159
}
Redeemable ABI
{
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "approved",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "ApprovalForAll",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "previousAdminRole",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "newAdminRole",
          "type": "bytes32"
        }
      ],
      "name": "RoleAdminChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleGranted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleRevoked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DEFAULT_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "baseURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "burn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "claim",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "exists",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getApproved",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleAdmin",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "grantRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasRole",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_addressProvider_",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "_isLiquidDelegate_",
          "type": "bool"
        },
        {
          "internalType": "string",
          "name": "_name",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "_symbol",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "_customBaseURI",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "_minPercentageIncrease_",
          "type": "uint256"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "isApprovedForAll",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "loans",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "lockBid",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "lockBids",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "lockTokens",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_tokenizedId",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "mint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ownerOf",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "renounceRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "revokeRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "setApprovalForAll",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_customBaseURI",
          "type": "string"
        }
      ],
      "name": "setBaseURI",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "_interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "tokenURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "transferLockBid",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": {
    "object": "0x608060405234801561001057600080fd5b50612f5c806100206000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80636352211e1161010f578063a217fddf116100a2578063c87b56dd11610071578063c87b56dd14610429578063d547741f1461043c578063e1ec3c681461044f578063e985e9c51461046f57600080fd5b8063a217fddf146103db578063a22cb465146103e3578063b88d4fde146103f6578063c5f68b8b1461040957600080fd5b806391d14854116100de57806391d148541461039a57806392944809146103ad57806394d008ef146103c057806395d89b41146103d357600080fd5b80636352211e146103435780636c0360eb146103565780636e27d8891461035e57806370a082311461038757600080fd5b8063248a9ca31161018757806342966c681161015657806342966c681461030a5780634e71d92d146101fd5780634f558e791461031d57806355f804b31461033057600080fd5b8063248a9ca3146102a05780632f2ff15d146102d157806336568abe146102e457806342842e0e146102f757600080fd5b806306fdde03116101c357806306fdde031461023a578063081812fc1461024f578063095ea7b31461027a57806323b872dd1461028d57600080fd5b806301ac88af146101ea57806301ffc9a7146101ff57806303ac5d7b14610227575b600080fd5b6101fd6101f836600461269f565b6104ab565b005b61021261020d366004612769565b6105fe565b60405190151581526020015b60405180910390f35b6101fd610235366004612786565b61060f565b61024261093f565b60405161021e919061281c565b61026261025d36600461282f565b6109d1565b6040516001600160a01b03909116815260200161021e565b6101fd610288366004612848565b6109f8565b6101fd61029b366004612874565b610b0d565b6102c36102ae36600461282f565b60009081526065602052604090206001015490565b60405190815260200161021e565b6101fd6102df3660046128b5565b610b3e565b6101fd6102f23660046128b5565b610b63565b6101fd610305366004612874565b610be1565b6101fd61031836600461282f565b610bfc565b61021261032b36600461282f565b610dbb565b6101fd61033e3660046128e5565b610dda565b61026261035136600461282f565b610eac565b610242610f0c565b61026261036c36600461282f565b60ce602052600090815260409020546001600160a01b031681565b6102c361039536600461291a565b610f9a565b6102126103a83660046128b5565b611020565b6101fd6103bb366004612786565b61104b565b6101fd6103ce366004612937565b61149a565b6102426116ea565b6102c3600081565b6101fd6103f1366004612990565b6116f9565b6101fd6104043660046129c5565b611704565b6102c361041736600461282f565b60cd6020526000908152604090205481565b61024261043736600461282f565b61173c565b6101fd61044a3660046128b5565b6117a3565b6102c361045d36600461282f565b60cc6020526000908152604090205481565b61021261047d366004612a31565b6001600160a01b039182166000908152609c6020908152604080832093909416825291909152205460ff1690565b600054610100900460ff16158080156104cb5750600054600160ff909116105b806104e55750303b1580156104e5575060005460ff166001145b61054d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610570576000805461ff0019166101001790555b61057a85856117c8565b610583836117f9565b60c98054871515600160a01b026001600160a81b03199091166001600160a01b038a161717905560cb82905580156105f5576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b600061060982611847565b92915050565b60c960009054906101000a90046001600160a01b03166001600160a01b0316630261bf8b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610662573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106869190612a5f565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b815250906106d45760405162461bcd60e51b8152600401610544919061281c565b5060c95460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b9160048083019260209291908290030181865afa15801561071f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107439190612a5f565b9050600060c960009054906101000a90046001600160a01b03166001600160a01b03166347f872f16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561079a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107be9190612a5f565b9050816001600160a01b03166107d384610eac565b6001600160a01b03161461081d5760405162461bcd60e51b8152602060048201526011602482015270194bd85b1c9958591e4b5b1bd8dad09a59607a1b6044820152606401610544565b60405163368fa33960e21b81526001600160a01b0382169063da3e8ce49061084f9088908a9030908a90600401612a7c565b600060405180830381600087803b15801561086957600080fd5b505af115801561087d573d6000803e3d6000fd5b5050505061090260c960009054906101000a90046001600160a01b03166001600160a01b0316630261bf8b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fb9190612a5f565b8785611887565b5050600090815260cd602090815260408083209390935560ce90522080546001600160a01b0319166001600160a01b039290921691909117905550565b60606097805461094e90612aa6565b80601f016020809104026020016040519081016040528092919081815260200182805461097a90612aa6565b80156109c75780601f1061099c576101008083540402835291602001916109c7565b820191906000526020600020905b8154815290600101906020018083116109aa57829003601f168201915b5050505050905090565b60006109dc826119f8565b506000908152609b60205260409020546001600160a01b031690565b6000610a0382610eac565b9050806001600160a01b0316836001600160a01b031603610a705760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610544565b336001600160a01b0382161480610a8c5750610a8c813361047d565b610afe5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610544565b610b088383611a57565b505050565b610b173382611ac5565b610b335760405162461bcd60e51b815260040161054490612ae0565b610b08838383611887565b600082815260656020526040902060010154610b5981611b44565b610b088383611b4e565b6001600160a01b0381163314610bd35760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610544565b610bdd8282611bd4565b5050565b610b0883838360405180602001604052806000815250611704565b60c95460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b9160048083019260209291908290030181865afa158015610c46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6a9190612a5f565b600083815260cc60205260408120559050610c8482611c3b565b600082815260cd602052604090205415610bdd5760c960009054906101000a90046001600160a01b03166001600160a01b03166347f872f16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ceb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0f9190612a5f565b600083815260ce602090815260408083205460cd9092529182902054915163368fa33960e21b81526001600160a01b039384169363da3e8ce493610d5d939091169130918791600401612a7c565b600060405180830381600087803b158015610d7757600080fd5b505af1158015610d8b573d6000803e3d6000fd5b5050506000928352505060cd6020908152604080832083905560ce909152902080546001600160a01b0319169055565b6000818152609960205260408120546001600160a01b03161515610609565b60c960009054906101000a90046001600160a01b03166001600160a01b0316639b7ae5ec6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e519190612a5f565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203430360ec1b81525090610e9f5760405162461bcd60e51b8152600401610544919061281c565b50610ea9816117f9565b50565b6000818152609960205260408120546001600160a01b0316806106095760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610544565b60ca8054610f1990612aa6565b80601f0160208091040260200160405190810160405280929190818152602001828054610f4590612aa6565b8015610f925780601f10610f6757610100808354040283529160200191610f92565b820191906000526020600020905b815481529060010190602001808311610f7557829003601f168201915b505050505081565b60006001600160a01b0382166110045760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610544565b506001600160a01b03166000908152609a602052604090205490565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60c960009054906101000a90046001600160a01b03166001600160a01b0316630261bf8b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561109e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c29190612a5f565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b815250906111105760405162461bcd60e51b8152600401610544919061281c565b5060c95460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b9160048083019260209291908290030181865afa15801561115b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061117f9190612a5f565b600083815260cd602052604081205460cb5492935090916111ac91906111a790612710612b43565b611cde565b9050816001600160a01b03166111c184610eac565b6001600160a01b0316036112075760405162461bcd60e51b815260206004820152600d60248201526c194bdb9bdd0b5b1bd8dad09a59609a1b6044820152606401610544565b80841161124f5760405162461bcd60e51b8152602060048201526016602482015275194bda5b9cdd59999a58da595b9d0b5b1bd8dad09a5960521b6044820152606401610544565b600083815260ce60205260409020546001600160a01b038681169116146112b05760405162461bcd60e51b81526020600482015260156024820152743297b4b731b7b93932b1ba16b637b1b5aa37b5b2b760591b6044820152606401610544565b600083815260cd6020526040812054906112c985610eac565b905060c960009054906101000a90046001600160a01b03166001600160a01b03166347f872f16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561131e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113429190612a5f565b6001600160a01b031663da3e8ce4888a308a6040518563ffffffff1660e01b81526004016113739493929190612a7c565b600060405180830381600087803b15801561138d57600080fd5b505af11580156113a1573d6000803e3d6000fd5b505050506113b0818987611887565b600085815260cd602090815260409182902088905560c95482516347f872f160e01b815292516001600160a01b03909116926347f872f19260048083019391928290030181865afa158015611409573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142d9190612a5f565b6001600160a01b031663da3e8ce4883084866040518563ffffffff1660e01b815260040161145e9493929190612a7c565b600060405180830381600087803b15801561147857600080fd5b505af115801561148c573d6000803e3d6000fd5b505050505050505050505050565b60c960009054906101000a90046001600160a01b03166001600160a01b0316630261bf8b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115119190612a5f565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b8152509061155f5760405162461bcd60e51b8152600401610544919061281c565b5060008151116115a95760405162461bcd60e51b8152602060048201526015602482015274194bd9185d184b5b5a5cdcda5b99cb5b1bd85b9259605a1b6044820152606401610544565b6000806000838060200190518101906115c29190612b56565b600088815260cc60205260409020819055919450925090506115e5868686611d86565b60c954600160a01b900460ff16156116e25760c960009054906101000a90046001600160a01b03166001600160a01b03166357d600a16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561164a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166e9190612a5f565b60405163537a5c3d60e01b81526001600160a01b03888116600483015285811660248301526044820185905260016064830152919091169063537a5c3d90608401600060405180830381600087803b1580156116c957600080fd5b505af11580156116dd573d6000803e3d6000fd5b505050505b505050505050565b60606098805461094e90612aa6565b610bdd338383611db9565b61170e3383611ac5565b61172a5760405162461bcd60e51b815260040161054490612ae0565b61173684848484611e87565b50505050565b6060611747826119f8565b6000611751611eba565b90506000815111611771576040518060200160405280600081525061179c565b8061177b84611ec9565b60405160200161178c929190612b8d565b6040516020818303038152906040525b9392505050565b6000828152606560205260409020600101546117be81611b44565b610b088383611bd4565b600054610100900460ff166117ef5760405162461bcd60e51b815260040161054490612bbc565b610bdd8282611f5c565b6000815111611817576040518060200160405280600081525061183a565b804660405160200161182a929190612c07565b6040516020818303038152906040525b60ca90610bdd9082612c7f565b60006001600160e01b031982166380ac58cd60e01b148061187857506001600160e01b03198216635b5e139f60e01b145b80610609575061060982611f9c565b826001600160a01b031661189a82610eac565b6001600160a01b0316146118c05760405162461bcd60e51b815260040161054490612d3f565b6001600160a01b0382166119225760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610544565b61192f8383836001611fd1565b826001600160a01b031661194282610eac565b6001600160a01b0316146119685760405162461bcd60e51b815260040161054490612d3f565b6000818152609b6020908152604080832080546001600160a01b03199081169091556001600160a01b03878116808652609a8552838620805460001901905590871680865283862080546001019055868652609990945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000818152609960205260409020546001600160a01b0316610ea95760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610544565b6000818152609b6020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611a8c82610eac565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611ad183610eac565b9050806001600160a01b0316846001600160a01b03161480611b1857506001600160a01b038082166000908152609c602090815260408083209388168352929052205460ff165b80611b3c5750836001600160a01b0316611b31846109d1565b6001600160a01b0316145b949350505050565b610ea98133612059565b611b588282611020565b610bdd5760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611b903390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b611bde8282611020565b15610bdd5760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000611c4682610eac565b9050611c56816000846001611fd1565b611c5f82610eac565b6000838152609b6020908152604080832080546001600160a01b03199081169091556001600160a01b038516808552609a845282852080546000190190558785526099909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6000821580611ceb575081155b15611cf857506000610609565b81611d066002612710612d84565b611d1290600019612da6565b611d1c9190612d84565b8311156040518060400160405280600381526020016203230360ec1b81525090611d595760405162461bcd60e51b8152600401610544919061281c565b50612710611d68600282612d84565b611d728486612db9565b611d7c9190612b43565b61179c9190612d84565b611d9083836120b2565b611d9d600084848461224b565b610b085760405162461bcd60e51b815260040161054490612dd8565b816001600160a01b0316836001600160a01b031603611e1a5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610544565b6001600160a01b038381166000818152609c6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611e92848484611887565b611e9e8484848461224b565b6117365760405162461bcd60e51b815260040161054490612dd8565b606060ca805461094e90612aa6565b60606000611ed68361234c565b600101905060008167ffffffffffffffff811115611ef657611ef66125fc565b6040519080825280601f01601f191660200182016040528015611f20576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611f2a57509392505050565b600054610100900460ff16611f835760405162461bcd60e51b815260040161054490612bbc565b6097611f8f8382612c7f565b506098610b088282612c7f565b60006001600160e01b03198216637965db0b60e01b148061060957506301ffc9a760e01b6001600160e01b0319831614610609565b6001811115611736576001600160a01b03841615612017576001600160a01b0384166000908152609a602052604081208054839290612011908490612da6565b90915550505b6001600160a01b03831615611736576001600160a01b0383166000908152609a60205260408120805483929061204e908490612b43565b909155505050505050565b6120638282611020565b610bdd5761207081612424565b61207b836020612436565b60405160200161208c929190612e2a565b60408051601f198184030181529082905262461bcd60e51b82526105449160040161281c565b6001600160a01b0382166121085760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610544565b6000818152609960205260409020546001600160a01b03161561216d5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610544565b61217b600083836001611fd1565b6000818152609960205260409020546001600160a01b0316156121e05760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610544565b6001600160a01b0382166000818152609a6020908152604080832080546001019055848352609990915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b1561234157604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061228f903390899088908890600401612e9f565b6020604051808303816000875af19250505080156122ca575060408051601f3d908101601f191682019092526122c791810190612edc565b60015b612327573d8080156122f8576040519150601f19603f3d011682016040523d82523d6000602084013e6122fd565b606091505b50805160000361231f5760405162461bcd60e51b815260040161054490612dd8565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611b3c565b506001949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b831061238b5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef810000000083106123b7576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106123d557662386f26fc10000830492506010015b6305f5e10083106123ed576305f5e100830492506008015b612710831061240157612710830492506004015b60648310612413576064830492506002015b600a83106106095760010192915050565b60606106096001600160a01b03831660145b60606000612445836002612db9565b612450906002612b43565b67ffffffffffffffff811115612468576124686125fc565b6040519080825280601f01601f191660200182016040528015612492576020820181803683370190505b509050600360fc1b816000815181106124ad576124ad612ef9565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106124dc576124dc612ef9565b60200101906001600160f81b031916908160001a9053506000612500846002612db9565b61250b906001612b43565b90505b6001811115612583576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061253f5761253f612ef9565b1a60f81b82828151811061255557612555612ef9565b60200101906001600160f81b031916908160001a90535060049490941c9361257c81612f0f565b905061250e565b50831561179c5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610544565b6001600160a01b0381168114610ea957600080fd5b803580151581146125f757600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261262357600080fd5b813567ffffffffffffffff8082111561263e5761263e6125fc565b604051601f8301601f19908116603f01168101908282118183101715612666576126666125fc565b8160405283815286602085880101111561267f57600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060008060008060c087890312156126b857600080fd5b86356126c3816125d2565b95506126d1602088016125e7565b9450604087013567ffffffffffffffff808211156126ee57600080fd5b6126fa8a838b01612612565b9550606089013591508082111561271057600080fd5b61271c8a838b01612612565b9450608089013591508082111561273257600080fd5b5061273f89828a01612612565b92505060a087013590509295509295509295565b6001600160e01b031981168114610ea957600080fd5b60006020828403121561277b57600080fd5b813561179c81612753565b6000806000806080858703121561279c57600080fd5b84356127a7816125d2565b935060208501356127b7816125d2565b93969395505050506040820135916060013590565b60005b838110156127e75781810151838201526020016127cf565b50506000910152565b600081518084526128088160208601602086016127cc565b601f01601f19169290920160200192915050565b60208152600061179c60208301846127f0565b60006020828403121561284157600080fd5b5035919050565b6000806040838503121561285b57600080fd5b8235612866816125d2565b946020939093013593505050565b60008060006060848603121561288957600080fd5b8335612894816125d2565b925060208401356128a4816125d2565b929592945050506040919091013590565b600080604083850312156128c857600080fd5b8235915060208301356128da816125d2565b809150509250929050565b6000602082840312156128f757600080fd5b813567ffffffffffffffff81111561290e57600080fd5b611b3c84828501612612565b60006020828403121561292c57600080fd5b813561179c816125d2565b60008060006060848603121561294c57600080fd5b8335612957816125d2565b925060208401359150604084013567ffffffffffffffff81111561297a57600080fd5b61298686828701612612565b9150509250925092565b600080604083850312156129a357600080fd5b82356129ae816125d2565b91506129bc602084016125e7565b90509250929050565b600080600080608085870312156129db57600080fd5b84356129e6816125d2565b935060208501356129f6816125d2565b925060408501359150606085013567ffffffffffffffff811115612a1957600080fd5b612a2587828801612612565b91505092959194509250565b60008060408385031215612a4457600080fd5b8235612a4f816125d2565b915060208301356128da816125d2565b600060208284031215612a7157600080fd5b815161179c816125d2565b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b600181811c90821680612aba57607f821691505b602082108103612ada57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561060957610609612b2d565b600080600060608486031215612b6b57600080fd5b8351612b76816125d2565b602085015160409095015190969495509392505050565b60008351612b9f8184602088016127cc565b835190830190612bb38183602088016127cc565b01949350505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008351612c198184602088016127cc565b602f60f81b92018281526001810193909352506021820152602201919050565b601f821115610b0857600081815260208120601f850160051c81016020861015612c605750805b601f850160051c820191505b818110156116e257828155600101612c6c565b815167ffffffffffffffff811115612c9957612c996125fc565b612cad81612ca78454612aa6565b84612c39565b602080601f831160018114612ce25760008415612cca5750858301515b600019600386901b1c1916600185901b1785556116e2565b600085815260208120601f198616915b82811015612d1157888601518255948401946001909101908401612cf2565b5085821015612d2f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b600082612da157634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561060957610609612b2d565b6000816000190483118215151615612dd357612dd3612b2d565b500290565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612e628160178501602088016127cc565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612e938160288401602088016127cc565b01602801949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612ed2908301846127f0565b9695505050505050565b600060208284031215612eee57600080fd5b815161179c81612753565b634e487b7160e01b600052603260045260246000fd5b600081612f1e57612f1e612b2d565b50600019019056fea26469706673582212200320cdefc7c4db17422b5b58974a78e156ca7b0807a95f50ada92f5b036b750e64736f6c63430008100033",
    "sourceMap": "1058:5722:129:-:0;;;;;;;;;;;;;;;;;;;",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x608060405234801561001057600080fd5b50600436106101e55760003560e01c80636352211e1161010f578063a217fddf116100a2578063c87b56dd11610071578063c87b56dd14610429578063d547741f1461043c578063e1ec3c681461044f578063e985e9c51461046f57600080fd5b8063a217fddf146103db578063a22cb465146103e3578063b88d4fde146103f6578063c5f68b8b1461040957600080fd5b806391d14854116100de57806391d148541461039a57806392944809146103ad57806394d008ef146103c057806395d89b41146103d357600080fd5b80636352211e146103435780636c0360eb146103565780636e27d8891461035e57806370a082311461038757600080fd5b8063248a9ca31161018757806342966c681161015657806342966c681461030a5780634e71d92d146101fd5780634f558e791461031d57806355f804b31461033057600080fd5b8063248a9ca3146102a05780632f2ff15d146102d157806336568abe146102e457806342842e0e146102f757600080fd5b806306fdde03116101c357806306fdde031461023a578063081812fc1461024f578063095ea7b31461027a57806323b872dd1461028d57600080fd5b806301ac88af146101ea57806301ffc9a7146101ff57806303ac5d7b14610227575b600080fd5b6101fd6101f836600461269f565b6104ab565b005b61021261020d366004612769565b6105fe565b60405190151581526020015b60405180910390f35b6101fd610235366004612786565b61060f565b61024261093f565b60405161021e919061281c565b61026261025d36600461282f565b6109d1565b6040516001600160a01b03909116815260200161021e565b6101fd610288366004612848565b6109f8565b6101fd61029b366004612874565b610b0d565b6102c36102ae36600461282f565b60009081526065602052604090206001015490565b60405190815260200161021e565b6101fd6102df3660046128b5565b610b3e565b6101fd6102f23660046128b5565b610b63565b6101fd610305366004612874565b610be1565b6101fd61031836600461282f565b610bfc565b61021261032b36600461282f565b610dbb565b6101fd61033e3660046128e5565b610dda565b61026261035136600461282f565b610eac565b610242610f0c565b61026261036c36600461282f565b60ce602052600090815260409020546001600160a01b031681565b6102c361039536600461291a565b610f9a565b6102126103a83660046128b5565b611020565b6101fd6103bb366004612786565b61104b565b6101fd6103ce366004612937565b61149a565b6102426116ea565b6102c3600081565b6101fd6103f1366004612990565b6116f9565b6101fd6104043660046129c5565b611704565b6102c361041736600461282f565b60cd6020526000908152604090205481565b61024261043736600461282f565b61173c565b6101fd61044a3660046128b5565b6117a3565b6102c361045d36600461282f565b60cc6020526000908152604090205481565b61021261047d366004612a31565b6001600160a01b039182166000908152609c6020908152604080832093909416825291909152205460ff1690565b600054610100900460ff16158080156104cb5750600054600160ff909116105b806104e55750303b1580156104e5575060005460ff166001145b61054d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610570576000805461ff0019166101001790555b61057a85856117c8565b610583836117f9565b60c98054871515600160a01b026001600160a81b03199091166001600160a01b038a161717905560cb82905580156105f5576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b600061060982611847565b92915050565b60c960009054906101000a90046001600160a01b03166001600160a01b0316630261bf8b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610662573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106869190612a5f565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b815250906106d45760405162461bcd60e51b8152600401610544919061281c565b5060c95460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b9160048083019260209291908290030181865afa15801561071f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107439190612a5f565b9050600060c960009054906101000a90046001600160a01b03166001600160a01b03166347f872f16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561079a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107be9190612a5f565b9050816001600160a01b03166107d384610eac565b6001600160a01b03161461081d5760405162461bcd60e51b8152602060048201526011602482015270194bd85b1c9958591e4b5b1bd8dad09a59607a1b6044820152606401610544565b60405163368fa33960e21b81526001600160a01b0382169063da3e8ce49061084f9088908a9030908a90600401612a7c565b600060405180830381600087803b15801561086957600080fd5b505af115801561087d573d6000803e3d6000fd5b5050505061090260c960009054906101000a90046001600160a01b03166001600160a01b0316630261bf8b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fb9190612a5f565b8785611887565b5050600090815260cd602090815260408083209390935560ce90522080546001600160a01b0319166001600160a01b039290921691909117905550565b60606097805461094e90612aa6565b80601f016020809104026020016040519081016040528092919081815260200182805461097a90612aa6565b80156109c75780601f1061099c576101008083540402835291602001916109c7565b820191906000526020600020905b8154815290600101906020018083116109aa57829003601f168201915b5050505050905090565b60006109dc826119f8565b506000908152609b60205260409020546001600160a01b031690565b6000610a0382610eac565b9050806001600160a01b0316836001600160a01b031603610a705760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610544565b336001600160a01b0382161480610a8c5750610a8c813361047d565b610afe5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610544565b610b088383611a57565b505050565b610b173382611ac5565b610b335760405162461bcd60e51b815260040161054490612ae0565b610b08838383611887565b600082815260656020526040902060010154610b5981611b44565b610b088383611b4e565b6001600160a01b0381163314610bd35760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610544565b610bdd8282611bd4565b5050565b610b0883838360405180602001604052806000815250611704565b60c95460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b9160048083019260209291908290030181865afa158015610c46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6a9190612a5f565b600083815260cc60205260408120559050610c8482611c3b565b600082815260cd602052604090205415610bdd5760c960009054906101000a90046001600160a01b03166001600160a01b03166347f872f16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ceb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0f9190612a5f565b600083815260ce602090815260408083205460cd9092529182902054915163368fa33960e21b81526001600160a01b039384169363da3e8ce493610d5d939091169130918791600401612a7c565b600060405180830381600087803b158015610d7757600080fd5b505af1158015610d8b573d6000803e3d6000fd5b5050506000928352505060cd6020908152604080832083905560ce909152902080546001600160a01b0319169055565b6000818152609960205260408120546001600160a01b03161515610609565b60c960009054906101000a90046001600160a01b03166001600160a01b0316639b7ae5ec6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e519190612a5f565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203430360ec1b81525090610e9f5760405162461bcd60e51b8152600401610544919061281c565b50610ea9816117f9565b50565b6000818152609960205260408120546001600160a01b0316806106095760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610544565b60ca8054610f1990612aa6565b80601f0160208091040260200160405190810160405280929190818152602001828054610f4590612aa6565b8015610f925780601f10610f6757610100808354040283529160200191610f92565b820191906000526020600020905b815481529060010190602001808311610f7557829003601f168201915b505050505081565b60006001600160a01b0382166110045760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610544565b506001600160a01b03166000908152609a602052604090205490565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60c960009054906101000a90046001600160a01b03166001600160a01b0316630261bf8b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561109e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c29190612a5f565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b815250906111105760405162461bcd60e51b8152600401610544919061281c565b5060c95460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b9160048083019260209291908290030181865afa15801561115b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061117f9190612a5f565b600083815260cd602052604081205460cb5492935090916111ac91906111a790612710612b43565b611cde565b9050816001600160a01b03166111c184610eac565b6001600160a01b0316036112075760405162461bcd60e51b815260206004820152600d60248201526c194bdb9bdd0b5b1bd8dad09a59609a1b6044820152606401610544565b80841161124f5760405162461bcd60e51b8152602060048201526016602482015275194bda5b9cdd59999a58da595b9d0b5b1bd8dad09a5960521b6044820152606401610544565b600083815260ce60205260409020546001600160a01b038681169116146112b05760405162461bcd60e51b81526020600482015260156024820152743297b4b731b7b93932b1ba16b637b1b5aa37b5b2b760591b6044820152606401610544565b600083815260cd6020526040812054906112c985610eac565b905060c960009054906101000a90046001600160a01b03166001600160a01b03166347f872f16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561131e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113429190612a5f565b6001600160a01b031663da3e8ce4888a308a6040518563ffffffff1660e01b81526004016113739493929190612a7c565b600060405180830381600087803b15801561138d57600080fd5b505af11580156113a1573d6000803e3d6000fd5b505050506113b0818987611887565b600085815260cd602090815260409182902088905560c95482516347f872f160e01b815292516001600160a01b03909116926347f872f19260048083019391928290030181865afa158015611409573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142d9190612a5f565b6001600160a01b031663da3e8ce4883084866040518563ffffffff1660e01b815260040161145e9493929190612a7c565b600060405180830381600087803b15801561147857600080fd5b505af115801561148c573d6000803e3d6000fd5b505050505050505050505050565b60c960009054906101000a90046001600160a01b03166001600160a01b0316630261bf8b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115119190612a5f565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203530360ec1b8152509061155f5760405162461bcd60e51b8152600401610544919061281c565b5060008151116115a95760405162461bcd60e51b8152602060048201526015602482015274194bd9185d184b5b5a5cdcda5b99cb5b1bd85b9259605a1b6044820152606401610544565b6000806000838060200190518101906115c29190612b56565b600088815260cc60205260409020819055919450925090506115e5868686611d86565b60c954600160a01b900460ff16156116e25760c960009054906101000a90046001600160a01b03166001600160a01b03166357d600a16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561164a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166e9190612a5f565b60405163537a5c3d60e01b81526001600160a01b03888116600483015285811660248301526044820185905260016064830152919091169063537a5c3d90608401600060405180830381600087803b1580156116c957600080fd5b505af11580156116dd573d6000803e3d6000fd5b505050505b505050505050565b60606098805461094e90612aa6565b610bdd338383611db9565b61170e3383611ac5565b61172a5760405162461bcd60e51b815260040161054490612ae0565b61173684848484611e87565b50505050565b6060611747826119f8565b6000611751611eba565b90506000815111611771576040518060200160405280600081525061179c565b8061177b84611ec9565b60405160200161178c929190612b8d565b6040516020818303038152906040525b9392505050565b6000828152606560205260409020600101546117be81611b44565b610b088383611bd4565b600054610100900460ff166117ef5760405162461bcd60e51b815260040161054490612bbc565b610bdd8282611f5c565b6000815111611817576040518060200160405280600081525061183a565b804660405160200161182a929190612c07565b6040516020818303038152906040525b60ca90610bdd9082612c7f565b60006001600160e01b031982166380ac58cd60e01b148061187857506001600160e01b03198216635b5e139f60e01b145b80610609575061060982611f9c565b826001600160a01b031661189a82610eac565b6001600160a01b0316146118c05760405162461bcd60e51b815260040161054490612d3f565b6001600160a01b0382166119225760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610544565b61192f8383836001611fd1565b826001600160a01b031661194282610eac565b6001600160a01b0316146119685760405162461bcd60e51b815260040161054490612d3f565b6000818152609b6020908152604080832080546001600160a01b03199081169091556001600160a01b03878116808652609a8552838620805460001901905590871680865283862080546001019055868652609990945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000818152609960205260409020546001600160a01b0316610ea95760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610544565b6000818152609b6020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611a8c82610eac565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611ad183610eac565b9050806001600160a01b0316846001600160a01b03161480611b1857506001600160a01b038082166000908152609c602090815260408083209388168352929052205460ff165b80611b3c5750836001600160a01b0316611b31846109d1565b6001600160a01b0316145b949350505050565b610ea98133612059565b611b588282611020565b610bdd5760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611b903390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b611bde8282611020565b15610bdd5760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000611c4682610eac565b9050611c56816000846001611fd1565b611c5f82610eac565b6000838152609b6020908152604080832080546001600160a01b03199081169091556001600160a01b038516808552609a845282852080546000190190558785526099909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6000821580611ceb575081155b15611cf857506000610609565b81611d066002612710612d84565b611d1290600019612da6565b611d1c9190612d84565b8311156040518060400160405280600381526020016203230360ec1b81525090611d595760405162461bcd60e51b8152600401610544919061281c565b50612710611d68600282612d84565b611d728486612db9565b611d7c9190612b43565b61179c9190612d84565b611d9083836120b2565b611d9d600084848461224b565b610b085760405162461bcd60e51b815260040161054490612dd8565b816001600160a01b0316836001600160a01b031603611e1a5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610544565b6001600160a01b038381166000818152609c6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611e92848484611887565b611e9e8484848461224b565b6117365760405162461bcd60e51b815260040161054490612dd8565b606060ca805461094e90612aa6565b60606000611ed68361234c565b600101905060008167ffffffffffffffff811115611ef657611ef66125fc565b6040519080825280601f01601f191660200182016040528015611f20576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611f2a57509392505050565b600054610100900460ff16611f835760405162461bcd60e51b815260040161054490612bbc565b6097611f8f8382612c7f565b506098610b088282612c7f565b60006001600160e01b03198216637965db0b60e01b148061060957506301ffc9a760e01b6001600160e01b0319831614610609565b6001811115611736576001600160a01b03841615612017576001600160a01b0384166000908152609a602052604081208054839290612011908490612da6565b90915550505b6001600160a01b03831615611736576001600160a01b0383166000908152609a60205260408120805483929061204e908490612b43565b909155505050505050565b6120638282611020565b610bdd5761207081612424565b61207b836020612436565b60405160200161208c929190612e2a565b60408051601f198184030181529082905262461bcd60e51b82526105449160040161281c565b6001600160a01b0382166121085760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610544565b6000818152609960205260409020546001600160a01b03161561216d5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610544565b61217b600083836001611fd1565b6000818152609960205260409020546001600160a01b0316156121e05760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610544565b6001600160a01b0382166000818152609a6020908152604080832080546001019055848352609990915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b1561234157604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061228f903390899088908890600401612e9f565b6020604051808303816000875af19250505080156122ca575060408051601f3d908101601f191682019092526122c791810190612edc565b60015b612327573d8080156122f8576040519150601f19603f3d011682016040523d82523d6000602084013e6122fd565b606091505b50805160000361231f5760405162461bcd60e51b815260040161054490612dd8565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611b3c565b506001949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b831061238b5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef810000000083106123b7576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106123d557662386f26fc10000830492506010015b6305f5e10083106123ed576305f5e100830492506008015b612710831061240157612710830492506004015b60648310612413576064830492506002015b600a83106106095760010192915050565b60606106096001600160a01b03831660145b60606000612445836002612db9565b612450906002612b43565b67ffffffffffffffff811115612468576124686125fc565b6040519080825280601f01601f191660200182016040528015612492576020820181803683370190505b509050600360fc1b816000815181106124ad576124ad612ef9565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106124dc576124dc612ef9565b60200101906001600160f81b031916908160001a9053506000612500846002612db9565b61250b906001612b43565b90505b6001811115612583576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061253f5761253f612ef9565b1a60f81b82828151811061255557612555612ef9565b60200101906001600160f81b031916908160001a90535060049490941c9361257c81612f0f565b905061250e565b50831561179c5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610544565b6001600160a01b0381168114610ea957600080fd5b803580151581146125f757600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261262357600080fd5b813567ffffffffffffffff8082111561263e5761263e6125fc565b604051601f8301601f19908116603f01168101908282118183101715612666576126666125fc565b8160405283815286602085880101111561267f57600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060008060008060c087890312156126b857600080fd5b86356126c3816125d2565b95506126d1602088016125e7565b9450604087013567ffffffffffffffff808211156126ee57600080fd5b6126fa8a838b01612612565b9550606089013591508082111561271057600080fd5b61271c8a838b01612612565b9450608089013591508082111561273257600080fd5b5061273f89828a01612612565b92505060a087013590509295509295509295565b6001600160e01b031981168114610ea957600080fd5b60006020828403121561277b57600080fd5b813561179c81612753565b6000806000806080858703121561279c57600080fd5b84356127a7816125d2565b935060208501356127b7816125d2565b93969395505050506040820135916060013590565b60005b838110156127e75781810151838201526020016127cf565b50506000910152565b600081518084526128088160208601602086016127cc565b601f01601f19169290920160200192915050565b60208152600061179c60208301846127f0565b60006020828403121561284157600080fd5b5035919050565b6000806040838503121561285b57600080fd5b8235612866816125d2565b946020939093013593505050565b60008060006060848603121561288957600080fd5b8335612894816125d2565b925060208401356128a4816125d2565b929592945050506040919091013590565b600080604083850312156128c857600080fd5b8235915060208301356128da816125d2565b809150509250929050565b6000602082840312156128f757600080fd5b813567ffffffffffffffff81111561290e57600080fd5b611b3c84828501612612565b60006020828403121561292c57600080fd5b813561179c816125d2565b60008060006060848603121561294c57600080fd5b8335612957816125d2565b925060208401359150604084013567ffffffffffffffff81111561297a57600080fd5b61298686828701612612565b9150509250925092565b600080604083850312156129a357600080fd5b82356129ae816125d2565b91506129bc602084016125e7565b90509250929050565b600080600080608085870312156129db57600080fd5b84356129e6816125d2565b935060208501356129f6816125d2565b925060408501359150606085013567ffffffffffffffff811115612a1957600080fd5b612a2587828801612612565b91505092959194509250565b60008060408385031215612a4457600080fd5b8235612a4f816125d2565b915060208301356128da816125d2565b600060208284031215612a7157600080fd5b815161179c816125d2565b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b600181811c90821680612aba57607f821691505b602082108103612ada57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561060957610609612b2d565b600080600060608486031215612b6b57600080fd5b8351612b76816125d2565b602085015160409095015190969495509392505050565b60008351612b9f8184602088016127cc565b835190830190612bb38183602088016127cc565b01949350505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008351612c198184602088016127cc565b602f60f81b92018281526001810193909352506021820152602201919050565b601f821115610b0857600081815260208120601f850160051c81016020861015612c605750805b601f850160051c820191505b818110156116e257828155600101612c6c565b815167ffffffffffffffff811115612c9957612c996125fc565b612cad81612ca78454612aa6565b84612c39565b602080601f831160018114612ce25760008415612cca5750858301515b600019600386901b1c1916600185901b1785556116e2565b600085815260208120601f198616915b82811015612d1157888601518255948401946001909101908401612cf2565b5085821015612d2f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b600082612da157634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561060957610609612b2d565b6000816000190483118215151615612dd357612dd3612b2d565b500290565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612e628160178501602088016127cc565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612e938160288401602088016127cc565b01602801949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612ed2908301846127f0565b9695505050505050565b600060208284031215612eee57600080fd5b815161179c81612753565b634e487b7160e01b600052603260045260246000fd5b600081612f1e57612f1e612b2d565b50600019019056fea26469706673582212200320cdefc7c4db17422b5b58974a78e156ca7b0807a95f50ada92f5b036b750e64736f6c63430008100033",
    "sourceMap": "1058:5722:129:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1622:506;;;;;;:::i;:::-;;:::i;:::-;;6255:198;;;;;;:::i;:::-;;:::i;:::-;;;2744:14:156;;2737:22;2719:41;;2707:2;2692:18;6255:198:129;;;;;;;;4030:706;;;;;;:::i;:::-;;:::i;2932:98:28:-;;;:::i;:::-;;;;;;;:::i;4407:167::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;4406:32:156;;;4388:51;;4376:2;4361:18;4407:167:28;4242:203:156;3929:417:28;;;;;;:::i;:::-;;:::i;5084:326::-;;;;;;:::i;:::-;;:::i;4708:129:16:-;;;;;;:::i;:::-;4782:7;4808:12;;;:6;:12;;;;;:22;;;;4708:129;;;;5562:25:156;;;5550:2;5535:18;4708:129:16;5416:177:156;5133:145:16;;;;;;:::i;:::-;;:::i;6242:214::-;;;;;;:::i;:::-;;:::i;5476:179:28:-;;;;;;:::i;:::-;;:::i;3145:543:129:-;;;;;;:::i;:::-;;:::i;3922:102::-;;;;;;:::i;:::-;;:::i;3792:121::-;;;;;;:::i;:::-;;:::i;2651:219:28:-;;;;;;:::i;:::-;;:::i;1340:21:129:-;;;:::i;1570:45::-;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;1570:45:129;;;2390:204:28;;;;;;:::i;:::-;;:::i;3203:145:16:-;;;;;;:::i;:::-;;:::i;4742:1318:129:-;;;;;;:::i;:::-;;:::i;2448:691::-;;;;;;:::i;:::-;;:::i;3094:102:28:-;;;:::i;2324:49:16:-;;2369:4;2324:49;;4641:153:28;;;;;;:::i;:::-;;:::i;5721:314::-;;;;;;:::i;:::-;;:::i;1497:43:129:-;;;;;;:::i;:::-;;;;;;;;;;;;;;3262:276:28;;;;;;:::i;:::-;;:::i;5558:147:16:-;;;;;;:::i;:::-;;:::i;1429:40:129:-;;;;;;:::i;:::-;;;;;;;;;;;;;;4860:162:28;;;;;;:::i;:::-;-1:-1:-1;;;;;4980:25:28;;;4957:4;4980:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;4860:162;1622:506:129;3268:19:18;3291:13;;;;;;3290:14;;3336:34;;;;-1:-1:-1;3354:12:18;;3369:1;3354:12;;;;:16;3336:34;3335:108;;;-1:-1:-1;3415:4:18;1476:19:32;:23;;;3376:66:18;;-1:-1:-1;3425:12:18;;;;;:17;3376:66;3314:201;;;;-1:-1:-1;;;3314:201:18;;8794:2:156;3314:201:18;;;8776:21:156;8833:2;8813:18;;;8806:30;8872:34;8852:18;;;8845:62;-1:-1:-1;;;8923:18:156;;;8916:44;8977:19;;3314:201:18;;;;;;;;;3525:12;:16;;-1:-1:-1;;3525:16:18;3540:1;3525:16;;;3551:65;;;;3585:13;:20;;-1:-1:-1;;3585:20:18;;;;;3551:65;1885:29:129::1;1899:5;1906:7;1885:13;:29::i;:::-;1924:27;1936:14;1924:11;:27::i;:::-;1961:16;:54:::0;;2025:38;::::1;;-1:-1:-1::0;;;2025:38:129::1;-1:-1:-1::0;;;;;;2025:38:129;;;-1:-1:-1;;;;;1961:54:129;::::1;2025:38:::0;::::1;::::0;;2073:22:::1;:48:::0;;;3636:99:18;;;;3686:5;3670:21;;-1:-1:-1;;3670:21:18;;;3710:14;;-1:-1:-1;9159:36:156;;3710:14:18;;9147:2:156;9132:18;3710:14:18;;;;;;;3636:99;3258:483;1622:506:129;;;;;;:::o;6255:198::-;6386:4;6409:37;6433:12;6409:23;:37::i;:::-;6402:44;6255:198;-1:-1:-1;;6255:198:129:o;4030:706::-;2195:16;;;;;;;;;-1:-1:-1;;;;;2195:16:129;-1:-1:-1;;;;;2195:31:129;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2179:49:129;929:10:33;-1:-1:-1;;;;;2179:49:129;;2230:37;;;;;;;;;;;;;-1:-1:-1;;;2230:37:129;;;2171:97;;;;;-1:-1:-1;;;2171:97:129;;;;;;;;:::i;:::-;-1:-1:-1;4231:16:129::1;::::0;:33:::1;::::0;;-1:-1:-1;;;4231:33:129;;;;4209:19:::1;::::0;-1:-1:-1;;;;;4231:16:129::1;::::0;:31:::1;::::0;:33:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:16;:33:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4209:55;;4274:25;4302:16;;;;;;;;;-1:-1:-1::0;;;;;4302:16:129::1;-1:-1:-1::0;;;;;4302:37:129::1;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4274:67;;4381:11;-1:-1:-1::0;;;;;4360:32:129::1;:17;4368:8;4360:7;:17::i;:::-;-1:-1:-1::0;;;;;4360:32:129::1;;4352:62;;;::::0;-1:-1:-1;;;4352:62:129;;9664:2:156;4352:62:129::1;::::0;::::1;9646:21:156::0;9703:2;9683:18;;;9676:30;-1:-1:-1;;;9722:18:156;;;9715:47;9779:18;;4352:62:129::1;9462:341:156::0;4352:62:129::1;4424:148;::::0;-1:-1:-1;;;4424:148:129;;-1:-1:-1;;;;;4424:51:129;::::1;::::0;::::1;::::0;:148:::1;::::0;4489:6;;4509:5;;4536:4:::1;::::0;4555:7;;4424:148:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;4591:61;4601:16;;;;;;;;;-1:-1:-1::0;;;;;4601:16:129::1;-1:-1:-1::0;;;;;4601:31:129::1;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4636:5;4643:8;4591:9;:61::i;:::-;-1:-1:-1::0;;4662:18:129::1;::::0;;;:8:::1;:18;::::0;;;;;;;:28;;;;4700:10:::1;:20:::0;;;:29;;-1:-1:-1;;;;;;4700:29:129::1;-1:-1:-1::0;;;;;4700:29:129;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;4030:706:129:o;2932:98:28:-;2986:13;3018:5;3011:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2932:98;:::o;4407:167::-;4483:7;4502:23;4517:7;4502:14;:23::i;:::-;-1:-1:-1;4543:24:28;;;;:15;:24;;;;;;-1:-1:-1;;;;;4543:24:28;;4407:167::o;3929:417::-;4009:13;4025:34;4051:7;4025:25;:34::i;:::-;4009:50;;4083:5;-1:-1:-1;;;;;4077:11:28;:2;-1:-1:-1;;;;;4077:11:28;;4069:57;;;;-1:-1:-1;;;4069:57:28;;10856:2:156;4069:57:28;;;10838:21:156;10895:2;10875:18;;;10868:30;10934:34;10914:18;;;10907:62;-1:-1:-1;;;10985:18:156;;;10978:31;11026:19;;4069:57:28;10654:397:156;4069:57:28;929:10:33;-1:-1:-1;;;;;4158:21:28;;;;:62;;-1:-1:-1;4183:37:28;4200:5;929:10:33;4860:162:28;:::i;4183:37::-;4137:170;;;;-1:-1:-1;;;4137:170:28;;11258:2:156;4137:170:28;;;11240:21:156;11297:2;11277:18;;;11270:30;11336:34;11316:18;;;11309:62;11407:31;11387:18;;;11380:59;11456:19;;4137:170:28;11056:425:156;4137:170:28;4318:21;4327:2;4331:7;4318:8;:21::i;:::-;3999:347;3929:417;;:::o;5084:326::-;5273:41;929:10:33;5306:7:28;5273:18;:41::i;:::-;5265:99;;;;-1:-1:-1;;;5265:99:28;;;;;;;:::i;:::-;5375:28;5385:4;5391:2;5395:7;5375:9;:28::i;5133:145:16:-;4782:7;4808:12;;;:6;:12;;;;;:22;;;2802:16;2813:4;2802:10;:16::i;:::-;5246:25:::1;5257:4;5263:7;5246:10;:25::i;6242:214::-:0;-1:-1:-1;;;;;6337:23:16;;929:10:33;6337:23:16;6329:83;;;;-1:-1:-1;;;6329:83:16;;12102:2:156;6329:83:16;;;12084:21:156;12141:2;12121:18;;;12114:30;12180:34;12160:18;;;12153:62;-1:-1:-1;;;12231:18:156;;;12224:45;12286:19;;6329:83:16;11900:411:156;6329:83:16;6423:26;6435:4;6441:7;6423:11;:26::i;:::-;6242:214;;:::o;5476:179:28:-;5609:39;5626:4;5632:2;5636:7;5609:39;;;;;;;;;;;;:16;:39::i;3145:543:129:-;3218:16;;:33;;;-1:-1:-1;;;3218:33:129;;;;3196:19;;-1:-1:-1;;;;;3218:16:129;;:31;;:33;;;;;;;;;;;;;;:16;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3269:15;;;;:5;:15;;;;;3262:22;3196:55;-1:-1:-1;3294:15:129;3275:8;3294:5;:15::i;:::-;3324:18;;;;:8;:18;;;;;;:23;3320:362;;3382:16;;;;;;;;;-1:-1:-1;;;;;3382:16:129;-1:-1:-1;;;;;3382:37:129;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3454:20;;;;:10;:20;;;;;;;;;3552:8;:18;;;;;;;;3363:221;;-1:-1:-1;;;3363:221:129;;-1:-1:-1;;;;;3363:73:129;;;;;;:221;;3454:20;;;;3500:4;;3523:11;;3363:221;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3623:1:129;3602:18;;;-1:-1:-1;;3602:8:129;:18;;;;;;;;:22;;;3638:10;:20;;;;;:33;;-1:-1:-1;;;;;;3638:33:129;;;3145:543::o;3922:102::-;3977:4;7402:16:28;;;:7;:16;;;;;;-1:-1:-1;;;;;7402:16:28;7816:31;;4000:17:129;7728:126:28;3792:121:129;2354:16;;;;;;;;;-1:-1:-1;;;;;2354:16:129;-1:-1:-1;;;;;2354:32:129;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2338:50:129;929:10:33;-1:-1:-1;;;;;2338:50:129;;2390:33;;;;;;;;;;;;;-1:-1:-1;;;2390:33:129;;;2330:94;;;;;-1:-1:-1;;;2330:94:129;;;;;;;;:::i;:::-;;3879:27:::1;3891:14;3879:11;:27::i;:::-;3792:121:::0;:::o;2651:219:28:-;2723:7;7402:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7402:16:28;;2785:56;;;;-1:-1:-1;;;2785:56:28;;12518:2:156;2785:56:28;;;12500:21:156;12557:2;12537:18;;;12530:30;-1:-1:-1;;;12576:18:156;;;12569:54;12640:18;;2785:56:28;12316:348:156;1340:21:129;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2390:204:28:-;2462:7;-1:-1:-1;;;;;2489:19:28;;2481:73;;;;-1:-1:-1;;;2481:73:28;;12871:2:156;2481:73:28;;;12853:21:156;12910:2;12890:18;;;12883:30;12949:34;12929:18;;;12922:62;-1:-1:-1;;;13000:18:156;;;12993:39;13049:19;;2481:73:28;12669:405:156;2481:73:28;-1:-1:-1;;;;;;2571:16:28;;;;;:9;:16;;;;;;;2390:204::o;3203:145:16:-;3289:4;3312:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;3312:29:16;;;;;;;;;;;;;;;3203:145::o;4742:1318:129:-;2195:16;;;;;;;;;-1:-1:-1;;;;;2195:16:129;-1:-1:-1;;;;;2195:31:129;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2179:49:129;929:10:33;-1:-1:-1;;;;;2179:49:129;;2230:37;;;;;;;;;;;;;-1:-1:-1;;;2230:37:129;;;2171:97;;;;;-1:-1:-1;;;2171:97:129;;;;;;;;:::i;:::-;-1:-1:-1;4950:16:129::1;::::0;:33:::1;::::0;;-1:-1:-1;;;4950:33:129;;;;4928:19:::1;::::0;-1:-1:-1;;;;;4950:16:129::1;::::0;:31:::1;::::0;:33:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:16;:33:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4993:18;5040::::0;;;:8:::1;:18;::::0;;;;;5095:22:::1;::::0;4928:55;;-1:-1:-1;4993:18:129;;5014:104:::1;::::0;5040:18;5060:57:::1;::::0;470:3:113::1;5060:57:129;:::i;:::-;5014:25;:104::i;:::-;4993:125;;5166:11;-1:-1:-1::0;;;;;5145:32:129::1;:17;5153:8;5145:7;:17::i;:::-;-1:-1:-1::0;;;;;5145:32:129::1;::::0;5137:58:::1;;;::::0;-1:-1:-1;;;5137:58:129;;13543:2:156;5137:58:129::1;::::0;::::1;13525:21:156::0;13582:2;13562:18;;;13555:30;-1:-1:-1;;;13601:18:156;;;13594:43;13654:18;;5137:58:129::1;13341:337:156::0;5137:58:129::1;5223:10;5213:7;:20;5205:55;;;::::0;-1:-1:-1;;;5205:55:129;;13885:2:156;5205:55:129::1;::::0;::::1;13867:21:156::0;13924:2;13904:18;;;13897:30;-1:-1:-1;;;13943:18:156;;;13936:52;14005:18;;5205:55:129::1;13683:346:156::0;5205:55:129::1;5288:20;::::0;;;:10:::1;:20;::::0;;;;;-1:-1:-1;;;;;5278:30:129;;::::1;5288:20:::0;::::1;5278:30;5270:64;;;::::0;-1:-1:-1;;;5270:64:129;;14236:2:156;5270:64:129::1;::::0;::::1;14218:21:156::0;14275:2;14255:18;;;14248:30;-1:-1:-1;;;14294:18:156;;;14287:51;14355:18;;5270:64:129::1;14034:345:156::0;5270:64:129::1;5353:19;5376:18:::0;;;:8:::1;:18;::::0;;;;;;5431:17:::1;5385:8:::0;5431:7:::1;:17::i;:::-;5405:43;;5519:16;;;;;;;;;-1:-1:-1::0;;;;;5519:16:129::1;-1:-1:-1::0;;;;;5519:37:129::1;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;5500:73:129::1;;5587:6;5607:5;5634:4;5653:7;5500:170;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;5717:42;5727:14;5743:5;5750:8;5717:9;:42::i;:::-;5794:18;::::0;;;:8:::1;:18;::::0;;;;;;;;:28;;;5889:16:::1;::::0;:39;;-1:-1:-1;;;5889:39:129;;;;-1:-1:-1;;;;;5889:16:129;;::::1;::::0;:37:::1;::::0;:39:::1;::::0;;::::1;::::0;5794:18;;5889:39;;;;;:16;:39:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;5870:73:129::1;;5957:6;5985:4;6004:14;6032:11;5870:183;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;4918:1142;;;;4742:1318:::0;;;;:::o;2448:691::-;2195:16;;;;;;;;;-1:-1:-1;;;;;2195:16:129;-1:-1:-1;;;;;2195:31:129;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2179:49:129;929:10:33;-1:-1:-1;;;;;2179:49:129;;2230:37;;;;;;;;;;;;;-1:-1:-1;;;2230:37:129;;;2171:97;;;;;-1:-1:-1;;;2171:97:129;;;;;;;;:::i;:::-;;2577:1:::1;2562:5;:12;:16;2554:50;;;::::0;-1:-1:-1;;;2554:50:129;;14586:2:156;2554:50:129::1;::::0;::::1;14568:21:156::0;14625:2;14605:18;;;14598:30;-1:-1:-1;;;14644:18:156;;;14637:51;14705:18;;2554:50:129::1;14384:345:156::0;2554:50:129::1;2628:18;2660:15:::0;2689:14:::1;2728:5;2717:46;;;;;;;;;;;;:::i;:::-;2773:19;::::0;;;:5:::1;:19;::::0;;;;:28;;;2614:149;;-1:-1:-1;2614:149:129;-1:-1:-1;2614:149:129;-1:-1:-1;2812:37:129::1;2822:5:::0;2779:12;2843:5;2812:9:::1;:37::i;:::-;2864:17;::::0;-1:-1:-1;;;2864:17:129;::::1;;;2860:273;;;2952:16;;;;;;;;;-1:-1:-1::0;;;;;2952:16:129::1;-1:-1:-1::0;;;;;2952:38:129::1;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2932:190;::::0;-1:-1:-1;;;2932:190:129;;-1:-1:-1;;;;;15401:15:156;;;2932:190:129::1;::::0;::::1;15383:34:156::0;15453:15;;;15433:18;;;15426:43;15485:18;;;15478:34;;;3104:4:129::1;15528:18:156::0;;;15521:50;2932:78:129;;;::::1;::::0;::::1;::::0;15317:19:156;;2932:190:129::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2860:273;2544:595;;;2448:691:::0;;;:::o;3094:102:28:-;3150:13;3182:7;3175:14;;;;;:::i;4641:153::-;4735:52;929:10:33;4768:8:28;4778;4735:18;:52::i;5721:314::-;5889:41;929:10:33;5922:7:28;5889:18;:41::i;:::-;5881:99;;;;-1:-1:-1;;;5881:99:28;;;;;;;:::i;:::-;5990:38;6004:4;6010:2;6014:7;6023:4;5990:13;:38::i;:::-;5721:314;;;;:::o;3262:276::-;3335:13;3360:23;3375:7;3360:14;:23::i;:::-;3394:21;3418:10;:8;:10::i;:::-;3394:34;;3469:1;3451:7;3445:21;:25;:86;;;;;;;;;;;;;;;;;3497:7;3506:18;:7;:16;:18::i;:::-;3480:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3445:86;3438:93;3262:276;-1:-1:-1;;;3262:276:28:o;5558:147:16:-;4782:7;4808:12;;;:6;:12;;;;;:22;;;2802:16;2813:4;2802:10;:16::i;:::-;5672:26:::1;5684:4;5690:7;5672:11;:26::i;1605:149:28:-:0;5363:13:18;;;;;;;5355:69;;;;-1:-1:-1;;;5355:69:18;;;;;;;:::i;:::-;1708:39:28::1;1732:5;1739:7;1708:23;:39::i;6563:215:129:-:0;6674:1;6649:14;6643:28;:32;:128;;;;;;;;;;;;;;;;;6714:14;6735:13;6697:57;;;;;;;;;:::i;:::-;;;;;;;;;;;;;6643:128;6633:7;;:138;;:7;:138;:::i;1987:344:28:-;2111:4;-1:-1:-1;;;;;;2146:51:28;;-1:-1:-1;;;2146:51:28;;:126;;-1:-1:-1;;;;;;;2213:59:28;;-1:-1:-1;;;2213:59:28;2146:126;:178;;;;2288:36;2312:11;2288:23;:36::i;11928:1255::-;12093:4;-1:-1:-1;;;;;12055:42:28;:34;12081:7;12055:25;:34::i;:::-;-1:-1:-1;;;;;12055:42:28;;12047:92;;;;-1:-1:-1;;;12047:92:28;;;;;;;:::i;:::-;-1:-1:-1;;;;;12157:16:28;;12149:65;;;;-1:-1:-1;;;12149:65:28;;19988:2:156;12149:65:28;;;19970:21:156;20027:2;20007:18;;;20000:30;20066:34;20046:18;;;20039:62;-1:-1:-1;;;20117:18:156;;;20110:34;20161:19;;12149:65:28;19786:400:156;12149:65:28;12225:42;12246:4;12252:2;12256:7;12265:1;12225:20;:42::i;:::-;12405:4;-1:-1:-1;;;;;12367:42:28;:34;12393:7;12367:25;:34::i;:::-;-1:-1:-1;;;;;12367:42:28;;12359:92;;;;-1:-1:-1;;;12359:92:28;;;;;;;:::i;:::-;12520:24;;;;:15;:24;;;;;;;;12513:31;;-1:-1:-1;;;;;;12513:31:28;;;;;;-1:-1:-1;;;;;12988:15:28;;;;;;:9;:15;;;;;:20;;-1:-1:-1;;12988:20:28;;;13022:13;;;;;;;;;:18;;12513:31;13022:18;;;13060:16;;;:7;:16;;;;;;:21;;;;;;;;;;13097:27;;12536:7;;13097:27;;;3999:347;3929:417;;:::o;14004:133::-;7793:4;7402:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7402:16:28;14077:53;;;;-1:-1:-1;;;14077:53:28;;12518:2:156;14077:53:28;;;12500:21:156;12557:2;12537:18;;;12530:30;-1:-1:-1;;;12576:18:156;;;12569:54;12640:18;;14077:53:28;12316:348:156;13295:182:28;13369:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;13369:29:28;-1:-1:-1;;;;;13369:29:28;;;;;;;;:24;;13422:34;13369:24;13422:25;:34::i;:::-;-1:-1:-1;;;;;13413:57:28;;;;;;;;;;;13295:182;;:::o;8012:272::-;8105:4;8121:13;8137:34;8163:7;8137:25;:34::i;:::-;8121:50;;8200:5;-1:-1:-1;;;;;8189:16:28;:7;-1:-1:-1;;;;;8189:16:28;;:52;;;-1:-1:-1;;;;;;4980:25:28;;;4957:4;4980:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;8209:32;8189:87;;;;8269:7;-1:-1:-1;;;;;8245:31:28;:20;8257:7;8245:11;:20::i;:::-;-1:-1:-1;;;;;8245:31:28;;8189:87;8181:96;8012:272;-1:-1:-1;;;;8012:272:28:o;3642:103:16:-;3708:30;3719:4;929:10:33;3708::16;:30::i;7791:233::-;7874:22;7882:4;7888:7;7874;:22::i;:::-;7869:149;;7912:12;;;;:6;:12;;;;;;;;-1:-1:-1;;;;;7912:29:16;;;;;;;;;:36;;-1:-1:-1;;7912:36:16;7944:4;7912:36;;;7994:12;929:10:33;;850:96;7994:12:16;-1:-1:-1;;;;;7967:40:16;7985:7;-1:-1:-1;;;;;7967:40:16;7979:4;7967:40;;;;;;;;;;7791:233;;:::o;8195:234::-;8278:22;8286:4;8292:7;8278;:22::i;:::-;8274:149;;;8348:5;8316:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;8316:29:16;;;;;;;;;;:37;;-1:-1:-1;;8316:37:16;;;8372:40;929:10:33;;8316:12:16;;8372:40;;8348:5;8372:40;8195:234;;:::o;10820:784:28:-;10879:13;10895:34;10921:7;10895:25;:34::i;:::-;10879:50;;10940:51;10961:5;10976:1;10980:7;10989:1;10940:20;:51::i;:::-;11101:34;11127:7;11101:25;:34::i;:::-;11180:24;;;;:15;:24;;;;;;;;11173:31;;-1:-1:-1;;;;;;11173:31:28;;;;;;-1:-1:-1;;;;;11420:16:28;;;;;:9;:16;;;;;:21;;-1:-1:-1;;11420:21:28;;;11468:16;;;:7;:16;;;;;;11461:23;;;;;;;11500:36;11093:42;;-1:-1:-1;11196:7:28;;11500:36;;11180:24;;11500:36;6242:214:16;;:::o;1026:333:113:-;1104:7;1123:10;;;:29;;-1:-1:-1;1137:15:113;;1123:29;1119:58;;;-1:-1:-1;1169:1:113;1162:8;;1119:58;1237:10;540:21;560:1;470:3;540:21;:::i;:::-;1201:32;;-1:-1:-1;;1201:32:113;:::i;:::-;1200:47;;;;:::i;:::-;1191:5;:56;;1249:35;;;;;;;;;;;;;-1:-1:-1;;;1249:35:113;;;1183:102;;;;;-1:-1:-1;;;1183:102:113;;;;;;;;:::i;:::-;-1:-1:-1;470:3:113;540:21;560:1;470:3;540:21;:::i;:::-;1300:18;1308:10;1300:5;:18;:::i;:::-;:33;;;;:::i;:::-;1299:55;;;;:::i;8943:309:28:-;9067:18;9073:2;9077:7;9067:5;:18::i;:::-;9116:53;9147:1;9151:2;9155:7;9164:4;9116:22;:53::i;:::-;9095:150;;;;-1:-1:-1;;;9095:150:28;;;;;;;:::i;13613:307::-;13763:8;-1:-1:-1;;;;;13754:17:28;:5;-1:-1:-1;;;;;13754:17:28;;13746:55;;;;-1:-1:-1;;;13746:55:28;;21472:2:156;13746:55:28;;;21454:21:156;21511:2;21491:18;;;21484:30;21550:27;21530:18;;;21523:55;21595:18;;13746:55:28;21270:349:156;13746:55:28;-1:-1:-1;;;;;13811:25:28;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;13811:46:28;;;;;;;;;;13872:41;;2719::156;;;13872::28;;2692:18:156;13872:41:28;;;;;;;13613:307;;;:::o;6896:305::-;7046:28;7056:4;7062:2;7066:7;7046:9;:28::i;:::-;7092:47;7115:4;7121:2;7125:7;7134:4;7092:22;:47::i;:::-;7084:110;;;;-1:-1:-1;;;7084:110:28;;;;;;;:::i;6459:98:129:-;6511:13;6543:7;6536:14;;;;;:::i;437:707:35:-;493:13;542:14;559:28;581:5;559:21;:28::i;:::-;590:1;559:32;542:49;;605:20;639:6;628:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;628:18:35;-1:-1:-1;605:41:35;-1:-1:-1;766:28:35;;;782:2;766:28;821:280;-1:-1:-1;;852:5:35;-1:-1:-1;;;986:2:35;975:14;;970:30;852:5;957:44;1045:2;1036:11;;;-1:-1:-1;1065:21:35;821:280;1065:21;-1:-1:-1;1121:6:35;437:707;-1:-1:-1;;;437:707:35:o;1760:160:28:-;5363:13:18;;;;;;;5355:69;;;;-1:-1:-1;;;5355:69:18;;;;;;;:::i;:::-;1873:5:28::1;:13;1881:5:::0;1873;:13:::1;:::i;:::-;-1:-1:-1::0;1896:7:28::1;:17;1906:7:::0;1896;:17:::1;:::i;2903:213:16:-:0;2988:4;-1:-1:-1;;;;;;3011:58:16;;-1:-1:-1;;;3011:58:16;;:98;;-1:-1:-1;;;;;;;;;;1168:51:36;;;3073:36:16;1060:166:36;16258:396:28;16442:1;16430:9;:13;16426:222;;;-1:-1:-1;;;;;16463:18:28;;;16459:85;;-1:-1:-1;;;;;16501:15:28;;;;;;:9;:15;;;;;:28;;16520:9;;16501:15;:28;;16520:9;;16501:28;:::i;:::-;;;;-1:-1:-1;;16459:85:28;-1:-1:-1;;;;;16561:16:28;;;16557:81;;-1:-1:-1;;;;;16597:13:28;;;;;;:9;:13;;;;;:26;;16614:9;;16597:13;:26;;16614:9;;16597:26;:::i;:::-;;;;-1:-1:-1;;16258:396:28;;;;:::o;4026:501:16:-;4114:22;4122:4;4128:7;4114;:22::i;:::-;4109:412;;4297:39;4328:7;4297:30;:39::i;:::-;4407:49;4446:4;4453:2;4407:30;:49::i;:::-;4204:274;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;4204:274:16;;;;;;;;;;-1:-1:-1;;;4152:358:16;;;;;;;:::i;9574:920:28:-;-1:-1:-1;;;;;9653:16:28;;9645:61;;;;-1:-1:-1;;;9645:61:28;;22643:2:156;9645:61:28;;;22625:21:156;;;22662:18;;;22655:30;22721:34;22701:18;;;22694:62;22773:18;;9645:61:28;22441:356:156;9645:61:28;7793:4;7402:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7402:16:28;7816:31;9716:58;;;;-1:-1:-1;;;9716:58:28;;23004:2:156;9716:58:28;;;22986:21:156;23043:2;23023:18;;;23016:30;23082;23062:18;;;23055:58;23130:18;;9716:58:28;22802:352:156;9716:58:28;9785:48;9814:1;9818:2;9822:7;9831:1;9785:20;:48::i;:::-;7793:4;7402:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7402:16:28;7816:31;9920:58;;;;-1:-1:-1;;;9920:58:28;;23004:2:156;9920:58:28;;;22986:21:156;23043:2;23023:18;;;23016:30;23082;23062:18;;;23055:58;23130:18;;9920:58:28;22802:352:156;9920:58:28;-1:-1:-1;;;;;10320:13:28;;;;;;:9;:13;;;;;;;;:18;;10337:1;10320:18;;;10359:16;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;10359:21:28;;;;;10396:33;10367:7;;10320:13;;10396:33;;10320:13;;10396:33;6242:214:16;;:::o;14689:853:28:-;14838:4;-1:-1:-1;;;;;14858:13:28;;1476:19:32;:23;14854:682:28;;14893:82;;-1:-1:-1;;;14893:82:28;;-1:-1:-1;;;;;14893:47:28;;;;;:82;;929:10:33;;14955:4:28;;14961:7;;14970:4;;14893:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14893:82:28;;;;;;;;-1:-1:-1;;14893:82:28;;;;;;;;;;;;:::i;:::-;;;14889:595;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15153:6;:13;15170:1;15153:18;15149:321;;15195:60;;-1:-1:-1;;;15195:60:28;;;;;;;:::i;15149:321::-;15422:6;15416:13;15407:6;15403:2;15399:15;15392:38;14889:595;-1:-1:-1;;;;;;15025:62:28;-1:-1:-1;;;15025:62:28;;-1:-1:-1;15018:69:28;;14854:682;-1:-1:-1;15521:4:28;14689:853;;;;;;:::o;9900:890:38:-;9953:7;;-1:-1:-1;;;10028:15:38;;10024:99;;-1:-1:-1;;;10063:15:38;;;-1:-1:-1;10106:2:38;10096:12;10024:99;10149:6;10140:5;:15;10136:99;;10184:6;10175:15;;;-1:-1:-1;10218:2:38;10208:12;10136:99;10261:6;10252:5;:15;10248:99;;10296:6;10287:15;;;-1:-1:-1;10330:2:38;10320:12;10248:99;10373:5;10364;:14;10360:96;;10407:5;10398:14;;;-1:-1:-1;10440:1:38;10430:11;10360:96;10482:5;10473;:14;10469:96;;10516:5;10507:14;;;-1:-1:-1;10549:1:38;10539:11;10469:96;10591:5;10582;:14;10578:96;;10625:5;10616:14;;;-1:-1:-1;10658:1:38;10648:11;10578:96;10700:5;10691;:14;10687:64;;10735:1;10725:11;10777:6;9900:890;-1:-1:-1;;9900:890:38:o;2146:149:35:-;2204:13;2236:52;-1:-1:-1;;;;;2248:22:35;;333:2;1557:437;1632:13;1657:19;1689:10;1693:6;1689:1;:10;:::i;:::-;:14;;1702:1;1689:14;:::i;:::-;1679:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1679:25:35;;1657:47;;-1:-1:-1;;;1714:6:35;1721:1;1714:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;1714:15:35;;;;;;;;;-1:-1:-1;;;1739:6:35;1746:1;1739:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;1739:15:35;;;;;;;;-1:-1:-1;1769:9:35;1781:10;1785:6;1781:1;:10;:::i;:::-;:14;;1794:1;1781:14;:::i;:::-;1769:26;;1764:128;1801:1;1797;:5;1764:128;;;-1:-1:-1;;;1844:5:35;1852:3;1844:11;1835:21;;;;;;;:::i;:::-;;;;1823:6;1830:1;1823:9;;;;;;;;:::i;:::-;;;;:33;-1:-1:-1;;;;;1823:33:35;;;;;;;;-1:-1:-1;1880:1:35;1870:11;;;;;1804:3;;;:::i;:::-;;;1764:128;;;-1:-1:-1;1909:10:35;;1901:55;;;;-1:-1:-1;;;1901:55:35;;24382:2:156;1901:55:35;;;24364:21:156;;;24401:18;;;24394:30;24460:34;24440:18;;;24433:62;24512:18;;1901:55:35;24180:356:156;14:131;-1:-1:-1;;;;;89:31:156;;79:42;;69:70;;135:1;132;125:12;150:160;215:20;;271:13;;264:21;254:32;;244:60;;300:1;297;290:12;244:60;150:160;;;:::o;315:127::-;376:10;371:3;367:20;364:1;357:31;407:4;404:1;397:15;431:4;428:1;421:15;447:719;490:5;543:3;536:4;528:6;524:17;520:27;510:55;;561:1;558;551:12;510:55;597:6;584:20;623:18;660:2;656;653:10;650:36;;;666:18;;:::i;:::-;741:2;735:9;709:2;795:13;;-1:-1:-1;;791:22:156;;;815:2;787:31;783:40;771:53;;;839:18;;;859:22;;;836:46;833:72;;;885:18;;:::i;:::-;925:10;921:2;914:22;960:2;952:6;945:18;1006:3;999:4;994:2;986:6;982:15;978:26;975:35;972:55;;;1023:1;1020;1013:12;972:55;1087:2;1080:4;1072:6;1068:17;1061:4;1053:6;1049:17;1036:54;1134:1;1127:4;1122:2;1114:6;1110:15;1106:26;1099:37;1154:6;1145:15;;;;;;447:719;;;;:::o;1171:1017::-;1302:6;1310;1318;1326;1334;1342;1395:3;1383:9;1374:7;1370:23;1366:33;1363:53;;;1412:1;1409;1402:12;1363:53;1451:9;1438:23;1470:31;1495:5;1470:31;:::i;:::-;1520:5;-1:-1:-1;1544:35:156;1575:2;1560:18;;1544:35;:::i;:::-;1534:45;;1630:2;1619:9;1615:18;1602:32;1653:18;1694:2;1686:6;1683:14;1680:34;;;1710:1;1707;1700:12;1680:34;1733:50;1775:7;1766:6;1755:9;1751:22;1733:50;:::i;:::-;1723:60;;1836:2;1825:9;1821:18;1808:32;1792:48;;1865:2;1855:8;1852:16;1849:36;;;1881:1;1878;1871:12;1849:36;1904:52;1948:7;1937:8;1926:9;1922:24;1904:52;:::i;:::-;1894:62;;2009:3;1998:9;1994:19;1981:33;1965:49;;2039:2;2029:8;2026:16;2023:36;;;2055:1;2052;2045:12;2023:36;;2078:52;2122:7;2111:8;2100:9;2096:24;2078:52;:::i;:::-;2068:62;;;2177:3;2166:9;2162:19;2149:33;2139:43;;1171:1017;;;;;;;;:::o;2193:131::-;-1:-1:-1;;;;;;2267:32:156;;2257:43;;2247:71;;2314:1;2311;2304:12;2329:245;2387:6;2440:2;2428:9;2419:7;2415:23;2411:32;2408:52;;;2456:1;2453;2446:12;2408:52;2495:9;2482:23;2514:30;2538:5;2514:30;:::i;2771:525::-;2857:6;2865;2873;2881;2934:3;2922:9;2913:7;2909:23;2905:33;2902:53;;;2951:1;2948;2941:12;2902:53;2990:9;2977:23;3009:31;3034:5;3009:31;:::i;:::-;3059:5;-1:-1:-1;3116:2:156;3101:18;;3088:32;3129:33;3088:32;3129:33;:::i;:::-;2771:525;;3181:7;;-1:-1:-1;;;;3235:2:156;3220:18;;3207:32;;3286:2;3271:18;3258:32;;2771:525::o;3301:250::-;3386:1;3396:113;3410:6;3407:1;3404:13;3396:113;;;3486:11;;;3480:18;3467:11;;;3460:39;3432:2;3425:10;3396:113;;;-1:-1:-1;;3543:1:156;3525:16;;3518:27;3301:250::o;3556:271::-;3598:3;3636:5;3630:12;3663:6;3658:3;3651:19;3679:76;3748:6;3741:4;3736:3;3732:14;3725:4;3718:5;3714:16;3679:76;:::i;:::-;3809:2;3788:15;-1:-1:-1;;3784:29:156;3775:39;;;;3816:4;3771:50;;3556:271;-1:-1:-1;;3556:271:156:o;3832:220::-;3981:2;3970:9;3963:21;3944:4;4001:45;4042:2;4031:9;4027:18;4019:6;4001:45;:::i;4057:180::-;4116:6;4169:2;4157:9;4148:7;4144:23;4140:32;4137:52;;;4185:1;4182;4175:12;4137:52;-1:-1:-1;4208:23:156;;4057:180;-1:-1:-1;4057:180:156:o;4450:315::-;4518:6;4526;4579:2;4567:9;4558:7;4554:23;4550:32;4547:52;;;4595:1;4592;4585:12;4547:52;4634:9;4621:23;4653:31;4678:5;4653:31;:::i;:::-;4703:5;4755:2;4740:18;;;;4727:32;;-1:-1:-1;;;4450:315:156:o;4770:456::-;4847:6;4855;4863;4916:2;4904:9;4895:7;4891:23;4887:32;4884:52;;;4932:1;4929;4922:12;4884:52;4971:9;4958:23;4990:31;5015:5;4990:31;:::i;:::-;5040:5;-1:-1:-1;5097:2:156;5082:18;;5069:32;5110:33;5069:32;5110:33;:::i;:::-;4770:456;;5162:7;;-1:-1:-1;;;5216:2:156;5201:18;;;;5188:32;;4770:456::o;5598:315::-;5666:6;5674;5727:2;5715:9;5706:7;5702:23;5698:32;5695:52;;;5743:1;5740;5733:12;5695:52;5779:9;5766:23;5756:33;;5839:2;5828:9;5824:18;5811:32;5852:31;5877:5;5852:31;:::i;:::-;5902:5;5892:15;;;5598:315;;;;;:::o;5918:322::-;5987:6;6040:2;6028:9;6019:7;6015:23;6011:32;6008:52;;;6056:1;6053;6046:12;6008:52;6096:9;6083:23;6129:18;6121:6;6118:30;6115:50;;;6161:1;6158;6151:12;6115:50;6184;6226:7;6217:6;6206:9;6202:22;6184:50;:::i;6245:247::-;6304:6;6357:2;6345:9;6336:7;6332:23;6328:32;6325:52;;;6373:1;6370;6363:12;6325:52;6412:9;6399:23;6431:31;6456:5;6431:31;:::i;6679:524::-;6765:6;6773;6781;6834:2;6822:9;6813:7;6809:23;6805:32;6802:52;;;6850:1;6847;6840:12;6802:52;6889:9;6876:23;6908:31;6933:5;6908:31;:::i;:::-;6958:5;-1:-1:-1;7010:2:156;6995:18;;6982:32;;-1:-1:-1;7065:2:156;7050:18;;7037:32;7092:18;7081:30;;7078:50;;;7124:1;7121;7114:12;7078:50;7147;7189:7;7180:6;7169:9;7165:22;7147:50;:::i;:::-;7137:60;;;6679:524;;;;;:::o;7208:315::-;7273:6;7281;7334:2;7322:9;7313:7;7309:23;7305:32;7302:52;;;7350:1;7347;7340:12;7302:52;7389:9;7376:23;7408:31;7433:5;7408:31;:::i;:::-;7458:5;-1:-1:-1;7482:35:156;7513:2;7498:18;;7482:35;:::i;:::-;7472:45;;7208:315;;;;;:::o;7528:666::-;7623:6;7631;7639;7647;7700:3;7688:9;7679:7;7675:23;7671:33;7668:53;;;7717:1;7714;7707:12;7668:53;7756:9;7743:23;7775:31;7800:5;7775:31;:::i;:::-;7825:5;-1:-1:-1;7882:2:156;7867:18;;7854:32;7895:33;7854:32;7895:33;:::i;:::-;7947:7;-1:-1:-1;8001:2:156;7986:18;;7973:32;;-1:-1:-1;8056:2:156;8041:18;;8028:32;8083:18;8072:30;;8069:50;;;8115:1;8112;8105:12;8069:50;8138;8180:7;8171:6;8160:9;8156:22;8138:50;:::i;:::-;8128:60;;;7528:666;;;;;;;:::o;8199:388::-;8267:6;8275;8328:2;8316:9;8307:7;8303:23;8299:32;8296:52;;;8344:1;8341;8334:12;8296:52;8383:9;8370:23;8402:31;8427:5;8402:31;:::i;:::-;8452:5;-1:-1:-1;8509:2:156;8494:18;;8481:32;8522:33;8481:32;8522:33;:::i;9206:251::-;9276:6;9329:2;9317:9;9308:7;9304:23;9300:32;9297:52;;;9345:1;9342;9335:12;9297:52;9377:9;9371:16;9396:31;9421:5;9396:31;:::i;9808:456::-;-1:-1:-1;;;;;10095:15:156;;;10077:34;;10147:15;;;10142:2;10127:18;;10120:43;10199:15;;10194:2;10179:18;;10172:43;10246:2;10231:18;;10224:34;;;;10026:3;10011:19;;9808:456::o;10269:380::-;10348:1;10344:12;;;;10391;;;10412:61;;10466:4;10458:6;10454:17;10444:27;;10412:61;10519:2;10511:6;10508:14;10488:18;10485:38;10482:161;;10565:10;10560:3;10556:20;10553:1;10546:31;10600:4;10597:1;10590:15;10628:4;10625:1;10618:15;10482:161;;10269:380;;;:::o;11486:409::-;11688:2;11670:21;;;11727:2;11707:18;;;11700:30;11766:34;11761:2;11746:18;;11739:62;-1:-1:-1;;;11832:2:156;11817:18;;11810:43;11885:3;11870:19;;11486:409::o;13079:127::-;13140:10;13135:3;13131:20;13128:1;13121:31;13171:4;13168:1;13161:15;13195:4;13192:1;13185:15;13211:125;13276:9;;;13297:10;;;13294:36;;;13310:18;;:::i;14734:381::-;14830:6;14838;14846;14899:2;14887:9;14878:7;14874:23;14870:32;14867:52;;;14915:1;14912;14905:12;14867:52;14947:9;14941:16;14966:31;14991:5;14966:31;:::i;:::-;15061:2;15046:18;;15040:25;15105:2;15090:18;;;15084:25;15016:5;;15040:25;;-1:-1:-1;15084:25:156;14734:381;-1:-1:-1;;;14734:381:156:o;15582:496::-;15761:3;15799:6;15793:13;15815:66;15874:6;15869:3;15862:4;15854:6;15850:17;15815:66;:::i;:::-;15944:13;;15903:16;;;;15966:70;15944:13;15903:16;16013:4;16001:17;;15966:70;:::i;:::-;16052:20;;15582:496;-1:-1:-1;;;;15582:496:156:o;16083:407::-;16285:2;16267:21;;;16324:2;16304:18;;;16297:30;16363:34;16358:2;16343:18;;16336:62;-1:-1:-1;;;16429:2:156;16414:18;;16407:41;16480:3;16465:19;;16083:407::o;16495:676::-;16856:3;16894:6;16888:13;16910:66;16969:6;16964:3;16957:4;16949:6;16945:17;16910:66;:::i;:::-;-1:-1:-1;;;16998:16:156;;17045:17;;;17089:1;17078:13;;17071:29;;;;-1:-1:-1;17127:2:156;17116:14;;17109:26;17162:2;17151:14;;16495:676;-1:-1:-1;16495:676:156:o;17302:545::-;17404:2;17399:3;17396:11;17393:448;;;17440:1;17465:5;17461:2;17454:17;17510:4;17506:2;17496:19;17580:2;17568:10;17564:19;17561:1;17557:27;17551:4;17547:38;17616:4;17604:10;17601:20;17598:47;;;-1:-1:-1;17639:4:156;17598:47;17694:2;17689:3;17685:12;17682:1;17678:20;17672:4;17668:31;17658:41;;17749:82;17767:2;17760:5;17757:13;17749:82;;;17812:17;;;17793:1;17782:13;17749:82;;18023:1352;18149:3;18143:10;18176:18;18168:6;18165:30;18162:56;;;18198:18;;:::i;:::-;18227:97;18317:6;18277:38;18309:4;18303:11;18277:38;:::i;:::-;18271:4;18227:97;:::i;:::-;18379:4;;18443:2;18432:14;;18460:1;18455:663;;;;19162:1;19179:6;19176:89;;;-1:-1:-1;19231:19:156;;;19225:26;19176:89;-1:-1:-1;;17980:1:156;17976:11;;;17972:24;17968:29;17958:40;18004:1;18000:11;;;17955:57;19278:81;;18425:944;;18455:663;17249:1;17242:14;;;17286:4;17273:18;;-1:-1:-1;;18491:20:156;;;18609:236;18623:7;18620:1;18617:14;18609:236;;;18712:19;;;18706:26;18691:42;;18804:27;;;;18772:1;18760:14;;;;18639:19;;18609:236;;;18613:3;18873:6;18864:7;18861:19;18858:201;;;18934:19;;;18928:26;-1:-1:-1;;19017:1:156;19013:14;;;19029:3;19009:24;19005:37;19001:42;18986:58;18971:74;;18858:201;-1:-1:-1;;;;;19105:1:156;19089:14;;;19085:22;19072:36;;-1:-1:-1;18023:1352:156:o;19380:401::-;19582:2;19564:21;;;19621:2;19601:18;;;19594:30;19660:34;19655:2;19640:18;;19633:62;-1:-1:-1;;;19726:2:156;19711:18;;19704:35;19771:3;19756:19;;19380:401::o;20323:217::-;20363:1;20389;20379:132;;20433:10;20428:3;20424:20;20421:1;20414:31;20468:4;20465:1;20458:15;20496:4;20493:1;20486:15;20379:132;-1:-1:-1;20525:9:156;;20323:217::o;20545:128::-;20612:9;;;20633:11;;;20630:37;;;20647:18;;:::i;20678:168::-;20718:7;20784:1;20780;20776:6;20772:14;20769:1;20766:21;20761:1;20754:9;20747:17;20743:45;20740:71;;;20791:18;;:::i;:::-;-1:-1:-1;20831:9:156;;20678:168::o;20851:414::-;21053:2;21035:21;;;21092:2;21072:18;;;21065:30;21131:34;21126:2;21111:18;;21104:62;-1:-1:-1;;;21197:2:156;21182:18;;21175:48;21255:3;21240:19;;20851:414::o;21624:812::-;22035:25;22030:3;22023:38;22005:3;22090:6;22084:13;22106:75;22174:6;22169:2;22164:3;22160:12;22153:4;22145:6;22141:17;22106:75;:::i;:::-;-1:-1:-1;;;22240:2:156;22200:16;;;22232:11;;;22225:40;22290:13;;22312:76;22290:13;22374:2;22366:11;;22359:4;22347:17;;22312:76;:::i;:::-;22408:17;22427:2;22404:26;;21624:812;-1:-1:-1;;;;21624:812:156:o;23159:489::-;-1:-1:-1;;;;;23428:15:156;;;23410:34;;23480:15;;23475:2;23460:18;;23453:43;23527:2;23512:18;;23505:34;;;23575:3;23570:2;23555:18;;23548:31;;;23353:4;;23596:46;;23622:19;;23614:6;23596:46;:::i;:::-;23588:54;23159:489;-1:-1:-1;;;;;;23159:489:156:o;23653:249::-;23722:6;23775:2;23763:9;23754:7;23750:23;23746:32;23743:52;;;23791:1;23788;23781:12;23743:52;23823:9;23817:16;23842:30;23866:5;23842:30;:::i;23907:127::-;23968:10;23963:3;23959:20;23956:1;23949:31;23999:4;23996:1;23989:15;24023:4;24020:1;24013:15;24039:136;24078:3;24106:5;24096:39;;24115:18;;:::i;:::-;-1:-1:-1;;;24151:18:156;;24039:136::o",
    "linkReferences": {}
  },
  "methodIdentifiers": {
    "DEFAULT_ADMIN_ROLE()": "a217fddf",
    "approve(address,uint256)": "095ea7b3",
    "balanceOf(address)": "70a08231",
    "baseURI()": "6c0360eb",
    "burn(uint256)": "42966c68",
    "claim()": "4e71d92d",
    "exists(uint256)": "4f558e79",
    "getApproved(uint256)": "081812fc",
    "getRoleAdmin(bytes32)": "248a9ca3",
    "grantRole(bytes32,address)": "2f2ff15d",
    "hasRole(bytes32,address)": "91d14854",
    "initialize(address,bool,string,string,string,uint256)": "01ac88af",
    "isApprovedForAll(address,address)": "e985e9c5",
    "loans(uint256)": "e1ec3c68",
    "lockBid(address,address,uint256,uint256)": "03ac5d7b",
    "lockBids(uint256)": "c5f68b8b",
    "lockTokens(uint256)": "6e27d889",
    "mint(address,uint256,bytes)": "94d008ef",
    "name()": "06fdde03",
    "ownerOf(uint256)": "6352211e",
    "renounceRole(bytes32,address)": "36568abe",
    "revokeRole(bytes32,address)": "d547741f",
    "safeTransferFrom(address,address,uint256)": "42842e0e",
    "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
    "setApprovalForAll(address,bool)": "a22cb465",
    "setBaseURI(string)": "55f804b3",
    "supportsInterface(bytes4)": "01ffc9a7",
    "symbol()": "95d89b41",
    "tokenURI(uint256)": "c87b56dd",
    "transferFrom(address,address,uint256)": "23b872dd",
    "transferLockBid(address,address,uint256,uint256)": "92944809"
  },
  "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"exists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addressProvider_\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_isLiquidDelegate_\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_customBaseURI\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_minPercentageIncrease_\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"loans\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"lockBid\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"lockBids\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"lockTokens\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenizedId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_customBaseURI\",\"type\":\"string\"}],\"name\":\"setBaseURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"transferLockBid\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"supportsInterface(bytes4)\":{\"notice\":\"----------------------------------------------------------------------- Internal / Overrides -----------------------------------------------------------------------\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/protocol/tokenization/ObligationReceipt.sol\":\"Redeemable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@chainlink/=lib/chainlink/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":chainlink/=lib/chainlink/integration-tests/contracts/ethereum/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626\",\"dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xe798cadb41e2da274913e4b3183a80f50fb057a42238fe8467e077268100ec27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://899f850f7df5a270bccfb765d70069959ca1c20d3a7381c1c3bda8a3ffee1935\",\"dweb:/ipfs/QmVdnAqwyX2L3nX2HDA5WKGtVBFyH1nKE9A1k7fZnPBkhP\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC721/ERC721Upgradeable.sol\":{\"keccak256\":\"0x2a6a0b9fd2d316dcb4141159a9d13be92654066d6c0ae92757ed908ecdfecff0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c05d9be7ee043009eb9f2089b452efc0961345531fc63354a249d7337c69f3bb\",\"dweb:/ipfs/QmTXhzgaYrh6og76BP85i6exNFAv5NYw64uVWyworNogyG\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC721/IERC721ReceiverUpgradeable.sol\":{\"keccak256\":\"0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8bc3c6a456dba727d8dd9fd33420febede490abb49a07469f61d2a3ace66a95a\",\"dweb:/ipfs/QmVAWtEVj7K5AbvgJa9Dz22KiDq9eoptCjnVZqsTMtKXyd\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC721/IERC721Upgradeable.sol\":{\"keccak256\":\"0x2c0b89cef83f353c6f9488c013d8a5968587ffdd6dfc26aad53774214b97e229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a68e662c2a82412308b1feb24f3d61a44b3b8772f44cbd440446237313c3195\",\"dweb:/ipfs/QmfBuWUE2TQef9hghDzzuVkDskw3UGAyPgLmPifTNV7K6g\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC721/extensions/IERC721MetadataUpgradeable.sol\":{\"keccak256\":\"0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ffbd627e6958983d288801acdedbf3491ee0ebf1a430338bce47c96481ce9e3\",\"dweb:/ipfs/QmUM1vpmNgBV34sYf946SthDJNGhwwqjoRggmj4TUUQmdB\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/CountersUpgradeable.sol\":{\"keccak256\":\"0x798741e231b22b81e2dd2eddaaf8832dee4baf5cd8e2dbaa5c1dd12a1c053c4d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c41e8a7a906b8f362c8b760a44edadc61782008ea2ecf377ac5b5325bf6c3912\",\"dweb:/ipfs/QmcXr19zuH3YLzD6RZNE6UTzvsKSckdxZQnagPoDGkCHu2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8\",\"dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7\",\"dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4\",\"dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeMath.sol\":{\"keccak256\":\"0x0f633a0223d9a1dcccfcf38a64c9de0874dfcbfac0c6941ccf074d63a2ce0e1e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://864a40efcffdf408044c332a5aa38ec5618ed7b4eecb8f65faf45671bd6cdc65\",\"dweb:/ipfs/QmQJquTMtc6fgm5JQzGdsGpA2fqBe3MHWEdt2qzaLySMdN\"]},\"src/integrations/IDelegationRegistry.sol\":{\"keccak256\":\"0x1d09c96620cb6253c701f5f085f5b3d720fed3998cf137ae473f5b46c7f08b00\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://2ccccee556054de055b6b98d477cb3f97a8492246bffb726a99cd2d5c98dbaca\",\"dweb:/ipfs/QmRwW9St3JwZC2o4g2YWv2H6xi7qknqJjqc9TBVBnzcGQd\"]},\"src/interfaces/IAddressProvider.sol\":{\"keccak256\":\"0xd32a78a57401e888ac903edf3ff6f08e9c335f2204c9288df182a0cb4e09bb5e\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://0f82c05be76bbbfdeb9ba386be1a5b909e564c877d3fb99a3ce0bc19df248dde\",\"dweb:/ipfs/QmcHsetbkj3e3FosLN46NFDWABDRPX2uYuruM4g4mYXDqu\"]},\"src/interfaces/IExecutionDelegate.sol\":{\"keccak256\":\"0x9def180c3c45c492a967182aac61849fc1a77ca9f958abd3f27b689b01e61401\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cf406e8af1c9fa6373a66615022cd5c7edc41c169c46d660d5383df6647d3a5d\",\"dweb:/ipfs/QmRz7aDGbabWAw3BGFV2kbSmehGizSz3f7W87k6VXR3ggR\"]},\"src/interfaces/IRedeemable.sol\":{\"keccak256\":\"0x22d2cfb983b20307f4a8950e442a9007dccb3c637c22380492ba6cfa8e32b846\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://75c42863790291d3481ee10bead35f45abfb2a9844292c1ce2753ac69fc140eb\",\"dweb:/ipfs/QmUiSSYJasAaVQBpUkEvq1zQVzB3Mw65uAjSgDfr4YGvJY\"]},\"src/protocol/libraries/helpers/Errors.sol\":{\"keccak256\":\"0xcc5e914ce902dcd3d8f5cc43871981841a52f62b6d4d0a00e8c40986fadb1082\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://169dd4b842cfda7bf40cfae244cc63ec82b61d899ef4a9ce79256069d5aca934\",\"dweb:/ipfs/QmXPhisqaZu1p7dKzBCdFj5wuYk9HuEepqBZFUzd1crvtb\"]},\"src/protocol/libraries/math/PercentageMath.sol\":{\"keccak256\":\"0xb84274fc3effba81036256cf7fde67b3dbfe86c4ffd0e062711a3270157952a2\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://3ecaf26e713b39d89ee21fb8bfefe55fe2fec4a2f5a2bffba7612f82182b7262\",\"dweb:/ipfs/QmZ6oXpNspwBEkiJEz1EhsU4EVBpG3anNjtzcycNEgAkfe\"]},\"src/protocol/libraries/types/DataTypes.sol\":{\"keccak256\":\"0x5a15c575cacbcc6ace893c48a73858114cfc074030ea28958bb585b2b33c18cd\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://7c0a3425f8acff9c573c5fa8e4446488687e4eb8404c967a037105449f5a63ae\",\"dweb:/ipfs/QmNd2F9oDDbE2TCULkRFcR7cjsTk6rw6wi7RgayUaVpqfs\"]},\"src/protocol/tokenization/ObligationReceipt.sol\":{\"keccak256\":\"0x27ff3ca09ca247b17679f3a5733985efe5b69210cff2c99c356d83783ddb6a21\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ef130a434cae00170ea481b393aa30da9739decdf01cd77b92ad789c402c2c8b\",\"dweb:/ipfs/QmQ6jKPx8yVoWqdMWz4KS8zREsnJdfoJ2pVaaNYW7jfpLe\"]}},\"version\":1}",
  "metadata": {
    "compiler": {
      "version": "0.8.16+commit.07a7930e"
    },
    "language": "Solidity",
    "output": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "approved",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "Approval",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "operator",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "bool",
              "name": "approved",
              "type": "bool",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "ApprovalForAll",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "uint8",
              "name": "version",
              "type": "uint8",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "Initialized",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32",
              "indexed": true
            },
            {
              "internalType": "bytes32",
              "name": "previousAdminRole",
              "type": "bytes32",
              "indexed": true
            },
            {
              "internalType": "bytes32",
              "name": "newAdminRole",
              "type": "bytes32",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "RoleAdminChanged",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "account",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "sender",
              "type": "address",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "RoleGranted",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "account",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "sender",
              "type": "address",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "RoleRevoked",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "Transfer",
          "anonymous": false
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "DEFAULT_ADMIN_ROLE",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "approve"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "baseURI",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_tokenId",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "burn"
        },
        {
          "inputs": [],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "claim"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_tokenId",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "exists",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "getApproved",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "getRoleAdmin",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "grantRole"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "hasRole",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_addressProvider_",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "_isLiquidDelegate_",
              "type": "bool"
            },
            {
              "internalType": "string",
              "name": "_name",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "_symbol",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "_customBaseURI",
              "type": "string"
            },
            {
              "internalType": "uint256",
              "name": "_minPercentageIncrease_",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "initialize"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "operator",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "isApprovedForAll",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "loans",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_user",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "_amount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_tokenId",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "lockBid"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "lockBids",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "lockTokens",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_user",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "_tokenizedId",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "_data",
              "type": "bytes"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "mint"
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "ownerOf",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "renounceRole"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "role",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "revokeRole"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "safeTransferFrom"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "safeTransferFrom"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "approved",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setApprovalForAll"
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "_customBaseURI",
              "type": "string"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setBaseURI"
        },
        {
          "inputs": [
            {
              "internalType": "bytes4",
              "name": "_interfaceId",
              "type": "bytes4"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "supportsInterface",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "tokenURI",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "transferFrom"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_user",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "_amount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_tokenId",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "transferLockBid"
        }
      ],
      "devdoc": {
        "kind": "dev",
        "methods": {
          "approve(address,uint256)": {
            "details": "See {IERC721-approve}."
          },
          "balanceOf(address)": {
            "details": "See {IERC721-balanceOf}."
          },
          "getApproved(uint256)": {
            "details": "See {IERC721-getApproved}."
          },
          "getRoleAdmin(bytes32)": {
            "details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."
          },
          "grantRole(bytes32,address)": {
            "details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."
          },
          "hasRole(bytes32,address)": {
            "details": "Returns `true` if `account` has been granted `role`."
          },
          "isApprovedForAll(address,address)": {
            "details": "See {IERC721-isApprovedForAll}."
          },
          "name()": {
            "details": "See {IERC721Metadata-name}."
          },
          "ownerOf(uint256)": {
            "details": "See {IERC721-ownerOf}."
          },
          "renounceRole(bytes32,address)": {
            "details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event."
          },
          "revokeRole(bytes32,address)": {
            "details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."
          },
          "safeTransferFrom(address,address,uint256)": {
            "details": "See {IERC721-safeTransferFrom}."
          },
          "safeTransferFrom(address,address,uint256,bytes)": {
            "details": "See {IERC721-safeTransferFrom}."
          },
          "setApprovalForAll(address,bool)": {
            "details": "See {IERC721-setApprovalForAll}."
          },
          "symbol()": {
            "details": "See {IERC721Metadata-symbol}."
          },
          "tokenURI(uint256)": {
            "details": "See {IERC721Metadata-tokenURI}."
          },
          "transferFrom(address,address,uint256)": {
            "details": "See {IERC721-transferFrom}."
          }
        },
        "version": 1
      },
      "userdoc": {
        "kind": "user",
        "methods": {
          "supportsInterface(bytes4)": {
            "notice": "----------------------------------------------------------------------- Internal / Overrides -----------------------------------------------------------------------"
          }
        },
        "version": 1
      }
    },
    "settings": {
      "remappings": [
        ":@chainlink/=lib/chainlink/",
        ":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
        ":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
        ":chainlink/=lib/chainlink/integration-tests/contracts/ethereum/src/",
        ":ds-test/=lib/forge-std/lib/ds-test/src/",
        ":forge-std/=lib/forge-std/src/"
      ],
      "optimizer": {
        "enabled": true,
        "runs": 200
      },
      "metadata": {
        "bytecodeHash": "ipfs"
      },
      "compilationTarget": {
        "src/protocol/tokenization/ObligationReceipt.sol": "Redeemable"
      },
      "libraries": {}
    },
    "sources": {
      "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol": {
        "keccak256": "0xe8f27a3e3e25067334e76799f03d4de6d8f8535c3fc4806468228a9ebd5de51a",
        "urls": [
          "bzz-raw://686aaf8725727d94b36c53baad3779e168b31e33eec8d39b41e282382617c626",
          "dweb:/ipfs/QmWVRwPpZyweGCw7uRj1rXQTmcwaXB5Ctz3KvpNJPtxDP8"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol": {
        "keccak256": "0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa",
        "urls": [
          "bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c",
          "dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol": {
        "keccak256": "0xe798cadb41e2da274913e4b3183a80f50fb057a42238fe8467e077268100ec27",
        "urls": [
          "bzz-raw://899f850f7df5a270bccfb765d70069959ca1c20d3a7381c1c3bda8a3ffee1935",
          "dweb:/ipfs/QmVdnAqwyX2L3nX2HDA5WKGtVBFyH1nKE9A1k7fZnPBkhP"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC721/ERC721Upgradeable.sol": {
        "keccak256": "0x2a6a0b9fd2d316dcb4141159a9d13be92654066d6c0ae92757ed908ecdfecff0",
        "urls": [
          "bzz-raw://c05d9be7ee043009eb9f2089b452efc0961345531fc63354a249d7337c69f3bb",
          "dweb:/ipfs/QmTXhzgaYrh6og76BP85i6exNFAv5NYw64uVWyworNogyG"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC721/IERC721ReceiverUpgradeable.sol": {
        "keccak256": "0xbb2ed8106d94aeae6858e2551a1e7174df73994b77b13ebd120ccaaef80155f5",
        "urls": [
          "bzz-raw://8bc3c6a456dba727d8dd9fd33420febede490abb49a07469f61d2a3ace66a95a",
          "dweb:/ipfs/QmVAWtEVj7K5AbvgJa9Dz22KiDq9eoptCjnVZqsTMtKXyd"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC721/IERC721Upgradeable.sol": {
        "keccak256": "0x2c0b89cef83f353c6f9488c013d8a5968587ffdd6dfc26aad53774214b97e229",
        "urls": [
          "bzz-raw://4a68e662c2a82412308b1feb24f3d61a44b3b8772f44cbd440446237313c3195",
          "dweb:/ipfs/QmfBuWUE2TQef9hghDzzuVkDskw3UGAyPgLmPifTNV7K6g"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC721/extensions/IERC721MetadataUpgradeable.sol": {
        "keccak256": "0x95a471796eb5f030fdc438660bebec121ad5d063763e64d92376ffb4b5ce8b70",
        "urls": [
          "bzz-raw://4ffbd627e6958983d288801acdedbf3491ee0ebf1a430338bce47c96481ce9e3",
          "dweb:/ipfs/QmUM1vpmNgBV34sYf946SthDJNGhwwqjoRggmj4TUUQmdB"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol": {
        "keccak256": "0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183",
        "urls": [
          "bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06",
          "dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol": {
        "keccak256": "0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149",
        "urls": [
          "bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c",
          "dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts-upgradeable/contracts/utils/CountersUpgradeable.sol": {
        "keccak256": "0x798741e231b22b81e2dd2eddaaf8832dee4baf5cd8e2dbaa5c1dd12a1c053c4d",
        "urls": [
          "bzz-raw://c41e8a7a906b8f362c8b760a44edadc61782008ea2ecf377ac5b5325bf6c3912",
          "dweb:/ipfs/QmcXr19zuH3YLzD6RZNE6UTzvsKSckdxZQnagPoDGkCHu2"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol": {
        "keccak256": "0x6b9a5d35b744b25529a2856a8093e7c03fb35a34b1c4fb5499e560f8ade140da",
        "urls": [
          "bzz-raw://187b5c3a1c9e77678732a2cc5284237f9cfca6bc28ee8bc0a0f4f951d7b3a2f8",
          "dweb:/ipfs/Qmb2KFr7WuQu7btdCiftQG64vTzrG4UyzVmo53EYHcnHYA"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol": {
        "keccak256": "0x9a3b990bd56d139df3e454a9edf1c64668530b5a77fc32eb063bc206f958274a",
        "urls": [
          "bzz-raw://0895399d170daab2d69b4c43a0202e5a07f2e67a93b26e3354dcbedb062232f7",
          "dweb:/ipfs/QmUM1VH3XDk559Dsgh4QPvupr3YVKjz87HrSyYzzVFZbxw"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol": {
        "keccak256": "0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09",
        "urls": [
          "bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758",
          "dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/MathUpgradeable.sol": {
        "keccak256": "0xc1bd5b53319c68f84e3becd75694d941e8f4be94049903232cd8bc7c535aaa5a",
        "urls": [
          "bzz-raw://056027a78e6f4b78a39be530983551651ee5a052e786ca2c1c6a3bb1222b03b4",
          "dweb:/ipfs/QmXRUpywAqNwAfXS89vrtiE2THRM9dX9pQ4QxAkV1Wx9kt"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/utils/math/SafeMath.sol": {
        "keccak256": "0x0f633a0223d9a1dcccfcf38a64c9de0874dfcbfac0c6941ccf074d63a2ce0e1e",
        "urls": [
          "bzz-raw://864a40efcffdf408044c332a5aa38ec5618ed7b4eecb8f65faf45671bd6cdc65",
          "dweb:/ipfs/QmQJquTMtc6fgm5JQzGdsGpA2fqBe3MHWEdt2qzaLySMdN"
        ],
        "license": "MIT"
      },
      "src/integrations/IDelegationRegistry.sol": {
        "keccak256": "0x1d09c96620cb6253c701f5f085f5b3d720fed3998cf137ae473f5b46c7f08b00",
        "urls": [
          "bzz-raw://2ccccee556054de055b6b98d477cb3f97a8492246bffb726a99cd2d5c98dbaca",
          "dweb:/ipfs/QmRwW9St3JwZC2o4g2YWv2H6xi7qknqJjqc9TBVBnzcGQd"
        ],
        "license": "CC0-1.0"
      },
      "src/interfaces/IAddressProvider.sol": {
        "keccak256": "0xd32a78a57401e888ac903edf3ff6f08e9c335f2204c9288df182a0cb4e09bb5e",
        "urls": [
          "bzz-raw://0f82c05be76bbbfdeb9ba386be1a5b909e564c877d3fb99a3ce0bc19df248dde",
          "dweb:/ipfs/QmcHsetbkj3e3FosLN46NFDWABDRPX2uYuruM4g4mYXDqu"
        ],
        "license": "AGPL-3.0"
      },
      "src/interfaces/IExecutionDelegate.sol": {
        "keccak256": "0x9def180c3c45c492a967182aac61849fc1a77ca9f958abd3f27b689b01e61401",
        "urls": [
          "bzz-raw://cf406e8af1c9fa6373a66615022cd5c7edc41c169c46d660d5383df6647d3a5d",
          "dweb:/ipfs/QmRz7aDGbabWAw3BGFV2kbSmehGizSz3f7W87k6VXR3ggR"
        ],
        "license": "MIT"
      },
      "src/interfaces/IRedeemable.sol": {
        "keccak256": "0x22d2cfb983b20307f4a8950e442a9007dccb3c637c22380492ba6cfa8e32b846",
        "urls": [
          "bzz-raw://75c42863790291d3481ee10bead35f45abfb2a9844292c1ce2753ac69fc140eb",
          "dweb:/ipfs/QmUiSSYJasAaVQBpUkEvq1zQVzB3Mw65uAjSgDfr4YGvJY"
        ],
        "license": "BUSL-1.1"
      },
      "src/protocol/libraries/helpers/Errors.sol": {
        "keccak256": "0xcc5e914ce902dcd3d8f5cc43871981841a52f62b6d4d0a00e8c40986fadb1082",
        "urls": [
          "bzz-raw://169dd4b842cfda7bf40cfae244cc63ec82b61d899ef4a9ce79256069d5aca934",
          "dweb:/ipfs/QmXPhisqaZu1p7dKzBCdFj5wuYk9HuEepqBZFUzd1crvtb"
        ],
        "license": "AGPL-3.0"
      },
      "src/protocol/libraries/math/PercentageMath.sol": {
        "keccak256": "0xb84274fc3effba81036256cf7fde67b3dbfe86c4ffd0e062711a3270157952a2",
        "urls": [
          "bzz-raw://3ecaf26e713b39d89ee21fb8bfefe55fe2fec4a2f5a2bffba7612f82182b7262",
          "dweb:/ipfs/QmZ6oXpNspwBEkiJEz1EhsU4EVBpG3anNjtzcycNEgAkfe"
        ],
        "license": "AGPL-3.0"
      },
      "src/protocol/libraries/types/DataTypes.sol": {
        "keccak256": "0x5a15c575cacbcc6ace893c48a73858114cfc074030ea28958bb585b2b33c18cd",
        "urls": [
          "bzz-raw://7c0a3425f8acff9c573c5fa8e4446488687e4eb8404c967a037105449f5a63ae",
          "dweb:/ipfs/QmNd2F9oDDbE2TCULkRFcR7cjsTk6rw6wi7RgayUaVpqfs"
        ],
        "license": "AGPL-3.0"
      },
      "src/protocol/tokenization/ObligationReceipt.sol": {
        "keccak256": "0x27ff3ca09ca247b17679f3a5733985efe5b69210cff2c99c356d83783ddb6a21",
        "urls": [
          "bzz-raw://ef130a434cae00170ea481b393aa30da9739decdf01cd77b92ad789c402c2c8b",
          "dweb:/ipfs/QmQ6jKPx8yVoWqdMWz4KS8zREsnJdfoJ2pVaaNYW7jfpLe"
        ],
        "license": "BUSL-1.1"
      }
    },
    "version": 1
  },
  "ast": {
    "absolutePath": "src/protocol/tokenization/ObligationReceipt.sol",
    "id": 62323,
    "exportedSymbols": {
      "AccessControlUpgradeable": [
        25894
      ],
      "CountersUpgradeable": [
        29062
      ],
      "DataTypes": [
        56981
      ],
      "ERC721Upgradeable": [
        28501
      ],
      "Errors": [
        48478
      ],
      "IAddressProvider": [
        38799
      ],
      "IDelegationRegistry": [
        38391
      ],
      "IExecutionDelegate": [
        39517
      ],
      "IRedeemable": [
        40772
      ],
      "Initializable": [
        26136
      ],
      "PercentageMath": [
        55922
      ],
      "Redeemable": [
        62322
      ],
      "SafeMath": [
        35409
      ]
    },
    "nodeType": "SourceUnit",
    "src": "37:6743:129",
    "nodes": [
      {
        "id": 61801,
        "nodeType": "PragmaDirective",
        "src": "37:23:129",
        "nodes": [],
        "literals": [
          "solidity",
          "0.8",
          ".16"
        ]
      },
      {
        "id": 61803,
        "nodeType": "ImportDirective",
        "src": "62:81:129",
        "nodes": [],
        "absolutePath": "src/integrations/IDelegationRegistry.sol",
        "file": "../../integrations/IDelegationRegistry.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 62323,
        "sourceUnit": 38392,
        "symbolAliases": [
          {
            "foreign": {
              "id": 61802,
              "name": "IDelegationRegistry",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 38391,
              "src": "71:19:129",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 61805,
        "nodeType": "ImportDirective",
        "src": "144:77:129",
        "nodes": [],
        "absolutePath": "src/interfaces/IExecutionDelegate.sol",
        "file": "../../interfaces/IExecutionDelegate.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 62323,
        "sourceUnit": 39518,
        "symbolAliases": [
          {
            "foreign": {
              "id": 61804,
              "name": "IExecutionDelegate",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 39517,
              "src": "153:18:129",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 61807,
        "nodeType": "ImportDirective",
        "src": "222:73:129",
        "nodes": [],
        "absolutePath": "src/interfaces/IAddressProvider.sol",
        "file": "../../interfaces/IAddressProvider.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 62323,
        "sourceUnit": 38800,
        "symbolAliases": [
          {
            "foreign": {
              "id": 61806,
              "name": "IAddressProvider",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 38799,
              "src": "231:16:129",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 61809,
        "nodeType": "ImportDirective",
        "src": "296:63:129",
        "nodes": [],
        "absolutePath": "src/interfaces/IRedeemable.sol",
        "file": "../../interfaces/IRedeemable.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 62323,
        "sourceUnit": 40773,
        "symbolAliases": [
          {
            "foreign": {
              "id": 61808,
              "name": "IRedeemable",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 40772,
              "src": "305:11:129",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 61811,
        "nodeType": "ImportDirective",
        "src": "361:70:129",
        "nodes": [],
        "absolutePath": "src/protocol/libraries/math/PercentageMath.sol",
        "file": "../libraries/math/PercentageMath.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 62323,
        "sourceUnit": 55923,
        "symbolAliases": [
          {
            "foreign": {
              "id": 61810,
              "name": "PercentageMath",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 55922,
              "src": "370:14:129",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 61813,
        "nodeType": "ImportDirective",
        "src": "432:61:129",
        "nodes": [],
        "absolutePath": "src/protocol/libraries/types/DataTypes.sol",
        "file": "../libraries/types/DataTypes.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 62323,
        "sourceUnit": 56982,
        "symbolAliases": [
          {
            "foreign": {
              "id": 61812,
              "name": "DataTypes",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 56981,
              "src": "441:9:129",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 61815,
        "nodeType": "ImportDirective",
        "src": "494:57:129",
        "nodes": [],
        "absolutePath": "src/protocol/libraries/helpers/Errors.sol",
        "file": "../libraries/helpers/Errors.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 62323,
        "sourceUnit": 48479,
        "symbolAliases": [
          {
            "foreign": {
              "id": 61814,
              "name": "Errors",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 48478,
              "src": "503:6:129",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 61817,
        "nodeType": "ImportDirective",
        "src": "553:98:129",
        "nodes": [],
        "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol",
        "file": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 62323,
        "sourceUnit": 26137,
        "symbolAliases": [
          {
            "foreign": {
              "id": 61816,
              "name": "Initializable",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 26136,
              "src": "562:13:129",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 61819,
        "nodeType": "ImportDirective",
        "src": "652:107:129",
        "nodes": [],
        "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC721/ERC721Upgradeable.sol",
        "file": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 62323,
        "sourceUnit": 28502,
        "symbolAliases": [
          {
            "foreign": {
              "id": 61818,
              "name": "ERC721Upgradeable",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 28501,
              "src": "661:17:129",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 61821,
        "nodeType": "ImportDirective",
        "src": "760:104:129",
        "nodes": [],
        "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/utils/CountersUpgradeable.sol",
        "file": "@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 62323,
        "sourceUnit": 29063,
        "symbolAliases": [
          {
            "foreign": {
              "id": 61820,
              "name": "CountersUpgradeable",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 29062,
              "src": "769:19:129",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 61823,
        "nodeType": "ImportDirective",
        "src": "865:115:129",
        "nodes": [],
        "absolutePath": "lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol",
        "file": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 62323,
        "sourceUnit": 25895,
        "symbolAliases": [
          {
            "foreign": {
              "id": 61822,
              "name": "AccessControlUpgradeable",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 25894,
              "src": "874:24:129",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 61825,
        "nodeType": "ImportDirective",
        "src": "981:75:129",
        "nodes": [],
        "absolutePath": "lib/openzeppelin-contracts/contracts/utils/math/SafeMath.sol",
        "file": "@openzeppelin/contracts/utils/math/SafeMath.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 62323,
        "sourceUnit": 35410,
        "symbolAliases": [
          {
            "foreign": {
              "id": 61824,
              "name": "SafeMath",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 35409,
              "src": "990:8:129",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 62322,
        "nodeType": "ContractDefinition",
        "src": "1058:5722:129",
        "nodes": [
          {
            "id": 61836,
            "nodeType": "UsingForDirective",
            "src": "1179:27:129",
            "nodes": [],
            "global": false,
            "libraryName": {
              "id": 61834,
              "name": "SafeMath",
              "nameLocations": [
                "1185:8:129"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 35409,
              "src": "1185:8:129"
            },
            "typeName": {
              "id": 61835,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1198:7:129",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "id": 61839,
            "nodeType": "UsingForDirective",
            "src": "1211:33:129",
            "nodes": [],
            "global": false,
            "libraryName": {
              "id": 61837,
              "name": "PercentageMath",
              "nameLocations": [
                "1217:14:129"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 55922,
              "src": "1217:14:129"
            },
            "typeName": {
              "id": 61838,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1236:7:129",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "id": 61842,
            "nodeType": "VariableDeclaration",
            "src": "1254:42:129",
            "nodes": [],
            "constant": false,
            "mutability": "mutable",
            "name": "_addressProvider",
            "nameLocation": "1280:16:129",
            "scope": 62322,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IAddressProvider_$38799",
              "typeString": "contract IAddressProvider"
            },
            "typeName": {
              "id": 61841,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 61840,
                "name": "IAddressProvider",
                "nameLocations": [
                  "1254:16:129"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 38799,
                "src": "1254:16:129"
              },
              "referencedDeclaration": 38799,
              "src": "1254:16:129",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IAddressProvider_$38799",
                "typeString": "contract IAddressProvider"
              }
            },
            "visibility": "internal"
          },
          {
            "id": 61844,
            "nodeType": "VariableDeclaration",
            "src": "1302:31:129",
            "nodes": [],
            "constant": false,
            "mutability": "mutable",
            "name": "_isLiquidDelegate",
            "nameLocation": "1316:17:129",
            "scope": 62322,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 61843,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "1302:4:129",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "visibility": "internal"
          },
          {
            "id": 61846,
            "nodeType": "VariableDeclaration",
            "src": "1340:21:129",
            "nodes": [],
            "constant": false,
            "functionSelector": "6c0360eb",
            "mutability": "mutable",
            "name": "baseURI",
            "nameLocation": "1354:7:129",
            "scope": 62322,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 61845,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1340:6:129",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "visibility": "public"
          },
          {
            "id": 61848,
            "nodeType": "VariableDeclaration",
            "src": "1368:30:129",
            "nodes": [],
            "constant": false,
            "mutability": "mutable",
            "name": "_minPercentageIncrease",
            "nameLocation": "1376:22:129",
            "scope": 62322,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 61847,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1368:7:129",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "internal"
          },
          {
            "id": 61852,
            "nodeType": "VariableDeclaration",
            "src": "1429:40:129",
            "nodes": [],
            "constant": false,
            "functionSelector": "e1ec3c68",
            "mutability": "mutable",
            "name": "loans",
            "nameLocation": "1464:5:129",
            "scope": 62322,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
              "typeString": "mapping(uint256 => uint256)"
            },
            "typeName": {
              "id": 61851,
              "keyType": {
                "id": 61849,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1437:7:129",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "1429:27:129",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                "typeString": "mapping(uint256 => uint256)"
              },
              "valueType": {
                "id": 61850,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1448:7:129",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "visibility": "public"
          },
          {
            "id": 61856,
            "nodeType": "VariableDeclaration",
            "src": "1497:43:129",
            "nodes": [],
            "constant": false,
            "functionSelector": "c5f68b8b",
            "mutability": "mutable",
            "name": "lockBids",
            "nameLocation": "1532:8:129",
            "scope": 62322,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
              "typeString": "mapping(uint256 => uint256)"
            },
            "typeName": {
              "id": 61855,
              "keyType": {
                "id": 61853,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1505:7:129",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "1497:27:129",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                "typeString": "mapping(uint256 => uint256)"
              },
              "valueType": {
                "id": 61854,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1516:7:129",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "visibility": "public"
          },
          {
            "id": 61860,
            "nodeType": "VariableDeclaration",
            "src": "1570:45:129",
            "nodes": [],
            "constant": false,
            "functionSelector": "6e27d889",
            "mutability": "mutable",
            "name": "lockTokens",
            "nameLocation": "1605:10:129",
            "scope": 62322,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
              "typeString": "mapping(uint256 => address)"
            },
            "typeName": {
              "id": 61859,
              "keyType": {
                "id": 61857,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1578:7:129",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "1570:27:129",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                "typeString": "mapping(uint256 => address)"
              },
              "valueType": {
                "id": 61858,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1589:7:129",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "visibility": "public"
          },
          {
            "id": 61901,
            "nodeType": "FunctionDefinition",
            "src": "1622:506:129",
            "nodes": [],
            "body": {
              "id": 61900,
              "nodeType": "Block",
              "src": "1875:253:129",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 61878,
                        "name": "_name",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 61866,
                        "src": "1899:5:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 61879,
                        "name": "_symbol",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 61868,
                        "src": "1906:7:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 61877,
                      "name": "__ERC721_init",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27596,
                      "src": "1885:13:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory,string memory)"
                      }
                    },
                    "id": 61880,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1885:29:129",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 61881,
                  "nodeType": "ExpressionStatement",
                  "src": "1885:29:129"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 61883,
                        "name": "_customBaseURI",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 61870,
                        "src": "1936:14:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 61882,
                      "name": "_setBaseURI",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 62321,
                      "src": "1924:11:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory)"
                      }
                    },
                    "id": 61884,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1924:27:129",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 61885,
                  "nodeType": "ExpressionStatement",
                  "src": "1924:27:129"
                },
                {
                  "expression": {
                    "id": 61890,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 61886,
                      "name": "_addressProvider",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 61842,
                      "src": "1961:16:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IAddressProvider_$38799",
                        "typeString": "contract IAddressProvider"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 61888,
                          "name": "_addressProvider_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 61862,
                          "src": "1997:17:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 61887,
                        "name": "IAddressProvider",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 38799,
                        "src": "1980:16:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IAddressProvider_$38799_$",
                          "typeString": "type(contract IAddressProvider)"
                        }
                      },
                      "id": 61889,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1980:35:129",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IAddressProvider_$38799",
                        "typeString": "contract IAddressProvider"
                      }
                    },
                    "src": "1961:54:129",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IAddressProvider_$38799",
                      "typeString": "contract IAddressProvider"
                    }
                  },
                  "id": 61891,
                  "nodeType": "ExpressionStatement",
                  "src": "1961:54:129"
                },
                {
                  "expression": {
                    "id": 61894,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 61892,
                      "name": "_isLiquidDelegate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 61844,
                      "src": "2025:17:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 61893,
                      "name": "_isLiquidDelegate_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 61864,
                      "src": "2045:18:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "2025:38:129",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 61895,
                  "nodeType": "ExpressionStatement",
                  "src": "2025:38:129"
                },
                {
                  "expression": {
                    "id": 61898,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 61896,
                      "name": "_minPercentageIncrease",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 61848,
                      "src": "2073:22:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 61897,
                      "name": "_minPercentageIncrease_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 61872,
                      "src": "2098:23:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2073:48:129",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 61899,
                  "nodeType": "ExpressionStatement",
                  "src": "2073:48:129"
                }
              ]
            },
            "functionSelector": "01ac88af",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 61875,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 61874,
                  "name": "initializer",
                  "nameLocations": [
                    "1863:11:129"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 26038,
                  "src": "1863:11:129"
                },
                "nodeType": "ModifierInvocation",
                "src": "1863:11:129"
              }
            ],
            "name": "initialize",
            "nameLocation": "1631:10:129",
            "parameters": {
              "id": 61873,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 61862,
                  "mutability": "mutable",
                  "name": "_addressProvider_",
                  "nameLocation": "1659:17:129",
                  "nodeType": "VariableDeclaration",
                  "scope": 61901,
                  "src": "1651:25:129",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 61861,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1651:7:129",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 61864,
                  "mutability": "mutable",
                  "name": "_isLiquidDelegate_",
                  "nameLocation": "1692:18:129",
                  "nodeType": "VariableDeclaration",
                  "scope": 61901,
                  "src": "1687:23:129",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 61863,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1687:4:129",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 61866,
                  "mutability": "mutable",
                  "name": "_name",
                  "nameLocation": "1734:5:129",
                  "nodeType": "VariableDeclaration",
                  "scope": 61901,
                  "src": "1720:19:129",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 61865,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1720:6:129",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 61868,
                  "mutability": "mutable",
                  "name": "_symbol",
                  "nameLocation": "1763:7:129",
                  "nodeType": "VariableDeclaration",
                  "scope": 61901,
                  "src": "1749:21:129",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 61867,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1749:6:129",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 61870,
                  "mutability": "mutable",
                  "name": "_customBaseURI",
                  "nameLocation": "1794:14:129",
                  "nodeType": "VariableDeclaration",
                  "scope": 61901,
                  "src": "1780:28:129",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 61869,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1780:6:129",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 61872,
                  "mutability": "mutable",
                  "name": "_minPercentageIncrease_",
                  "nameLocation": "1826:23:129",
                  "nodeType": "VariableDeclaration",
                  "scope": 61901,
                  "src": "1818:31:129",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 61871,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1818:7:129",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1641:214:129"
            },
            "returnParameters": {
              "id": 61876,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1875:0:129"
            },
            "scope": 62322,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 61916,
            "nodeType": "ModifierDefinition",
            "src": "2134:152:129",
            "nodes": [],
            "body": {
              "id": 61915,
              "nodeType": "Block",
              "src": "2161:125:129",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 61909,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 61904,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28973,
                            "src": "2179:10:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                              "typeString": "function () view returns (address)"
                            }
                          },
                          "id": 61905,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2179:12:129",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 61906,
                              "name": "_addressProvider",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 61842,
                              "src": "2195:16:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IAddressProvider_$38799",
                                "typeString": "contract IAddressProvider"
                              }
                            },
                            "id": 61907,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "2212:14:129",
                            "memberName": "getLendingPool",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 38618,
                            "src": "2195:31:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                              "typeString": "function () view external returns (address)"
                            }
                          },
                          "id": 61908,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2195:33:129",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2179:49:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "expression": {
                          "id": 61910,
                          "name": "Errors",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 48478,
                          "src": "2230:6:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Errors_$48478_$",
                            "typeString": "type(library Errors)"
                          }
                        },
                        "id": 61911,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "2237:30:129",
                        "memberName": "CT_CALLER_MUST_BE_LENDING_POOL",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 48378,
                        "src": "2230:37:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 61903,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2171:7:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 61912,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2171:97:129",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 61913,
                  "nodeType": "ExpressionStatement",
                  "src": "2171:97:129"
                },
                {
                  "id": 61914,
                  "nodeType": "PlaceholderStatement",
                  "src": "2278:1:129"
                }
              ]
            },
            "name": "onlyLendingPool",
            "nameLocation": "2143:15:129",
            "parameters": {
              "id": 61902,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2158:2:129"
            },
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 61931,
            "nodeType": "ModifierDefinition",
            "src": "2292:150:129",
            "nodes": [],
            "body": {
              "id": 61930,
              "nodeType": "Block",
              "src": "2320:122:129",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 61924,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 61919,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28973,
                            "src": "2338:10:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                              "typeString": "function () view returns (address)"
                            }
                          },
                          "id": 61920,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2338:12:129",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 61921,
                              "name": "_addressProvider",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 61842,
                              "src": "2354:16:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IAddressProvider_$38799",
                                "typeString": "contract IAddressProvider"
                              }
                            },
                            "id": 61922,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "2371:15:129",
                            "memberName": "getConfigurator",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 38628,
                            "src": "2354:32:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                              "typeString": "function () view external returns (address)"
                            }
                          },
                          "id": 61923,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2354:34:129",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2338:50:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "expression": {
                          "id": 61925,
                          "name": "Errors",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 48478,
                          "src": "2390:6:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Errors_$48478_$",
                            "typeString": "type(library Errors)"
                          }
                        },
                        "id": 61926,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "2397:26:129",
                        "memberName": "LP_CALLER_NOT_CONFIGURATOR",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 48276,
                        "src": "2390:33:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 61918,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2330:7:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 61927,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2330:94:129",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 61928,
                  "nodeType": "ExpressionStatement",
                  "src": "2330:94:129"
                },
                {
                  "id": 61929,
                  "nodeType": "PlaceholderStatement",
                  "src": "2434:1:129"
                }
              ]
            },
            "name": "onlyConfigurator",
            "nameLocation": "2301:16:129",
            "parameters": {
              "id": 61917,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2317:2:129"
            },
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 61996,
            "nodeType": "FunctionDefinition",
            "src": "2448:691:129",
            "nodes": [],
            "body": {
              "id": 61995,
              "nodeType": "Block",
              "src": "2544:595:129",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 61946,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 61943,
                            "name": "_data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 61937,
                            "src": "2562:5:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 61944,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "2568:6:129",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "2562:12:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "hexValue": "30",
                          "id": 61945,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2577:1:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "2562:16:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "652f646174612d6d697373696e672d6c6f616e4964",
                        "id": 61947,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2580:23:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5065fda8089c080c8da204d1aca5a715d242ae61d981ed8899ae234512a253cb",
                          "typeString": "literal_string \"e/data-missing-loanId\""
                        },
                        "value": "e/data-missing-loanId"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_5065fda8089c080c8da204d1aca5a715d242ae61d981ed8899ae234512a253cb",
                          "typeString": "literal_string \"e/data-missing-loanId\""
                        }
                      ],
                      "id": 61942,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2554:7:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 61948,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2554:50:129",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 61949,
                  "nodeType": "ExpressionStatement",
                  "src": "2554:50:129"
                },
                {
                  "assignments": [
                    61951,
                    61953,
                    61955
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 61951,
                      "mutability": "mutable",
                      "name": "collateral",
                      "nameLocation": "2636:10:129",
                      "nodeType": "VariableDeclaration",
                      "scope": 61995,
                      "src": "2628:18:129",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 61950,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2628:7:129",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 61953,
                      "mutability": "mutable",
                      "name": "tokenId",
                      "nameLocation": "2668:7:129",
                      "nodeType": "VariableDeclaration",
                      "scope": 61995,
                      "src": "2660:15:129",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 61952,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2660:7:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 61955,
                      "mutability": "mutable",
                      "name": "loanId",
                      "nameLocation": "2697:6:129",
                      "nodeType": "VariableDeclaration",
                      "scope": 61995,
                      "src": "2689:14:129",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 61954,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2689:7:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 61967,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 61958,
                        "name": "_data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 61937,
                        "src": "2728:5:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "id": 61960,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2736:7:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 61959,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2736:7:129",
                              "typeDescriptions": {}
                            }
                          },
                          {
                            "id": 61962,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2745:7:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 61961,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2745:7:129",
                              "typeDescriptions": {}
                            }
                          },
                          {
                            "id": 61964,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2754:7:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 61963,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2754:7:129",
                              "typeDescriptions": {}
                            }
                          }
                        ],
                        "id": 61965,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "2735:27:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$",
                          "typeString": "tuple(type(address),type(uint256),type(uint256))"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$",
                          "typeString": "tuple(type(address),type(uint256),type(uint256))"
                        }
                      ],
                      "expression": {
                        "id": 61956,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "2717:3:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 61957,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "2721:6:129",
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "2717:10:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 61966,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2717:46:129",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_address_payable_$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(address payable,uint256,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2614:149:129"
                },
                {
                  "expression": {
                    "id": 61972,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 61968,
                        "name": "loans",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 61852,
                        "src": "2773:5:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 61970,
                      "indexExpression": {
                        "id": 61969,
                        "name": "_tokenizedId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 61935,
                        "src": "2779:12:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2773:19:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 61971,
                      "name": "loanId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 61955,
                      "src": "2795:6:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2773:28:129",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 61973,
                  "nodeType": "ExpressionStatement",
                  "src": "2773:28:129"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 61975,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 61933,
                        "src": "2822:5:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 61976,
                        "name": "_tokenizedId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 61935,
                        "src": "2829:12:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 61977,
                        "name": "_data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 61937,
                        "src": "2843:5:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 61974,
                      "name": "_safeMint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        28046,
                        28075
                      ],
                      "referencedDeclaration": 28075,
                      "src": "2812:9:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,uint256,bytes memory)"
                      }
                    },
                    "id": 61978,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2812:37:129",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 61979,
                  "nodeType": "ExpressionStatement",
                  "src": "2812:37:129"
                },
                {
                  "condition": {
                    "id": 61980,
                    "name": "_isLiquidDelegate",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 61844,
                    "src": "2864:17:129",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 61994,
                  "nodeType": "IfStatement",
                  "src": "2860:273:129",
                  "trueBody": {
                    "id": 61993,
                    "nodeType": "Block",
                    "src": "2883:250:129",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 61987,
                              "name": "_user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 61933,
                              "src": "3028:5:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 61988,
                              "name": "collateral",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 61951,
                              "src": "3051:10:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 61989,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 61953,
                              "src": "3079:7:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "74727565",
                              "id": 61990,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3104:4:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "id": 61982,
                                      "name": "_addressProvider",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 61842,
                                      "src": "2952:16:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IAddressProvider_$38799",
                                        "typeString": "contract IAddressProvider"
                                      }
                                    },
                                    "id": 61983,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "2969:21:129",
                                    "memberName": "getDelegationRegistry",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 38763,
                                    "src": "2952:38:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                      "typeString": "function () view external returns (address)"
                                    }
                                  },
                                  "id": 61984,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2952:40:129",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 61981,
                                "name": "IDelegationRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 38391,
                                "src": "2932:19:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IDelegationRegistry_$38391_$",
                                  "typeString": "type(contract IDelegationRegistry)"
                                }
                              },
                              "id": 61985,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2932:61:129",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IDelegationRegistry_$38391",
                                "typeString": "contract IDelegationRegistry"
                              }
                            },
                            "id": 61986,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "2994:16:129",
                            "memberName": "delegateForToken",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 38275,
                            "src": "2932:78:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,uint256,bool) external"
                            }
                          },
                          "id": 61991,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2932:190:129",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 61992,
                        "nodeType": "ExpressionStatement",
                        "src": "2932:190:129"
                      }
                    ]
                  }
                }
              ]
            },
            "baseFunctions": [
              40754
            ],
            "functionSelector": "94d008ef",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 61940,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 61939,
                  "name": "onlyLendingPool",
                  "nameLocations": [
                    "2528:15:129"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 61916,
                  "src": "2528:15:129"
                },
                "nodeType": "ModifierInvocation",
                "src": "2528:15:129"
              }
            ],
            "name": "mint",
            "nameLocation": "2457:4:129",
            "parameters": {
              "id": 61938,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 61933,
                  "mutability": "mutable",
                  "name": "_user",
                  "nameLocation": "2470:5:129",
                  "nodeType": "VariableDeclaration",
                  "scope": 61996,
                  "src": "2462:13:129",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 61932,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2462:7:129",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 61935,
                  "mutability": "mutable",
                  "name": "_tokenizedId",
                  "nameLocation": "2485:12:129",
                  "nodeType": "VariableDeclaration",
                  "scope": 61996,
                  "src": "2477:20:129",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 61934,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2477:7:129",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 61937,
                  "mutability": "mutable",
                  "name": "_data",
                  "nameLocation": "2512:5:129",
                  "nodeType": "VariableDeclaration",
                  "scope": 61996,
                  "src": "2499:18:129",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 61936,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2499:5:129",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2461:57:129"
            },
            "returnParameters": {
              "id": 61941,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2544:0:129"
            },
            "scope": 62322,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 62058,
            "nodeType": "FunctionDefinition",
            "src": "3145:543:129",
            "nodes": [],
            "body": {
              "id": 62057,
              "nodeType": "Block",
              "src": "3186:502:129",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    62002
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 62002,
                      "mutability": "mutable",
                      "name": "lendingPool",
                      "nameLocation": "3204:11:129",
                      "nodeType": "VariableDeclaration",
                      "scope": 62057,
                      "src": "3196:19:129",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 62001,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3196:7:129",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 62006,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "id": 62003,
                        "name": "_addressProvider",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 61842,
                        "src": "3218:16:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAddressProvider_$38799",
                          "typeString": "contract IAddressProvider"
                        }
                      },
                      "id": 62004,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "3235:14:129",
                      "memberName": "getLendingPool",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 38618,
                      "src": "3218:31:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                        "typeString": "function () view external returns (address)"
                      }
                    },
                    "id": 62005,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3218:33:129",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3196:55:129"
                },
                {
                  "expression": {
                    "id": 62010,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "3262:22:129",
                    "subExpression": {
                      "baseExpression": {
                        "id": 62007,
                        "name": "loans",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 61852,
                        "src": "3269:5:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 62009,
                      "indexExpression": {
                        "id": 62008,
                        "name": "_tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 61998,
                        "src": "3275:8:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3269:15:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 62011,
                  "nodeType": "ExpressionStatement",
                  "src": "3262:22:129"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 62013,
                        "name": "_tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 61998,
                        "src": "3300:8:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 62012,
                      "name": "_burn",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 28219,
                      "src": "3294:5:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 62014,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3294:15:129",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 62015,
                  "nodeType": "ExpressionStatement",
                  "src": "3294:15:129"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 62020,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "baseExpression": {
                        "id": 62016,
                        "name": "lockBids",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 61856,
                        "src": "3324:8:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 62018,
                      "indexExpression": {
                        "id": 62017,
                        "name": "_tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 61998,
                        "src": "3333:8:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "3324:18:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 62019,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3346:1:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "3324:23:129",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 62056,
                  "nodeType": "IfStatement",
                  "src": "3320:362:129",
                  "trueBody": {
                    "id": 62055,
                    "nodeType": "Block",
                    "src": "3349:333:129",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 62027,
                                "name": "lockTokens",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 61860,
                                "src": "3454:10:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                  "typeString": "mapping(uint256 => address)"
                                }
                              },
                              "id": 62029,
                              "indexExpression": {
                                "id": 62028,
                                "name": "_tokenId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 61998,
                                "src": "3465:8:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3454:20:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 62032,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "3500:4:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Redeemable_$62322",
                                    "typeString": "contract Redeemable"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_Redeemable_$62322",
                                    "typeString": "contract Redeemable"
                                  }
                                ],
                                "id": 62031,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3492:7:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 62030,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3492:7:129",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 62033,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3492:13:129",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 62034,
                              "name": "lendingPool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 62002,
                              "src": "3523:11:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 62035,
                                "name": "lockBids",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 61856,
                                "src": "3552:8:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                  "typeString": "mapping(uint256 => uint256)"
                                }
                              },
                              "id": 62037,
                              "indexExpression": {
                                "id": 62036,
                                "name": "_tokenId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 61998,
                                "src": "3561:8:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3552:18:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "id": 62022,
                                      "name": "_addressProvider",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 61842,
                                      "src": "3382:16:129",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IAddressProvider_$38799",
                                        "typeString": "contract IAddressProvider"
                                      }
                                    },
                                    "id": 62023,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "3399:20:129",
                                    "memberName": "getExecutionDelegate",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 38548,
                                    "src": "3382:37:129",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                      "typeString": "function () view external returns (address)"
                                    }
                                  },
                                  "id": 62024,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3382:39:129",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 62021,
                                "name": "IExecutionDelegate",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 39517,
                                "src": "3363:18:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IExecutionDelegate_$39517_$",
                                  "typeString": "type(contract IExecutionDelegate)"
                                }
                              },
                              "id": 62025,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3363:59:129",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IExecutionDelegate_$39517",
                                "typeString": "contract IExecutionDelegate"
                              }
                            },
                            "id": 62026,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "3423:13:129",
                            "memberName": "transferERC20",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 39516,
                            "src": "3363:73:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256) external"
                            }
                          },
                          "id": 62038,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3363:221:129",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 62039,
                        "nodeType": "ExpressionStatement",
                        "src": "3363:221:129"
                      },
                      {
                        "expression": {
                          "id": 62044,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 62040,
                              "name": "lockBids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 61856,
                              "src": "3602:8:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 62042,
                            "indexExpression": {
                              "id": 62041,
                              "name": "_tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 61998,
                              "src": "3611:8:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3602:18:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "30",
                            "id": 62043,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3623:1:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3602:22:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 62045,
                        "nodeType": "ExpressionStatement",
                        "src": "3602:22:129"
                      },
                      {
                        "expression": {
                          "id": 62053,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 62046,
                              "name": "lockTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 61860,
                              "src": "3638:10:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            "id": 62048,
                            "indexExpression": {
                              "id": 62047,
                              "name": "_tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 61998,
                              "src": "3649:8:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3638:20:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 62051,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3669:1:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 62050,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3661:7:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 62049,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "3661:7:129",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 62052,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3661:10:129",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "3638:33:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 62054,
                        "nodeType": "ExpressionStatement",
                        "src": "3638:33:129"
                      }
                    ]
                  }
                }
              ]
            },
            "baseFunctions": [
              40759
            ],
            "functionSelector": "42966c68",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "burn",
            "nameLocation": "3154:4:129",
            "parameters": {
              "id": 61999,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 61998,
                  "mutability": "mutable",
                  "name": "_tokenId",
                  "nameLocation": "3167:8:129",
                  "nodeType": "VariableDeclaration",
                  "scope": 62058,
                  "src": "3159:16:129",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 61997,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3159:7:129",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3158:18:129"
            },
            "returnParameters": {
              "id": 62000,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3186:0:129"
            },
            "scope": 62322,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 62062,
            "nodeType": "FunctionDefinition",
            "src": "3694:92:129",
            "nodes": [],
            "body": {
              "id": 62061,
              "nodeType": "Block",
              "src": "3720:66:129",
              "nodes": [],
              "statements": []
            },
            "functionSelector": "4e71d92d",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "claim",
            "nameLocation": "3703:5:129",
            "parameters": {
              "id": 62059,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3708:2:129"
            },
            "returnParameters": {
              "id": 62060,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3720:0:129"
            },
            "scope": 62322,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 62074,
            "nodeType": "FunctionDefinition",
            "src": "3792:121:129",
            "nodes": [],
            "body": {
              "id": 62073,
              "nodeType": "Block",
              "src": "3868:45:129",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 62070,
                        "name": "_customBaseURI",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 62064,
                        "src": "3891:14:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 62069,
                      "name": "_setBaseURI",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 62321,
                      "src": "3879:11:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory)"
                      }
                    },
                    "id": 62071,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3879:27:129",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 62072,
                  "nodeType": "ExpressionStatement",
                  "src": "3879:27:129"
                }
              ]
            },
            "baseFunctions": [
              40771
            ],
            "functionSelector": "55f804b3",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 62067,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 62066,
                  "name": "onlyConfigurator",
                  "nameLocations": [
                    "3851:16:129"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 61931,
                  "src": "3851:16:129"
                },
                "nodeType": "ModifierInvocation",
                "src": "3851:16:129"
              }
            ],
            "name": "setBaseURI",
            "nameLocation": "3801:10:129",
            "parameters": {
              "id": 62065,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 62064,
                  "mutability": "mutable",
                  "name": "_customBaseURI",
                  "nameLocation": "3826:14:129",
                  "nodeType": "VariableDeclaration",
                  "scope": 62074,
                  "src": "3812:28:129",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 62063,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3812:6:129",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3811:30:129"
            },
            "returnParameters": {
              "id": 62068,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3868:0:129"
            },
            "scope": 62322,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 62086,
            "nodeType": "FunctionDefinition",
            "src": "3922:102:129",
            "nodes": [],
            "body": {
              "id": 62085,
              "nodeType": "Block",
              "src": "3983:41:129",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 62082,
                        "name": "_tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 62076,
                        "src": "4008:8:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 62081,
                      "name": "_exists",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27997,
                      "src": "4000:7:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (uint256) view returns (bool)"
                      }
                    },
                    "id": 62083,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4000:17:129",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 62080,
                  "id": 62084,
                  "nodeType": "Return",
                  "src": "3993:24:129"
                }
              ]
            },
            "baseFunctions": [
              40766
            ],
            "functionSelector": "4f558e79",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "exists",
            "nameLocation": "3931:6:129",
            "parameters": {
              "id": 62077,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 62076,
                  "mutability": "mutable",
                  "name": "_tokenId",
                  "nameLocation": "3946:8:129",
                  "nodeType": "VariableDeclaration",
                  "scope": 62086,
                  "src": "3938:16:129",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 62075,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3938:7:129",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3937:18:129"
            },
            "returnParameters": {
              "id": 62080,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 62079,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 62086,
                  "src": "3977:4:129",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 62078,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3977:4:129",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3976:6:129"
            },
            "scope": 62322,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 62154,
            "nodeType": "FunctionDefinition",
            "src": "4030:706:129",
            "nodes": [],
            "body": {
              "id": 62153,
              "nodeType": "Block",
              "src": "4199:537:129",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    62100
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 62100,
                      "mutability": "mutable",
                      "name": "lendingPool",
                      "nameLocation": "4217:11:129",
                      "nodeType": "VariableDeclaration",
                      "scope": 62153,
                      "src": "4209:19:129",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 62099,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4209:7:129",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 62104,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "id": 62101,
                        "name": "_addressProvider",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 61842,
                        "src": "4231:16:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAddressProvider_$38799",
                          "typeString": "contract IAddressProvider"
                        }
                      },
                      "id": 62102,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "4248:14:129",
                      "memberName": "getLendingPool",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 38618,
                      "src": "4231:31:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                        "typeString": "function () view external returns (address)"
                      }
                    },
                    "id": 62103,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4231:33:129",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4209:55:129"
                },
                {
                  "assignments": [
                    62106
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 62106,
                      "mutability": "mutable",
                      "name": "executionDelegate",
                      "nameLocation": "4282:17:129",
                      "nodeType": "VariableDeclaration",
                      "scope": 62153,
                      "src": "4274:25:129",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 62105,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4274:7:129",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 62110,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "id": 62107,
                        "name": "_addressProvider",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 61842,
                        "src": "4302:16:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAddressProvider_$38799",
                          "typeString": "contract IAddressProvider"
                        }
                      },
                      "id": 62108,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "4319:20:129",
                      "memberName": "getExecutionDelegate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 38548,
                      "src": "4302:37:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                        "typeString": "function () view external returns (address)"
                      }
                    },
                    "id": 62109,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4302:39:129",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4274:67:129"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 62116,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "id": 62113,
                              "name": "_tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 62094,
                              "src": "4368:8:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 62112,
                            "name": "ownerOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27697,
                            "src": "4360:7:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (uint256) view returns (address)"
                            }
                          },
                          "id": 62114,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4360:17:129",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "id": 62115,
                          "name": "lendingPool",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 62100,
                          "src": "4381:11:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "4360:32:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "652f616c72656164792d6c6f636b426964",
                        "id": 62117,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4394:19:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7769cfc736ada63ab878cbe3ae895c349118af32fa2b3e94b4d333b9804597a2",
                          "typeString": "literal_string \"e/already-lockBid\""
                        },
                        "value": "e/already-lockBid"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_7769cfc736ada63ab878cbe3ae895c349118af32fa2b3e94b4d333b9804597a2",
                          "typeString": "literal_string \"e/already-lockBid\""
                        }
                      ],
                      "id": 62111,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "4352:7:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 62118,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4352:62:129",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 62119,
                  "nodeType": "ExpressionStatement",
                  "src": "4352:62:129"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 62124,
                        "name": "_token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 62090,
                        "src": "4489:6:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 62125,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 62088,
                        "src": "4509:5:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 62128,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "4536:4:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Redeemable_$62322",
                              "typeString": "contract Redeemable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Redeemable_$62322",
                              "typeString": "contract Redeemable"
                            }
                          ],
                          "id": 62127,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4528:7:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 62126,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4528:7:129",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 62129,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4528:13:129",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 62130,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 62092,
                        "src": "4555:7:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "arguments": [
                          {
                            "id": 62121,
                            "name": "executionDelegate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 62106,
                            "src": "4443:17:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 62120,
                          "name": "IExecutionDelegate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 39517,
                          "src": "4424:18:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IExecutionDelegate_$39517_$",
                            "typeString": "type(contract IExecutionDelegate)"
                          }
                        },
                        "id": 62122,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4424:37:129",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IExecutionDelegate_$39517",
                          "typeString": "contract IExecutionDelegate"
                        }
                      },
                      "id": 62123,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "4462:13:129",
                      "memberName": "transferERC20",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 39516,
                      "src": "4424:51:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,address,uint256) external"
                      }
                    },
                    "id": 62131,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4424:148:129",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 62132,
                  "nodeType": "ExpressionStatement",
                  "src": "4424:148:129"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "id": 62134,
                            "name": "_addressProvider",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 61842,
                            "src": "4601:16:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IAddressProvider_$38799",
                              "typeString": "contract IAddressProvider"
                            }
                          },
                          "id": 62135,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "4618:14:129",
                          "memberName": "getLendingPool",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 38618,
                          "src": "4601:31:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                            "typeString": "function () view external returns (address)"
                          }
                        },
                        "id": 62136,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4601:33:129",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 62137,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 62088,
                        "src": "4636:5:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 62138,
                        "name": "_tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 62094,
                        "src": "4643:8:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 62133,
                      "name": "_transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 28304,
                      "src": "4591:9:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 62139,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4591:61:129",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 62140,
                  "nodeType": "ExpressionStatement",
                  "src": "4591:61:129"
                },
                {
                  "expression": {
                    "id": 62145,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 62141,
                        "name": "lockBids",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 61856,
                        "src": "4662:8:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 62143,
                      "indexExpression": {
                        "id": 62142,
                        "name": "_tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 62094,
                        "src": "4671:8:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "4662:18:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 62144,
                      "name": "_amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 62092,
                      "src": "4683:7:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4662:28:129",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 62146,
                  "nodeType": "ExpressionStatement",
                  "src": "4662:28:129"
                },
                {
                  "expression": {
                    "id": 62151,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 62147,
                        "name": "lockTokens",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 61860,
                        "src": "4700:10:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        }
                      },
                      "id": 62149,
                      "indexExpression": {
                        "id": 62148,
                        "name": "_tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 62094,
                        "src": "4711:8:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "4700:20:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 62150,
                      "name": "_token",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 62090,
                      "src": "4723:6:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "4700:29:129",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 62152,
                  "nodeType": "ExpressionStatement",
                  "src": "4700:29:129"
                }
              ]
            },
            "functionSelector": "03ac5d7b",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 62097,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 62096,
                  "name": "onlyLendingPool",
                  "nameLocations": [
                    "4178:15:129"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 61916,
                  "src": "4178:15:129"
                },
                "nodeType": "ModifierInvocation",
                "src": "4178:15:129"
              }
            ],
            "name": "lockBid",
            "nameLocation": "4039:7:129",
            "parameters": {
              "id": 62095,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 62088,
                  "mutability": "mutable",
                  "name": "_user",
                  "nameLocation": "4064:5:129",
                  "nodeType": "VariableDeclaration",
                  "scope": 62154,
                  "src": "4056:13:129",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 62087,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4056:7:129",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 62090,
                  "mutability": "mutable",
                  "name": "_token",
                  "nameLocation": "4087:6:129",
                  "nodeType": "VariableDeclaration",
                  "scope": 62154,
                  "src": "4079:14:129",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 62089,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4079:7:129",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 62092,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nameLocation": "4112:7:129",
                  "nodeType": "VariableDeclaration",
                  "scope": 62154,
                  "src": "4104:15:129",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 62091,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4104:7:129",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 62094,
                  "mutability": "mutable",
                  "name": "_tokenId",
                  "nameLocation": "4137:8:129",
                  "nodeType": "VariableDeclaration",
                  "scope": 62154,
                  "src": "4129:16:129",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 62093,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4129:7:129",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4046:105:129"
            },
            "returnParameters": {
              "id": 62098,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4199:0:129"
            },
            "scope": 62322,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 62266,
            "nodeType": "FunctionDefinition",
            "src": "4742:1318:129",
            "nodes": [],
            "body": {
              "id": 62265,
              "nodeType": "Block",
              "src": "4918:1142:129",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    62168
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 62168,
                      "mutability": "mutable",
                      "name": "lendingPool",
                      "nameLocation": "4936:11:129",
                      "nodeType": "VariableDeclaration",
                      "scope": 62265,
                      "src": "4928:19:129",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 62167,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4928:7:129",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 62172,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "id": 62169,
                        "name": "_addressProvider",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 61842,
                        "src": "4950:16:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAddressProvider_$38799",
                          "typeString": "contract IAddressProvider"
                        }
                      },
                      "id": 62170,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "4967:14:129",
                      "memberName": "getLendingPool",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 38618,
                      "src": "4950:31:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                        "typeString": "function () view external returns (address)"
                      }
                    },
                    "id": 62171,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4950:33:129",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4928:55:129"
                },
                {
                  "assignments": [
                    62174
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 62174,
                      "mutability": "mutable",
                      "name": "minLockBid",
                      "nameLocation": "5001:10:129",
                      "nodeType": "VariableDeclaration",
                      "scope": 62265,
                      "src": "4993:18:129",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 62173,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4993:7:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 62185,
                  "initialValue": {
                    "arguments": [
                      {
                        "baseExpression": {
                          "id": 62177,
                          "name": "lockBids",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 61856,
                          "src": "5040:8:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                            "typeString": "mapping(uint256 => uint256)"
                          }
                        },
                        "id": 62179,
                        "indexExpression": {
                          "id": 62178,
                          "name": "_tokenId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 62162,
                          "src": "5049:8:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5040:18:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 62183,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 62180,
                            "name": "PercentageMath",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 55922,
                            "src": "5060:14:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_PercentageMath_$55922_$",
                              "typeString": "type(library PercentageMath)"
                            }
                          },
                          "id": 62181,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "5075:17:129",
                          "memberName": "PERCENTAGE_FACTOR",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 55805,
                          "src": "5060:32:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "id": 62182,
                          "name": "_minPercentageIncrease",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 61848,
                          "src": "5095:22:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5060:57:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 62175,
                        "name": "PercentageMath",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 55922,
                        "src": "5014:14:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_PercentageMath_$55922_$",
                          "typeString": "type(library PercentageMath)"
                        }
                      },
                      "id": 62176,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "5029:10:129",
                      "memberName": "percentMul",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 55870,
                      "src": "5014:25:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 62184,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5014:104:129",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4993:125:129"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 62191,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "id": 62188,
                              "name": "_tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 62162,
                              "src": "5153:8:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 62187,
                            "name": "ownerOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27697,
                            "src": "5145:7:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (uint256) view returns (address)"
                            }
                          },
                          "id": 62189,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5145:17:129",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "id": 62190,
                          "name": "lendingPool",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 62168,
                          "src": "5166:11:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "5145:32:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "652f6e6f742d6c6f636b426964",
                        "id": 62192,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5179:15:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b5678981f35edd83b1a737e831b54042ee97cc2b66108fa3401629dc0a6d096b",
                          "typeString": "literal_string \"e/not-lockBid\""
                        },
                        "value": "e/not-lockBid"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b5678981f35edd83b1a737e831b54042ee97cc2b66108fa3401629dc0a6d096b",
                          "typeString": "literal_string \"e/not-lockBid\""
                        }
                      ],
                      "id": 62186,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "5137:7:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 62193,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5137:58:129",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 62194,
                  "nodeType": "ExpressionStatement",
                  "src": "5137:58:129"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 62198,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 62196,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 62160,
                          "src": "5213:7:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "id": 62197,
                          "name": "minLockBid",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 62174,
                          "src": "5223:10:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5213:20:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "652f696e73756666696369656e742d6c6f636b426964",
                        "id": 62199,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5235:24:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_596d24e5f0858db0696971e51888e4915f07b2216c30c6dde6c0434caa8e7d1c",
                          "typeString": "literal_string \"e/insufficient-lockBid\""
                        },
                        "value": "e/insufficient-lockBid"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_596d24e5f0858db0696971e51888e4915f07b2216c30c6dde6c0434caa8e7d1c",
                          "typeString": "literal_string \"e/insufficient-lockBid\""
                        }
                      ],
                      "id": 62195,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "5205:7:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 62200,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5205:55:129",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 62201,
                  "nodeType": "ExpressionStatement",
                  "src": "5205:55:129"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 62207,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 62203,
                          "name": "_token",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 62158,
                          "src": "5278:6:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "baseExpression": {
                            "id": 62204,
                            "name": "lockTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 61860,
                            "src": "5288:10:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                              "typeString": "mapping(uint256 => address)"
                            }
                          },
                          "id": 62206,
                          "indexExpression": {
                            "id": 62205,
                            "name": "_tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 62162,
                            "src": "5299:8:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5288:20:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "5278:30:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "652f696e636f72726563742d6c6f636b546f6b656e",
                        "id": 62208,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5310:23:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1bdca0b76c075d9573597f5ec1f29915ada42a21f87517c2f07277a9eea0bb37",
                          "typeString": "literal_string \"e/incorrect-lockToken\""
                        },
                        "value": "e/incorrect-lockToken"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1bdca0b76c075d9573597f5ec1f29915ada42a21f87517c2f07277a9eea0bb37",
                          "typeString": "literal_string \"e/incorrect-lockToken\""
                        }
                      ],
                      "id": 62202,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "5270:7:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 62209,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5270:64:129",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 62210,
                  "nodeType": "ExpressionStatement",
                  "src": "5270:64:129"
                },
                {
                  "assignments": [
                    62212
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 62212,
                      "mutability": "mutable",
                      "name": "prevLockBid",
                      "nameLocation": "5361:11:129",
                      "nodeType": "VariableDeclaration",
                      "scope": 62265,
                      "src": "5353:19:129",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 62211,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5353:7:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 62216,
                  "initialValue": {
                    "baseExpression": {
                      "id": 62213,
                      "name": "lockBids",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 61856,
                      "src": "5376:8:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                        "typeString": "mapping(uint256 => uint256)"
                      }
                    },
                    "id": 62215,
                    "indexExpression": {
                      "id": 62214,
                      "name": "_tokenId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 62162,
                      "src": "5385:8:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5376:18:129",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5353:41:129"
                },
                {
                  "assignments": [
                    62218
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 62218,
                      "mutability": "mutable",
                      "name": "prevLockBidder",
                      "nameLocation": "5413:14:129",
                      "nodeType": "VariableDeclaration",
                      "scope": 62265,
                      "src": "5405:22:129",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 62217,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5405:7:129",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 62222,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 62220,
                        "name": "_tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 62162,
                        "src": "5439:8:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 62219,
                      "name": "ownerOf",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27697,
                      "src": "5431:7:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                        "typeString": "function (uint256) view returns (address)"
                      }
                    },
                    "id": 62221,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5431:17:129",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5405:43:129"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 62229,
                        "name": "_token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 62158,
                        "src": "5587:6:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 62230,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 62156,
                        "src": "5607:5:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 62233,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "5634:4:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Redeemable_$62322",
                              "typeString": "contract Redeemable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Redeemable_$62322",
                              "typeString": "contract Redeemable"
                            }
                          ],
                          "id": 62232,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "5626:7:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 62231,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5626:7:129",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 62234,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5626:13:129",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 62235,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 62160,
                        "src": "5653:7:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 62224,
                                "name": "_addressProvider",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 61842,
                                "src": "5519:16:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAddressProvider_$38799",
                                  "typeString": "contract IAddressProvider"
                                }
                              },
                              "id": 62225,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "5536:20:129",
                              "memberName": "getExecutionDelegate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 38548,
                              "src": "5519:37:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                "typeString": "function () view external returns (address)"
                              }
                            },
                            "id": 62226,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5519:39:129",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 62223,
                          "name": "IExecutionDelegate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 39517,
                          "src": "5500:18:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IExecutionDelegate_$39517_$",
                            "typeString": "type(contract IExecutionDelegate)"
                          }
                        },
                        "id": 62227,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5500:59:129",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IExecutionDelegate_$39517",
                          "typeString": "contract IExecutionDelegate"
                        }
                      },
                      "id": 62228,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "5560:13:129",
                      "memberName": "transferERC20",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 39516,
                      "src": "5500:73:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,address,uint256) external"
                      }
                    },
                    "id": 62236,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5500:170:129",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 62237,
                  "nodeType": "ExpressionStatement",
                  "src": "5500:170:129"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 62239,
                        "name": "prevLockBidder",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 62218,
                        "src": "5727:14:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 62240,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 62156,
                        "src": "5743:5:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 62241,
                        "name": "_tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 62162,
                        "src": "5750:8:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 62238,
                      "name": "_transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 28304,
                      "src": "5717:9:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 62242,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5717:42:129",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 62243,
                  "nodeType": "ExpressionStatement",
                  "src": "5717:42:129"
                },
                {
                  "expression": {
                    "id": 62248,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 62244,
                        "name": "lockBids",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 61856,
                        "src": "5794:8:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 62246,
                      "indexExpression": {
                        "id": 62245,
                        "name": "_tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 62162,
                        "src": "5803:8:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "5794:18:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 62247,
                      "name": "_amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 62160,
                      "src": "5815:7:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5794:28:129",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 62249,
                  "nodeType": "ExpressionStatement",
                  "src": "5794:28:129"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 62256,
                        "name": "_token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 62158,
                        "src": "5957:6:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 62259,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "5985:4:129",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Redeemable_$62322",
                              "typeString": "contract Redeemable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Redeemable_$62322",
                              "typeString": "contract Redeemable"
                            }
                          ],
                          "id": 62258,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "5977:7:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 62257,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5977:7:129",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 62260,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5977:13:129",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 62261,
                        "name": "prevLockBidder",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 62218,
                        "src": "6004:14:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 62262,
                        "name": "prevLockBid",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 62212,
                        "src": "6032:11:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 62251,
                                "name": "_addressProvider",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 61842,
                                "src": "5889:16:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAddressProvider_$38799",
                                  "typeString": "contract IAddressProvider"
                                }
                              },
                              "id": 62252,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "5906:20:129",
                              "memberName": "getExecutionDelegate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 38548,
                              "src": "5889:37:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                "typeString": "function () view external returns (address)"
                              }
                            },
                            "id": 62253,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5889:39:129",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 62250,
                          "name": "IExecutionDelegate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 39517,
                          "src": "5870:18:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IExecutionDelegate_$39517_$",
                            "typeString": "type(contract IExecutionDelegate)"
                          }
                        },
                        "id": 62254,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5870:59:129",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IExecutionDelegate_$39517",
                          "typeString": "contract IExecutionDelegate"
                        }
                      },
                      "id": 62255,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "5930:13:129",
                      "memberName": "transferERC20",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 39516,
                      "src": "5870:73:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,address,uint256) external"
                      }
                    },
                    "id": 62263,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5870:183:129",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 62264,
                  "nodeType": "ExpressionStatement",
                  "src": "5870:183:129"
                }
              ]
            },
            "functionSelector": "92944809",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 62165,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 62164,
                  "name": "onlyLendingPool",
                  "nameLocations": [
                    "4898:15:129"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 61916,
                  "src": "4898:15:129"
                },
                "nodeType": "ModifierInvocation",
                "src": "4898:15:129"
              }
            ],
            "name": "transferLockBid",
            "nameLocation": "4751:15:129",
            "parameters": {
              "id": 62163,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 62156,
                  "mutability": "mutable",
                  "name": "_user",
                  "nameLocation": "4784:5:129",
                  "nodeType": "VariableDeclaration",
                  "scope": 62266,
                  "src": "4776:13:129",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 62155,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4776:7:129",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 62158,
                  "mutability": "mutable",
                  "name": "_token",
                  "nameLocation": "4807:6:129",
                  "nodeType": "VariableDeclaration",
                  "scope": 62266,
                  "src": "4799:14:129",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 62157,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4799:7:129",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 62160,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nameLocation": "4832:7:129",
                  "nodeType": "VariableDeclaration",
                  "scope": 62266,
                  "src": "4824:15:129",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 62159,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4824:7:129",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 62162,
                  "mutability": "mutable",
                  "name": "_tokenId",
                  "nameLocation": "4857:8:129",
                  "nodeType": "VariableDeclaration",
                  "scope": 62266,
                  "src": "4849:16:129",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 62161,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4849:7:129",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4766:105:129"
            },
            "returnParameters": {
              "id": 62166,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4918:0:129"
            },
            "scope": 62322,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 62283,
            "nodeType": "FunctionDefinition",
            "src": "6255:198:129",
            "nodes": [],
            "body": {
              "id": 62282,
              "nodeType": "Block",
              "src": "6392:61:129",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 62279,
                        "name": "_interfaceId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 62269,
                        "src": "6433:12:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "expression": {
                        "id": 62277,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -25,
                        "src": "6409:5:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_super$_Redeemable_$62322_$",
                          "typeString": "type(contract super Redeemable)"
                        }
                      },
                      "id": 62278,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "6415:17:129",
                      "memberName": "supportsInterface",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 27645,
                      "src": "6409:23:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                        "typeString": "function (bytes4) view returns (bool)"
                      }
                    },
                    "id": 62280,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6409:37:129",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 62276,
                  "id": 62281,
                  "nodeType": "Return",
                  "src": "6402:44:129"
                }
              ]
            },
            "baseFunctions": [
              25634,
              27645
            ],
            "documentation": {
              "id": 62267,
              "nodeType": "StructuredDocumentation",
              "src": "6066:184:129",
              "text": "-----------------------------------------------------------------------\n Internal / Overrides\n -----------------------------------------------------------------------"
            },
            "functionSelector": "01ffc9a7",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "supportsInterface",
            "nameLocation": "6264:17:129",
            "overrides": {
              "id": 62273,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "id": 62271,
                  "name": "ERC721Upgradeable",
                  "nameLocations": [
                    "6332:17:129"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 28501,
                  "src": "6332:17:129"
                },
                {
                  "id": 62272,
                  "name": "AccessControlUpgradeable",
                  "nameLocations": [
                    "6351:24:129"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 25894,
                  "src": "6351:24:129"
                }
              ],
              "src": "6323:53:129"
            },
            "parameters": {
              "id": 62270,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 62269,
                  "mutability": "mutable",
                  "name": "_interfaceId",
                  "nameLocation": "6289:12:129",
                  "nodeType": "VariableDeclaration",
                  "scope": 62283,
                  "src": "6282:19:129",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 62268,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "6282:6:129",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6281:21:129"
            },
            "returnParameters": {
              "id": 62276,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 62275,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 62283,
                  "src": "6386:4:129",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 62274,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6386:4:129",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6385:6:129"
            },
            "scope": 62322,
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "id": 62292,
            "nodeType": "FunctionDefinition",
            "src": "6459:98:129",
            "nodes": [],
            "body": {
              "id": 62291,
              "nodeType": "Block",
              "src": "6526:31:129",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 62289,
                    "name": "baseURI",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 61846,
                    "src": "6543:7:129",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "functionReturnParameters": 62288,
                  "id": 62290,
                  "nodeType": "Return",
                  "src": "6536:14:129"
                }
              ]
            },
            "baseFunctions": [
              27765
            ],
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_baseURI",
            "nameLocation": "6468:8:129",
            "overrides": {
              "id": 62285,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "6493:8:129"
            },
            "parameters": {
              "id": 62284,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6476:2:129"
            },
            "returnParameters": {
              "id": 62288,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 62287,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 62292,
                  "src": "6511:13:129",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 62286,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6511:6:129",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6510:15:129"
            },
            "scope": 62322,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 62321,
            "nodeType": "FunctionDefinition",
            "src": "6563:215:129",
            "nodes": [],
            "body": {
              "id": 62320,
              "nodeType": "Block",
              "src": "6623:155:129",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 62318,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 62297,
                      "name": "baseURI",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 61846,
                      "src": "6633:7:129",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 62304,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 62300,
                                "name": "_customBaseURI",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 62294,
                                "src": "6649:14:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              ],
                              "id": 62299,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6643:5:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                "typeString": "type(bytes storage pointer)"
                              },
                              "typeName": {
                                "id": 62298,
                                "name": "bytes",
                                "nodeType": "ElementaryTypeName",
                                "src": "6643:5:129",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 62301,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6643:21:129",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 62302,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "6665:6:129",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "6643:28:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "hexValue": "30",
                          "id": 62303,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6674:1:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "6643:32:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseExpression": {
                        "hexValue": "",
                        "id": 62316,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6769:2:129",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      },
                      "id": 62317,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "Conditional",
                      "src": "6643:128:129",
                      "trueExpression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 62309,
                                "name": "_customBaseURI",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 62294,
                                "src": "6714:14:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              {
                                "hexValue": "2f",
                                "id": 62310,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6730:3:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527",
                                  "typeString": "literal_string \"/\""
                                },
                                "value": "/"
                              },
                              {
                                "expression": {
                                  "id": 62311,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "6735:5:129",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 62312,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "6741:7:129",
                                "memberName": "chainid",
                                "nodeType": "MemberAccess",
                                "src": "6735:13:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "hexValue": "2f",
                                "id": 62313,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6750:3:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527",
                                  "typeString": "literal_string \"/\""
                                },
                                "value": "/"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527",
                                  "typeString": "literal_string \"/\""
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_fba9715e477e68952d3f1df7a185b3708aadad50ec10cc793973864023868527",
                                  "typeString": "literal_string \"/\""
                                }
                              ],
                              "expression": {
                                "id": 62307,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "6697:3:129",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 62308,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "6701:12:129",
                              "memberName": "encodePacked",
                              "nodeType": "MemberAccess",
                              "src": "6697:16:129",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 62314,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6697:57:129",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 62306,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6690:6:129",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                            "typeString": "type(string storage pointer)"
                          },
                          "typeName": {
                            "id": 62305,
                            "name": "string",
                            "nodeType": "ElementaryTypeName",
                            "src": "6690:6:129",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 62315,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6690:65:129",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "6633:138:129",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 62319,
                  "nodeType": "ExpressionStatement",
                  "src": "6633:138:129"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_setBaseURI",
            "nameLocation": "6572:11:129",
            "parameters": {
              "id": 62295,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 62294,
                  "mutability": "mutable",
                  "name": "_customBaseURI",
                  "nameLocation": "6598:14:129",
                  "nodeType": "VariableDeclaration",
                  "scope": 62321,
                  "src": "6584:28:129",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 62293,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6584:6:129",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6583:30:129"
            },
            "returnParameters": {
              "id": 62296,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6623:0:129"
            },
            "scope": 62322,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 61826,
              "name": "IRedeemable",
              "nameLocations": [
                "1086:11:129"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 40772,
              "src": "1086:11:129"
            },
            "id": 61827,
            "nodeType": "InheritanceSpecifier",
            "src": "1086:11:129"
          },
          {
            "baseName": {
              "id": 61828,
              "name": "Initializable",
              "nameLocations": [
                "1103:13:129"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 26136,
              "src": "1103:13:129"
            },
            "id": 61829,
            "nodeType": "InheritanceSpecifier",
            "src": "1103:13:129"
          },
          {
            "baseName": {
              "id": 61830,
              "name": "AccessControlUpgradeable",
              "nameLocations": [
                "1123:24:129"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 25894,
              "src": "1123:24:129"
            },
            "id": 61831,
            "nodeType": "InheritanceSpecifier",
            "src": "1123:24:129"
          },
          {
            "baseName": {
              "id": 61832,
              "name": "ERC721Upgradeable",
              "nameLocations": [
                "1154:17:129"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 28501,
              "src": "1154:17:129"
            },
            "id": 61833,
            "nodeType": "InheritanceSpecifier",
            "src": "1154:17:129"
          }
        ],
        "canonicalName": "Redeemable",
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "linearizedBaseContracts": [
          62322,
          28501,
          28662,
          28635,
          25894,
          29281,
          29293,
          25967,
          28988,
          26136,
          40772
        ],
        "name": "Redeemable",
        "nameLocation": "1067:10:129",
        "scope": 62323,
        "usedErrors": []
      }
    ],
    "license": "BUSL-1.1"
  },
  "id": 129
}

Last updated