0 txs
4.7k calls
constructor
constructor(uint8 _moneyMarketId, address _contango, address _poolAddressesProvider, address _rewardsController, bool _flashBorrowEnabled)
functions
contango
viewfunction contango() view returns (address)
flashBorrowEnabled
viewfunction flashBorrowEnabled() view returns (bool)
moneyMarketId
viewfunction moneyMarketId() view returns (uint8)
NEEDS_ACCOUNT
viewfunction NEEDS_ACCOUNT() view returns (bool)
pool
viewfunction pool() view returns (address)
poolAddressesProvider
viewfunction poolAddressesProvider() view returns (address)
rewardsController
viewfunction rewardsController() view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
borrow
nonpayablefunction borrow(bytes32 positionId, address asset, uint256 amount, address to) returns (uint256 borrowed)
claimRewards
nonpayablefunction claimRewards(bytes32 positionId, address collateralAsset, address debtAsset, address to)
collateralBalance
nonpayablefunction collateralBalance(bytes32 positionId, address asset) returns (uint256)
debtBalance
nonpayablefunction debtBalance(bytes32 positionId, address asset) returns (uint256)
executeOperation
nonpayablefunction executeOperation(address[] assets, uint256[] amounts, uint256[], address initiator, bytes metaParams) returns (bool)
flashBorrow
nonpayablefunction flashBorrow(bytes32 positionId, address asset, uint256 amount, bytes params, function callback) returns (bytes result)
initialise
nonpayablefunction initialise(bytes32 positionId, address collateralAsset, address debtAsset)
lend
nonpayablefunction lend(bytes32 positionId, address asset, uint256 amount) returns (uint256 lent)
repay
nonpayablefunction repay(bytes32 positionId, address asset, uint256 amount) returns (uint256 repaid)
retrieve
nonpayablefunction retrieve(bytes32 positionId, address token) returns (uint256 amount)
withdraw
nonpayablefunction withdraw(bytes32 positionId, address asset, uint256 amount, address to) returns (uint256 withdrawn)
events
Borrowed
event Borrowed(bytes32 indexed positionId, address indexed asset, uint256 amount, uint256 balanceBefore)
Lent
event Lent(bytes32 indexed positionId, address indexed asset, uint256 amount, uint256 balanceBefore)
Repaid
event Repaid(bytes32 indexed positionId, address indexed asset, uint256 amount, uint256 balanceBefore)
Retrieved
event Retrieved(bytes32 indexed positionId, address indexed token, uint256 amount)
RewardsClaimed
event RewardsClaimed(bytes32 indexed positionId, address indexed rewardsToken, address to, uint256 rewardsAmount)
RewardsClaimed
event RewardsClaimed(bytes32 indexed positionId, address to)
Withdrawn
event Withdrawn(bytes32 indexed positionId, address indexed asset, uint256 amount, uint256 balanceBefore)
errors
InvalidExpiry
error InvalidExpiry()
InvalidMoneyMarketId
error InvalidMoneyMarketId()
InvalidPositionId
error InvalidPositionId(bytes32 positionId)
InvalidSenderOrInitiator
error InvalidSenderOrInitiator()
InvalidUInt8
error InvalidUInt8(uint256 n)
TokenCantBeRetrieved
error TokenCantBeRetrieved(address token)
Unauthorised
error Unauthorised(address msgSender)
UnsupportedOperation
error UnsupportedOperation()
ZeroDestination
error ZeroDestination()
ZeroPayer
error ZeroPayer()
creation bytecode
0x610120604052348015610010575f5ffd5b50604051612dc5380380612dc583398101604081905261002f91610071565b60ff9094166080526001600160a01b0392831660a05290821660c0521660e0521515610100526100eb565b6001600160a01b038116811461006e575f5ffd5b50565b5f5f5f5f5f60a08688031215610085575f5ffd5b855160ff81168114610095575f5ffd5b60208701519095506100a68161005a565b60408701519094506100b78161005a565b60608701519093506100c88161005a565b608087015190925080151581146100dd575f5ffd5b809150509295509295909350565b60805160a05160c05160e05161010051612c2661019f5f395f818161014d01528181610350015281816106530152610d7001525f8181610217015261109a01525f818161023e015261039401525f818161017401528181610422015281816104d10152818161057f015281816107d9015281816108f0015281816109f401528181610ae801528181610c9201528181610e4701528181610f02015261150701525f81816102d101526104690152612c265ff3fe608060405234801561000f575f5ffd5b506004361061011c575f3560e01c806380e17d87116100a9578063a7db160d1161006e578063a7db160d146102ac578063aa582328146102cc578063d03283dd14610305578063f336a54a14610318578063f75d217f1461032b575f5ffd5b806380e17d8714610239578063920f5c84146102605780639e687b6c14610273578063a4cc72a114610286578063a5cb899814610299575f5ffd5b806328f3b1cc116100ef57806328f3b1cc146101b657806329da8e98146101cb578063346404a3146101de57806368284a9c146101ff5780636bb65f5314610212575f5ffd5b806301ffc9a71461012057806304f2584a146101485780630a2959751461016f57806316f0115b146101ae575b5f5ffd5b61013361012e366004612046565b610333565b60405190151581526020015b60405180910390f35b6101337f000000000000000000000000000000000000000000000000000000000000000081565b6101967f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161013f565b610196610391565b6101c96101c4366004612081565b610417565b005b6101c96101d93660046120c0565b6104c6565b6101f16101ec366004612110565b610561565b60405190815260200161013f565b6101f161020d36600461213e565b610573565b6101967f000000000000000000000000000000000000000000000000000000000000000081565b6101967f000000000000000000000000000000000000000000000000000000000000000081565b61013361026e3660046121fe565b610650565b6101f1610281366004612110565b6107cc565b6101f16102943660046122dc565b610c86565b6101f16102a7366004612110565b610d61565b6102bf6102ba366004612327565b610d6c565b60405161013f91906123dd565b6102f37f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161013f565b6101f16103133660046122dc565b610e3b565b6101f161032636600461213e565b610ef6565b610133600181565b5f6001600160e01b03198216635e05eaff60e11b148061038b57507f0000000000000000000000000000000000000000000000000000000000000000801561038b57506001600160e01b0319821663a7db160d60e01b145b92915050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663026b1d5f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103ee573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061041291906123ef565b905090565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104675760405163570870ef60e11b81523360048201526024015b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000060ff166104958460781c90565b60ff16146104b657604051633a0439f360e11b815260040160405180910390fd5b6104c1838383610fb1565b505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105115760405163570870ef60e11b815233600482015260240161045e565b61051d84848484611098565b6040516001600160a01b038216815284907fbfa100eea2f40b39537bc6df4de7f953b016b20340469136d16c33725f92e8a39060200160405180910390a250505050565b5f61056c8383611149565b9392505050565b5f336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105bf5760405163570870ef60e11b815233600482015260240161045e565b825f036105cd57505f610648565b5f6105d88686611149565b9050805f036105ea575f915050610648565b6105f786868686856111bb565b9150846001600160a01b0316867fad382ae4a0a8c252d70b902c9cc346f3e881ad505df3f728122a01006bb88f09848460405161063e929190918252602082015260400190565b60405180910390a3505b949350505050565b5f7f000000000000000000000000000000000000000000000000000000000000000061068f57604051639ba6061b60e01b815260040160405180910390fd5b610697610391565b6001600160a01b0316336001600160a01b03161415806106c057506001600160a01b0384163014155b156106de5760405163f788f48960e01b815260040160405180910390fd5b5f5f5f5f5f6107258f8f8f8f8c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061124992505050565b9398509196509450925090506107456001600160a01b03861684866112d5565b82828686846040518463ffffffff1660e01b81526004016107689392919061240a565b5f604051808303815f875af1158015610783573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526107aa9190810190612508565b5f906107b690826125bc565b5060019f9e505050505050505050505050505050565b5f306001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d24415b26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610833573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061085791906123ef565b6001600160a01b0316633dce36f2856040518263ffffffff1660e01b815260040161088491815260200190565b602060405180830381865afa15801561089f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c391906123ef565b6001600160a01b0316146108ed5760405163222a979560e11b81526004810184905260240161045e565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166323228ecb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561094a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061096e91906123ef565b604051630e29a66960e21b8152600481018690529091505f906001600160a01b038316906338a699a490602401602060405180830381865afa1580156109b6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109da9190612676565b610a6a5760405163586ca86560e11b8152600481018690527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b0d950ca90602401602060405180830381865afa158015610a41573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a6591906123ef565b610ad1565b60405163100ca19960e21b8152600481018690526001600160a01b03831690634032866490602401602060405180830381865afa158015610aad573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ad191906123ef565b90506001600160a01b03841615801590610bd257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fbfa77cf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b42573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6691906123ef565b6040516375151b6360e01b81526001600160a01b03868116600483015291909116906375151b6390602401602060405180830381865afa158015610bac573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bd09190612676565b155b15610bfb57604051636ebdc1c760e11b81526001600160a01b038516600482015260240161045e565b6001600160a01b038416610c2457479250610c1f6001600160a01b03821684611338565b610c3a565b610c376001600160a01b0385168261144d565b92505b836001600160a01b0316857fe10480fa0f8f1c0d4fc65799762c7be48848d8aeb9465f2b98dcd30bd6b784c685604051610c7691815260200190565b60405180910390a3505092915050565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610cd25760405163570870ef60e11b815233600482015260240161045e565b815f03610ce057505f61056c565b5f610ceb8585611472565b9050805f03610cfd575f91505061056c565b610d0a858585338561147c565b9150836001600160a01b0316857f01e7ee7e76483485fd1d9e5b1c6a72af05e18dac7fc43f767d6897ef153bef868484604051610d51929190918252602082015260400190565b60405180910390a3509392505050565b5f61056c8383611472565b60607f0000000000000000000000000000000000000000000000000000000000000000610dac57604051639ba6061b60e01b815260040160405180910390fd5b610e2f88888860405180604001604052808a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602089811b63ffffffff8a1617604090811b928201929092529051610e1b9291016126a5565b6040516020818303038152906040526114fa565b98975050505050505050565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e875760405163570870ef60e11b815233600482015260240161045e565b815f03610e9557505f61056c565b5f610ea08585611149565b9050610eaf85858533856116be565b9150836001600160a01b0316857fecb90afec3ccd66fd52ddbabd04ded0ffe45c0ce0496fd7859f4af4ca2d41a408484604051610d51929190918252602082015260400190565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f425760405163570870ef60e11b815233600482015260240161045e565b825f03610f5057505f610648565b5f610f5b8686611472565b9050610f6a8686868685611769565b9150846001600160a01b0316867f089164adf1db4f670220caf2545a52c89761c59b497d19a31ead78652d6789f9848460405161063e929190918252602082015260400190565b610fba836117fa565b610fd65760405162d36c8560e81b815260040160405180910390fd5b5f610fdf610391565b9050610ff4610fee8560a81b90565b5f611817565b1561106857806001600160a01b03166328530a476110128660b01b90565b60e01c6040518263ffffffff1660e01b815260040161103a919060ff91909116815260200190565b5f604051808303815f87803b158015611051575f5ffd5b505af1158015611063573d5f5f3e3d5ffd5b505050505b61107d6001600160a01b038416825f19611859565b6110926001600160a01b038316825f19611859565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bb492bf56110e16110d3866118e7565b6110dc86611966565b6119e5565b836040518363ffffffff1660e01b81526004016110ff9291906126e0565b5f604051808303815f875af115801561111a573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261114191908101906127ce565b505050505050565b5f611153826118e7565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015611197573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056c9190612893565b5f6111c4610391565b604051631a4ca37b60e21b81526001600160a01b03878116600483015260248201879052858116604483015291909116906369328dec906064015b6020604051808303815f875af115801561121b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061123f9190612893565b9695505050505050565b5f5f5f5f60605f8680602001905181019061126491906128aa565b90508a8a5f81811061127857611278612948565b905060200201602081019061128d919061295c565b955088885f8181106112a1576112a1612948565b90506020020135945080602001518060601c9060401c63ffffffff1693509350805f01519150509550955095509550959050565b6040516001600160a01b0383166024820152604481018290526104c190849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611a72565b804710156113885760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161045e565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146113d1576040519150601f19603f3d011682016040523d82523d5f602084013e6113d6565b606091505b50509050806104c15760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161045e565b5f61145783611b45565b9050801561038b5761146b83308484611bad565b5092915050565b5f61115382611966565b5f6114878483611c32565b905080156114f1576114a46001600160a01b038616843084611bad565b506114ad610391565b60405163573ade8160e01b81526001600160a01b0387811660048301526024820184905260026044830152306064830152919091169063573ade81906084016111ff565b95945050505050565b6060336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146115475760405163570870ef60e11b815233600482015260240161045e565b5f6115528686611472565b905061155c610391565b6001600160a01b031663ab9c4b5d3061157488611c47565b61157d88611ca1565b6115876002611ca1565b30895f6040518863ffffffff1660e01b81526004016115ac97969594939291906129b1565b5f604051808303815f87803b1580156115c3575f5ffd5b505af11580156115d5573d5f5f3e3d5ffd5b505060408051878152602081018590526001600160a01b03891693508992507f089164adf1db4f670220caf2545a52c89761c59b497d19a31ead78652d6789f9910160405180910390a35f805461162b90612539565b80601f016020809104026020016040519081016040528092919081815260200182805461165790612539565b80156116a25780601f10611679576101008083540402835291602001916116a2565b820191905f5260205f20905b81548152906001019060200180831161168557829003601f168201915b505050505091505f5f6116b59190611ff4565b50949350505050565b5f6116d46001600160a01b038616843087611bad565b90506116e08585611ce7565b6116f46116ed8760a81b90565b6001611817565b156114f157611701610391565b604051635a3b74b960e01b81526001600160a01b038781166004830152600160248301529190911690635a3b74b9906044015f604051808303815f87803b15801561174a575f5ffd5b505af115801561175c573d5f5f3e3d5ffd5b5050505095945050505050565b5f611772610391565b60405163a415bcad60e01b81526001600160a01b03878116600483015260248201879052600260448301525f6064830152306084830152919091169063a415bcad9060a4015f604051808303815f87803b1580156117ce575f5ffd5b505af11580156117e0573d5f5f3e3d5ffd5b5061123f925050506001600160a01b038616308587611bad565b5f63ffffffff61180a8360581c90565b63ffffffff161492915050565b5f600782111561183d57604051631edd1ac160e31b81526004810183905260240161045e565b50600160f81b811b82166001600160f81b031916151592915050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526118aa8482611d56565b611092576040516001600160a01b03841660248201525f60448201526118dd90859063095ea7b360e01b90606401611301565b6110928482611a72565b5f6118f0610391565b6040516335ea6a7560e01b81526001600160a01b03848116600483015291909116906335ea6a75906024016101e060405180830381865afa158015611937573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061195b9190612ae6565b610100015192915050565b5f61196f610391565b6040516335ea6a7560e01b81526001600160a01b03848116600483015291909116906335ea6a75906024016101e060405180830381865afa1580156119b6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119da9190612ae6565b610140015192915050565b604080516002808252606080830184529260208301908036833701905050905082815f81518110611a1857611a18612948565b60200260200101906001600160a01b031690816001600160a01b0316815250508181600181518110611a4c57611a4c612948565b60200260200101906001600160a01b031690816001600160a01b03168152505092915050565b5f611ac6826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611df39092919063ffffffff16565b905080515f1480611ae6575080806020019051810190611ae69190612676565b6104c15760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161045e565b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa158015611b89573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061038b9190612893565b5f6001600160a01b038416611bd55760405163a26bef6960e01b815260040160405180910390fd5b6001600160a01b038316611bfc57604051637d0f1ea160e01b815260040160405180910390fd5b826001600160a01b0316846001600160a01b03161480611c1a575081155b15611c26575080610648565b6114f185858585611e01565b5f818310611c40578161056c565b5090919050565b6040805160018082528183019092526060916020808301908036833701905050905081815f81518110611c7c57611c7c612948565b60200260200101906001600160a01b031690816001600160a01b031681525050919050565b6040805160018082528183019092526060916020808301908036833701905050905081815f81518110611cd657611cd6612948565b602002602001018181525050919050565b611cef610391565b60405163617ba03760e01b81526001600160a01b038481166004830152602482018490523060448301525f6064830152919091169063617ba037906084015f604051808303815f87803b158015611d44575f5ffd5b505af1158015611141573d5f5f3e3d5ffd5b5f5f5f846001600160a01b031684604051611d719190612c10565b5f604051808303815f865af19150503d805f8114611daa576040519150601f19603f3d011682016040523d82523d5f602084013e611daf565b606091505b5091509150818015611dd9575080511580611dd9575080806020019051810190611dd99190612676565b80156114f15750505050506001600160a01b03163b151590565b606061064884845f85611e48565b5f6001600160a01b0384163014611e2c57611e276001600160a01b038616858585611f1f565b611e40565b611e406001600160a01b03861684846112d5565b509392505050565b606082471015611ea95760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161045e565b5f5f866001600160a01b03168587604051611ec49190612c10565b5f6040518083038185875af1925050503d805f8114611efe576040519150601f19603f3d011682016040523d82523d5f602084013e611f03565b606091505b5091509150611f1487838387611f57565b979650505050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526110929085906323b872dd60e01b90608401611301565b60608315611fc55782515f03611fbe576001600160a01b0385163b611fbe5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161045e565b5081610648565b6106488383815115611fda5781518083602001fd5b8060405162461bcd60e51b815260040161045e91906123dd565b50805461200090612539565b5f825580601f1061200f575050565b601f0160209004905f5260205f209081019061202b919061202e565b50565b5b80821115612042575f815560010161202f565b5090565b5f60208284031215612056575f5ffd5b81356001600160e01b03198116811461056c575f5ffd5b6001600160a01b038116811461202b575f5ffd5b5f5f5f60608486031215612093575f5ffd5b8335925060208401356120a58161206d565b915060408401356120b58161206d565b809150509250925092565b5f5f5f5f608085870312156120d3575f5ffd5b8435935060208501356120e58161206d565b925060408501356120f58161206d565b915060608501356121058161206d565b939692955090935050565b5f5f60408385031215612121575f5ffd5b8235915060208301356121338161206d565b809150509250929050565b5f5f5f5f60808587031215612151575f5ffd5b8435935060208501356121638161206d565b92506040850135915060608501356121058161206d565b5f5f83601f84011261218a575f5ffd5b5081356001600160401b038111156121a0575f5ffd5b6020830191508360208260051b85010111156121ba575f5ffd5b9250929050565b5f5f83601f8401126121d1575f5ffd5b5081356001600160401b038111156121e7575f5ffd5b6020830191508360208285010111156121ba575f5ffd5b5f5f5f5f5f5f5f5f5f60a08a8c031215612216575f5ffd5b89356001600160401b0381111561222b575f5ffd5b6122378c828d0161217a565b909a5098505060208a01356001600160401b03811115612255575f5ffd5b6122618c828d0161217a565b90985096505060408a01356001600160401b0381111561227f575f5ffd5b61228b8c828d0161217a565b90965094505060608a013561229f8161206d565b925060808a01356001600160401b038111156122b9575f5ffd5b6122c58c828d016121c1565b915080935050809150509295985092959850929598565b5f5f5f606084860312156122ee575f5ffd5b8335925060208401356123008161206d565b929592945050506040919091013590565b67ffffffffffffffff198116811461202b575f5ffd5b5f5f5f5f5f5f5f60a0888a03121561233d575f5ffd5b87359650602088013561234f8161206d565b95506040880135945060608801356001600160401b03811115612370575f5ffd5b61237c8a828b016121c1565b909550935050608088013561239081612311565b8060601c925063ffffffff8160401c1691505092959891949750929550565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61056c60208301846123af565b5f602082840312156123ff575f5ffd5b815161056c8161206d565b60018060a01b0384168152826020820152606060408201525f6114f160608301846123af565b634e487b7160e01b5f52604160045260245ffd5b6040516101e081016001600160401b038111828210171561246757612467612430565b60405290565b604051601f8201601f191681016001600160401b038111828210171561249557612495612430565b604052919050565b5f82601f8301126124ac575f5ffd5b81516001600160401b038111156124c5576124c5612430565b6124d8601f8201601f191660200161246d565b8181528460208386010111156124ec575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f60208284031215612518575f5ffd5b81516001600160401b0381111561252d575f5ffd5b6106488482850161249d565b600181811c9082168061254d57607f821691505b60208210810361256b57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156104c157805f5260205f20601f840160051c810160208510156125965750805b601f840160051c820191505b818110156125b5575f81556001016125a2565b5050505050565b81516001600160401b038111156125d5576125d5612430565b6125e9816125e38454612539565b84612571565b6020601f82116001811461261b575f83156126045750848201515b5f19600385901b1c1916600184901b1784556125b5565b5f84815260208120601f198516915b8281101561264a578785015182556020948501946001909201910161262a565b508482101561266757868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f60208284031215612686575f5ffd5b8151801515811461056c575f5ffd5b80516126a08161206d565b919050565b602081525f8251604060208401526126c060608401826123af565b90506001600160401b031960208501511660408401528091505092915050565b604080825283519082018190525f9060208501906060840190835b818110156127225783516001600160a01b03168352602093840193909201916001016126fb565b50506001600160a01b039490941660209390930192909252509092915050565b5f6001600160401b0382111561275a5761275a612430565b5060051b60200190565b5f82601f830112612773575f5ffd5b815161278661278182612742565b61246d565b8082825260208201915060208360051b8601019250858311156127a7575f5ffd5b602085015b838110156127c45780518352602092830192016127ac565b5095945050505050565b5f5f604083850312156127df575f5ffd5b82516001600160401b038111156127f4575f5ffd5b8301601f81018513612804575f5ffd5b805161281261278182612742565b8082825260208201915060208360051b850101925087831115612833575f5ffd5b6020840193505b8284101561285e57835161284d8161206d565b82526020938401939091019061283a565b8095505050505060208301516001600160401b0381111561287d575f5ffd5b61288985828601612764565b9150509250929050565b5f602082840312156128a3575f5ffd5b5051919050565b5f602082840312156128ba575f5ffd5b81516001600160401b038111156128cf575f5ffd5b8201604081850312156128e0575f5ffd5b604080519081016001600160401b038111828210171561290257612902612430565b60405281516001600160401b0381111561291a575f5ffd5b6129268682850161249d565b8252506020820151915061293982612311565b60208101919091529392505050565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561296c575f5ffd5b813561056c8161206d565b5f8151808452602084019350602083015f5b828110156129a7578151865260209586019590910190600101612989565b5093949350505050565b6001600160a01b038816815260e0602080830182905288519183018290525f9190890190610100840190835b81811015612a045783516001600160a01b03168352602093840193909201916001016129dd565b50508381036040850152612a18818a612977565b9150508281036060840152612a2d8188612977565b6001600160a01b0387166080850152905082810360a0840152612a5081866123af565b915050610e2f60c083018461ffff169052565b5f60208284031215612a73575f5ffd5b604051602081016001600160401b0381118282101715612a9557612a95612430565b6040529151825250919050565b80516fffffffffffffffffffffffffffffffff811681146126a0575f5ffd5b805164ffffffffff811681146126a0575f5ffd5b805161ffff811681146126a0575f5ffd5b5f6101e0828403128015612af8575f5ffd5b50612b01612444565b612b0b8484612a63565b8152612b1960208401612aa2565b6020820152612b2a60408401612aa2565b6040820152612b3b60608401612aa2565b6060820152612b4c60808401612aa2565b6080820152612b5d60a08401612aa2565b60a0820152612b6e60c08401612ac1565b60c0820152612b7f60e08401612ad5565b60e0820152612b916101008401612695565b610100820152612ba46101208401612695565b610120820152612bb76101408401612695565b610140820152612bca6101608401612695565b610160820152612bdd6101808401612aa2565b610180820152612bf06101a08401612aa2565b6101a0820152612c036101c08401612aa2565b6101c08201529392505050565b5f82518060208501845e5f9201918252509190505600000000000000000000000000000000000000000000000000000000000000010000000000000000000000006cae28b3d09d8f8fc74ccd496ac986fc84c0c24e0000000000000000000000002f39d218133afab8f2b819b1066c7e434ad94e9e0000000000000000000000008164cc65827dcfe994ab23944cbc90e0aa80bfcb0000000000000000000000000000000000000000000000000000000000000000