0 txs
0 calls
constructor
constructor(address _cashModule, address _dataProvider)
functions
applicableSpendingLimit
viewfunction applicableSpendingLimit(address safe) view returns (tuple)
canSpend
viewfunction canSpend(address safe, bytes32 txId, address[] tokens, uint256[] amountsInUsd) view returns (bool, string)
cashModule
viewfunction cashModule() view returns (address)
dataProvider
viewfunction dataProvider() view returns (address)
getPendingWithdrawalAmount
viewfunction getPendingWithdrawalAmount(address safe, address token) view returns (uint256)
getSafeCashData
viewfunction getSafeCashData(address safe) view returns (tuple safeCashData)
getUserCollateralForToken
viewfunction getUserCollateralForToken(address safe, address token) view returns (uint256)
getUserTotalCollateral
viewfunction getUserTotalCollateral(address safe) view returns (tuple[])
HUNDRED_PERCENT
viewfunction HUNDRED_PERCENT() view returns (uint256)
maxCanSpend
viewfunction maxCanSpend(address safe, address token) view returns (uint256 returnAmtInCreditModeUsd, uint256 returnAmtInDebitModeUsd, uint256 spendingLimitAllowance)
paused
viewfunction paused() view returns (bool)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
roleRegistry
viewfunction roleRegistry() view returns (address)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
initialize
nonpayablefunction initialize(address _roleRegistry)
pause
nonpayablefunction pause()
unpause
nonpayablefunction unpause()
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
Initialized
event Initialized(uint64 version)
Paused
event Paused(address account)
Unpaused
event Unpaused(address account)
Upgraded
event Upgraded(address indexed implementation)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
EnforcedPause
error EnforcedPause()
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
ExpectedPause
error ExpectedPause()
FailedCall
error FailedCall()
InvalidInitialization
error InvalidInitialization()
NotACollateralToken
error NotACollateralToken()
NotInitializing
error NotInitializing()
OnlyRoleRegistryOwner
error OnlyRoleRegistryOwner()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
Unauthorized
error Unauthorized()
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60e060405230608052348015610013575f5ffd5b5060405161480f38038061480f83398101604081905261003291610121565b6001600160a01b0380831660a052811660c05261004d610054565b5050610152565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a45760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101035780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b80516001600160a01b038116811461011c575f5ffd5b919050565b5f5f60408385031215610132575f5ffd5b61013b83610106565b915061014960208401610106565b90509250929050565b60805160a05160c0516146316101de5f395f818161036e015261077b01525f818161017701528181610401015281816106f80152818161081d01528181610c8401528181610e7e01528181610f0601528181610fa801528181611162015281816113da01528181611e4d0152611eef01525f81816114c3015281816114ec01526116a201526146315ff3fe608060405260043610610105575f3560e01c80635e6107e3116100925780639a664ee1116100625780639a664ee1146102f3578063ad3cb1cc14610320578063b334ed861461035d578063c4d66de814610390578063c8d31d06146103af575f5ffd5b80635e6107e31461025d5780636ed93dd01461028957806373f4a50e146102a55780638456cb59146102df575f5ffd5b8063402a13a4116100d8578063402a13a4146101af578063408130f5146101db5780634f1ef2861461020857806352d1902d1461021b5780635c975abb1461022f575f5ffd5b806308c73259146101095780630d8f21be1461013a5780633575f0de146101665780633f4ba83a14610199575b5f5ffd5b348015610114575f5ffd5b5061011d6103ce565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610145575f5ffd5b506101596101543660046135fa565b6103fc565b6040516101319190613664565b348015610171575f5ffd5b5061011d7f000000000000000000000000000000000000000000000000000000000000000081565b3480156101a4575f5ffd5b506101ad610686565b005b3480156101ba575f5ffd5b506101ce6101c93660046135fa565b6106ed565b604051610131919061377d565b3480156101e6575f5ffd5b506101fa6101f536600461386c565b610c80565b604051908152602001610131565b6101ad610216366004613976565b610e1b565b348015610226575f5ffd5b506101fa610e3a565b34801561023a575f5ffd5b505f5160206145645f395f51905f525460ff166040519015158152602001610131565b348015610268575f5ffd5b5061027c6102773660046135fa565b610e55565b6040516101319190613a1b565b348015610294575f5ffd5b506101fa68056bc75e2d6310000081565b3480156102b0575f5ffd5b506102c46102bf36600461386c565b610f00565b60408051938452602084019290925290820152606001610131565b3480156102ea575f5ffd5b506101ad611071565b3480156102fe575f5ffd5b5061031261030d366004613b18565b6110d6565b604051610131929190613bcf565b34801561032b575f5ffd5b50610350604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101319190613be9565b348015610368575f5ffd5b5061011d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561039b575f5ffd5b506101ad6103aa3660046135fa565b6112ab565b3480156103ba575f5ffd5b506101fa6103c936600461386c565b6113b7565b7fa5586bb7fe6c4d1a576fc53fefe6d5915940638d338769f6905020734977f500546001600160a01b031690565b60605f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b2ddc656040518163ffffffff1660e01b8152600401602060405180830381865afa15801561045b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061047f9190613bfb565b90505f816001600160a01b031663b58eb63f6040518163ffffffff1660e01b81526004015f60405180830381865afa1580156104bd573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526104e49190810190613cbb565b80519091505f816001600160401b03811115610502576105026138a3565b60405190808252806020026020018201604052801561054657816020015b604080518082019091525f80825260208201528152602001906001900390816105205790505b5090505f805b8381101561067a575f85828151811061056757610567613cec565b60209081029190910101516040516370a0823160e01b81526001600160a01b038b81166004830152909116906370a0823190602401602060405180830381865afa1580156105b7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105db9190613d00565b90505f6106018a8885815181106105f4576105f4613cec565b60200260200101516113b7565b90508115610670576106138183613d2b565b9150604051806040016040528088858151811061063257610632613cec565b60200260200101516001600160a01b031681526020018381525085858151811061065e5761065e613cec565b60200260200101819052508360010193505b505060010161054c565b50815295945050505050565b61068e6103ce565b6040516317bf301f60e21b81523360048201526001600160a01b039190911690635efcc07c906024015f6040518083038186803b1580156106cd575f5ffd5b505afa1580156106df573d5f5f3e3d5ffd5b505050506106eb611459565b565b6106f56134da565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b2ddc656040518163ffffffff1660e01b8152600401602060405180830381865afa158015610752573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107769190613bfb565b90505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630a065fb66040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107d5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107f99190613bfb565b604051631c13359160e11b81526001600160a01b0386811660048301529192505f917f000000000000000000000000000000000000000000000000000000000000000016906338266b22906024015f60405180830381865afa158015610861573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526108889190810190613e60565b604051631d20a23d60e21b81526001600160a01b0387811660048301529192509084169063748288f4906024015f60405180830381865afa1580156108cf573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526108f69190810190614029565b60c088015260408088019190915260a08701919091526020808701929092529082015160808601525163cebcff8960e01b81526001600160a01b0386811660048301526001602483015284169063cebcff8990604401602060405180830381865afa158015610967573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061098b9190613d00565b8460e00181815250505f836001600160a01b031663b58eb63f6040518163ffffffff1660e01b81526004015f60405180830381865afa1580156109d0573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526109f79190810190613cbb565b8051909150806001600160401b03811115610a1457610a146138a3565b604051908082528060200260200182016040528015610a5857816020015b604080518082019091525f8082526020820152815260200190600190039081610a325790505b5060608701525f5b81811015610b7a57828181518110610a7a57610a7a613cec565b602002602001015187606001518281518110610a9857610a98613cec565b60200260200101515f01906001600160a01b031690816001600160a01b031681525050846001600160a01b031663aea91078848381518110610adc57610adc613cec565b60200260200101516040518263ffffffff1660e01b8152600401610b0f91906001600160a01b0391909116815260200190565b602060405180830381865afa158015610b2a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b4e9190613d00565b87606001518281518110610b6457610b64613cec565b6020908102919091018101510152600101610a60565b50610bff87866001600160a01b0316635a52477a6040518163ffffffff1660e01b81526004015f60405180830381865afa158015610bba573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610be19190810190613cbb565b5f81518110610bf257610bf2613cec565b6020026020010151610f00565b61014089015261012088015261010087015260808301516101608701526060830151610180870152604083015186906001811115610c3f57610c3f613676565b90816001811115610c5257610c52613676565b90525061018086015115801590610c6d575085610180015142115b15610c76575f86525b5050505050919050565b5f5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b2ddc656040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cde573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d029190613bfb565b6040516311d9858b60e21b81526001600160a01b03858116600483015291925090821690634766162c90602401602060405180830381865afa158015610d4a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d6e919061409e565b610d8b576040516375e72ed760e11b815260040160405180910390fd5b6040516370a0823160e01b81526001600160a01b0385811660048301525f91908516906370a0823190602401602060405180830381865afa158015610dd2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610df69190613d00565b90505f610e0386866113b7565b9050610e0f8183613d2b565b93505050505b92915050565b610e236114b8565b610e2c8261155c565b610e3682826115d1565b5050565b5f610e43611697565b505f51602061441a5f395f51905f5290565b610e5d613573565b604051631c13359160e11b81526001600160a01b0383811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906338266b22906024015f60405180830381865afa158015610ec4573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610eeb9190810190613e60565b9050610ef9815f01516116e0565b9392505050565b5f5f5f5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b2ddc656040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f60573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f849190613bfb565b604051631c13359160e11b81526001600160a01b0388811660048301529192505f917f000000000000000000000000000000000000000000000000000000000000000016906338266b22906024015f60405180830381865afa158015610fec573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526110139190810190613e60565b9050611021815f01516117f3565b5f6040830181905290935061103983898985856118ab565b909650905080611051575f5f9550955050505061106a565b6001604083015261106483898985611a39565b94505050505b9250925092565b6110796103ce565b604051632fd0067b60e21b81523360048201526001600160a01b03919091169063bf4019ec906024015f6040518083038186803b1580156110b8575f5ffd5b505afa1580156110ca573d5f5f3e3d5ffd5b505050506106eb611dff565b5f6060848203611112575050604080518082019091526012815271139bc81d1bdad95b9cc81c1c9bdd9a59195960721b60208201525f906112a0565b84831461113c575f6040518060600160405280602981526020016143f160299139915091506112a0565b60405163e5a53ea760e01b81526001600160a01b038981166004830152602482018990527f0000000000000000000000000000000000000000000000000000000000000000169063e5a53ea790604401602060405180830381865afa1580156111a7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111cb919061409e565b1561120d57505060408051808201909152601b81527f5472616e73616374696f6e20616c726561647920636c6561726564000000000060208201525f906112a0565b5f805b848110156112465785858281811061122a5761122a613cec565b905060200201358261123c91906140bd565b9150600101611210565b50805f0361128c57505060408051808201909152601881527f546f74616c20616d6f756e74207a65726f20696e20555344000000000000000060208201525f91506112a0565b61129a898888888886611e47565b92509250505b965096945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156112ef5750825b90505f826001600160401b0316600114801561130a5750303b155b905081158015611318575080155b156113365760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561136057845460ff60401b1916600160401b1785555b61136986612006565b83156113af57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b604051631c13359160e11b81526001600160a01b0383811660048301525f9182917f000000000000000000000000000000000000000000000000000000000000000016906338266b22906024015f60405180830381865afa15801561141e573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526114459190810190613e60565b90506114518184612058565b949350505050565b6114616120ef565b5f5160206145645f395f51905f52805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061153e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166115325f51602061441a5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156106eb5760405163703e46dd60e11b815260040160405180910390fd5b5f7fa5586bb7fe6c4d1a576fc53fefe6d5915940638d338769f6905020734977f5008054604051634766d28760e01b81523360048201529192506001600160a01b031690634766d287906024015f6040518083038186803b1580156115bf575f5ffd5b505afa1580156113af573d5f5f3e3d5ffd5b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561162b575060408051601f3d908101601f1916820190925261162891810190613d00565b60015b61165857604051634c9c8ce360e01b81526001600160a01b03831660048201526024015b60405180910390fd5b5f51602061441a5f395f51905f52811461168857604051632a87526960e21b81526004810182905260240161164f565b611692838361211e565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106eb5760405163703e46dd60e11b815260040160405180910390fd5b6116e8613573565b6101008201516001600160401b03161580159061171257508161010001516001600160401b031642115b1561172b5760808201805183525f908190526101008301525b6101208201516001600160401b03161580159061175557508161012001516001600160401b031642115b156117715760a08201805160208401525f908190526101208301525b8160c001516001600160401b03164211156117b0575f604083015260c08201516101408301516117a19190612173565b6001600160401b031660c08301525b8160e001516001600160401b03164211156117ef575f606083015260e08201516101408301516117e091906121a1565b6001600160401b031660e08301525b5090565b5f6117fd826116e0565b805160208201516101008301519294505f92839291906001600160401b03161561182d5785608001519150600193505b6101208601516001600160401b03161561184c575060a0850151600192505b818660400151111561186357505f95945050505050565b808660600151111561187a57505f95945050505050565b6118a186604001518361188d9190613d2b565b606088015161189c9084613d2b565b6121cf565b9695505050505050565b6040805160018082528183019092525f91829182916020808301908036833701905050905085815f815181106118e3576118e3613cec565b6001600160a01b0392909216602092830291909101909101526040805160018082528183019092525f9181602001602082028036833701905050905084815f8151811061193257611932613cec565b6020026020010181815250505f5f61194d8b8b8a87876121de565b9150915080515f14158061196057508151155b15611974575f5f9550955050505050611a2f565b5f5f8c6001600160a01b031663fefb05498d866040518363ffffffff1660e01b81526004016119a49291906140d0565b6040805180830381865afa1580156119be573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119e291906140f3565b91509150818111156119ff575f5f97509750505050505050611a2f565b612710611a0c8284613d2b565b611a1890612710614115565b611a229190614140565b6001975097505050505050505b9550959350505050565b6040805160018082528183019092525f918291906020808301908036833701905050905083815f81518110611a7057611a70613cec565b6001600160a01b0392909216602092830291909101909101526040805160018082528183019092525f91816020016020820280368337019050506040516370a0823160e01b81526001600160a01b038881166004830152919250908616906370a0823190602401602060405180830381865afa158015611af2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b169190613d00565b815f81518110611b2857611b28613cec565b6020026020010181815250505f5f611b4389898887876121de565b915091505f611b5289896113b7565b845f81518110611b6457611b64613cec565b6020026020010151611b769190613d2b565b905081515f141580611b8757508251155b15611b99575f95505050505050611451565b5f5f8b6001600160a01b031663fefb05498c876040518363ffffffff1660e01b8152600401611bc99291906140d0565b6040805180830381865afa158015611be3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c0791906140f3565b9150915080821015611d66575f611c1e8383613d2b565b60405163785d04bf60e11b81526001600160a01b038d811660048301529192505f918f169063f0ba097e90602401606060405180830381865afa158015611c67573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c8b919061416c565b5190505f611cb18368056bc75e2d6310000069ffffffffffffffffffff8516600161252b565b90505f8f6001600160a01b031663c5b66b4a8f896040518363ffffffff1660e01b8152600401611cf69291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa158015611d11573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d359190613d00565b9050818111611d51575f9b505050505050505050505050611451565b611d5b8282613d2b565b9b5050505050611dd8565b6040516362db35a560e11b81526001600160a01b038b81166004830152602482018590528d169063c5b66b4a90604401602060405180830381865afa158015611db1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dd59190613d00565b97505b612710611de58982614115565b611def9190614140565b9c9b505050505050505050505050565b611e0761256d565b5f5160206145645f395f51905f52805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361149a565b5f60605f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b2ddc656040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ea7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ecb9190613bfb565b604051631c13359160e11b81526001600160a01b038b811660048301529192505f917f000000000000000000000000000000000000000000000000000000000000000016906338266b22906024015f60405180830381865afa158015611f33573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611f5a9190810190613e60565b905080606001515f14611f6e575f60408201525b5f81604001516001811115611f8557611f85613676565b148015611f925750600188115b15611fbc575f60405180606001604052806025815260200161443a602591399350935050506112a0565b80515f908190611fcc908861259d565b9150915081611fe3575f955093506112a092505050565b611ff38c8c8c8c8c8c8a8a6127c1565b9550955050505050965096945050505050565b61200e612b51565b7fa5586bb7fe6c4d1a576fc53fefe6d5915940638d338769f6905020734977f50080546001600160a01b0319166001600160a01b038316178155612050612b9a565b610e36612ba2565b602082015151515f9080825b828110156120b557846001600160a01b031686602001515f0151828151811061208f5761208f613cec565b60200260200101516001600160a01b0316036120ad578091506120b5565b600101612064565b508181036120c3575f6120e6565b84602001516020015181815181106120dd576120dd613cec565b60200260200101515b95945050505050565b5f5160206145645f395f51905f525460ff166106eb57604051638dfc202b60e01b815260040160405180910390fd5b61212782612bc2565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561216b576116928282612c25565b610e36612c8e565b5f5b6121886001600160401b03841683612cad565b9250826001600160401b03164211612175575090919050565b5f5b6121b66001600160401b03841683612cf0565b9250826001600160401b031642116121a3575090919050565b5f828218828410028218610ef9565b6060805f876001600160a01b031663b58eb63f6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561221d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526122449190810190613cbb565b80519091505f816001600160401b03811115612262576122626138a3565b6040519080825280602002602001820160405280156122a657816020015b604080518082019091525f80825260208201528152602001906001900390816122805790505b5090505f805b8381101561250a575f8582815181106122c7576122c7613cec565b60209081029190910101516040516370a0823160e01b81526001600160a01b038e81166004830152909116906370a0823190602401602060405180830381865afa158015612317573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061233b9190613d00565b90505f6123618c88858151811061235457612354613cec565b6020026020010151612058565b90508115612500576123738183613d2b565b915060018c60400151600181111561238d5761238d613676565b036124a5575f5b8b518110156124a3578b81815181106123af576123af613cec565b60200260200101516001600160a01b03168885815181106123d2576123d2613cec565b60200260200101516001600160a01b03160361249b578a81815181106123fa576123fa613cec565b602002602001015183101561246f57604080515f8082526020820190925290612444565b604080518082019091525f808252602082015281526020019060019003908161241e5790505b506040518060800160405280604881526020016143a960489139995099505050505050505050611a2f565b8a818151811061248157612481613cec565b6020026020010151836124949190613d2b565b92506124a3565b600101612394565b505b60405180604001604052808885815181106124c2576124c2613cec565b60200260200101516001600160a01b03168152602001838152508585815181106124ee576124ee613cec565b60200260200101819052508360010193505b50506001016122ac565b50815260408051602081019091525f8152909a909950975050505050505050565b5f61255861253883612d75565b801561255357505f848061254e5761254e61412c565b868809115b151590565b612563868686612da1565b6120e691906140bd565b5f5160206145645f395f51905f525460ff16156106eb5760405163d93c066560e01b815260040160405180910390fd5b5f60606125a9846116e0565b805160208201516101008301519296505f92839291906001600160401b0316156125d95787608001519150600193505b6101208801516001600160401b0316156125f8575060a0870151600192505b8188604001511115612658578315612631575f6040518060600160405280602f8152602001614338602f913995509550505050506127ba565b5f6040518060600160405280602681526020016142ea6026913995509550505050506127ba565b80886060015111156126b8578215612691575f6040518060600160405280603181526020016144c96031913995509550505050506127ba565b5f6040518060600160405280602881526020016143106028913995509550505050506127ba565b5f8860400151836126c99190613d2b565b90505f8960600151836126dc9190613d2b565b90508189111561273e578515612715575f60405180608001604052806042815260200161436760429139975097505050505050506127ba565b5f60405180606001604052806039815260200161445f60399139975097505050505050506127ba565b8089111561279e578415612775575f6040518060800160405280604481526020016145a660449139975097505050505050506127ba565b5f6040518060600160405280603b81526020016145ea603b9139975097505050505050506127ba565b600160405180602001604052805f815250975097505050505050505b9250929050565b5f606081886001600160401b038111156127dd576127dd6138a3565b604051908082528060200260200182016040528015612806578160200160208202803683370190505b5090505f5b89811015612acd57856001600160a01b03166392f1079a8c8c8481811061283457612834613cec565b905060200201602081019061284991906135fa565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561288b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128af919061409e565b6128f5575f6040518060400160405280601c81526020017f4e6f74206120737570706f7274656420737461626c6520746f6b656e00000000815250935093505050612b44565b856001600160a01b031663afe6ab008c8c8481811061291657612916613cec565b905060200201602081019061292b91906135fa565b8b8b8581811061293d5761293d613cec565b6040516001600160e01b031960e087901b1681526001600160a01b0390941660048501526020029190910135602483015250604401602060405180830381865afa15801561298d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129b19190613d00565b8282815181106129c3576129c3613cec565b60209081029190910101526001856040015160018111156129e6576129e6613676565b148015612a9b5750818181518110612a0057612a00613cec565b60200260200101518b8b83818110612a1a57612a1a613cec565b9050602002016020810190612a2f91906135fa565b6040516370a0823160e01b81526001600160a01b038f8116600483015291909116906370a0823190602401602060405180830381865afa158015612a75573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a999190613d00565b105b15612ac5575f6040518060600160405280603281526020016144fa60329139935093505050612b44565b60010161280b565b505f84604001516001811115612ae557612ae5613676565b03612b3657612b2c8b8b8b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508692508b91508a905089612e57565b9250925050612b44565b612b2c8b8b8b848989612f67565b9850989650505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166106eb57604051631afcd79f60e31b815260040160405180910390fd5b6106eb612b51565b612baa612b51565b5f5160206145645f395f51905f52805460ff19169055565b806001600160a01b03163b5f03612bf757604051634c9c8ce360e01b81526001600160a01b038216600482015260240161164f565b5f51602061441a5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051612c4191906141d7565b5f60405180830381855af49150503d805f8114612c79576040519150601f19603f3d011682016040523d82523d5f602084013e612c7e565b606091505b50915091506120e6858383613087565b34156106eb5760405163b398979f60e01b815260040160405180910390fd5b5f80612cb983856141ed565b90505f612cc96201518083614214565b90505f612cd78260016140bd565b612ce49062015180614115565b9050610e0f8582614240565b5f80612cfc83856141ed565b90505f80612d15612d106201518085614140565b6130e3565b509092509050612d26600182614266565b9050600c8160ff161115612d4457506001612d41818361427f565b91505b5f612d5183836001613251565b612d5e9062015180614115565b9050612d6a8682614240565b979650505050505050565b5f6002826003811115612d8a57612d8a613676565b612d949190614299565b60ff166001149050919050565b5f838302815f1985870982811083820303915050805f03612dd557838281612dcb57612dcb61412c565b0492505050610ef9565b808411612dec57612dec6003851502601118613387565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f6060855f81518110612e6c57612e6c613cec565b6020026020010151875f81518110612e8657612e86613cec565b60209081029190910101516040516370a0823160e01b81526001600160a01b038781166004830152909116906370a0823190602401602060405180830381865afa158015612ed6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612efa9190613d00565b1015612f23575f60405180606001604052806038815260200161452c60389139915091506112a0565b5f5f612f32868b878c8c6121de565b9150915080515f14612f4a575f935091506112a09050565b612f568a838989613398565b935093505050965096945050505050565b5f60605f5f612fac868b878c8c808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152508e92506121de915050565b9150915080515f14612fc4575f935091506112a09050565b5f5f876001600160a01b031663fefb05498d866040518363ffffffff1660e01b8152600401612ff49291906140d0565b6040805180830381865afa15801561300e573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061303291906140f3565b9150915081811115613065575f6040518060600160405280603181526020016144986031913995509550505050506112a0565b505060408051602081019091525f815260019b909a5098505050505050505050565b60608261309c57613097826134ae565b610ef9565b81511580156130b357506001600160a01b0384163b155b156130dc57604051639996b31560e01b81526001600160a01b038516600482015260240161164f565b5080610ef9565b5f808083816130f58262010bd96141ed565b6131029062253d8c6141ed565b90505f62023ab16131148360046142ba565b61311e9190614214565b9050600461312f8262023ab16142ba565b61313a9060036141ed565b6131449190614214565b61314e9083614240565b91505f62164b096131608460016141ed565b61316c90610fa06142ba565b6131769190614214565b90506004613186826105b56142ba565b6131909190614214565b61319a9084614240565b6131a590601f6141ed565b92505f61098f6131b68560506142ba565b6131c09190614214565b90505f60506131d18361098f6142ba565b6131db9190614214565b6131e59086614240565b90506131f2600b83614214565b94506131ff85600c6142ba565b61320a8360026141ed565b6132149190614240565b91508483613223603187614240565b61322e9060646142ba565b61323891906141ed565b61324291906141ed565b9a919950975095505050505050565b5f61ffff841660ff8085169084168362253d8c60046064600c613275600e88614240565b61327f9190614214565b61328b886113246141ed565b61329591906141ed565b61329f9190614214565b6132aa9060036142ba565b6132b49190614214565b600c806132c2600e88614240565b6132cc9190614214565b6132d790600c6142ba565b6132e2600288614240565b6132ec9190614240565b6132f89061016f6142ba565b6133029190614214565b6004600c613311600e89614240565b61331b9190614214565b613327896112c06141ed565b61333191906141ed565b61333d906105b56142ba565b6133479190614214565b613353617d4b87614240565b61335d91906141ed565b61336791906141ed565b6133719190614240565b61337b9190614240565b98975050505050505050565b634e487b715f52806020526024601cfd5b5f60605f5f846001600160a01b031663fefb054989896040518363ffffffff1660e01b81526004016133cb9291906140d0565b6040805180830381865afa1580156133e5573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061340991906140f3565b915091508181111561343a575f604051806060016040528060228152602001614584602291399350935050506134a5565b6134448183613d2b565b86111561348d575f6040518060400160405280601c81526020017f496e73756666696369656e7420626f72726f77696e6720706f776572000000008152509350935050506134a5565b600160405180602001604052805f8152509350935050505b94509492505050565b8051156134be5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b50565b604080516101a08101909152805f815260200160608152602001606081526020016060815260200161353d604051806080016040528060608152602001606081526020015f6001600160a01b031681526020015f6001600160601b031681525090565b81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b6040518061016001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f6001600160401b031681526020015f6001600160401b031681526020015f6001600160401b031681526020015f6001600160401b031681526020015f81525090565b6001600160a01b03811681146134d7575f5ffd5b5f6020828403121561360a575f5ffd5b8135610ef9816135e6565b5f8151808452602084019350602083015f5b8281101561365a57815180516001600160a01b031687526020908101518188015260409096019590910190600101613627565b5093949350505050565b602081525f610ef96020830184613615565b634e487b7160e01b5f52602160045260245ffd5b600281106136a657634e487b7160e01b5f52602160045260245ffd5b9052565b5f8151808452602084019350602083015f5b8281101561365a5781518652602095860195909101906001016136bc565b8051608080845281519084018190525f9160200190829060a08601905b808310156137225783516001600160a01b0316825260209384019360019390930192909101906136f7565b5060208501519250858103602087015261373c81846136aa565b92505050604083015161375a60408601826001600160a01b03169052565b50606083015161377560608601826001600160601b03169052565b509392505050565b6020815261378f60208201835161368a565b5f60208301516101a060408401526137ab6101c0840182613615565b90506040840151601f198483030160608501526137c88282613615565b9150506060840151601f198483030160808501526137e68282613615565b9150506080840151601f198483030160a085015261380482826136da565b91505060a084015160c084015260c084015160e084015260e08401516101008401526101008401516101208401526101208401516101408401526101408401516101608401526101608401516101808401526101808401516101a08401528091505092915050565b5f5f6040838503121561387d575f5ffd5b8235613888816135e6565b91506020830135613898816135e6565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b03811182821017156138d9576138d96138a3565b60405290565b60405160a081016001600160401b03811182821017156138d9576138d96138a3565b60405161016081016001600160401b03811182821017156138d9576138d96138a3565b604080519081016001600160401b03811182821017156138d9576138d96138a3565b604051601f8201601f191681016001600160401b038111828210171561396e5761396e6138a3565b604052919050565b5f5f60408385031215613987575f5ffd5b8235613992816135e6565b915060208301356001600160401b038111156139ac575f5ffd5b8301601f810185136139bc575f5ffd5b80356001600160401b038111156139d5576139d56138a3565b6139e8601f8201601f1916602001613946565b8181528660208385010111156139fc575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f61016082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c0830151613a7360c08401826001600160401b03169052565b5060e0830151613a8e60e08401826001600160401b03169052565b50610100830151613aab6101008401826001600160401b03169052565b50610120830151613ac86101208401826001600160401b03169052565b5061014092830151919092015290565b5f5f83601f840112613ae8575f5ffd5b5081356001600160401b03811115613afe575f5ffd5b6020830191508360208260051b85010111156127ba575f5ffd5b5f5f5f5f5f5f60808789031215613b2d575f5ffd5b8635613b38816135e6565b95506020870135945060408701356001600160401b03811115613b59575f5ffd5b613b6589828a01613ad8565b90955093505060608701356001600160401b03811115613b83575f5ffd5b613b8f89828a01613ad8565b979a9699509497509295939492505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b8215158152604060208201525f6114516040830184613ba1565b602081525f610ef96020830184613ba1565b5f60208284031215613c0b575f5ffd5b8151610ef9816135e6565b5f6001600160401b03821115613c2e57613c2e6138a3565b5060051b60200190565b8051613c43816135e6565b919050565b5f82601f830112613c57575f5ffd5b8151613c6a613c6582613c16565b613946565b8082825260208201915060208360051b860101925085831115613c8b575f5ffd5b602085015b83811015613cb1578051613ca3816135e6565b835260209283019201613c90565b5095945050505050565b5f60208284031215613ccb575f5ffd5b81516001600160401b03811115613ce0575f5ffd5b61145184828501613c48565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613d10575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610e1557610e15613d17565b80516001600160401b0381168114613c43575f5ffd5b80516001600160601b0381168114613c43575f5ffd5b5f60808284031215613d7a575f5ffd5b613d826138b7565b905081516001600160401b03811115613d99575f5ffd5b613da584828501613c48565b82525060208201516001600160401b03811115613dc0575f5ffd5b8201601f81018413613dd0575f5ffd5b8051613dde613c6582613c16565b8082825260208201915060208360051b850101925086831115613dff575f5ffd5b6020840193505b82841015613e21578351825260209384019390910190613e06565b602085015250613e3691505060408301613c38565b6040820152613e4760608301613d54565b606082015292915050565b805160028110613c43575f5ffd5b5f60208284031215613e70575f5ffd5b81516001600160401b03811115613e85575f5ffd5b82018084036101e0811215613e98575f5ffd5b613ea06138df565b610160821215613eae575f5ffd5b613eb6613901565b835181526020808501519082015260408085015190820152606080850151908201526080808501519082015260a080850151908201529150613efa60c08401613d3e565b60c0830152613f0b60e08401613d3e565b60e0830152613f1d6101008401613d3e565b610100830152613f306101208401613d3e565b6101208301526101408381015190830152908152610160820151906001600160401b03821115613f5e575f5ffd5b613f6a86838501613d6a565b6020820152613f7c6101808401613e52565b60408201526101a083015160608201526101c0909201516080830152509392505050565b5f82601f830112613faf575f5ffd5b8151613fbd613c6582613c16565b8082825260208201915060208360061b860101925085831115613fde575f5ffd5b602085015b83811015613cb15760408188031215613ffa575f5ffd5b614002613924565b815161400d816135e6565b8152602082810151818301529084529290920191604001613fe3565b5f5f5f5f6080858703121561403c575f5ffd5b84516001600160401b03811115614051575f5ffd5b61405d87828801613fa0565b60208701516040880151919650945090506001600160401b03811115614081575f5ffd5b61408d87828801613fa0565b606096909601519497939650505050565b5f602082840312156140ae575f5ffd5b81518015158114610ef9575f5ffd5b80820180821115610e1557610e15613d17565b6001600160a01b03831681526040602082018190525f9061145190830184613615565b5f5f60408385031215614104575f5ffd5b505080516020909101519092909150565b8082028115828204841417610e1557610e15613d17565b634e487b7160e01b5f52601260045260245ffd5b5f8261414e5761414e61412c565b500490565b805169ffffffffffffffffffff81168114613c43575f5ffd5b5f606082840312801561417d575f5ffd5b50604051606081016001600160401b03811182821017156141a0576141a06138a3565b6040526141ac83614153565b81526141ba60208401614153565b60208201526141cb60408401613d54565b60408201529392505050565b5f82518060208501845e5f920191825250919050565b8082018281125f83128015821682158216171561420c5761420c613d17565b505092915050565b5f826142225761422261412c565b600160ff1b82145f198414161561423b5761423b613d17565b500590565b8181035f83128015838313168383128216171561425f5761425f613d17565b5092915050565b60ff8181168382160190811115610e1557610e15613d17565b61ffff8181168382160190811115610e1557610e15613d17565b5f60ff8316806142ab576142ab61412c565b8060ff84160691505092915050565b8082025f8212600160ff1b841416156142d5576142d5613d17565b8181058314821517610e1557610e15613d1756fe4461696c79207370656e64696e67206c696d697420616c7265616479206578686175737465644d6f6e74686c79207370656e64696e67206c696d697420616c726561647920657868617573746564496e636f6d696e67206461696c79207370656e64696e67206c696d697420616c726561647920657868617573746564496e636f6d696e67206461696c7920617661696c61626c65207370656e64696e67206c696d6974206c657373207468616e20616d6f756e7420726571756573746564496e73756666696369656e74206566666563746976652062616c616e6365206166746572207769746864726177616c20746f207370656e642077697468206465626974206d6f6465546f6b656e7320616e6420616d6f756e747320617272617973206c656e677468206d69736d61746368360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc4f6e6c79206f6e6520746f6b656e20616c6c6f77656420696e20437265646974206d6f64654461696c7920617661696c61626c65207370656e64696e67206c696d6974206c657373207468616e20616d6f756e7420726571756573746564426f72726f77696e67732067726561746572207468616e206d617820626f72726f77206166746572207370656e64696e67496e636f6d696e67206d6f6e74686c79207370656e64696e67206c696d697420616c726561647920657868617573746564496e73756666696369656e7420746f6b656e2062616c616e636520666f72206465626974206d6f6465207370656e64696e67496e73756666696369656e74206c697175696469747920696e2064656274206d616e6167657220746f20636f76657220746865206c6f616ecd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300426f72726f77696e67732067726561746572207468616e206d617820626f72726f77496e636f6d696e67206d6f6e74686c7920617661696c61626c65207370656e64696e67206c696d6974206c657373207468616e20616d6f756e74207265717565737465644d6f6e74686c7920617661696c61626c65207370656e64696e67206c696d6974206c657373207468616e20616d6f756e7420726571756573746564a164736f6c634300081c000a000000000000000000000000bc5e1a8cdc14b286a8f5f523059cf02a7ffe9a6d0000000000000000000000004a9c44c97bbf6079db37c4769aebe425bbcdd09a