0 txs
0 calls
constructor
No constructor.
functions
AUTHORIZER_ROLE
viewfunction AUTHORIZER_ROLE() view returns (bytes32)
CARD_BOOKED
viewfunction CARD_BOOKED() view returns (uint256)
chf24Address
viewfunction chf24Address() view returns (address)
cnh24Address
viewfunction cnh24Address() view returns (address)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
eur24Address
viewfunction eur24Address() view returns (address)
exchangeRates
viewfunction exchangeRates(address, address) view returns (uint256)
exchangeSpread
viewfunction exchangeSpread() view returns (uint256)
f24Address
viewfunction f24Address() view returns (address)
fiat24AccountAddress
viewfunction fiat24AccountAddress() view returns (address)
gbp24Address
viewfunction gbp24Address() view returns (address)
getRate
viewfunction getRate(address _inputToken, address _outputToken) view returns (uint256)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getSpread
viewfunction getSpread(address _inputToken, address _outputToken, bool exactOut) view returns (uint256)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
interchange
viewfunction interchange() view returns (uint256)
marketClosed
viewfunction marketClosed() view returns (bool)
marketClosedSpread
viewfunction marketClosedSpread() view returns (uint256)
OPERATOR_ROLE
viewfunction OPERATOR_ROLE() view returns (bytes32)
paused
viewfunction paused() view returns (bool)
RATES_UPDATER_OPERATOR_ROLE
viewfunction RATES_UPDATER_OPERATOR_ROLE() view returns (bytes32)
RATES_UPDATER_ROBOT_ROLE
viewfunction RATES_UPDATER_ROBOT_ROLE() view returns (bytes32)
SUNDRY
viewfunction SUNDRY() view returns (uint256)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
TREASURY
viewfunction TREASURY() view returns (uint256)
usd24Address
viewfunction usd24Address() view returns (address)
validXXX24Tokens
viewfunction validXXX24Tokens(address) view returns (bool)
XXX24Tokens
viewfunction XXX24Tokens(string) view returns (address)
advice
nonpayablefunction advice(string authorizationToken_, string originalAuthorizationToken_, string cardId_, uint256 tokenId_, string transactionCurrency_, address settlementCurrency_, uint256 transactionAmount_, uint256 settlementAmount_, address originalPaidCurrency_)
authorize
nonpayablefunction authorize(string authorizationToken_, string cardId_, uint256 tokenId_, address cardCurrency_, string transactionCurrency_, address settlementCurrency_, uint256 transactionAmount_, uint256 settlementAmount_)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
increment
nonpayablefunction increment(string authorizationToken_, string cardId_, uint256 tokenId_, address cardCurrency_, string transactionCurrency_, address settlementCurrency_, uint256 transactionAmount_, uint256 settlementAmount_)
initialize
nonpayablefunction initialize(address fiat24AccountAddress_, address eur24Address_, address usd24Address_, address chf24Address_, address gbp24Address_, address cnh24Address_, address f24Address_)
pause
nonpayablefunction pause()
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
reverse
nonpayablefunction reverse(string authorizationToken_, string originalAuthorizationToken_, string cardId_, uint256 tokenId_, string transactionCurrency_, address settlementCurrency_, uint256 transactionAmount_, uint256 settlementAmount_, address originalPaidCurrency_)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setExchangeSpread
nonpayablefunction setExchangeSpread(uint256 newExchangeSpread)
setInterchange
nonpayablefunction setInterchange(uint256 interchange_)
setMarketClosed
nonpayablefunction setMarketClosed(bool newMarketClosed)
unpause
nonpayablefunction unpause()
updateExchangeRates
nonpayablefunction updateExchangeRates(uint256 _usd_eur, uint256 _usd_chf, uint256 _usd_gbp, uint256 _usd_cnh, bool _isMarketClosed)
events
Adviced
event Adviced(string adviceToken, string originalAuthorizationToken, uint256 indexed tokenId, address indexed sender, string cardId, address cardCurrency, uint256 paidAmount)
Authorized
event Authorized(string authorizationToken, uint256 indexed tokenId, address indexed sender, string cardId, address cardCurrency, uint256 paidAmount)
ExchangeRatesUpdatedByOperator
event ExchangeRatesUpdatedByOperator(address indexed sender, uint256 usd_eur, uint256 usd_chf, uint256 usd_gbp, uint256 usd_cnh, bool marketClosed)
ExchangeRatesUpdatedByRobot
event ExchangeRatesUpdatedByRobot(address indexed sender, uint256 usd_eur, uint256 usd_chf, uint256 usd_gbp, uint256 usd_cnh, bool marketClosed)
Incremented
event Incremented(string authorizationToken, uint256 indexed tokenId, address indexed sender, string cardId, address cardCurrency, uint256 paidAmount)
Paused
event Paused(address account)
Reversed
event Reversed(string adviceToken, string originalAuthorizationToken, uint256 indexed tokenId, address indexed sender, string cardId, address cardCurrency, uint256 paidAmount)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
Unpaused
event Unpaused(address account)
errors
Fiat24CardAuthorizationMarqeta__DefaultSettlementCurrencyIsNotEUR
error Fiat24CardAuthorizationMarqeta__DefaultSettlementCurrencyIsNotEUR(address settlementCurrency)
Fiat24CardAuthorizationMarqeta__InterchangeOutOfRange
error Fiat24CardAuthorizationMarqeta__InterchangeOutOfRange(uint256 value)
Fiat24CardAuthorizationMarqeta__NotAuthorizer
error Fiat24CardAuthorizationMarqeta__NotAuthorizer(address sender)
Fiat24CardAuthorizationMarqeta__NotOperator
error Fiat24CardAuthorizationMarqeta__NotOperator(address sender)
Fiat24CardAuthorizationMarqeta__NotRateUpdater
error Fiat24CardAuthorizationMarqeta__NotRateUpdater(address sender)
Fiat24CardAuthorizationMarqeta__NotValidSettlementCurrency
error Fiat24CardAuthorizationMarqeta__NotValidSettlementCurrency(address settlementCurrency)
Fiat24CardAuthorizationMarqeta__Suspended
error Fiat24CardAuthorizationMarqeta__Suspended()
creation bytecode
0x608060405234801561001057600080fd5b50613095806100206000396000f3fe608060405234801561001057600080fd5b50600436106101ee5760003560e01c806301ffc9a7146101f35780630669b7321461021b5780631b723877146102325780631ee088ab14610255578063248a9ca31461025e57806327d74db11461027157806329608f58146102865780632d2c5565146102995780632f2ff15d146102a25780632fb4934c146102b557806335876476146102be57806336568abe146102d1578063379b87ea146102e457806338fe7a57146102f75780633f4ba83a1461031757806341f33e191461031f578063488da0dc1461032857806348a5dec61461033b578063503fa44f1461034857806355275af5146103735780635c975abb146103885780636aad64701461039357806383d8f017146103a65780638456cb59146103b95780638f1a3879146103c157806391d14854146103d457806393a66c62146103e7578063a217fddf146103fa578063acd0032d14610402578063ad047b171461040b578063af6991b71461041e578063b4a08b6b14610431578063bc06946f14610446578063c645f8541461045b578063c85df5241461046e578063d0250a9014610481578063d547741f14610494578063eae7a25d146104a7578063f2a26527146104ba578063f5b541a6146104ee578063f7fbe36a14610503578063f9a46a8314610516575b600080fd5b610206610201366004612811565b610529565b60405190151581526020015b60405180910390f35b61022461239681565b604051908152602001610212565b610206610240366004612863565b60d06020526000908152604090205460ff1681565b61022460d35481565b61022461026c366004612880565b610560565b61028461027f366004612880565b610575565b005b61028461029436600461293b565b6105e0565b61022461238c81565b6102846102b0366004612a01565b610a04565b61022461238f81565b6102846102cc366004612a31565b610a26565b6102846102df366004612a01565b610da0565b6102246102f2366004612ac7565b610e1e565b60cf5461030a906001600160a01b031681565b6040516102129190612af5565b610284610f5b565b61022460d65481565b610284610336366004612b17565b610f87565b60d4546102069060ff1681565b610224610356366004612ac7565b60d260209081526000928352604080842090915290825290205481565b610224600080516020612fe083398151915281565b60975460ff16610206565b60cb5461030a906001600160a01b031681565b6102846103b4366004612b64565b611647565b61028461197b565b6102246103cf366004612c4f565b6119a5565b6102066103e2366004612a01565b611a2c565b60cd5461030a906001600160a01b031681565b610224600081565b61022460d55481565b60cc5461030a906001600160a01b031681565b61028461042c36600461293b565b611a57565b61022460008051602061300083398151915281565b61022460008051602061302083398151915281565b610284610469366004612b64565b611e0d565b61028461047c366004612880565b612103565b60ce5461030a906001600160a01b031681565b6102846104a2366004612a01565b61212a565b60ca5461030a906001600160a01b031681565b61030a6104c8366004612c9a565b805160208183018101805160d1825292820191909301209152546001600160a01b031681565b61022460008051602061304083398151915281565b60c95461030a906001600160a01b031681565b610284610524366004612cd6565b612147565b60006001600160e01b03198216637965db0b60e01b148061055a57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60009081526065602052604090206001015490565b61058d60008051602061304083398151915233611a2c565b6105b657335b6040516359d3a93d60e11b81526004016105ad9190612af5565b60405180910390fd5b60648111156105db57604051635020ec9160e11b8152600481018290526024016105ad565b60d355565b6105f860008051602061302083398151915233611a2c565b61061857335b6040516342bb63f760e01b81526004016105ad9190612af5565b60975460ff161561063c57604051631157c45d60e01b815260040160405180910390fd5b6001600160a01b038316600090815260d0602052604090205460ff16610677578260405163d8f5601f60e01b81526004016105ad9190612af5565b60c9546040516331a9108f60e11b8152600481018890526000916001600160a01b031690636352211e90602401602060405180830381865afa1580156106c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e59190612cf3565b60c9546040516331a9108f60e11b815261239660048201529192506000916001600160a01b0390911690636352211e90602401602060405180830381865afa158015610735573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107599190612cf3565b905060008060d0600060d18a6040516107729190612d34565b9081526040805160209281900383019020546001600160a01b0316835290820192909252016000205460ff16156108f8578560d1896040516107b49190612d34565b908152604051908190036020018120546370a0823160e01b82526001600160a01b0316906370a08231906107ec908890600401612af5565b602060405180830381865afa158015610809573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082d9190612d50565b106108655760d1886040516108429190612d34565b908152604051908190036020019020546001600160a01b03169150859050610999565b8891506305f5e1006108a160d18a6040516108809190612d34565b908152604051908190036020019020546001600160a01b03168b60006119a5565b6108d360d18b6040516108b49190612d34565b908152604051908190036020019020546001600160a01b03168c610e1e565b6108dd9089612d7f565b6108e79190612d7f565b6108f19190612d96565b9050610999565b60ca546001600160a01b03888116911614610928578660405163741a68f960e01b81526004016105ad9190612af5565b60ca548992506402540be4009061094a906001600160a01b03168460006119a5565b60ca54610960906001600160a01b03168c610e1e565b60d35461096e906064612db8565b6109789089612d7f565b6109829190612d7f565b61098c9190612d7f565b6109969190612d96565b90505b6109ae6001600160a01b03831685858461217c565b836001600160a01b03168a7f9c7643ab8c365d04272ba30efdcb34c9b27be5ac4737fd52547fcc6c75c86fa28e8e86866040516109ee9493929190612df7565b60405180910390a3505050505050505050505050565b610a0d82610560565b610a1781336121dc565b610a218383612240565b505050565b600054610100900460ff16610a415760005460ff1615610a45565b303b155b610aa85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016105ad565b600054610100900460ff16158015610aca576000805461ffff19166101011790555b610ad26122c6565b610ada6122ed565b610ae5600033612320565b610afd60008051602061304083398151915233612320565b60c980546001600160a01b03808b166001600160a01b03199283161790925560ca80548a8416908316811790915560cb80548a8516908416811790915560cc80548a8616908516811790915560ce80548a8716908616811790915560cd80548a8816908716811790915560cf8054978a169790961696909617909455600092835260d06020526040808420805460ff19908116600190811790925593855281852080548516821790559184528084208054841683179055938352838320805483168217905593825290829020805490911690921790915551879060d190610bed906222aaa960e91b815260030190565b908152604080516020928190038301812080546001600160a01b03199081166001600160a01b0396871617909155621554d160ea1b825260d16003808401829052845160239481900385018120805485168f8a161790556221a42360e91b815280820183905285519081900385018120805485168e8a161790556204742560ec1b815280820183905285519081900385018120805485168d8a16179055620869c960eb1b815280820183905285519081900385018120805485168c8a1690811790915562434e5960e81b82529181019290925284519182900390930190208054909116909117905560cb80548416600090815260d28085528382208552838220612710905582548616825280855283822060ca548716835285528382206123d0905582548616825280855283822060cc548716835285528382206121b8905582548616825280855283822060ce54871683528552838220611dfa905591548516815290835281812060cd549094168152929091529020620114e5905560d4805460ff191690556126ac60d55561270b60d655600160d3558015610d96576000805461ff00191690555b5050505050505050565b6001600160a01b0381163314610e105760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016105ad565b610e1a828261232a565b5050565b6000816001600160a01b0316836001600160a01b031603610e42575061271061055a565b60cb546001600160a01b0384811691161480610e6b575060cb546001600160a01b038381169116145b15610f01576001600160a01b03808416600090815260d2602090815260408083209386168352929052205415610ec6576001600160a01b03808416600090815260d26020908152604080832093861683529290522054610efa565b6001600160a01b03808316600090815260d26020908152604080832093871683529290522054610efa906305f5e100612d96565b905061055a565b60cb546001600160a01b03908116600090815260d26020908152604080832086851684529091528082205492861682529020546127109190610f47906305f5e100612d96565b610f519190612d7f565b610efa9190612d96565b610f7360008051602061304083398151915233611a2c565b610f7d5733610593565b610f85612391565b565b610f9f600080516020612fe083398151915233611a2c565b156110bf5760cb80546001600160a01b03908116600090815260d26020818152604080842060ca8054871686529083528185208c905586548616855283835281852060cc8054881687529084528286208c905587548716865284845282862060ce8054891688529085528387208c905588548816875285855283872060cd80548a1689529086528488208c905560d4805460ff19168c151590811790915599548916885295855283872092548816875291909352818520549254861685528185205490548616855281852054935490951684529283902054925133957f9f360fb4784547b0e5ca1a9940b6c40efc68cd7558feb8c2d2ad9b9669ed83be956110b295939490939092909160ff1690612e39565b60405180910390a2611640565b6110d760008051602061300083398151915233611a2c565b156116255760cb546001600160a01b03908116600090815260d26020908152604080832060ca54909416835292905290812054861061114b5760cb546001600160a01b03908116600090815260d26020908152604080832060ca54909416835292905220546111469087612e5e565b611182565b60cb546001600160a01b03908116600090815260d26020908152604080832060ca5490941683529290522054611182908790612e5e565b60cb546001600160a01b03908116600090815260d26020908152604080832060ca54909416835292905220549091506111bd82612710612d7f565b6111c79190612d96565b60cb546001600160a01b03908116600090815260d26020908152604080832060cc5490941683529290529081205491925090861061123a5760cb546001600160a01b03908116600090815260d26020908152604080832060cc54909416835292905220546112359087612e5e565b611271565b60cb546001600160a01b03908116600090815260d26020908152604080832060cc5490941683529290522054611271908790612e5e565b60cb546001600160a01b03908116600090815260d26020908152604080832060cc54909416835292905220549091506112ac82612710612d7f565b6112b69190612d96565b60cb546001600160a01b03908116600090815260d26020908152604080832060ce549094168352929052908120549192509086106113295760cb546001600160a01b03908116600090815260d26020908152604080832060ce54909416835292905220546113249087612e5e565b611360565b60cb546001600160a01b03908116600090815260d26020908152604080832060ce5490941683529290522054611360908790612e5e565b60cb546001600160a01b03908116600090815260d26020908152604080832060ce549094168352929052205490915061139b82612710612d7f565b6113a59190612d96565b60cb546001600160a01b03908116600090815260d26020908152604080832060cd549094168352929052908120549192509086106114185760cb546001600160a01b03908116600090815260d26020908152604080832060cd54909416835292905220546114139087612e5e565b61144f565b60cb546001600160a01b03908116600090815260d26020908152604080832060cd549094168352929052205461144f908790612e5e565b60cb546001600160a01b03908116600090815260d26020908152604080832060cd549094168352929052205490915061148a82612710612d7f565b6114949190612d96565b905061012c8410156114cf5760cb546001600160a01b03908116600090815260d26020908152604080832060ca549094168352929052208990555b61012c8310156115085760cb546001600160a01b03908116600090815260d26020908152604080832060cc549094168352929052208890555b61012c8210156115415760cb546001600160a01b03908116600090815260d26020908152604080832060ce549094168352929052208790555b61012c81101561157a5760cb546001600160a01b03908116600090815260d26020908152604080832060cd549094168352929052208690555b60d4805460ff191686151590811790915560cb546001600160a01b03908116600090815260d26020908152604080832060ca54851684529091528082205460cc54841683528183205460ce54851684528284205460cd5490951684529282902054915133957f8d901df24d3fcb3c29b3949e685435c71fbb313dffa57e49da96fc7abd47b537956116149593949092909160ff1690612e39565b60405180910390a250505050611640565b3360405163de68af6960e01b81526004016105ad9190612af5565b5050505050565b61165f60008051602061302083398151915233611a2c565b61166957336105fe565b60975460ff161561168d57604051631157c45d60e01b815260040160405180910390fd5b6001600160a01b038416600090815260d0602052604090205460ff166116c8578360405163d8f5601f60e01b81526004016105ad9190612af5565b60c9546040516331a9108f60e11b8152600481018890526000916001600160a01b031690636352211e90602401602060405180830381865afa158015611712573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117369190612cf3565b60c9546040516331a9108f60e11b815261239660048201529192506000916001600160a01b0390911690636352211e90602401602060405180830381865afa158015611786573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117aa9190612cf3565b90506000839050600060d0600060d18b6040516117c79190612d34565b9081526040805160209281900383019020546001600160a01b0316835290820192909252016000205460ff1615611888576305f5e10061183160d18b6040516118109190612d34565b908152604051908190036020019020546001600160a01b03168760006119a5565b61186360d18c6040516118449190612d34565b908152604051908190036020019020546001600160a01b031688610e1e565b61186d908a612d7f565b6118779190612d7f565b6118819190612d96565b905061190d565b60ca546001600160a01b038981169116146118b8578760405163741a68f960e01b81526004016105ad9190612af5565b60ca546305f5e100906118d6906001600160a01b03168760006119a5565b60ca546118ec906001600160a01b031688610e1e565b6118f69089612d7f565b6119009190612d7f565b61190a9190612d96565b90505b6119226001600160a01b03831684868461217c565b836001600160a01b03168a7fcd33a157d9923d4a500e2ef11158d99b4e518cbf670dd88f951680e9fc245fc68f8f8f8787604051611964959493929190612e71565b60405180910390a350505050505050505050505050565b61199360008051602061304083398151915233611a2c565b61199d5733610593565b610f8561241e565b60cb54600090612710906001600160a01b0386811691161480156119d6575060cb546001600160a01b038581169116145b611a225760d45460ff166119ec5760d554611a09565b61271060d65460d5546119ff9190612d7f565b611a099190612d96565b90508215611a2257611a1f816305f5e100612d96565b90505b90505b9392505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b611a6f60008051602061302083398151915233611a2c565b611a7957336105fe565b60975460ff1615611a9d57604051631157c45d60e01b815260040160405180910390fd5b6001600160a01b038316600090815260d0602052604090205460ff16611ad8578260405163d8f5601f60e01b81526004016105ad9190612af5565b60c9546040516331a9108f60e11b8152600481018890526000916001600160a01b031690636352211e90602401602060405180830381865afa158015611b22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b469190612cf3565b60c9546040516331a9108f60e11b815261239660048201529192506000916001600160a01b0390911690636352211e90602401602060405180830381865afa158015611b96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bba9190612cf3565b90506000879050600060d0600060d18a604051611bd79190612d34565b9081526040805160209281900383019020546001600160a01b0316835290820192909252016000205460ff1615611d1a578560d189604051611c199190612d34565b908152604051908190036020018120546370a0823160e01b82526001600160a01b0316906370a0823190611c51908890600401612af5565b602060405180830381865afa158015611c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c929190612d50565b10611cca5760d188604051611ca79190612d34565b908152604051908190036020019020546001600160a01b03169150859050611db8565b6305f5e100611ce260d18a6040516108809190612d34565b611cf560d18b6040516108b49190612d34565b611cff9089612d7f565b611d099190612d7f565b611d139190612d96565b9050611db8565b60ca546001600160a01b03888116911614611d4a578660405163741a68f960e01b81526004016105ad9190612af5565b60ca546402540be40090611d69906001600160a01b03168b60006119a5565b60ca54611d7f906001600160a01b03168c610e1e565b60d354611d8d906064612db8565b611d979089612d7f565b611da19190612d7f565b611dab9190612d7f565b611db59190612d96565b90505b611dcd6001600160a01b03831685858461217c565b836001600160a01b03168a7fccd892fadc4aff70d2a87e68be8c4ea12542363d8f405acbf0949c6816b99ccb8e8e86866040516109ee9493929190612df7565b611e2560008051602061302083398151915233611a2c565b611e2f57336105fe565b60975460ff1615611e5357604051631157c45d60e01b815260040160405180910390fd5b6001600160a01b038416600090815260d0602052604090205460ff16611e8e578360405163d8f5601f60e01b81526004016105ad9190612af5565b60c9546040516331a9108f60e11b8152600481018890526000916001600160a01b031690636352211e90602401602060405180830381865afa158015611ed8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611efc9190612cf3565b60c9546040516331a9108f60e11b815261239660048201529192506000916001600160a01b0390911690636352211e90602401602060405180830381865afa158015611f4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f709190612cf3565b90506000839050600060d0600060d18b604051611f8d9190612d34565b9081526040805160209281900383019020546001600160a01b0316835290820192909252016000205460ff161561200e576305f5e100611fd660d18b6040516118109190612d34565b611fe960d18c6040516118449190612d34565b611ff3908a612d7f565b611ffd9190612d7f565b6120079190612d96565b90506120ac565b60ca546001600160a01b0389811691161461203e578760405163741a68f960e01b81526004016105ad9190612af5565b60ca546402540be4009061205d906001600160a01b03168760006119a5565b60ca54612073906001600160a01b031688610e1e565b60d354612081906064612db8565b61208b908a612d7f565b6120959190612d7f565b61209f9190612d7f565b6120a99190612d96565b90505b6120c16001600160a01b03831684868461217c565b836001600160a01b03168a7f3f35fe69739f6fbb08c77895a55e748e6c98a50064934311c80ba230ac2c233c8f8f8f8787604051611964959493929190612e71565b61211b60008051602061304083398151915233611a2c565b6121255733610593565b60d555565b61213382610560565b61213d81336121dc565b610a21838361232a565b61215f60008051602061304083398151915233611a2c565b6121695733610593565b60d4805460ff1916911515919091179055565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526121d6908590612499565b50505050565b6121e68282611a2c565b610e1a576121fe816001600160a01b0316601461256b565b61220983602061256b565b60405160200161221a929190612ec8565b60408051601f198184030181529082905262461bcd60e51b82526105ad91600401612f37565b61224a8282611a2c565b610e1a5760008281526065602090815260408083206001600160a01b03851684529091529020805460ff191660011790556122823390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600054610100900460ff16610f855760405162461bcd60e51b81526004016105ad90612f4a565b600054610100900460ff166123145760405162461bcd60e51b81526004016105ad90612f4a565b6097805460ff19169055565b610e1a8282612240565b6123348282611a2c565b15610e1a5760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60975460ff166123da5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016105ad565b6097805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516124149190612af5565b60405180910390a1565b60975460ff16156124645760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105ad565b6097805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586124073390565b60006124ee826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166127069092919063ffffffff16565b805190915015610a21578080602001905181019061250c9190612f95565b610a215760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105ad565b6060600061257a836002612d7f565b612585906002612db8565b6001600160401b0381111561259c5761259c612899565b6040519080825280601f01601f1916602001820160405280156125c6576020820181803683370190505b509050600360fc1b816000815181106125e1576125e1612fb2565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061261057612610612fb2565b60200101906001600160f81b031916908160001a9053506000612634846002612d7f565b61263f906001612db8565b90505b60018111156126b7576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061267357612673612fb2565b1a60f81b82828151811061268957612689612fb2565b60200101906001600160f81b031916908160001a90535060049490941c936126b081612fc8565b9050612642565b508315611a255760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105ad565b6060611a22848460008585843b61275f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105ad565b600080866001600160a01b0316858760405161277b9190612d34565b60006040518083038185875af1925050503d80600081146127b8576040519150601f19603f3d011682016040523d82523d6000602084013e6127bd565b606091505b50915091506127cd8282866127d8565b979650505050505050565b606083156127e7575081611a25565b8251156127f75782518084602001fd5b8160405162461bcd60e51b81526004016105ad9190612f37565b60006020828403121561282357600080fd5b81356001600160e01b031981168114611a2557600080fd5b6001600160a01b038116811461285057600080fd5b50565b803561285e8161283b565b919050565b60006020828403121561287557600080fd5b8135611a258161283b565b60006020828403121561289257600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126128c057600080fd5b81356001600160401b03808211156128da576128da612899565b604051601f8301601f19908116603f0116810190828211818310171561290257612902612899565b8160405283815286602085880101111561291b57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600080600080610100898b03121561295857600080fd5b88356001600160401b038082111561296f57600080fd5b61297b8c838d016128af565b995060208b013591508082111561299157600080fd5b61299d8c838d016128af565b985060408b013597506129b260608c01612853565b965060808b01359150808211156129c857600080fd5b506129d58b828c016128af565b9450506129e460a08a01612853565b925060c0890135915060e089013590509295985092959890939650565b60008060408385031215612a1457600080fd5b823591506020830135612a268161283b565b809150509250929050565b600080600080600080600060e0888a031215612a4c57600080fd5b8735612a578161283b565b96506020880135612a678161283b565b95506040880135612a778161283b565b94506060880135612a878161283b565b93506080880135612a978161283b565b925060a0880135612aa78161283b565b915060c0880135612ab78161283b565b8091505092959891949750929550565b60008060408385031215612ada57600080fd5b8235612ae58161283b565b91506020830135612a268161283b565b6001600160a01b0391909116815260200190565b801515811461285057600080fd5b600080600080600060a08688031215612b2f57600080fd5b853594506020860135935060408601359250606086013591506080860135612b5681612b09565b809150509295509295909350565b60008060008060008060008060006101208a8c031215612b8357600080fd5b89356001600160401b0380821115612b9a57600080fd5b612ba68d838e016128af565b9a5060208c0135915080821115612bbc57600080fd5b612bc88d838e016128af565b995060408c0135915080821115612bde57600080fd5b612bea8d838e016128af565b985060608c0135975060808c0135915080821115612c0757600080fd5b50612c148c828d016128af565b955050612c2360a08b01612853565b935060c08a0135925060e08a01359150612c406101008b01612853565b90509295985092959850929598565b600080600060608486031215612c6457600080fd5b8335612c6f8161283b565b92506020840135612c7f8161283b565b91506040840135612c8f81612b09565b809150509250925092565b600060208284031215612cac57600080fd5b81356001600160401b03811115612cc257600080fd5b612cce848285016128af565b949350505050565b600060208284031215612ce857600080fd5b8135611a2581612b09565b600060208284031215612d0557600080fd5b8151611a258161283b565b60005b83811015612d2b578181015183820152602001612d13565b50506000910152565b60008251612d46818460208701612d10565b9190910192915050565b600060208284031215612d6257600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761055a5761055a612d69565b600082612db357634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561055a5761055a612d69565b60008151808452612de3816020860160208601612d10565b601f01601f19169290920160200192915050565b608081526000612e0a6080830187612dcb565b8281036020840152612e1c8187612dcb565b6001600160a01b0395909516604084015250506060015292915050565b9485526020850193909352604084019190915260608301521515608082015260a00190565b8181038181111561055a5761055a612d69565b60a081526000612e8460a0830188612dcb565b8281036020840152612e968188612dcb565b90508281036040840152612eaa8187612dcb565b6001600160a01b039590951660608401525050608001529392505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351612efa816017850160208801612d10565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612f2b816028840160208801612d10565b01602801949350505050565b602081526000611a256020830184612dcb565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600060208284031215612fa757600080fd5b8151611a2581612b09565b634e487b7160e01b600052603260045260246000fd5b600081612fd757612fd7612d69565b50600019019056fedc8b1416a064e54e8fcba3f3bc78e3cce2f7fdb81752ac1a2e9b70b7acaf194f7ef4199f9933b2356707a03fe4c11182ceeb37ad11aa40a3d14a8ed728083cf014dd327f3834be9d0f7cf44f6cf11c96ded83bd68d1a1b3926d35739e7bb88d097667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929a264697066735822122095a876f967de6c3617e7e5cdab10d0df3d03ada1ca614ad353afb54b0fb1e31764736f6c63430008120033