0 txs
503 calls
constructor
constructor(address dataProvider)
functions
CASHBACK_DISPATCHER_ADMIN_ROLE
viewfunction CASHBACK_DISPATCHER_ADMIN_ROLE() view returns (bytes32)
cashModule
viewfunction cashModule() view returns (address)
convertUsdToCashbackToken
viewfunction convertUsdToCashbackToken(address cashbackToken, uint256 cashbackInUsd) view returns (uint256)
etherFiDataProvider
viewfunction etherFiDataProvider() view returns (address)
getCashbackTokens
viewfunction getCashbackTokens() view returns (address[])
HUNDRED_PERCENT_IN_BPS
viewfunction HUNDRED_PERCENT_IN_BPS() view returns (uint256)
isCashbackToken
viewfunction isCashbackToken(address token) view returns (bool)
paused
viewfunction paused() view returns (bool)
priceProvider
viewfunction priceProvider() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
roleRegistry
viewfunction roleRegistry() view returns (address)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
cashback
nonpayablefunction cashback(address recipient, address token, uint256 amountInUsd) returns (uint256 cashbackAmountInToken, bool paid)
clearPendingCashback
nonpayablefunction clearPendingCashback(address account, address token, uint256 amountInUsd) returns (uint256, bool)
configureCashbackToken
nonpayablefunction configureCashbackToken(address[] tokens, bool[] shouldWhitelist)
initialize
nonpayablefunction initialize(address _roleRegistry, address _cashModule, address _priceProvider, address[] _cashbackTokens)
pause
nonpayablefunction pause()
setCashModule
nonpayablefunction setCashModule(address _cashModule)
setPriceProvider
nonpayablefunction setPriceProvider(address _priceProvider)
unpause
nonpayablefunction unpause()
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
withdrawFunds
nonpayablefunction withdrawFunds(address token, address recipient, uint256 amount)
events
CashbackTokensConfigured
event CashbackTokensConfigured(address[] tokens, bool[] isWhitelisted)
CashModuleSet
event CashModuleSet(address oldModule, address newModule)
Initialized
event Initialized(uint64 version)
Paused
event Paused(address account)
PriceProviderSet
event PriceProviderSet(address oldPriceProvider, address newPriceProvider)
Unpaused
event Unpaused(address account)
Upgraded
event Upgraded(address indexed implementation)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
ArrayLengthMismatch
error ArrayLengthMismatch()
CannotWithdrawZeroAmount
error CannotWithdrawZeroAmount()
CashbackTokenPriceNotConfigured
error CashbackTokenPriceNotConfigured()
DuplicateElementFound
error DuplicateElementFound()
EnforcedPause
error EnforcedPause()
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
ExpectedPause
error ExpectedPause()
FailedCall
error FailedCall()
InvalidAddress
error InvalidAddress(uint256 index)
InvalidCashbackToken
error InvalidCashbackToken()
InvalidInitialization
error InvalidInitialization()
InvalidInput
error InvalidInput()
InvalidInput
error InvalidInput()
InvalidValue
error InvalidValue()
NotInitializing
error NotInitializing()
OnlyCashModule
error OnlyCashModule()
OnlyEtherFiSafe
error OnlyEtherFiSafe()
OnlyRoleRegistryOwner
error OnlyRoleRegistryOwner()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
Unauthorized
error Unauthorized()
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
WithdrawFundsFailed
error WithdrawFundsFailed()
creation bytecode
0x60c060405230608052348015610013575f5ffd5b50604051612b09380380612b09833981016040819052610032916100ff565b6001600160a01b03811660a05261004761004d565b5061012c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161561009d5760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100fc5780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f6020828403121561010f575f5ffd5b81516001600160a01b0381168114610125575f5ffd5b9392505050565b60805160a0516129ae61015b5f395f61041401525f81816115fc0152818161162501526117c801526129ae5ff3fe608060405260043610610131575f3560e01c80637f12dc60116100a8578063ad3cb1cc1161006d578063ad3cb1cc1461032d578063b3f0ce951461036a578063b888879e14610389578063bfed2747146103c5578063e6bfbfd8146103e4578063f9fba81b14610403575f5ffd5b80637f12dc60146102a6578063841945a8146102bb5780638456cb59146102da5780639e0be080146102ee578063acce52281461030d575f5ffd5b8063405b768d116100f9578063405b768d146101ce5780634a3a2497146101ef5780634f1ef2861461022357806352d1902d146102365780635c975abb14610258578063782f837814610287575f5ffd5b806308c73259146101355780631c20fadd146101665780633575f0de14610187578063372aa2241461019b5780633f4ba83a146101ba575b5f5ffd5b348015610140575f5ffd5b50610149610436565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610171575f5ffd5b506101856101803660046123ba565b610464565b005b348015610192575f5ffd5b50610149610671565b3480156101a6575f5ffd5b506101856101b53660046123f8565b610690565b3480156101c5575f5ffd5b506101856108c7565b3480156101d9575f5ffd5b506101e261092e565b60405161015d9190612413565b3480156101fa575f5ffd5b5061020e6102093660046123ba565b61095e565b6040805192835290151560208301520161015d565b610185610231366004612472565b610aa5565b348015610241575f5ffd5b5061024a610ac4565b60405190815260200161015d565b348015610263575f5ffd5b505f5160206129825f395f51905f525460ff165b604051901515815260200161015d565b348015610292575f5ffd5b506101856102a1366004612580565b610adf565b3480156102b1575f5ffd5b5061024a61271081565b3480156102c6575f5ffd5b506101856102d53660046123f8565b610ce6565b3480156102e5575f5ffd5b50610185610e25565b3480156102f9575f5ffd5b5061020e6103083660046123ba565b610e8a565b348015610318575f5ffd5b5061024a5f5160206129225f395f51905f5281565b348015610338575f5ffd5b5061035d604051806040016040528060058152602001640352e302e360dc1b81525081565b60405161015d91906125ec565b348015610375575f5ffd5b5061024a610384366004612621565b610fce565b348015610394575f5ffd5b507fa811d98743cf5c2254d5b85d74a3edcffad2f9de84faa2d8191ebc4345a03b01546001600160a01b0316610149565b3480156103d0575f5ffd5b506102776103df3660046123f8565b611108565b3480156103ef575f5ffd5b506101856103fe36600461264b565b611133565b34801561040e575f5ffd5b506101497f000000000000000000000000000000000000000000000000000000000000000081565b7fa5586bb7fe6c4d1a576fc53fefe6d5915940638d338769f6905020734977f500546001600160a01b031690565b3361046d610436565b6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104a8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104cc91906126c2565b6001600160a01b0316146104f35760405163ab1899a760e01b815260040160405180910390fd5b6001600160a01b03821661051a57604051632a9ffab760e21b815260040160405180910390fd5b6001600160a01b0383166105c857805f036105325750475b805f036105525760405163c740c32d60e01b815260040160405180910390fd5b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f811461059b576040519150601f19603f3d011682016040523d82523d5f602084013e6105a0565b606091505b50509050806105c257604051632607a81f60e11b815260040160405180910390fd5b50505050565b805f03610638576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610611573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061063591906126dd565b90505b805f036106585760405163c740c32d60e01b815260040160405180910390fd5b61066c6001600160a01b038416838361143c565b505050565b5f5f5160206129625f395f51905f525b546001600160a01b0316919050565b5f5160206129225f395f51905f526106a6610436565b604051632474521560e21b8152600481018390523360248201526001600160a01b0391909116906391d1485490604401602060405180830381865afa1580156106f1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107159190612701565b610731576040516282b42960e81b815260040160405180910390fd5b6001600160a01b03821661075857604051632a9ffab760e21b815260040160405180910390fd5b5f61076161092e565b80519091505f5b8181101561082a57846001600160a01b031663aea910788483815181106107915761079161271c565b60200260200101516040518263ffffffff1660e01b81526004016107c491906001600160a01b0391909116815260200190565b602060405180830381865afa1580156107df573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061080391906126dd565b5f0361082257604051631c34048d60e21b815260040160405180910390fd5b600101610768565b507fa811d98743cf5c2254d5b85d74a3edcffad2f9de84faa2d8191ebc4345a03b0154604080516001600160a01b039283168152918616602083015280515f5160206129625f395f51905f52927f98c01d227e3cc9d2c6f54140e668728d1cb767472f07d012d156af971734459d92908290030190a160010180546001600160a01b0319166001600160a01b039590951694909417909355505050565b6108cf610436565b6040516317bf301f60e21b81523360048201526001600160a01b039190911690635efcc07c906024015f6040518083038186803b15801561090e575f5ffd5b505afa158015610920573d5f5f3e3d5ffd5b5050505061092c61148e565b565b60606109597fa811d98743cf5c2254d5b85d74a3edcffad2f9de84faa2d8191ebc4345a03b036114ed565b905090565b5f5f6109686115c1565b5f5160206129625f395f51905f526001600160a01b03861661099d5760405163b4fa3fb360e01b815260040160405180910390fd5b6109a685611108565b6109c35760405163072ef19560e11b815260040160405180910390fd5b80546001600160a01b031633146109ed5760405163e39d9c5760e01b815260040160405180910390fd5b6109f78585610fce565b9250825f03610a0d575f60019250925050610a9d565b6040516370a0823160e01b815230600482015283906001600160a01b038716906370a0823190602401602060405180830381865afa158015610a51573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a7591906126dd565b1015610a83575f9150610a9b565b60019150610a9b6001600160a01b038616878561143c565b505b935093915050565b610aad6115f1565b610ab68261167f565b610ac082826116fc565b5050565b5f610acd6117bd565b505f5160206129425f395f51905f5290565b5f5160206129225f395f51905f52610af5610436565b604051632474521560e21b8152600481018390523360248201526001600160a01b0391909116906391d1485490604401602060405180830381865afa158015610b40573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b649190612701565b610b80576040516282b42960e81b815260040160405180910390fd5b5f5160206129625f395f51905f52845f5b81811015610c8f57858582818110610bab57610bab61271c565b9050602002016020810190610bc09190612730565b8015610c69575060018301546001600160a01b031663aea91078898984818110610bec57610bec61271c565b9050602002016020810190610c0191906123f8565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610c43573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c6791906126dd565b155b15610c8757604051631c34048d60e21b815260040160405180910390fd5b600101610b91565b50610ca06003830188888888611806565b7f963051779c6a0b3c66d3b9e6801113d27ddd868c0fcf41d32ff9193178d8549c87878787604051610cd5949392919061274b565b60405180910390a150505050505050565b5f5160206129225f395f51905f52610cfc610436565b604051632474521560e21b8152600481018390523360248201526001600160a01b0391909116906391d1485490604401602060405180830381865afa158015610d47573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d6b9190612701565b610d87576040516282b42960e81b815260040160405180910390fd5b6001600160a01b038216610dae57604051632a9ffab760e21b815260040160405180910390fd5b5f5160206129625f395f51905f528054604080516001600160a01b039283168152918516602083015280517f351e8a61bed0d832d3814486bf024294ee02a6ad594c3e034592dfdcb5833e289281900390910190a180546001600160a01b0319166001600160a01b03939093169290921790915550565b610e2d610436565b604051632fd0067b60e21b81523360048201526001600160a01b03919091169063bf4019ec906024015f6040518083038186803b158015610e6c575f5ffd5b505afa158015610e7e573d5f5f3e3d5ffd5b5050505061092c6119d0565b5f5f610e9584611108565b610eb25760405163072ef19560e11b815260040160405180910390fd5b5f5160206129625f395f51905f526001600160a01b038616610ee75760405163b4fa3fb360e01b815260040160405180910390fd5b80546001600160a01b03163314610f115760405163e39d9c5760e01b815260040160405180910390fd5b5f610f1c8686610fce565b9050805f03610f33575f6001935093505050610a9d565b6040516370a0823160e01b815230600482015281906001600160a01b038816906370a0823190602401602060405180830381865afa158015610f77573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f9b91906126dd565b1015610fad5792505f9150610a9d9050565b610fc16001600160a01b038716888361143c565b925060019150610a9d9050565b5f610fd883611108565b610ff55760405163072ef19560e11b815260040160405180910390fd5b815f0361100357505f611102565b5f5f5160206129625f395f51905f5260018101546040516315d5220f60e31b81526001600160a01b0387811660048301529293505f929091169063aea9107890602401602060405180830381865afa158015611061573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061108591906126dd565b90506110fd856001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110c6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110ea91906127da565b6110f590600a6128e9565b859083611a18565b925050505b92915050565b5f6111027fa811d98743cf5c2254d5b85d74a3edcffad2f9de84faa2d8191ebc4345a03b0383611acf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f811580156111785750825b90505f8267ffffffffffffffff1660011480156111945750303b155b9050811580156111a2575080155b156111c05760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156111ea57845460ff60401b1916600160401b1785555b6001600160a01b038916158061120757506001600160a01b038816155b1561122557604051632a9ffab760e21b815260040160405180910390fd5b61122e8a611b78565b5f5160206129625f395f51905f5280546001600160a01b038b81166001600160a01b03199283161783557fa811d98743cf5c2254d5b85d74a3edcffad2f9de84faa2d8191ebc4345a03b018054918c1691909216179055865f5b818110156113575760018301546001600160a01b031663aea910788b8b848181106112b5576112b561271c565b90506020020160208101906112ca91906123f8565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561130c573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061133091906126dd565b5f0361134f57604051631c34048d60e21b815260040160405180910390fd5b600101611288565b50611366600383018a8a611bca565b604080515f81526001600160a01b038d1660208201527f351e8a61bed0d832d3814486bf024294ee02a6ad594c3e034592dfdcb5833e28910160405180910390a1604080515f81526001600160a01b038c1660208201527f98c01d227e3cc9d2c6f54140e668728d1cb767472f07d012d156af971734459d910160405180910390a15050831561143057845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261066c908490611d08565b611496611d74565b5f5160206129825f395f51905f52805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b63978aab926004525f818152602481206060915068fbb67fda52d4bfb8bf81548060a01b60a01c6040519450846020018260601c925083831415830281528161157b57821561157657600191508185015460601c92508215611576578284141590920260208301525060028381015460601c918215611576576003915083831415830260408201525b6115ab565b600191821c915b828110156115a9578581015460601c858114158102600583901b8401529350600101611582565b505b8186528160051b81016040525050505050919050565b5f5160206129825f395f51905f525460ff161561092c5760405163d93c066560e01b815260040160405180910390fd5b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061166157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611655611da3565b6001600160a01b031614155b1561092c5760405163703e46dd60e11b815260040160405180910390fd5b5f7fa5586bb7fe6c4d1a576fc53fefe6d5915940638d338769f6905020734977f5008054604051634766d28760e01b81523360048201529192506001600160a01b031690634766d287906024015f6040518083038186803b1580156116e2575f5ffd5b505afa1580156116f4573d5f5f3e3d5ffd5b505050505050565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611756575060408051601f3d908101601f19168201909252611753918101906126dd565b60015b61178357604051634c9c8ce360e01b81526001600160a01b03831660048201526024015b60405180910390fd5b5f5160206129425f395f51905f5281146117b357604051632a87526960e21b81526004810182905260240161177a565b61066c8383611db7565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461092c5760405163703e46dd60e11b815260040160405180910390fd5b825f8190036118285760405163b4fa3fb360e01b815260040160405180910390fd5b8082146118485760405163512509d360e11b815260040160405180910390fd5b600181111561188c5761188c8585808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611e0c92505050565b5f5b818110156119c7575f8686838181106118a9576118a961271c565b90506020020160208101906118be91906123f8565b6001600160a01b0316036118e85760405163738e4d9960e11b81526004810182905260240161177a565b5f61191a8787848181106118fe576118fe61271c565b905060200201602081019061191391906123f8565b8990611acf565b905084848381811061192e5761192e61271c565b90506020020160208101906119439190612730565b1561198557806119805761197e8787848181106119625761196261271c565b905060200201602081019061197791906123f8565b8990611f1c565b505b6119be565b80156119be576119bc8787848181106119a0576119a061271c565b90506020020160208101906119b591906123f8565b8990612078565b505b5060010161188e565b50505050505050565b6119d86115c1565b5f5160206129825f395f51905f52805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336114cf565b5f838302815f1985870982811083820303915050805f03611a4c57838281611a4257611a426128f7565b0492505050611ac8565b808411611a6357611a6360038515026011186121b1565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b63978aab926004525f828152602481206001600160a01b03929092169168fbb67fda52d4bfb8be198301611b0a5763f5a267f15f526004601cfd5b82611b1c5768fbb67fda52d4bfb8bf92505b80546001600160601b038116611b5f5760019250838160601c0315611b7057600182015460601c8414611b7057600282015460601c8414611b70575f9250611b70565b81602052835f5260405f2054151592505b505092915050565b611b806121c2565b7fa5586bb7fe6c4d1a576fc53fefe6d5915940638d338769f6905020734977f50080546001600160a01b0319166001600160a01b038316178155611bc261220b565b610ac0612213565b805f819003611bec5760405163b4fa3fb360e01b815260040160405180910390fd5b6001811115611c3057611c308383808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611e0c92505050565b5f5b81811015611d01575f848483818110611c4d57611c4d61271c565b9050602002016020810190611c6291906123f8565b6001600160a01b031603611c8c5760405163738e4d9960e11b81526004810182905260240161177a565b5f611cbe858584818110611ca257611ca261271c565b9050602002016020810190611cb791906123f8565b8790611acf565b905080611cf857611cf6858584818110611cda57611cda61271c565b9050602002016020810190611cef91906123f8565b8790611f1c565b505b50600101611c32565b5050505050565b5f5f60205f8451602086015f885af180611d27576040513d5f823e3d81fd5b50505f513d91508115611d3e578060011415611d4b565b6001600160a01b0384163b155b156105c257604051635274afe760e01b81526001600160a01b038516600482015260240161177a565b5f5160206129825f395f51905f525460ff1661092c57604051638dfc202b60e01b815260040160405180910390fd5b5f5f5160206129425f395f51905f52610681565b611dc082612233565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611e045761066c8282612296565b610ac06122ff565b805160018111611e1a575050565b5f8167ffffffffffffffff811115611e3457611e3461245e565b604051908082528060200260200182016040528015611e5d578160200160208202803683370190505b5090505f5b828110156105c2575f848281518110611e7d57611e7d61271c565b602002602001015190505f5f90505b82811015611ee757838181518110611ea657611ea661271c565b60200260200101516001600160a01b0316826001600160a01b031603611edf57604051630e3e200f60e41b815260040160405180910390fd5b600101611e8c565b5080838381518110611efb57611efb61271c565b6001600160a01b039092166020928302919091019091015250600101611e62565b63978aab926004525f828152602481206001600160a01b03929092169168fbb67fda52d4bfb8be198301611f575763f5a267f15f526004601cfd5b82611f695768fbb67fda52d4bfb8bf92505b80546001600160601b038116826020528061202b578160601c80611f97578560601b8455600194505061206f565b858103611fa4575061206f565b600184015460601c80611fc5578660601b600186015560019550505061206f565b868103611fd357505061206f565b600285015460601c80611ff5578760601b60028701556001965050505061206f565b8781036120045750505061206f565b5f928352604080842060019055918352818320600290558252902060039055506007908117905b845f5260405f20805461206d57600191821c808301825591945081612059578560601b60031784555061206f565b8560601b828501558260020184555061206f565b505b50505092915050565b63978aab926004525f828152602481206001600160a01b03929092169168fbb67fda52d4bfb8be1983016120b35763f5a267f15f526004601cfd5b826120c55768fbb67fda52d4bfb8bf92505b80546001600160601b0381168061213f5760019350848260601c036120fd5760018301805484556002840180549091555f905561206f565b84600184015460601c0361211e5760028301805460018501555f905561206f565b84600284015460601c03612137575f600284015561206f565b5f935061206f565b82602052845f5260405f2080548061215857505061206f565b60018360011c039250826001820314612188578285015460601c8060601b60018303870155805f52508060405f20555b5083546bffffffffffffffffffffffff1916600192831b1782179093555f909255509392505050565b634e487b715f52806020526024601cfd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661092c57604051631afcd79f60e31b815260040160405180910390fd5b61092c6121c2565b61221b6121c2565b5f5160206129825f395f51905f52805460ff19169055565b806001600160a01b03163b5f0361226857604051634c9c8ce360e01b81526001600160a01b038216600482015260240161177a565b5f5160206129425f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516122b2919061290b565b5f60405180830381855af49150503d805f81146122ea576040519150601f19603f3d011682016040523d82523d5f602084013e6122ef565b606091505b50915091506110fd85838361231e565b341561092c5760405163b398979f60e01b815260040160405180910390fd5b6060826123335761232e8261237a565b611ac8565b815115801561234a57506001600160a01b0384163b155b1561237357604051639996b31560e01b81526001600160a01b038516600482015260240161177a565b5080611ac8565b80511561238a5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b50565b6001600160a01b03811681146123a3575f5ffd5b5f5f5f606084860312156123cc575f5ffd5b83356123d7816123a6565b925060208401356123e7816123a6565b929592945050506040919091013590565b5f60208284031215612408575f5ffd5b8135611ac8816123a6565b602080825282518282018190525f918401906040840190835b818110156124535783516001600160a01b031683526020938401939092019160010161242c565b509095945050505050565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215612483575f5ffd5b823561248e816123a6565b9150602083013567ffffffffffffffff8111156124a9575f5ffd5b8301601f810185136124b9575f5ffd5b803567ffffffffffffffff8111156124d3576124d361245e565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156125025761250261245e565b604052818152828201602001871015612519575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f83601f840112612548575f5ffd5b50813567ffffffffffffffff81111561255f575f5ffd5b6020830191508360208260051b8501011115612579575f5ffd5b9250929050565b5f5f5f5f60408587031215612593575f5ffd5b843567ffffffffffffffff8111156125a9575f5ffd5b6125b587828801612538565b909550935050602085013567ffffffffffffffff8111156125d4575f5ffd5b6125e087828801612538565b95989497509550505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f60408385031215612632575f5ffd5b823561263d816123a6565b946020939093013593505050565b5f5f5f5f5f6080868803121561265f575f5ffd5b853561266a816123a6565b9450602086013561267a816123a6565b9350604086013561268a816123a6565b9250606086013567ffffffffffffffff8111156126a5575f5ffd5b6126b188828901612538565b969995985093965092949392505050565b5f602082840312156126d2575f5ffd5b8151611ac8816123a6565b5f602082840312156126ed575f5ffd5b5051919050565b80151581146123a3575f5ffd5b5f60208284031215612711575f5ffd5b8151611ac8816126f4565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612740575f5ffd5b8135611ac8816126f4565b604080825281018490525f8560608301825b8781101561278d578235612770816123a6565b6001600160a01b031682526020928301929091019060010161275d565b50838103602080860191909152858252019050845f5b858110156127cd5781356127b6816126f4565b1515835260209283019291909101906001016127a3565b5090979650505050505050565b5f602082840312156127ea575f5ffd5b815160ff81168114611ac8575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b6001815b6001841115610a9d5780850481111561282d5761282d6127fa565b600184161561283b57908102905b60019390931c928002612812565b5f8261285757506001611102565b8161286357505f611102565b816001811461287957600281146128835761289f565b6001915050611102565b60ff841115612894576128946127fa565b50506001821b611102565b5060208310610133831016604e8410600b84101617156128c2575081810a611102565b6128ce5f19848461280e565b805f19048211156128e1576128e16127fa565b029392505050565b5f611ac860ff841683612849565b634e487b7160e01b5f52601260045260245ffd5b5f82518060208501845e5f92019182525091905056feee0827b4a1a68b853e2d75c3e1fb519603737dd0d7ad676be8f641fb34c5c185360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca811d98743cf5c2254d5b85d74a3edcffad2f9de84faa2d8191ebc4345a03b00cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300a164736f6c634300081c000a0000000000000000000000004a9c44c97bbf6079db37c4769aebe425bbcdd09a