@ensuro/core
Version:
Ensuro - Blockchain-based insurance protocol
432 lines (431 loc) • 33.1 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "ReserveMock",
"sourceName": "contracts/mocks/ReserveMock.sol",
"abi": [
{
"inputs": [
{
"internalType": "contract IPolicyPool",
"name": "policyPool_",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "address",
"name": "target",
"type": "address"
}
],
"name": "AddressEmptyCode",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "ERC1967InvalidImplementation",
"type": "error"
},
{
"inputs": [],
"name": "ERC1967NonPayable",
"type": "error"
},
{
"inputs": [],
"name": "FailedCall",
"type": "error"
},
{
"inputs": [],
"name": "InvalidInitialization",
"type": "error"
},
{
"inputs": [],
"name": "InvalidYieldVault",
"type": "error"
},
{
"inputs": [],
"name": "NoZeroPolicyPool",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "required",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "available",
"type": "uint256"
}
],
"name": "NotEnoughCash",
"type": "error"
},
{
"inputs": [],
"name": "NotInitializing",
"type": "error"
},
{
"inputs": [],
"name": "OnlyPolicyPool",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "ReserveInvalidReceiver",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "SafeERC20FailedOperation",
"type": "error"
},
{
"inputs": [],
"name": "UUPSUnauthorizedCallContext",
"type": "error"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "slot",
"type": "bytes32"
}
],
"name": "UUPSUnsupportedProxiableUUID",
"type": "error"
},
{
"inputs": [],
"name": "UpgradeCannotChangePolicyPool",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "int256",
"name": "earnings",
"type": "int256"
}
],
"name": "EarningsRecorded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IERC4626",
"name": "oldVault",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "shares",
"type": "uint256"
}
],
"name": "ErrorIgnoredDeinvestingVault",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint64",
"name": "version",
"type": "uint64"
}
],
"name": "Initialized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "Upgraded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IERC4626",
"name": "oldVault",
"type": "address"
},
{
"indexed": true,
"internalType": "contract IERC4626",
"name": "newVault",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "forced",
"type": "bool"
}
],
"name": "YieldVaultChanged",
"type": "event"
},
{
"inputs": [],
"name": "UPGRADE_INTERFACE_VERSION",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "addMoney",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "currency",
"outputs": [
{
"internalType": "contract IERC20Metadata",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "depositIntoYieldVault",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "investedInYV",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "policyPool",
"outputs": [
{
"internalType": "contract IPolicyPool",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "proxiableUUID",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "recordEarnings",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC4626",
"name": "newYieldVault",
"type": "address"
},
{
"internalType": "bool",
"name": "force",
"type": "bool"
}
],
"name": "setYieldVault",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "destination",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferTo",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newImplementation",
"type": "address"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "upgradeToAndCall",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "withdrawFromYieldVault",
"outputs": [
{
"internalType": "uint256",
"name": "deinvested",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "yieldVault",
"outputs": [
{
"internalType": "contract IERC4626",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x60c060405230608052348015610013575f5ffd5b5060405161188338038061188383398101604081905261003291610129565b80806001600160a01b03811661005b57604051636b23cf0160e01b815260040160405180910390fd5b610063610077565b6001600160a01b031660a052506101569050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100c75760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101265780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610139575f5ffd5b81516001600160a01b038116811461014f575f5ffd5b9392505050565b60805160a0516116f06101935f395f818161016a01528181610a33015261108501525f8181610cdd01528181610d060152610e4801526116f05ff3fe6080604052600436106100e4575f3560e01c80637d919a9711610087578063ad3cb1cc11610057578063ad3cb1cc1461024f578063d0bc1a881461028c578063d336078c146102ab578063e5a6b10f146102ca575f5ffd5b80637d919a97146101eb5780638129fc1c146101ff578063a7f8a5e214610213578063ac860f7414610230575f5ffd5b80634d15eb03116100c25780634d15eb031461015c5780634eb978a4146101a25780634f1ef286146101b657806352d1902d146101c9575f5ffd5b806301ffc9a7146100e8578063194448e51461011c5780632ccb1b301461013d575b5f5ffd5b3480156100f3575f5ffd5b506101076101023660046113f7565b6102de565b60405190151581526020015b60405180910390f35b348015610127575f5ffd5b5061013b610136366004611446565b610314565b005b348015610148575f5ffd5b5061013b61015736600461147d565b61056d565b348015610167575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610113565b3480156101ad575f5ffd5b5061013b61057b565b61013b6101c43660046114bb565b6106b0565b3480156101d4575f5ffd5b506101dd6106cb565b604051908152602001610113565b3480156101f6575f5ffd5b506032546101dd565b34801561020a575f5ffd5b5061013b6106e6565b34801561021e575f5ffd5b506064546001600160a01b031661018a565b34801561023b575f5ffd5b5061013b61024a366004611581565b6107dd565b34801561025a575f5ffd5b5061027f604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101139190611598565b348015610297575f5ffd5b5061013b6102a6366004611581565b61096e565b3480156102b6575f5ffd5b506101dd6102c5366004611581565b610990565b3480156102d5575f5ffd5b5061018a610a30565b5f6001600160e01b031982166301ffc9a760e01b148061030e57506001600160e01b03198216634d15eb0360e01b145b92915050565b5f5f61031e610a30565b90506001600160a01b03841615806103a65750806001600160a01b0316846001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610377573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061039b91906115cd565b6001600160a01b0316145b6103c357604051638959269160e01b815260040160405180910390fd5b5f6103d66064546001600160a01b031690565b90505f6001600160a01b038216156104eb576040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa15801561042c573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061045091906115e8565b905080156104e9578515610471576104688382610ab6565b955091506104e9565b604051635d043b2960e11b815260048101829052306024820181905260448201526001600160a01b0384169063ba087652906064016020604051808303815f875af11580156104c2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104e691906115e8565b91505b505b606480546001600160a01b0319166001600160a01b03881617905561051c603254826105179190611613565b610bf9565b5f60325560405184151581526001600160a01b0380881691908416907f243f9479bbdaf9f3395e726975293ee3724f3819f4322a018c98afb9de70a1e09060200160405180910390a3505050505050565b6105778282610c19565b5050565b5f61058e6064546001600160a01b031690565b90506001600160a01b0381166105b757604051638959269160e01b815260040160405180910390fd5b6040516370a0823160e01b81523060048201525f906001600160a01b038316906307a2d13a9082906370a0823190602401602060405180830381865afa158015610603573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061062791906115e8565b6040518263ffffffff1660e01b815260040161064591815260200190565b602060405180830381865afa158015610660573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061068491906115e8565b90505f603254826106959190611613565b905080156106ab5760328290556106ab81610bf9565b505050565b6106b8610cd2565b6106c182610d78565b6105778282610d81565b5f6106d4610e3d565b505f51602061169b5f395f51905f5290565b5f6106ef610e86565b805490915060ff600160401b820416159067ffffffffffffffff165f811580156107165750825b90505f8267ffffffffffffffff1660011480156107325750303b155b905081158015610740575080155b1561075e5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561078857845460ff60401b1916600160401b1785555b610790610eae565b83156107d657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b5f6107f06064546001600160a01b031690565b90506001600160a01b03811661081957604051638959269160e01b815260040160405180910390fd5b5f610822610ebe565b90505f19830361083457809250610868565b8281808211156108655760405163531309fb60e11b8152600481019290925260248201526044015b60405180910390fd5b50505b8260325f8282546108799190611632565b909155506108879050610a30565b60405163095ea7b360e01b81526001600160a01b03848116600483015260248201869052919091169063095ea7b3906044016020604051808303815f875af11580156108d5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108f99190611645565b50604051636e553f6560e01b8152600481018490523060248201526001600160a01b03831690636e553f65906044016020604051808303815f875af1158015610944573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061096891906115e8565b50505050565b61098d33308361097c610a30565b6001600160a01b0316929190610f2f565b50565b5f61099961057b565b5f6109ac6064546001600160a01b031690565b90505f198303610a1f5760405163ce96cb7760e01b81523060048201526001600160a01b0382169063ce96cb7790602401602060405180830381865afa1580156109f8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a1c91906115e8565b92505b610a298184610f65565b5090919050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a8d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ab191906115cd565b905090565b604051636c82bbbf60e11b81523060048201525f9081906001600160a01b0385169063d905777e90602401602060405180830381865afa925050508015610b1a575060408051601f3d908101601f19168201909252610b17918101906115e8565b60015b15610b315783811015610b2f57600191508093505b505b604051635d043b2960e11b815260048101849052306024820181905260448201526001600160a01b0385169063ba087652906064016020604051808303815f875af1925050508015610ba0575060408051601f3d908101601f19168201909252610b9d918101906115e8565b60015b610bef57836001600160a01b03167f25bce30047860a48c9d8830dbf31873be5434f4d28f14a5808a4ea8e35d0829684604051610bdf91815260200190565b60405180910390a2506001610bf2565b91505b9250929050565b8060655f828254610c0a9190611660565b9091555061098d905081611018565b816001600160a01b038116610c4d57604051636427f27360e11b81526001600160a01b03909116600482015260240161085c565b50805f03610c59575050565b5f610c62610ebe565b905081811015610ca5575f610c7f6064546001600160a01b031690565b90506001600160a01b03811615610ca357610ca381610c9e8486611687565b610f65565b505b6001600160a01b03831630146106ab576106ab8383610cc2610a30565b6001600160a01b0316919061104e565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610d5857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610d4c5f51602061169b5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610d765760405163703e46dd60e11b815260040160405180910390fd5b565b61098d81611083565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610ddb575060408051601f3d908101601f19168201909252610dd8918101906115e8565b60015b610e0357604051634c9c8ce360e01b81526001600160a01b038316600482015260240161085c565b5f51602061169b5f395f51905f528114610e3357604051632a87526960e21b81526004810182905260240161085c565b6106ab8383611134565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d765760405163703e46dd60e11b815260040160405180910390fd5b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0061030e565b610eb6611189565b610d766111ae565b5f610ec7610a30565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015610f0b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ab191906115e8565b610f3d8484848460016111b6565b61096857604051635274afe760e01b81526001600160a01b038516600482015260240161085c565b604051632d182be560e21b815260048101829052306024820181905260448201526001600160a01b0383169063b460af94906064016020604051808303815f875af1158015610fb6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fda91906115e8565b50603254811115610ffe57610ff6603254826105179190611687565b5f6032555050565b8060325f82825461100f9190611687565b90915550505050565b6040518181527f731c439c5bae15be1344eec709967e046b4f7d3f7e37abeffc5247f448fa18bf9060200160405180910390a150565b61105b8383836001611223565b6106ab57604051635274afe760e01b81526001600160a01b038416600482015260240161085c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316634d15eb036040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110e9573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061110d91906115cd565b6001600160a01b03161461098d5760405163d2b3d33f60e01b815260040160405180910390fd5b61113d82611285565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611181576106ab82826112e8565b610577611388565b6111916113a7565b610d7657604051631afcd79f60e31b815260040160405180910390fd5b610d76611189565b6040516323b872dd60e01b5f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f51148316611212578383151615611206573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b60405163a9059cbb60e01b5f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f5114831661127957838315161561126d573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b806001600160a01b03163b5f036112ba57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161085c565b5f51602061169b5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f6112f584846113c0565b905080801561131657505f3d118061131657505f846001600160a01b03163b115b1561132b576113236113d3565b91505061030e565b801561135557604051639996b31560e01b81526001600160a01b038516600482015260240161085c565b3d15611368576113636113ec565b611381565b60405163d6bda27560e01b815260040160405180910390fd5b5092915050565b3415610d765760405163b398979f60e01b815260040160405180910390fd5b5f6113b0610e86565b54600160401b900460ff16919050565b5f5f5f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b5f60208284031215611407575f5ffd5b81356001600160e01b03198116811461141e575f5ffd5b9392505050565b6001600160a01b038116811461098d575f5ffd5b801515811461098d575f5ffd5b5f5f60408385031215611457575f5ffd5b823561146281611425565b9150602083013561147281611439565b809150509250929050565b5f5f6040838503121561148e575f5ffd5b823561149981611425565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156114cc575f5ffd5b82356114d781611425565b9150602083013567ffffffffffffffff8111156114f2575f5ffd5b8301601f81018513611502575f5ffd5b803567ffffffffffffffff81111561151c5761151c6114a7565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561154b5761154b6114a7565b604052818152828201602001871015611562575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60208284031215611591575f5ffd5b5035919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f602082840312156115dd575f5ffd5b815161141e81611425565b5f602082840312156115f8575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b8181035f831280158383131683831282161715611381576113816115ff565b8082018082111561030e5761030e6115ff565b5f60208284031215611655575f5ffd5b815161141e81611439565b8082018281125f83128015821682158216171561167f5761167f6115ff565b505092915050565b8181038181111561030e5761030e6115ff56fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220acd8caef4742e489b43f1c3c1019a654073e1e1026e1a7717d3f5b579624620e64736f6c634300081e0033",
"deployedBytecode": "0x6080604052600436106100e4575f3560e01c80637d919a9711610087578063ad3cb1cc11610057578063ad3cb1cc1461024f578063d0bc1a881461028c578063d336078c146102ab578063e5a6b10f146102ca575f5ffd5b80637d919a97146101eb5780638129fc1c146101ff578063a7f8a5e214610213578063ac860f7414610230575f5ffd5b80634d15eb03116100c25780634d15eb031461015c5780634eb978a4146101a25780634f1ef286146101b657806352d1902d146101c9575f5ffd5b806301ffc9a7146100e8578063194448e51461011c5780632ccb1b301461013d575b5f5ffd5b3480156100f3575f5ffd5b506101076101023660046113f7565b6102de565b60405190151581526020015b60405180910390f35b348015610127575f5ffd5b5061013b610136366004611446565b610314565b005b348015610148575f5ffd5b5061013b61015736600461147d565b61056d565b348015610167575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610113565b3480156101ad575f5ffd5b5061013b61057b565b61013b6101c43660046114bb565b6106b0565b3480156101d4575f5ffd5b506101dd6106cb565b604051908152602001610113565b3480156101f6575f5ffd5b506032546101dd565b34801561020a575f5ffd5b5061013b6106e6565b34801561021e575f5ffd5b506064546001600160a01b031661018a565b34801561023b575f5ffd5b5061013b61024a366004611581565b6107dd565b34801561025a575f5ffd5b5061027f604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101139190611598565b348015610297575f5ffd5b5061013b6102a6366004611581565b61096e565b3480156102b6575f5ffd5b506101dd6102c5366004611581565b610990565b3480156102d5575f5ffd5b5061018a610a30565b5f6001600160e01b031982166301ffc9a760e01b148061030e57506001600160e01b03198216634d15eb0360e01b145b92915050565b5f5f61031e610a30565b90506001600160a01b03841615806103a65750806001600160a01b0316846001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610377573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061039b91906115cd565b6001600160a01b0316145b6103c357604051638959269160e01b815260040160405180910390fd5b5f6103d66064546001600160a01b031690565b90505f6001600160a01b038216156104eb576040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa15801561042c573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061045091906115e8565b905080156104e9578515610471576104688382610ab6565b955091506104e9565b604051635d043b2960e11b815260048101829052306024820181905260448201526001600160a01b0384169063ba087652906064016020604051808303815f875af11580156104c2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104e691906115e8565b91505b505b606480546001600160a01b0319166001600160a01b03881617905561051c603254826105179190611613565b610bf9565b5f60325560405184151581526001600160a01b0380881691908416907f243f9479bbdaf9f3395e726975293ee3724f3819f4322a018c98afb9de70a1e09060200160405180910390a3505050505050565b6105778282610c19565b5050565b5f61058e6064546001600160a01b031690565b90506001600160a01b0381166105b757604051638959269160e01b815260040160405180910390fd5b6040516370a0823160e01b81523060048201525f906001600160a01b038316906307a2d13a9082906370a0823190602401602060405180830381865afa158015610603573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061062791906115e8565b6040518263ffffffff1660e01b815260040161064591815260200190565b602060405180830381865afa158015610660573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061068491906115e8565b90505f603254826106959190611613565b905080156106ab5760328290556106ab81610bf9565b505050565b6106b8610cd2565b6106c182610d78565b6105778282610d81565b5f6106d4610e3d565b505f51602061169b5f395f51905f5290565b5f6106ef610e86565b805490915060ff600160401b820416159067ffffffffffffffff165f811580156107165750825b90505f8267ffffffffffffffff1660011480156107325750303b155b905081158015610740575080155b1561075e5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561078857845460ff60401b1916600160401b1785555b610790610eae565b83156107d657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b5f6107f06064546001600160a01b031690565b90506001600160a01b03811661081957604051638959269160e01b815260040160405180910390fd5b5f610822610ebe565b90505f19830361083457809250610868565b8281808211156108655760405163531309fb60e11b8152600481019290925260248201526044015b60405180910390fd5b50505b8260325f8282546108799190611632565b909155506108879050610a30565b60405163095ea7b360e01b81526001600160a01b03848116600483015260248201869052919091169063095ea7b3906044016020604051808303815f875af11580156108d5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108f99190611645565b50604051636e553f6560e01b8152600481018490523060248201526001600160a01b03831690636e553f65906044016020604051808303815f875af1158015610944573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061096891906115e8565b50505050565b61098d33308361097c610a30565b6001600160a01b0316929190610f2f565b50565b5f61099961057b565b5f6109ac6064546001600160a01b031690565b90505f198303610a1f5760405163ce96cb7760e01b81523060048201526001600160a01b0382169063ce96cb7790602401602060405180830381865afa1580156109f8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a1c91906115e8565b92505b610a298184610f65565b5090919050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a8d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ab191906115cd565b905090565b604051636c82bbbf60e11b81523060048201525f9081906001600160a01b0385169063d905777e90602401602060405180830381865afa925050508015610b1a575060408051601f3d908101601f19168201909252610b17918101906115e8565b60015b15610b315783811015610b2f57600191508093505b505b604051635d043b2960e11b815260048101849052306024820181905260448201526001600160a01b0385169063ba087652906064016020604051808303815f875af1925050508015610ba0575060408051601f3d908101601f19168201909252610b9d918101906115e8565b60015b610bef57836001600160a01b03167f25bce30047860a48c9d8830dbf31873be5434f4d28f14a5808a4ea8e35d0829684604051610bdf91815260200190565b60405180910390a2506001610bf2565b91505b9250929050565b8060655f828254610c0a9190611660565b9091555061098d905081611018565b816001600160a01b038116610c4d57604051636427f27360e11b81526001600160a01b03909116600482015260240161085c565b50805f03610c59575050565b5f610c62610ebe565b905081811015610ca5575f610c7f6064546001600160a01b031690565b90506001600160a01b03811615610ca357610ca381610c9e8486611687565b610f65565b505b6001600160a01b03831630146106ab576106ab8383610cc2610a30565b6001600160a01b0316919061104e565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610d5857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610d4c5f51602061169b5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610d765760405163703e46dd60e11b815260040160405180910390fd5b565b61098d81611083565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610ddb575060408051601f3d908101601f19168201909252610dd8918101906115e8565b60015b610e0357604051634c9c8ce360e01b81526001600160a01b038316600482015260240161085c565b5f51602061169b5f395f51905f528114610e3357604051632a87526960e21b81526004810182905260240161085c565b6106ab8383611134565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d765760405163703e46dd60e11b815260040160405180910390fd5b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0061030e565b610eb6611189565b610d766111ae565b5f610ec7610a30565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015610f0b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ab191906115e8565b610f3d8484848460016111b6565b61096857604051635274afe760e01b81526001600160a01b038516600482015260240161085c565b604051632d182be560e21b815260048101829052306024820181905260448201526001600160a01b0383169063b460af94906064016020604051808303815f875af1158015610fb6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fda91906115e8565b50603254811115610ffe57610ff6603254826105179190611687565b5f6032555050565b8060325f82825461100f9190611687565b90915550505050565b6040518181527f731c439c5bae15be1344eec709967e046b4f7d3f7e37abeffc5247f448fa18bf9060200160405180910390a150565b61105b8383836001611223565b6106ab57604051635274afe760e01b81526001600160a01b038416600482015260240161085c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316634d15eb036040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110e9573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061110d91906115cd565b6001600160a01b03161461098d5760405163d2b3d33f60e01b815260040160405180910390fd5b61113d82611285565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611181576106ab82826112e8565b610577611388565b6111916113a7565b610d7657604051631afcd79f60e31b815260040160405180910390fd5b610d76611189565b6040516323b872dd60e01b5f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f51148316611212578383151615611206573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b60405163a9059cbb60e01b5f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f5114831661127957838315161561126d573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b806001600160a01b03163b5f036112ba57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161085c565b5f51602061169b5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f6112f584846113c0565b905080801561131657505f3d118061131657505f846001600160a01b03163b115b1561132b576113236113d3565b91505061030e565b801561135557604051639996b31560e01b81526001600160a01b038516600482015260240161085c565b3d15611368576113636113ec565b611381565b60405163d6bda27560e01b815260040160405180910390fd5b5092915050565b3415610d765760405163b398979f60e01b815260040160405180910390fd5b5f6113b0610e86565b54600160401b900460ff16919050565b5f5f5f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b5f60208284031215611407575f5ffd5b81356001600160e01b03198116811461141e575f5ffd5b9392505050565b6001600160a01b038116811461098d575f5ffd5b801515811461098d575f5ffd5b5f5f60408385031215611457575f5ffd5b823561146281611425565b9150602083013561147281611439565b809150509250929050565b5f5f6040838503121561148e575f5ffd5b823561149981611425565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156114cc575f5ffd5b82356114d781611425565b9150602083013567ffffffffffffffff8111156114f2575f5ffd5b8301601f81018513611502575f5ffd5b803567ffffffffffffffff81111561151c5761151c6114a7565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561154b5761154b6114a7565b604052818152828201602001871015611562575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60208284031215611591575f5ffd5b5035919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f602082840312156115dd575f5ffd5b815161141e81611425565b5f602082840312156115f8575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b8181035f831280158383131683831282161715611381576113816115ff565b8082018082111561030e5761030e6115ff565b5f60208284031215611655575f5ffd5b815161141e81611439565b8082018281125f83128015821682158216171561167f5761167f6115ff565b505092915050565b8181038181111561030e5761030e6115ff56fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220acd8caef4742e489b43f1c3c1019a654073e1e1026e1a7717d3f5b579624620e64736f6c634300081e0033",
"linkReferences": {},
"deployedLinkReferences": {}
}