PropertyYieldVault.json•42.8 kB
{
"_format": "hh-sol-artifact-1",
"contractName": "PropertyYieldVault",
"sourceName": "contracts/PropertyYieldVault.sol",
"abi": [
{
"inputs": [
{
"internalType": "contract IERC20",
"name": "_asset",
"type": "address"
},
{
"internalType": "string",
"name": "_name",
"type": "string"
},
{
"internalType": "string",
"name": "_symbol",
"type": "string"
},
{
"internalType": "address",
"name": "_propertyNFT",
"type": "address"
},
{
"internalType": "uint256",
"name": "_propertyId",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "address",
"name": "target",
"type": "address"
}
],
"name": "AddressEmptyCode",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "AddressInsufficientBalance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "allowance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientAllowance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientBalance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "approver",
"type": "address"
}
],
"name": "ERC20InvalidApprover",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "ERC20InvalidReceiver",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "ERC20InvalidSender",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "ERC20InvalidSpender",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
},
{
"internalType": "uint256",
"name": "assets",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "max",
"type": "uint256"
}
],
"name": "ERC4626ExceededMaxDeposit",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
},
{
"internalType": "uint256",
"name": "shares",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "max",
"type": "uint256"
}
],
"name": "ERC4626ExceededMaxMint",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "uint256",
"name": "shares",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "max",
"type": "uint256"
}
],
"name": "ERC4626ExceededMaxRedeem",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "uint256",
"name": "assets",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "max",
"type": "uint256"
}
],
"name": "ERC4626ExceededMaxWithdraw",
"type": "error"
},
{
"inputs": [],
"name": "FailedInnerCall",
"type": "error"
},
{
"inputs": [],
"name": "MathOverflowedMulDiv",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "SafeERC20FailedOperation",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "assets",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "shares",
"type": "uint256"
}
],
"name": "Deposit",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "receiver",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "assets",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "shares",
"type": "uint256"
}
],
"name": "Withdraw",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "asset",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "shares",
"type": "uint256"
}
],
"name": "convertToAssets",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "assets",
"type": "uint256"
}
],
"name": "convertToShares",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "assets",
"type": "uint256"
},
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "deposit",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "distributeRentalIncome",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "lastYieldDistribution",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "maxDeposit",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "maxMint",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "maxRedeem",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "maxWithdraw",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "shares",
"type": "uint256"
},
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "mint",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "assets",
"type": "uint256"
}
],
"name": "previewDeposit",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "shares",
"type": "uint256"
}
],
"name": "previewMint",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "shares",
"type": "uint256"
}
],
"name": "previewRedeem",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "assets",
"type": "uint256"
}
],
"name": "previewWithdraw",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "propertyId",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "propertyNFT",
"outputs": [
{
"internalType": "contract PropertyNFT",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "shares",
"type": "uint256"
},
{
"internalType": "address",
"name": "receiver",
"type": "address"
},
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "redeem",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalAssets",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "assets",
"type": "uint256"
},
{
"internalType": "address",
"name": "receiver",
"type": "address"
},
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "withdraw",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "yieldAccrualRate",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x60c06040523480156200001157600080fd5b5060405162001a6538038062001a65833981016040819052620000349162000310565b84848460036200004583826200043f565b5060046200005482826200043f565b5050506000806200006b836200014560201b60201c565b91509150816200007d5760126200007f565b805b60ff1660a05250506001600160a01b03908116608052600580546001600160a01b0319169184169182179055600682905560405163126dbe4360e01b8152600481018390526000919063126dbe4390602401600060405180830381865afa158015620000ef573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200011991908101906200050b565b90506301e133808160600151620001319190620005b7565b600855505042600755506200061292505050565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290516000918291829182916001600160a01b038716916200018e91620005da565b600060405180830381855afa9150503d8060008114620001cb576040519150601f19603f3d011682016040523d82523d6000602084013e620001d0565b606091505b5091509150818015620001e557506020815110155b156200021d57600081806020019051810190620002039190620005f8565b905060ff81116200021b576001969095509350505050565b505b5060009485945092505050565b6001600160a01b03811681146200024057600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620002765781810151838201526020016200025c565b50506000910152565b600082601f8301126200029157600080fd5b81516001600160401b0380821115620002ae57620002ae62000243565b604051601f8301601f19908116603f01168101908282118183101715620002d957620002d962000243565b81604052838152866020858801011115620002f357600080fd5b6200030684602083016020890162000259565b9695505050505050565b600080600080600060a086880312156200032957600080fd5b855162000336816200022a565b60208701519095506001600160401b03808211156200035457600080fd5b6200036289838a016200027f565b955060408801519150808211156200037957600080fd5b5062000388888289016200027f565b93505060608601516200039b816200022a565b80925050608086015190509295509295909350565b600181811c90821680620003c557607f821691505b602082108103620003e657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200043a57600081815260208120601f850160051c81016020861015620004155750805b601f850160051c820191505b81811015620004365782815560010162000421565b5050505b505050565b81516001600160401b038111156200045b576200045b62000243565b62000473816200046c8454620003b0565b84620003ec565b602080601f831160018114620004ab5760008415620004925750858301515b600019600386901b1c1916600185901b17855562000436565b600085815260208120601f198616915b82811015620004dc57888601518255948401946001909101908401620004bb565b5085821015620004fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200051e57600080fd5b81516001600160401b03808211156200053657600080fd5b90830190608082860312156200054b57600080fd5b60405160808101818110838211171562000569576200056962000243565b6040528251828111156200057c57600080fd5b6200058a878286016200027f565b82525060208301516020820152604083015160408201526060830151606082015280935050505092915050565b600082620005d557634e487b7160e01b600052601260045260246000fd5b500490565b60008251620005ee81846020870162000259565b9190910192915050565b6000602082840312156200060b57600080fd5b5051919050565b60805160a0516114116200065460003960006105c00152600081816102c301528181610450015281816107580152818161092b01526109eb01526114116000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c806370a0823111610104578063c63d75b6116100a2578063db43919b11610071578063db43919b146103e1578063dd62ed3e146103f6578063ee7a3b8e1461042f578063ef8b30f7146103a857600080fd5b8063c63d75b6146102e7578063c6e6f592146103a8578063ce96cb77146103bb578063d905777e146103ce57600080fd5b8063a9059cbb116100de578063a9059cbb1461035c578063b3d7f6b91461036f578063b460af9414610382578063ba0876521461039557600080fd5b806370a082311461031857806394bf804d1461034157806395d89b411461035457600080fd5b806329eb5f2c1161017c578063402d267d1161014b578063402d267d146102e75780634cdad5061461020f5780635095694b146102fc5780636e553f651461030557600080fd5b806329eb5f2c14610273578063313ce5671461027c57806337f768381461029657806338d52e0f146102c157600080fd5b8063095ea7b3116101b8578063095ea7b3146102225780630a28a4771461024557806318160ddd1461025857806323b872dd1461026057600080fd5b806301e1d114146101df57806306fdde03146101fa57806307a2d13a1461020f575b600080fd5b6101e7610438565b6040519081526020015b60405180910390f35b6102026104c8565b6040516101f1919061101d565b6101e761021d366004611050565b61055a565b610235610230366004611085565b61056d565b60405190151581526020016101f1565b6101e7610253366004611050565b610585565b6002546101e7565b61023561026e3660046110af565b610592565b6101e760075481565b6102846105b8565b60405160ff90911681526020016101f1565b6005546102a9906001600160a01b031681565b6040516001600160a01b0390911681526020016101f1565b7f00000000000000000000000000000000000000000000000000000000000000006102a9565b6101e76102f53660046110eb565b5060001990565b6101e760085481565b6101e7610313366004611106565b6105e4565b6101e76103263660046110eb565b6001600160a01b031660009081526020819052604090205490565b6101e761034f366004611106565b610618565b610202610636565b61023561036a366004611085565b610645565b6101e761037d366004611050565b610653565b6101e7610390366004611132565b610660565b6101e76103a3366004611132565b6106b8565b6101e76103b6366004611050565b610707565b6101e76103c93660046110eb565b610714565b6101e76103dc3660046110eb565b610738565b6103f46103ef366004611050565b610756565b005b6101e761040436600461116e565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101e760065481565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561049f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c39190611198565b905090565b6060600380546104d7906111b1565b80601f0160208091040260200160405190810160405280929190818152602001828054610503906111b1565b80156105505780601f1061052557610100808354040283529160200191610550565b820191906000526020600020905b81548152906001019060200180831161053357829003601f168201915b5050505050905090565b60006105678260006107e0565b92915050565b60003361057b81858561081a565b5060019392505050565b600061056782600161082c565b6000336105a085828561085c565b6105ab8585856108c7565b60019150505b9392505050565b60006104c3817f0000000000000000000000000000000000000000000000000000000000000000611201565b60006000196105f7565b60405180910390fd5b600061060285610707565b905061061033858784610926565b949350505050565b6000600019600061062885610653565b905061061033858388610926565b6060600480546104d7906111b1565b60003361057b8185856108c7565b60006105678260016107e0565b60008061066c83610714565b90508085111561069557828582604051633fa733bb60e21b81526004016105ee9392919061121a565b60006106a086610585565b90506106af33868689856109b8565b95945050505050565b6000806106c483610738565b9050808511156106ed57828582604051632e52afbb60e21b81526004016105ee9392919061121a565b60006106f88661055a565b90506106af338686848a6109b8565b600061056782600061082c565b6001600160a01b0381166000908152602081905260408120546105679060006107e0565b6001600160a01b038116600090815260208190526040812054610567565b7f00000000000000000000000000000000000000000000000000000000000000006040516315e425bf60e11b8152306004820152602481018390526001600160a01b039190911690632bc84b7e90604401600060405180830381600087803b1580156107c157600080fd5b505af11580156107d5573d6000803e3d6000fd5b505042600755505050565b60006105b16107ed610438565b6107f890600161123b565b6108046000600a611332565b600254610811919061123b565b85919085610a78565b6108278383836001610ac7565b505050565b60006105b161083c82600a611332565b600254610849919061123b565b610851610438565b61081190600161123b565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146108c157818110156108b257828183604051637dc7a0d960e11b81526004016105ee9392919061121a565b6108c184848484036000610ac7565b50505050565b6001600160a01b0383166108f157604051634b637e8f60e11b8152600060048201526024016105ee565b6001600160a01b03821661091b5760405163ec442f0560e01b8152600060048201526024016105ee565b610827838383610b8e565b6109527f0000000000000000000000000000000000000000000000000000000000000000853085610ca5565b61095c8382610d0c565b826001600160a01b0316846001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d784846040516109aa929190918252602082015260400190565b60405180910390a350505050565b826001600160a01b0316856001600160a01b0316146109dc576109dc83868361085c565b6109e68382610d46565b610a117f00000000000000000000000000000000000000000000000000000000000000008584610d7c565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db8585604051610a69929190918252602082015260400190565b60405180910390a45050505050565b600080610a86868686610dad565b9050610a9183610e71565b8015610aad575060008480610aa857610aa8611341565b868809115b156106af57610abd60018261123b565b9695505050505050565b6001600160a01b038416610af15760405163e602df0560e01b8152600060048201526024016105ee565b6001600160a01b038316610b1b57604051634a1406b160e11b8152600060048201526024016105ee565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156108c157826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109aa91815260200190565b6001600160a01b038316610bb9578060026000828254610bae919061123b565b90915550610c189050565b6001600160a01b03831660009081526020819052604090205481811015610bf95783818360405163391434e360e21b81526004016105ee9392919061121a565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216610c3457600280548290039055610c53565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c9891815260200190565b60405180910390a3505050565b6040516001600160a01b0384811660248301528381166044830152606482018390526108c19186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050610e9e565b6001600160a01b038216610d365760405163ec442f0560e01b8152600060048201526024016105ee565b610d4260008383610b8e565b5050565b6001600160a01b038216610d7057604051634b637e8f60e11b8152600060048201526024016105ee565b610d4282600083610b8e565b6040516001600160a01b0383811660248301526044820183905261082791859182169063a9059cbb90606401610cda565b6000838302816000198587098281108382030391505080600003610de457838281610dda57610dda611341565b04925050506105b1565b808411610e045760405163227bc15360e01b815260040160405180910390fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b60006002826003811115610e8757610e87611357565b610e91919061136d565b60ff166001149050919050565b6000610eb36001600160a01b03841683610f01565b90508051600014158015610ed8575080806020019051810190610ed6919061139d565b155b1561082757604051635274afe760e01b81526001600160a01b03841660048201526024016105ee565b60606105b18383600084600080856001600160a01b03168486604051610f2791906113bf565b60006040518083038185875af1925050503d8060008114610f64576040519150601f19603f3d011682016040523d82523d6000602084013e610f69565b606091505b5091509150610abd868383606082610f8957610f8482610fd0565b6105b1565b8151158015610fa057506001600160a01b0384163b155b15610fc957604051639996b31560e01b81526001600160a01b03851660048201526024016105ee565b50806105b1565b805115610fe05780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60005b83811015611014578181015183820152602001610ffc565b50506000910152565b602081526000825180602084015261103c816040850160208701610ff9565b601f01601f19169190910160400192915050565b60006020828403121561106257600080fd5b5035919050565b80356001600160a01b038116811461108057600080fd5b919050565b6000806040838503121561109857600080fd5b6110a183611069565b946020939093013593505050565b6000806000606084860312156110c457600080fd5b6110cd84611069565b92506110db60208501611069565b9150604084013590509250925092565b6000602082840312156110fd57600080fd5b6105b182611069565b6000806040838503121561111957600080fd5b8235915061112960208401611069565b90509250929050565b60008060006060848603121561114757600080fd5b8335925061115760208501611069565b915061116560408501611069565b90509250925092565b6000806040838503121561118157600080fd5b61118a83611069565b915061112960208401611069565b6000602082840312156111aa57600080fd5b5051919050565b600181811c908216806111c557607f821691505b6020821081036111e557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60ff8181168382160190811115610567576105676111eb565b6001600160a01b039390931683526020830191909152604082015260600190565b80820180821115610567576105676111eb565b600181815b8085111561128957816000190482111561126f5761126f6111eb565b8085161561127c57918102915b93841c9390800290611253565b509250929050565b6000826112a057506001610567565b816112ad57506000610567565b81600181146112c357600281146112cd576112e9565b6001915050610567565b60ff8411156112de576112de6111eb565b50506001821b610567565b5060208310610133831016604e8410600b841016171561130c575081810a610567565b611316838361124e565b806000190482111561132a5761132a6111eb565b029392505050565b60006105b160ff841683611291565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600060ff83168061138e57634e487b7160e01b600052601260045260246000fd5b8060ff84160691505092915050565b6000602082840312156113af57600080fd5b815180151581146105b157600080fd5b600082516113d1818460208701610ff9565b919091019291505056fea264697066735822122013b02f3ea827961aeaa3b4932fb758c8698f3a093f11da990507f430dbdffd8d64736f6c63430008140033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101da5760003560e01c806370a0823111610104578063c63d75b6116100a2578063db43919b11610071578063db43919b146103e1578063dd62ed3e146103f6578063ee7a3b8e1461042f578063ef8b30f7146103a857600080fd5b8063c63d75b6146102e7578063c6e6f592146103a8578063ce96cb77146103bb578063d905777e146103ce57600080fd5b8063a9059cbb116100de578063a9059cbb1461035c578063b3d7f6b91461036f578063b460af9414610382578063ba0876521461039557600080fd5b806370a082311461031857806394bf804d1461034157806395d89b411461035457600080fd5b806329eb5f2c1161017c578063402d267d1161014b578063402d267d146102e75780634cdad5061461020f5780635095694b146102fc5780636e553f651461030557600080fd5b806329eb5f2c14610273578063313ce5671461027c57806337f768381461029657806338d52e0f146102c157600080fd5b8063095ea7b3116101b8578063095ea7b3146102225780630a28a4771461024557806318160ddd1461025857806323b872dd1461026057600080fd5b806301e1d114146101df57806306fdde03146101fa57806307a2d13a1461020f575b600080fd5b6101e7610438565b6040519081526020015b60405180910390f35b6102026104c8565b6040516101f1919061101d565b6101e761021d366004611050565b61055a565b610235610230366004611085565b61056d565b60405190151581526020016101f1565b6101e7610253366004611050565b610585565b6002546101e7565b61023561026e3660046110af565b610592565b6101e760075481565b6102846105b8565b60405160ff90911681526020016101f1565b6005546102a9906001600160a01b031681565b6040516001600160a01b0390911681526020016101f1565b7f00000000000000000000000000000000000000000000000000000000000000006102a9565b6101e76102f53660046110eb565b5060001990565b6101e760085481565b6101e7610313366004611106565b6105e4565b6101e76103263660046110eb565b6001600160a01b031660009081526020819052604090205490565b6101e761034f366004611106565b610618565b610202610636565b61023561036a366004611085565b610645565b6101e761037d366004611050565b610653565b6101e7610390366004611132565b610660565b6101e76103a3366004611132565b6106b8565b6101e76103b6366004611050565b610707565b6101e76103c93660046110eb565b610714565b6101e76103dc3660046110eb565b610738565b6103f46103ef366004611050565b610756565b005b6101e761040436600461116e565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101e760065481565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561049f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c39190611198565b905090565b6060600380546104d7906111b1565b80601f0160208091040260200160405190810160405280929190818152602001828054610503906111b1565b80156105505780601f1061052557610100808354040283529160200191610550565b820191906000526020600020905b81548152906001019060200180831161053357829003601f168201915b5050505050905090565b60006105678260006107e0565b92915050565b60003361057b81858561081a565b5060019392505050565b600061056782600161082c565b6000336105a085828561085c565b6105ab8585856108c7565b60019150505b9392505050565b60006104c3817f0000000000000000000000000000000000000000000000000000000000000000611201565b60006000196105f7565b60405180910390fd5b600061060285610707565b905061061033858784610926565b949350505050565b6000600019600061062885610653565b905061061033858388610926565b6060600480546104d7906111b1565b60003361057b8185856108c7565b60006105678260016107e0565b60008061066c83610714565b90508085111561069557828582604051633fa733bb60e21b81526004016105ee9392919061121a565b60006106a086610585565b90506106af33868689856109b8565b95945050505050565b6000806106c483610738565b9050808511156106ed57828582604051632e52afbb60e21b81526004016105ee9392919061121a565b60006106f88661055a565b90506106af338686848a6109b8565b600061056782600061082c565b6001600160a01b0381166000908152602081905260408120546105679060006107e0565b6001600160a01b038116600090815260208190526040812054610567565b7f00000000000000000000000000000000000000000000000000000000000000006040516315e425bf60e11b8152306004820152602481018390526001600160a01b039190911690632bc84b7e90604401600060405180830381600087803b1580156107c157600080fd5b505af11580156107d5573d6000803e3d6000fd5b505042600755505050565b60006105b16107ed610438565b6107f890600161123b565b6108046000600a611332565b600254610811919061123b565b85919085610a78565b6108278383836001610ac7565b505050565b60006105b161083c82600a611332565b600254610849919061123b565b610851610438565b61081190600161123b565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146108c157818110156108b257828183604051637dc7a0d960e11b81526004016105ee9392919061121a565b6108c184848484036000610ac7565b50505050565b6001600160a01b0383166108f157604051634b637e8f60e11b8152600060048201526024016105ee565b6001600160a01b03821661091b5760405163ec442f0560e01b8152600060048201526024016105ee565b610827838383610b8e565b6109527f0000000000000000000000000000000000000000000000000000000000000000853085610ca5565b61095c8382610d0c565b826001600160a01b0316846001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d784846040516109aa929190918252602082015260400190565b60405180910390a350505050565b826001600160a01b0316856001600160a01b0316146109dc576109dc83868361085c565b6109e68382610d46565b610a117f00000000000000000000000000000000000000000000000000000000000000008584610d7c565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db8585604051610a69929190918252602082015260400190565b60405180910390a45050505050565b600080610a86868686610dad565b9050610a9183610e71565b8015610aad575060008480610aa857610aa8611341565b868809115b156106af57610abd60018261123b565b9695505050505050565b6001600160a01b038416610af15760405163e602df0560e01b8152600060048201526024016105ee565b6001600160a01b038316610b1b57604051634a1406b160e11b8152600060048201526024016105ee565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156108c157826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109aa91815260200190565b6001600160a01b038316610bb9578060026000828254610bae919061123b565b90915550610c189050565b6001600160a01b03831660009081526020819052604090205481811015610bf95783818360405163391434e360e21b81526004016105ee9392919061121a565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216610c3457600280548290039055610c53565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c9891815260200190565b60405180910390a3505050565b6040516001600160a01b0384811660248301528381166044830152606482018390526108c19186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050610e9e565b6001600160a01b038216610d365760405163ec442f0560e01b8152600060048201526024016105ee565b610d4260008383610b8e565b5050565b6001600160a01b038216610d7057604051634b637e8f60e11b8152600060048201526024016105ee565b610d4282600083610b8e565b6040516001600160a01b0383811660248301526044820183905261082791859182169063a9059cbb90606401610cda565b6000838302816000198587098281108382030391505080600003610de457838281610dda57610dda611341565b04925050506105b1565b808411610e045760405163227bc15360e01b815260040160405180910390fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b60006002826003811115610e8757610e87611357565b610e91919061136d565b60ff166001149050919050565b6000610eb36001600160a01b03841683610f01565b90508051600014158015610ed8575080806020019051810190610ed6919061139d565b155b1561082757604051635274afe760e01b81526001600160a01b03841660048201526024016105ee565b60606105b18383600084600080856001600160a01b03168486604051610f2791906113bf565b60006040518083038185875af1925050503d8060008114610f64576040519150601f19603f3d011682016040523d82523d6000602084013e610f69565b606091505b5091509150610abd868383606082610f8957610f8482610fd0565b6105b1565b8151158015610fa057506001600160a01b0384163b155b15610fc957604051639996b31560e01b81526001600160a01b03851660048201526024016105ee565b50806105b1565b805115610fe05780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60005b83811015611014578181015183820152602001610ffc565b50506000910152565b602081526000825180602084015261103c816040850160208701610ff9565b601f01601f19169190910160400192915050565b60006020828403121561106257600080fd5b5035919050565b80356001600160a01b038116811461108057600080fd5b919050565b6000806040838503121561109857600080fd5b6110a183611069565b946020939093013593505050565b6000806000606084860312156110c457600080fd5b6110cd84611069565b92506110db60208501611069565b9150604084013590509250925092565b6000602082840312156110fd57600080fd5b6105b182611069565b6000806040838503121561111957600080fd5b8235915061112960208401611069565b90509250929050565b60008060006060848603121561114757600080fd5b8335925061115760208501611069565b915061116560408501611069565b90509250925092565b6000806040838503121561118157600080fd5b61118a83611069565b915061112960208401611069565b6000602082840312156111aa57600080fd5b5051919050565b600181811c908216806111c557607f821691505b6020821081036111e557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60ff8181168382160190811115610567576105676111eb565b6001600160a01b039390931683526020830191909152604082015260600190565b80820180821115610567576105676111eb565b600181815b8085111561128957816000190482111561126f5761126f6111eb565b8085161561127c57918102915b93841c9390800290611253565b509250929050565b6000826112a057506001610567565b816112ad57506000610567565b81600181146112c357600281146112cd576112e9565b6001915050610567565b60ff8411156112de576112de6111eb565b50506001821b610567565b5060208310610133831016604e8410600b841016171561130c575081810a610567565b611316838361124e565b806000190482111561132a5761132a6111eb565b029392505050565b60006105b160ff841683611291565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600060ff83168061138e57634e487b7160e01b600052601260045260246000fd5b8060ff84160691505092915050565b6000602082840312156113af57600080fd5b815180151581146105b157600080fd5b600082516113d1818460208701610ff9565b919091019291505056fea264697066735822122013b02f3ea827961aeaa3b4932fb758c8698f3a093f11da990507f430dbdffd8d64736f6c63430008140033",
"linkReferences": {},
"deployedLinkReferences": {}
}