0 txs
2.5m calls
constructor
constructor()
functions
ACCOUNTANT_ROLE
viewfunction ACCOUNTANT_ROLE() view returns (bytes32)
approvedTokens
viewfunction approvedTokens(address) view returns (bool)
calculateRakebackAmount
viewfunction calculateRakebackAmount(address target, uint256 initialDeposit) view returns (uint256)
collectedFee
viewfunction collectedFee(address) view returns (uint256)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
deposits
viewfunction deposits(address, address) view returns (uint256)
DISTRIBUTOR_ROLE
viewfunction DISTRIBUTOR_ROLE() view returns (bytes32)
FEE_DENOMINATOR
viewfunction FEE_DENOMINATOR() view returns (uint256)
gameStatus
viewfunction gameStatus(bytes32) view returns (bool)
gameToken
viewfunction gameToken(bytes32) view returns (address)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
locked
viewfunction locked(bytes32) view returns (uint256)
lockedRakeback
viewfunction lockedRakeback(bytes32, address, uint256) view returns (uint256)
minDepositAmount
viewfunction minDepositAmount(address) view returns (uint256)
RATE_PRECISION_AMPLIFIER
viewfunction RATE_PRECISION_AMPLIFIER() view returns (uint256)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
upkeep
viewfunction upkeep() view returns (address)
xyroToken
viewfunction xyroToken() view returns (address)
bullseyeResetLockedAmount
nonpayablefunction bullseyeResetLockedAmount(bytes32 gameId)
calculateRate
nonpayablefunction calculateRate(uint256 wonTeamTotal, uint256 lostTeamRakeback, bytes32 gameId) returns (uint256)
changeMinDepositAmount
nonpayablefunction changeMinDepositAmount(uint256 newMinAmount, address token)
deposit
nonpayablefunction deposit(uint256 amount, address token, address to)
deposit
nonpayablefunction deposit(uint256 amount, address token)
depositAndLock
nonpayablefunction depositAndLock(uint256 amount, address from, bytes32 gameId, bool isRakeback) returns (uint256 rakeback)
depositAndLock
nonpayablefunction depositAndLock(uint256 amount, address from, bytes32 gameId, uint256 depositId) returns (uint256 rakeback)
depositAndLockWithPermit
nonpayablefunction depositAndLockWithPermit(uint256 amount, address from, bytes32 gameId, bool isRakeback, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns (uint256 rakeback)
depositAndLockWithPermit
nonpayablefunction depositAndLockWithPermit(uint256 amount, address from, bytes32 gameId, uint256 depositId, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns (uint256 rakeback)
depositWithPermit
nonpayablefunction depositWithPermit(uint256 amount, address token, address to, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
depositWithPermit
nonpayablefunction depositWithPermit(uint256 amount, address token, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
distributeBullseye
nonpayablefunction distributeBullseye(uint256 rate, uint256 lostTeamRakeback, address to, bytes32 gameId, uint256 depositId)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(address approvedToken, address xyroTokenAddress)
lock
nonpayablefunction lock(uint256 amount, address from, bytes32 gameId, bool isRakeback) returns (uint256 rakeback)
lock
nonpayablefunction lock(uint256 amount, address from, uint256 depositId, bytes32 gameId) returns (uint256 rakeback)
refund
nonpayablefunction refund(uint256 amount, address to, bytes32 gameId, uint256 depositId)
refund
nonpayablefunction refund(uint256 amount, address to, bytes32 gameId)
refundWithFees
nonpayablefunction refundWithFees(uint256 amount, address to, uint256 refundFee, bytes32 gameId, uint256 depositId)
refundWithFees
nonpayablefunction refundWithFees(uint256 amount, address to, uint256 refundFee, bytes32 gameId)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setGameFinished
nonpayablefunction setGameFinished(bytes32 gameId)
setGameToken
nonpayablefunction setGameToken(bytes32 gameId, address token)
setToken
nonpayablefunction setToken(address token, bool status)
setUpkeep
nonpayablefunction setUpkeep(address newUpkeep)
universalDistribute
nonpayablefunction universalDistribute(address to, uint256 initialDeposit, bytes32 gameId, uint256 depositId, uint256 rate)
universalDistribute
nonpayablefunction universalDistribute(address to, uint256 initialDeposit, bytes32 gameId, uint256 rate)
withdraw
nonpayablefunction withdraw(uint256 amount, address token)
withdrawFees
nonpayablefunction withdrawFees(address to, uint256 amount, address token)
withdrawGameFee
nonpayablefunction withdrawGameFee(uint256 lostTeamDeposits, uint256 gameFee, bytes32 gameId) returns (uint256 withdrawnFees)
withdrawInitiatorFee
nonpayablefunction withdrawInitiatorFee(uint256 lostTeamDeposits, uint256 wonTeamDeposits, uint256 initiatorFee, address initiator, bytes32 gameId) returns (uint256 withdrawnFees)
withdrawRakeback
nonpayablefunction withdrawRakeback(bytes32[] gameIds, uint256[] depositIds)
withdrawRakebackSetup
nonpayablefunction withdrawRakebackSetup(bytes32 gameId, address target)
events
Distributed
event Distributed(address to, uint256 amount, address token)
FeeCollected
event FeeCollected(uint256 feeEarned, uint256 totalFees, address token)
GameTokenSet
event GameTokenSet(bytes32 gameId, address token)
Initialized
event Initialized(uint64 version)
MinDepositAmountChanged
event MinDepositAmountChanged(uint256 newMinAmount, address token)
Refunded
event Refunded(address to, uint256 amount, address token)
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)
SetTokenStatus
event SetTokenStatus(address token, bool status)
UpkeepChanged
event UpkeepChanged(address newUpkeep)
UsedRakeback
event UsedRakeback(bytes32 gameId, uint256 totalRakeback, address token, uint256 depositId)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
FailedInnerCall
error FailedInnerCall()
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x60806040523480156200001157600080fd5b506200001c62000022565b620000d6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000735760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d35780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b61472480620000e66000396000f3fe608060405234801561001057600080fd5b50600436106103255760003560e01c8063722ec76f116101b8578063d547741f11610104578063ee4f734f116100a2578063f50f3f521161007c578063f50f3f5214610778578063f5c291ab1461078b578063f70a686e146107bc578063fb4789d6146107cf57600080fd5b8063ee4f734f1461072d578063f0942d3514610740578063f0bd87cc1461076357600080fd5b8063e49e75c0116100de578063e49e75c0146106e1578063e7a842a2146106f4578063e9bd3af414610707578063eb934f711461071a57600080fd5b8063d547741f146106b2578063d73792a9146106c5578063dda9167a146106ce57600080fd5b8063a217fddf11610171578063bc46182c1161014b578063bc46182c14610659578063c4e2f8651461066c578063cbe9e7641461067f578063ce1830e81461069f57600080fd5b8063a217fddf14610617578063a2b173dc1461061f578063ab1efbab1461063257600080fd5b8063722ec76f1461056a578063888f7a751461058a57806388cc22ff146105b35780638f601f66146105c657806391d14854146105f15780639ba372c21461060457600080fd5b806336568abe116102775780634efb86491161023057806360f2cc0e1161020a57806360f2cc0e1461050e5780636affb29a146105215780636d1ea3fa146105345780636e553f651461055757600080fd5b80634efb8649146104d55780634f0644ef146104e857806350921b23146104fb57600080fd5b806336568abe146104635780633816a292146104765780634021a87414610489578063480e8e261461049c578063485cc955146104af5780634d810cfc146104c257600080fd5b80631f4be2b0116102e45780632df63507116102be5780632df63507146104175780632e2d29841461042a5780632f2ff15d1461043d5780632f5972861461045057600080fd5b80631f4be2b0146103c6578063248a9ca3146103d95780632cf4704a146103ec57600080fd5b80624aa3201461032a578062f714ce1461035d57806301ffc9a7146103725780630a0d45561461039557806317574fc7146103a857806318a80553146103b3575b600080fd5b61034a610338366004613d31565b600d6020526000908152604090205481565b6040519081526020015b60405180910390f35b61037061036b366004613d4c565b6107e2565b005b610385610380366004613d78565b6108ae565b6040519015158152602001610354565b6103706103a3366004613da2565b6108e5565b61034a633b9aca0081565b6103706103c1366004613dd7565b610a5c565b6103706103d4366004613d4c565b610c85565b61034a6103e7366004613e1d565b610e1d565b6002546103ff906001600160a01b031681565b6040516001600160a01b039091168152602001610354565b610370610425366004613d31565b610e3f565b610370610438366004613e36565b610ec5565b61037061044b366004613d4c565b611086565b61034a61045e366004613e72565b6110a8565b610370610471366004613d4c565b61124a565b610370610484366004613ebb565b611282565b610370610497366004613f03565b611316565b61034a6104aa366004613f6d565b611546565b6103706104bd366004613fb5565b6116ed565b6103706104d0366004613d4c565b61195d565b61034a6104e3366004613fdf565b6119f3565b6103706104f6366004613e1d565b611c94565b61037061050936600461404c565b611cc8565b61034a61051c3660046140a4565b611ef3565b61034a61052f3660046140eb565b611ff7565b610385610542366004613d31565b60006020819052908152604090205460ff1681565b610370610565366004613d4c565b612284565b61034a610578366004613d31565b600e6020526000908152604090205481565b6103ff610598366004613e1d565b6010602052600090815260409020546001600160a01b031681565b6103706105c1366004614144565b612440565b61034a6105d4366004613fb5565b600f60209081526000928352604080842090915290825290205481565b6103856105ff366004613d4c565b612591565b61037061061236600461417d565b6125c9565b61034a600081565b61034a61062d3660046141b0565b6126e8565b61034a7f369da55721ba2b3acddd63aac7d6512c3e5762a78fa01c44f423f97868330c3481565b6001546103ff906001600160a01b031681565b61034a61067a366004613f6d565b61276b565b61034a61068d366004613e1d565b60116020526000908152604090205481565b61034a6106ad3660046141dc565b612981565b6103706106c0366004613d4c565b612b88565b61034a61271081565b6103706106dc366004613e1d565b612ba4565b6103706106ef366004613d4c565b612bce565b610370610702366004614206565b612ca3565b61034a610715366004613e72565b612df7565b61037061072836600461424d565b612ff3565b61037061073b3660046142db565b61311f565b61038561074e366004613e1d565b60126020526000908152604090205460ff1681565b61034a60008051602061466f83398151915281565b610370610786366004613e72565b613441565b61034a610799366004613da2565b601360209081526000938452604080852082529284528284209052825290205481565b61034a6107ca3660046141b0565b613657565b6103706107dd366004613e72565b613757565b6001600160a01b03811660009081526020819052604090205460ff166108235760405162461bcd60e51b815260040161081a90614347565b60405180910390fd5b6001600160a01b0381166000908152600f602090815260408083203384529091529020548211156108665760405162461bcd60e51b815260040161081a90614371565b6001600160a01b0381166000908152600f60209081526040808320338452909152812080548492906108999084906143ad565b909155506108aa90508133846138cf565b5050565b60006001600160e01b03198216637965db0b60e01b14806108df57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60008051602061466f8339815191526108fd8161392e565b6000828152601060209081526040808320546001600160a01b0316808452918390529091205460ff166109425760405162461bcd60e51b815260040161081a90614347565b6000838152601160205260409020548511156109705760405162461bcd60e51b815260040161081a90614371565b60008381526013602090815260408083206001600160a01b03881684528252808320838052909152902054156109cc5760008381526013602090815260408083206001600160a01b038816845282528083208380529091528120555b600083815260116020526040812080548792906109ea9084906143ad565b90915550506001600160a01b038082166000908152600f6020908152604080832093881683529290529081208054879290610a269084906143c0565b909155505060405160008051602061468f83398151915290610a4d908690889085906143d3565b60405180910390a15050505050565b60008051602061466f833981519152610a748161392e565b6000838152601060209081526040808320546001600160a01b0316808452918390529091205460ff16610ab95760405162461bcd60e51b815260040161081a90614347565b600084815260116020526040902054871115610ae75760405162461bcd60e51b815260040161081a90614371565b6000612710610af6878a6143f6565b610b00919061440d565b60008681526013602090815260408083206001600160a01b03808d1685529083528184208985528352818420549087168452600d909252822080549394509092849290610b4e9084906143c0565b90915550506001600160a01b0383166000818152600d60209081526040918290205482518681529182015280820192909252517f9621ec81129e662768976f0ea58d74a293226ada50ebe59321283cc3e9ac5eb19181900360600190a18015610bdd5760008681526013602090815260408083206001600160a01b038c16845282528083208884529091528120555b600086815260116020526040812080548b9290610bfb9084906143ad565b90915550610c0b9050828a6143ad565b6001600160a01b038085166000908152600f60209081526040808320938d1683529290529081208054909190610c429084906143c0565b9091555060008051602061468f833981519152905088610c62848c6143ad565b85604051610c72939291906143d3565b60405180910390a1505050505050505050565b60008051602061466f833981519152610c9d8161392e565b60008381526013602090815260408083206001600160a01b038616845282528083208380529091528120549003610d0e5760405162461bcd60e51b81526020600482015260156024820152744e6f2072616b656261636b20617661696c61626c6560581b604482015260640161081a565b60008381526013602090815260408083206001600160a01b0380871680865291845282852085805284528285205488865260108552838620549091168552600f845282852091855292528220805491929091610d6b9084906143c0565b909155505060008381526013602090815260408083206001600160a01b0386811685529083528184208480528352818420548785526010845282852054835189815294850191909152169082015260608101919091527fb7f0a4712f034efed811d62972dce9d4e8cabd9603ae6c9076d0b507231dbee99060800160405180910390a15060009182526013602090815260408084206001600160a01b0390931684529181528183208380529052812055565b60009081526000805160206146cf833981519152602052604090206001015490565b6000610e4a8161392e565b6001600160a01b038216610e705760405162461bcd60e51b815260040161081a9061442f565b600280546001600160a01b0319166001600160a01b0384169081179091556040519081527fa14518ceff513b7c2b6d000b1e1c5fe6651c3334062b26e8913457bdb44879129060200160405180910390a15050565b6001600160a01b0382166000908152600e6020526040902054831015610efd5760405162461bcd60e51b815260040161081a90614455565b6001600160a01b03821660009081526020819052604090205460ff16610f355760405162461bcd60e51b815260040161081a90614347565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015610f7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa09190614483565b9050610fae8333308761393b565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015610ff5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110199190614483565b905061102585836143c0565b81146110435760405162461bcd60e51b815260040161081a9061449c565b6001600160a01b038085166000908152600f602090815260408083209387168352929052908120805487929061107a9084906143c0565b90915550505050505050565b61108f82610e1d565b6110988161392e565b6110a28383613974565b50505050565b600060008051602061466f8339815191526110c28161392e565b6000838152601060209081526040808320546001600160a01b0316808452600e909252909120548710156111085760405162461bcd60e51b815260040161081a90614455565b6001600160a01b03811660009081526020819052604090205460ff166111405760405162461bcd60e51b815260040161081a90614347565b6001600160a01b038082166000908152600f60209081526040808320938a16835292905220548711156111b55760405162461bcd60e51b815260206004820152601a60248201527f496e737566666963656e74206465706f73697420616d6f756e74000000000000604482015260640161081a565b6111bf8688612981565b60008581526013602090815260408083206001600160a01b03808c168086529184528285208b8652845282852086905586168452600f83528184209084529091528120805492955089929091906112179084906143ad565b90915550506000848152601160205260408120805489929061123a9084906143c0565b9091555092979650505050505050565b6001600160a01b03811633146112735760405163334bd91960e11b815260040160405180910390fd5b61127d8282613a19565b505050565b600061128d8161392e565b6001600160a01b0383166112b35760405162461bcd60e51b815260040161081a9061442f565b6001600160a01b03831660008181526020818152604091829020805460ff19168615159081179091558251938452908301527f97e5f601efe959762e61e16b627b1bfede9c311235c6ed1f5edecd08c651a3b991015b60405180910390a1505050565b6001600160a01b0386166000908152600e602052604090205487101561134e5760405162461bcd60e51b815260040161081a90614455565b6001600160a01b03861660009081526020819052604090205460ff166113865760405162461bcd60e51b815260040161081a90614347565b6040516370a0823160e01b81523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa1580156113cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f19190614483565b60405163d505accf60e01b81529091506001600160a01b0388169063d505accf9061142c90339030908d908b908b908b908b906004016144c4565b600060405180830381600087803b15801561144657600080fd5b505af115801561145a573d6000803e3d6000fd5b5050505061146a8733308b61393b565b6040516370a0823160e01b81523060048201526000906001600160a01b038916906370a0823190602401602060405180830381865afa1580156114b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d59190614483565b90506114e189836143c0565b81146114ff5760405162461bcd60e51b815260040161081a9061449c565b6001600160a01b038089166000908152600f60209081526040808320938b16835292905290812080548b92906115369084906143c0565b9091555050505050505050505050565b600060008051602061466f8339815191526115608161392e565b6000848152601060209081526040808320546001600160a01b0316808452600e909252909120548710156115a65760405162461bcd60e51b815260040161081a90614455565b6001600160a01b03811660009081526020819052604090205460ff166115de5760405162461bcd60e51b815260040161081a90614347565b6001600160a01b038082166000908152600f60209081526040808320938a16835292905220548711156116535760405162461bcd60e51b815260206004820152601a60248201527f496e737566666963656e74206465706f73697420616d6f756e74000000000000604482015260640161081a565b8315611693576116638688612981565b60008681526013602090815260408083206001600160a01b038b1684528252808320838052909152902081905592505b6001600160a01b038082166000908152600f60209081526040808320938a16835292905290812080548992906116ca9084906143ad565b90915550506000858152601160205260408120805489929061123a9084906143c0565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff166000811580156117335750825b905060008267ffffffffffffffff1660011480156117505750303b155b90508115801561175e575080155b1561177c5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156117a657845460ff60401b1916600160401b1785555b6117ae613a95565b6117b9600033613974565b506001600160a01b0386166117e05760405162461bcd60e51b815260040161081a9061442f565b600180546001600160a01b0319166001600160a01b03888116919091178255881660008181526020818152604091829020805460ff1916909417909355805163313ce56760e01b81529051919263313ce567926004808401938290030181865afa158015611852573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118769190614483565b61188190600a6145e9565b6001600160a01b0388166000908152600e6020908152604091829020929092558051610140810182526101f481526109c492810192909252611388908201526130d460608201526161a8608082015261c35060a08201526201e84860c08201526203d09060e08201526207a120610100820152621312d061012082015261190c90600390600a613cbb565b50831561195457845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b50505050505050565b60006119688161392e565b6001600160a01b03821660009081526020819052604090205460ff166119a05760405162461bcd60e51b815260040161081a90614347565b6001600160a01b0382166000818152600e60209081526040918290208690558151868152908101929092527f6b19cd932e6df9db431926292ff2d509a745a76bab0d890b48aabeb19944dac39101611309565b600060008051602061466f833981519152611a0d8161392e565b6000888152601060209081526040808320546001600160a01b0316808452600e909252909120548b1015611a535760405162461bcd60e51b815260040161081a90614455565b6001600160a01b03811660009081526020819052604090205460ff16611a8b5760405162461bcd60e51b815260040161081a90614347565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611ad2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af69190614483565b9050816001600160a01b031663d505accf8c308f8c8c8c8c6040518863ffffffff1660e01b8152600401611b3097969594939291906144c4565b600060405180830381600087803b158015611b4a57600080fd5b505af1158015611b5e573d6000803e3d6000fd5b50505050611b6e828c308f61393b565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015611bb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd99190614483565b9050611be58d836143c0565b8114611c035760405162461bcd60e51b815260040161081a9061449c565b611c0d8c8e612981565b945084601360008d815260200190815260200160002060008e6001600160a01b03166001600160a01b0316815260200190815260200160002060008c8152602001908152602001600020819055508c601160008d81526020019081526020016000206000828254611c7e91906143c0565b90915550949d9c50505050505050505050505050565b60008051602061466f833981519152611cac8161392e565b506000908152601260205260409020805460ff19166001179055565b6001600160a01b0385166000908152600e6020526040902054861015611d005760405162461bcd60e51b815260040161081a90614455565b6001600160a01b03851660009081526020819052604090205460ff16611d385760405162461bcd60e51b815260040161081a90614347565b6040516370a0823160e01b81523060048201526000906001600160a01b038716906370a0823190602401602060405180830381865afa158015611d7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da39190614483565b60405163d505accf60e01b81529091506001600160a01b0387169063d505accf90611dde90339030908c908b908b908b908b906004016144c4565b600060405180830381600087803b158015611df857600080fd5b505af1158015611e0c573d6000803e3d6000fd5b50505050611e1c8633308a61393b565b6040516370a0823160e01b81523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015611e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e879190614483565b9050611e9388836143c0565b8114611eb15760405162461bcd60e51b815260040161081a9061449c565b6001600160a01b0387166000908152600f60209081526040808320338452909152812080548a9290611ee49084906143c0565b90915550505050505050505050565b600060008051602061466f833981519152611f0d8161392e565b6000838152601060205260409020546001600160a01b0316612710611f32878a6143f6565b611f3c919061440d565b612710611f49888a6143f6565b611f53919061440d565b611f5d91906143c0565b6001600160a01b038083166000908152600f60209081526040808320938a16835292905290812080549295508592909190611f999084906143c0565b90915550506040516000805160206146af83398151915290611fc0908790869085906143d3565b60405180910390a160008481526011602052604081208054859290611fe69084906143ad565b909155509298975050505050505050565b600060008051602061466f8339815191526120118161392e565b6000888152601060209081526040808320546001600160a01b0316808452600e909252909120548b10156120575760405162461bcd60e51b815260040161081a90614455565b6001600160a01b03811660009081526020819052604090205460ff1661208f5760405162461bcd60e51b815260040161081a90614347565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156120d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120fa9190614483565b9050816001600160a01b031663d505accf8c308f8c8c8c8c6040518863ffffffff1660e01b815260040161213497969594939291906144c4565b600060405180830381600087803b15801561214e57600080fd5b505af1158015612162573d6000803e3d6000fd5b50505050612172828c308f61393b565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa1580156121b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121dd9190614483565b90506121e98d836143c0565b81146122075760405162461bcd60e51b815260040161081a9061449c565b8915612266576122178c8e612981565b945084601360008d815260200190815260200160002060008e6001600160a01b03166001600160a01b031681526020019081526020016000206000808152602001908152602001600020819055505b60008b815260116020526040812080548f9290611c7e9084906143c0565b6001600160a01b0381166000908152600e60205260409020548210156122bc5760405162461bcd60e51b815260040161081a90614455565b6001600160a01b03811660009081526020819052604090205460ff166122f45760405162461bcd60e51b815260040161081a90614347565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa15801561233b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061235f9190614483565b905061236d8233308661393b565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa1580156123b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d89190614483565b90506123e484836143c0565b81146124025760405162461bcd60e51b815260040161081a9061449c565b6001600160a01b0383166000908152600f60209081526040808320338452909152812080548692906124359084906143c0565b909155505050505050565b60008051602061466f8339815191526124588161392e565b600083815260106020908152604080832054601383528184206001600160a01b038a81168652908452828520858052909352922054911690156124c15760008481526013602090815260408083206001600160a01b038a16845282528083208380529091528120555b6000633b9aca006124d285886143f6565b6124dc919061440d565b6124e690876143c0565b60008681526011602052604090205490915081111561251057506000848152601160205260409020545b6001600160a01b038083166000908152600f60209081526040808320938b16835292905290812080548392906125479084906143c0565b90915550506000858152601160205260408120805483929061256a9084906143ad565b90915550506040516000805160206146af8339815191529061194b908990849086906143d3565b60009182526000805160206146cf833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6001600160a01b03811660009081526020819052604090205460ff166126015760405162461bcd60e51b815260040161081a90614347565b61262b7f369da55721ba2b3acddd63aac7d6512c3e5762a78fa01c44f423f97868330c3433612591565b8061263c575061263c600033612591565b6126775760405162461bcd60e51b815260206004820152600c60248201526b496e76616c696420726f6c6560a01b604482015260640161081a565b6001600160a01b0381166000908152600d60205260409020548211156126af5760405162461bcd60e51b815260040161081a90614371565b6001600160a01b0381166000908152600d6020526040812080548492906126d79084906143ad565b9091555061127d90508184846138cf565b600060008051602061466f8339815191526127028161392e565b831561272c57600083815260116020526040812080548692906127269084906143ad565b90915550505b6000838152601160205260409020548590633b9aca009061274e9083906143ad565b61275891906143f6565b612762919061440d565b95945050505050565b600060008051602061466f8339815191526127858161392e565b6000848152601060209081526040808320546001600160a01b0316808452600e909252909120548710156127cb5760405162461bcd60e51b815260040161081a90614455565b6001600160a01b03811660009081526020819052604090205460ff166128035760405162461bcd60e51b815260040161081a90614347565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa15801561284a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061286e9190614483565b905061287c8288308b61393b565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa1580156128c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128e79190614483565b90506128f389836143c0565b81146129115760405162461bcd60e51b815260040161081a9061449c565b851561295157612921888a612981565b60008881526013602090815260408083206001600160a01b038d1684528252808320838052909152902081905594505b600087815260116020526040812080548b929061296f9084906143c0565b90915550949998505050505050505050565b6001546040516370a0823160e01b81526001600160a01b03848116600483015260009283929116906370a0823190602401602060405180830381865afa1580156129cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129f39190614483565b9050600160009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a6c9190614483565b612a7790600a6145e9565b600354612a8491906143f6565b811015612a955760009150506108df565b6000600a5b8015612b6f57600160009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612af3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b179190614483565b612b2290600a6145e9565b6003612b2f6001846143ad565b600a8110612b3f57612b3f6145f5565b0154612b4b91906143f6565b8310612b5957809150612b6f565b6000915080612b678161460b565b915050612a9a565b50612710612b7d82866143f6565b6127589060646143f6565b612b9182610e1d565b612b9a8161392e565b6110a28383613a19565b60008051602061466f833981519152612bbc8161392e565b50600090815260116020526040812055565b60008051602061466f833981519152612be68161392e565b6001600160a01b038216612c0c5760405162461bcd60e51b815260040161081a9061442f565b6001600160a01b03821660009081526020819052604090205460ff16612c445760405162461bcd60e51b815260040161081a90614347565b60008381526010602090815260409182902080546001600160a01b0319166001600160a01b0386169081179091558251868152918201527fd06c216190541958df03159d94c219a5c4605f4d740cda506e4e32dd022065449101611309565b60008051602061466f833981519152612cbb8161392e565b600083815260106020908152604080832054601383528184206001600160a01b03898116865290845282852087865290935292205491169015612d245760008481526013602090815260408083206001600160a01b038916845282528083208684529091528120555b60006127108803612d5057600085815260116020526040902054612d499088906143ad565b9050612d87565b600085815260116020526040902054612710908990612d70908a906143ad565b612d7a91906143f6565b612d84919061440d565b90505b6001600160a01b038083166000908152600f60209081526040808320938a1683529290529081208054839290612dbe9084906143c0565b90915550506040516000805160206146af83398151915290612de5908890849086906143d3565b60405180910390a15050505050505050565b600060008051602061466f833981519152612e118161392e565b6000848152601060209081526040808320546001600160a01b0316808452600e90925290912054871015612e575760405162461bcd60e51b815260040161081a90614455565b6001600160a01b03811660009081526020819052604090205460ff16612e8f5760405162461bcd60e51b815260040161081a90614347565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015612ed6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612efa9190614483565b9050612f088288308b61393b565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015612f4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f739190614483565b9050612f7f89836143c0565b8114612f9d5760405162461bcd60e51b815260040161081a9061449c565b612fa7888a612981565b60008881526013602090815260408083206001600160a01b038d16845282528083208a845282528083208490558a83526011909152812080549297508b9290919061296f9084906143c0565b60008051602061466f83398151915261300b8161392e565b600084815260106020908152604080832054601383528184206001600160a01b038b81168652908452828520888652909352922054911690156130745760008581526013602090815260408083206001600160a01b038b16845282528083208784529091528120555b6000633b9aca0061308585896143f6565b61308f919061440d565b61309990886143c0565b6001600160a01b038084166000908152600f60209081526040808320938d168352929052908120805492935083929091906130d59084906143c0565b9091555050600086815260116020526040812080548392906130f89084906143ad565b90915550506040516000805160206146af83398151915290612de5908a90849086906143d3565b60005b8381101561343a57600060106000878785818110613142576131426145f5565b90506020020135815260200190815260200160002060009054906101000a90046001600160a01b0316905060126000878785818110613183576131836145f5565b602090810292909201358352508101919091526040016000205460ff1615156001146131fd5760405162461bcd60e51b815260206004820152602360248201527f43616e27742077697468647261772066726f6d20756e66696e69736865642067604482015262616d6560e81b606482015260840161081a565b60136000878785818110613213576132136145f5565b9050602002013581526020019081526020016000206000336001600160a01b03166001600160a01b03168152602001908152602001600020600085858581811061325f5761325f6145f5565b602090810292909201358352508181019290925260409081016000908120546001600160a01b0385168252600f845282822033835290935290812080549091906132aa9084906143c0565b909155507fb7f0a4712f034efed811d62972dce9d4e8cabd9603ae6c9076d0b507231dbee990508686848181106132e3576132e36145f5565b9050602002013560136000898987818110613300576133006145f5565b9050602002013581526020019081526020016000206000336001600160a01b03166001600160a01b03168152602001908152602001600020600087878781811061334c5761334c6145f5565b9050602002013581526020019081526020016000205483878787818110613375576133756145f5565b905060200201356040516133ab949392919093845260208401929092526001600160a01b03166040830152606082015260800190565b60405180910390a16000601360008888868181106133cb576133cb6145f5565b9050602002013581526020019081526020016000206000336001600160a01b03166001600160a01b031681526020019081526020016000206000868686818110613417576134176145f5565b602090810292909201358352508101919091526040016000205550600101613122565b5050505050565b60008051602061466f8339815191526134598161392e565b6000828152601060209081526040808320546001600160a01b0316808452918390529091205460ff1661349e5760405162461bcd60e51b815260040161081a90614347565b6000838152601160205260409020548611156134cc5760405162461bcd60e51b815260040161081a90614371565b60006127106134db86896143f6565b6134e5919061440d565b60008581526013602090815260408083206001600160a01b03808c1685529083528184208480528352818420549087168452600d9092528220805493945090928492906135339084906143c0565b90915550506001600160a01b0383166000818152600d60209081526040918290205482518681529182015280820192909252517f9621ec81129e662768976f0ea58d74a293226ada50ebe59321283cc3e9ac5eb19181900360600190a180156135c25760008581526013602090815260408083206001600160a01b038b16845282528083208380529091528120555b600085815260116020526040812080548a92906135e09084906143ad565b909155506135f0905082896143ad565b6001600160a01b038085166000908152600f60209081526040808320938c16835292905290812080549091906136279084906143c0565b9091555060008051602061468f833981519152905087613647848b6143ad565b85604051612de5939291906143d3565b600060008051602061466f8339815191526136718161392e565b6000838152601060205260409020546001600160a01b031661271061369686886143f6565b6136a0919061440d565b6001600160a01b0382166000908152600d60205260408120805492955085929091906136cd9084906143c0565b90915550506001600160a01b0381166000818152600d60209081526040918290205482518781529182015280820192909252517f9621ec81129e662768976f0ea58d74a293226ada50ebe59321283cc3e9ac5eb19181900360600190a1600084815260116020526040812080548592906137489084906143ad565b90915550929695505050505050565b60008051602061466f83398151915261376f8161392e565b6000838152601060209081526040808320546001600160a01b0316808452918390529091205460ff166137b45760405162461bcd60e51b815260040161081a90614347565b6000848152601160205260409020548611156137e25760405162461bcd60e51b815260040161081a90614371565b60008481526013602090815260408083206001600160a01b038916845282528083208684529091529020541561383e5760008481526013602090815260408083206001600160a01b038916845282528083208684529091528120555b6000848152601160205260408120805488929061385c9084906143ad565b90915550506001600160a01b038082166000908152600f60209081526040808320938916835292905290812080548892906138989084906143c0565b909155505060405160008051602061468f833981519152906138bf908790899085906143d3565b60405180910390a1505050505050565b6040516001600160a01b0383811660248301526044820183905261127d91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613a9f565b6139388133613b02565b50565b6040516001600160a01b0384811660248301528381166044830152606482018390526110a29186918216906323b872dd906084016138fc565b60006000805160206146cf83398151915261398f8484612591565b613a0f576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556139c53390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506108df565b60009150506108df565b60006000805160206146cf833981519152613a348484612591565b15613a0f576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506108df565b613a9d613b3b565b565b6000613ab46001600160a01b03841683613b84565b90508051600014158015613ad9575080806020019051810190613ad79190614622565b155b1561127d57604051635274afe760e01b81526001600160a01b038416600482015260240161081a565b613b0c8282612591565b6108aa5760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161081a565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16613a9d57604051631afcd79f60e31b815260040160405180910390fd5b6060613b9283836000613b99565b9392505050565b606081471015613bbe5760405163cd78605960e01b815230600482015260240161081a565b600080856001600160a01b03168486604051613bda919061463f565b60006040518083038185875af1925050503d8060008114613c17576040519150601f19603f3d011682016040523d82523d6000602084013e613c1c565b606091505b5091509150613c2c868383613c36565b9695505050505050565b606082613c4b57613c4682613c92565b613b92565b8151158015613c6257506001600160a01b0384163b155b15613c8b57604051639996b31560e01b81526001600160a01b038516600482015260240161081a565b5080613b92565b805115613ca25780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b82600a8101928215613cf0579160200282015b82811115613cf0578251829062ffffff16905591602001919060010190613cce565b50613cfc929150613d00565b5090565b5b80821115613cfc5760008155600101613d01565b80356001600160a01b0381168114613d2c57600080fd5b919050565b600060208284031215613d4357600080fd5b613b9282613d15565b60008060408385031215613d5f57600080fd5b82359150613d6f60208401613d15565b90509250929050565b600060208284031215613d8a57600080fd5b81356001600160e01b031981168114613b9257600080fd5b600080600060608486031215613db757600080fd5b83359250613dc760208501613d15565b9150604084013590509250925092565b600080600080600060a08688031215613def57600080fd5b85359450613dff60208701613d15565b94979496505050506040830135926060810135926080909101359150565b600060208284031215613e2f57600080fd5b5035919050565b600080600060608486031215613e4b57600080fd5b83359250613e5b60208501613d15565b9150613e6960408501613d15565b90509250925092565b60008060008060808587031215613e8857600080fd5b84359350613e9860208601613d15565b93969395505050506040820135916060013590565b801515811461393857600080fd5b60008060408385031215613ece57600080fd5b613ed783613d15565b91506020830135613ee781613ead565b809150509250929050565b803560ff81168114613d2c57600080fd5b600080600080600080600060e0888a031215613f1e57600080fd5b87359650613f2e60208901613d15565b9550613f3c60408901613d15565b945060608801359350613f5160808901613ef2565b925060a0880135915060c0880135905092959891949750929550565b60008060008060808587031215613f8357600080fd5b84359350613f9360208601613d15565b9250604085013591506060850135613faa81613ead565b939692955090935050565b60008060408385031215613fc857600080fd5b613fd183613d15565b9150613d6f60208401613d15565b600080600080600080600080610100898b031215613ffc57600080fd5b8835975061400c60208a01613d15565b965060408901359550606089013594506080890135935061402f60a08a01613ef2565b925060c0890135915060e089013590509295985092959890939650565b60008060008060008060c0878903121561406557600080fd5b8635955061407560208801613d15565b94506040870135935061408a60608801613ef2565b92506080870135915060a087013590509295509295509295565b600080600080600060a086880312156140bc57600080fd5b8535945060208601359350604086013592506140da60608701613d15565b949793965091946080013592915050565b600080600080600080600080610100898b03121561410857600080fd5b8835975061411860208a01613d15565b965060408901359550606089013561412f81613ead565b94506080890135935061402f60a08a01613ef2565b6000806000806080858703121561415a57600080fd5b61416385613d15565b966020860135965060408601359560600135945092505050565b60008060006060848603121561419257600080fd5b61419b84613d15565b925060208401359150613e6960408501613d15565b6000806000606084860312156141c557600080fd5b505081359360208301359350604090920135919050565b600080604083850312156141ef57600080fd5b6141f883613d15565b946020939093013593505050565b600080600080600060a0868803121561421e57600080fd5b853594506020860135935061423560408701613d15565b94979396509394606081013594506080013592915050565b600080600080600060a0868803121561426557600080fd5b61426e86613d15565b97602087013597506040870135966060810135965060800135945092505050565b60008083601f8401126142a157600080fd5b50813567ffffffffffffffff8111156142b957600080fd5b6020830191508360208260051b85010111156142d457600080fd5b9250929050565b600080600080604085870312156142f157600080fd5b843567ffffffffffffffff8082111561430957600080fd5b6143158883890161428f565b9096509450602087013591508082111561432e57600080fd5b5061433b8782880161428f565b95989497509550505050565b60208082526010908201526f2ab730b8383937bb32b2103a37b5b2b760811b604082015260600190565b6020808252600c908201526b15dc9bdb99c8185b5bdd5b9d60a21b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b818103818111156108df576108df614397565b808201808211156108df576108df614397565b6001600160a01b0393841681526020810192909252909116604082015260600190565b80820281158282048414176108df576108df614397565b60008261442a57634e487b7160e01b600052601260045260246000fd5b500490565b6020808252600c908201526b5a65726f206164647265737360a01b604082015260600190565b60208082526014908201527315dc9bdb99c819195c1bdcda5d08185b5bdd5b9d60621b604082015260600190565b60006020828403121561449557600080fd5b5051919050565b6020808252600e908201526d546f6b656e20776974682066656560901b604082015260600190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b600181815b8085111561454057816000190482111561452657614526614397565b8085161561453357918102915b93841c939080029061450a565b509250929050565b600082614557575060016108df565b81614564575060006108df565b816001811461457a5760028114614584576145a0565b60019150506108df565b60ff84111561459557614595614397565b50506001821b6108df565b5060208310610133831016604e8410600b84101617156145c3575081810a6108df565b6145cd8383614505565b80600019048211156145e1576145e1614397565b029392505050565b6000613b928383614548565b634e487b7160e01b600052603260045260246000fd5b60008161461a5761461a614397565b506000190190565b60006020828403121561463457600080fd5b8151613b9281613ead565b6000825160005b818110156146605760208186018101518583015201614646565b50600092019182525091905056fefbd454f36a7e1a388bd6fc3ab10d434aa4578f811acbbcf33afb1c697486313cb44b3631755227290f8fbd7b248fa4be405129d15351313e3c332a3fb9919417b15bce4c8ca0c8f2dad19b61993ca1d48a1c1ff9e02155ed33793141d0a9bf3502dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a2646970667358221220b83be55d0952a26e8422e15cf85efd33775c6ba41330a1da444d088d5dd2f79f64736f6c63430008180033