0 txs
0 calls
constructor
No constructor.
functions
_getPagedIds
purefunction _getPagedIds(uint256[] idsArray, uint256 offset, uint16 pageSize) pure returns (uint256[])
allowedCollections
viewfunction allowedCollections(uint256) view returns (address)
authorizedAddresses
viewfunction authorizedAddresses(uint256) view returns (address)
availableFees
viewfunction availableFees(address) view returns (uint256)
availablePool
viewfunction availablePool(address) view returns (uint256)
canCreateGames
viewfunction canCreateGames() view returns (bool)
FEE_PERCENT
viewfunction FEE_PERCENT() view returns (uint256)
games
viewfunction games(uint256) view returns (uint256 gameId, uint256 playerATokenId, uint256 playerBTokenId, uint256 stake, bytes32 playerAHash, address playerAContract, uint32 createdTime, address playerBContract, uint32 acceptedTime, address stakeToken, uint32 completedTime, bool isPublic, uint8 status, uint8 outcome)
getAllGames
viewfunction getAllGames(uint256 offset, uint16 pageSize) view returns (tuple[])
getAllowedCollections
viewfunction getAllowedCollections() view returns (address[])
getGame
viewfunction getGame(uint256 gameId) view returns (tuple)
getGames
viewfunction getGames(uint256[] gameIds) view returns (tuple[])
getMyGames
viewfunction getMyGames(address contractAddr, uint256 tokenId, uint256 offset, uint16 pageSize) view returns (tuple[])
getMyPendingGames
viewfunction getMyPendingGames(address contractAddr, uint256 tokenId) view returns (tuple[])
getPlayerStats
viewfunction getPlayerStats(address contractAddr, uint256 tokenId) view returns (tuple)
getPublicGames
viewfunction getPublicGames(uint256 offset, uint16 pageSize) view returns (tuple[] list, uint256 total)
luckyDrawContract
viewfunction luckyDrawContract() view returns (address)
MIN_STAKE_WEI
viewfunction MIN_STAKE_WEI() view returns (uint256)
nextGameId
viewfunction nextGameId() view returns (uint256)
owner
viewfunction owner() view returns (address)
POOL_PERCENT
viewfunction POOL_PERCENT() view returns (uint256)
publicGamesList
viewfunction publicGamesList(uint256) view returns (uint256)
REVEAL_TIMEOUT
viewfunction REVEAL_TIMEOUT() view returns (uint256)
ROUNDS_PER_GAME
viewfunction ROUNDS_PER_GAME() view returns (uint256)
stakeTokenContract
viewfunction stakeTokenContract() view returns (address)
acceptAndPlay
nonpayablefunction acceptAndPlay(tuple acceptDetails) returns (tuple)
cancelGame
nonpayablefunction cancelGame(uint256 gameId)
initialize
nonpayablefunction initialize(address _stakeToken, address[] allowedCollections_)
newGame
nonpayablefunction newGame(tuple gameDetails) returns (tuple)
renounceOwnership
nonpayablefunction renounceOwnership()
reveal
nonpayablefunction reveal(tuple revealDetails) returns (tuple)
revealBulk
nonpayablefunction revealBulk(tuple[] revealDetails)
setAllowedCollections
nonpayablefunction setAllowedCollections(address[] allowedCollections_)
setAuthorizedAddresses
nonpayablefunction setAuthorizedAddresses(address[] authorizedAddresses_)
setCanCreateGames
nonpayablefunction setCanCreateGames(bool canCreateGames_)
setLuckyDrawContract
nonpayablefunction setLuckyDrawContract(address luckyDrawContract_)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
withdrawByDefault
nonpayablefunction withdrawByDefault(uint256 gameId) returns (tuple)
withdrawFees
nonpayablefunction withdrawFees(address to, uint256 amount)
withdrawPool
nonpayablefunction withdrawPool(address to, uint256 amount)
events
GameAccepted
event GameAccepted(uint256 indexed gameId)
GameCancelled
event GameCancelled(uint256 indexed gameId)
GameCompleted
event GameCompleted(uint256 indexed gameId, uint8 indexed outcome)
GameCreated
event GameCreated(uint256 indexed gameId)
Initialized
event Initialized(uint64 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
errors
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
creation bytecode
0x608060405234801561001057600080fd5b5061554b806100206000396000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c8063715018a61161013b578063b135bbb0116100b8578063e752b7931161007c578063e752b793146105df578063e96f81aa146105f2578063e9e730a414610612578063eaf98d2314610625578063f2fde38b1461062e57600080fd5b8063b135bbb01461057d578063b889253914610586578063cec9777c14610599578063d6e99e82146105ac578063df3c66de146105cc57600080fd5b8063a1d48094116100ff578063a1d4809414610511578063a2f77bcc14610531578063a38d6b0d14610544578063ad3b1b4714610557578063ae5ab4711461056a57600080fd5b8063715018a6146104c85780637c4304ff146104d05780638da5cb5b146104e3578063946d9204146104eb57806395874631146104fe57600080fd5b80633b356bbb116101c95780635132faca1161018d5780635132faca1461044f57806365833f681461046257806369958ab9146104825780636cc5f3ad146104955780636ffec293146104b557600080fd5b80633b356bbb146103d55780633d6ae3a7146103e35780634b13ab70146103ed5780634ca38d4a1461040057806350928ba41461042b57600080fd5b806322257d2f1161021057806322257d2f14610363578063277135361461038357806330d520531461039657806339c731331461039f5780633a51f383146103c057600080fd5b80630bb79aa71461024d578063117a5b9014610268578063151ee1221461031b57806319a3c0091461033057806319d1dc7e14610350575b600080fd5b610255600581565b6040519081526020015b60405180910390f35b610301610276366004614525565b600160208190526000918252604090912080549181015460028201546003830154600484015460058501546006860154600787015460099097015495969495939492936001600160a01b038084169463ffffffff600160a01b9586900481169585841695819004821694938316939204169060ff80821691610100810482169162010000909104168e565b60405161025f9e9d9c9b9a99989796959493929190614581565b61032e610329366004614744565b610641565b005b61034361033e3660046148be565b610660565b60405161025f9190614a66565b61032e61035e366004614a79565b610f39565b610255610371366004614b29565b60066020526000908152604090205481565b61032e610391366004614744565b610f7a565b6102556101f481565b6103b26103ad366004614b5d565b610f95565b60405161025f929190614c6c565b6103c861100d565b60405161025f9190614c8e565b610255662386f26fc1000081565b6102556203f48081565b6102556103fb366004614525565b61106f565b61041361040e366004614525565b611090565b6040516001600160a01b03909116815260200161025f565b60095461043f90600160a01b900460ff1681565b604051901515815260200161025f565b600854610413906001600160a01b031681565b610475610470366004614cdb565b6110ba565b60405161025f9190614d07565b61032e610490366004614525565b611347565b6104a86104a3366004614d75565b611580565b60405161025f9190614da9565b61032e6104c3366004614e19565b6116c0565b61032e6116e6565b61032e6104de366004614cdb565b6116fa565b6104136118cb565b61032e6104f9366004614e36565b6118f9565b61041361050c366004614525565b611a5a565b61025561051f366004614b29565b60056020526000908152604090205481565b61034361053f366004614525565b611a6a565b600b54610413906001600160a01b031681565b61032e610565366004614cdb565b611c6b565b610475610578366004614e85565b611d7a565b61025560005481565b610343610594366004614525565b611e01565b61032e6105a7366004614b29565b6121d8565b6105bf6105ba366004614cdb565b612202565b60405161025f9190614efd565b6103436105da366004614f71565b6125dc565b6103436105ed366004614ffc565b612b1b565b6106056106003660046150a5565b613142565b60405161025f91906150fb565b610475610620366004614b5d565b61324f565b61025561019081565b61032e61063c366004614b29565b61332f565b61064961336d565b805161065c90600a90602084019061440a565b5050565b61066861446f565b8151600081815260016020526040812060050154600160a01b900463ffffffff1690036106b05760405162461bcd60e51b81526004016106a79061510e565b60405180910390fd5b82516001600082815260016020526040902060090154610100900460ff1660038111156106df576106df61453e565b146107245760405162461bcd60e51b815260206004820152601560248201527411d85b59481b9bdd081858d8d95c1d1959081e595d605a1b60448201526064016106a7565b835160408086015160208088015192516000936002936107469390920161513b565b60408051601f19818403018152908290526107609161518b565b602060405180830381855afa15801561077d573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906107a091906151a7565b60008381526001602052604090206004015490915081146107f35760405162461bcd60e51b815260206004820152600d60248201526c090c2e6d040dad2e6dac2e8c6d609b1b60448201526064016106a7565b6000808760400151516005146108455760405162461bcd60e51b8152602060048201526017602482015276496e76616c6964206e756d626572206f66206d6f76657360481b60448201526064016106a7565b600084815260026020526040812054905b6005811015610a645760008a604001518281518110610877576108776151c0565b602002602001015160038111156108905761089061453e565b036108d55760405162461bcd60e51b8152602060048201526015602482015274125b9d985b1a59081b5bdd99481cdd5c1c1b1a5959605a1b60448201526064016106a7565b610910826000838d6040015185815181106108f2576108f26151c0565b6020026020010151600381111561090b5761090b61453e565b61339f565b915060008a60400151828151811061092a5761092a6151c0565b60200260200101519050600061094284600185613445565b60ff1660038111156109565761095661453e565b905080600381111561096a5761096a61453e565b82600381111561097c5761097c61453e565b03610988575050610a52565b600182600381111561099c5761099c61453e565b1480156109ba575060038160038111156109b8576109b861453e565b145b806109f2575060028260038111156109d4576109d461453e565b1480156109f2575060018160038111156109f0576109f061453e565b145b80610a2a57506003826003811115610a0c57610a0c61453e565b148015610a2a57506002816003811115610a2857610a2861453e565b145b15610a415785610a39816151ec565b965050610a4f565b84610a4b816151ec565b9550505b50505b80610a5c816151ec565b915050610856565b506000858152600260205260409020819055818303610aa2576000858152600160205260409020600901805462ff0000191662030000179055610ae8565b818311610ab0576002610ab3565b60015b6000868152600160205260409020600901805462ff0000191662010000836004811115610ae257610ae261453e565b02179055505b600085815260016020526040902060078101805463ffffffff60a01b1916600160a01b4263ffffffff1602179055600901805461ff001981166102001790915560ff1615610b90576000858152600160208190526040909120600581015490820154610b5f926001600160a01b039092169161347e565b60008581526001602081905260409091206006810154600290910154610b90926001600160a01b039092169161347e565b600160008681526001602052604090206009015462010000900460ff166004811115610bbe57610bbe61453e565b03610c1c576000858152600160208190526040909120600581015491810154600390910154610c17926001600160a01b03169190610bfd906002615205565b60008981526001602052604090206009015460ff166134f3565b610d01565b600260008681526001602052604090206009015462010000900460ff166004811115610c4a57610c4a61453e565b03610c895760008581526001602052604090206006810154600280830154600390930154610c17936001600160a01b039093169291610bfd9190615205565b60008581526001602081905260409091206005810154918101546003820154600990920154610cc5936001600160a01b0316929060ff166134f3565b6000858152600160205260409020600681015460028201546003830154600990930154610d01936001600160a01b03909316929060ff166134f3565b60008581526001602052604090206009015462010000900460ff166004811115610d2d57610d2d61453e565b60405186907f260525a806e0714f16de6fea0094e17a171fae8df7fbf6b271e695a7c709fd6290600090a3600085815260016020818152604080842081516101e081018352815481529381015484840152600281015484830152600381015460608501526004810154608085015260058101546001600160a01b0380821660a087015263ffffffff600160a01b92839004811660c0880152600684015480831660e08901528390048116610100880152600784015491821661012088015291900416610140850152600881018054835181860281018601909452808452949591946101608701949192909184015b82821015610ea957600084815260209020604080518082019091529083018054829060ff166003811115610e5157610e5161453e565b6003811115610e6257610e6261453e565b81528154602090910190610100900460ff166003811115610e8557610e8561453e565b6003811115610e9657610e9661453e565b8152505081526020019060010190610e1b565b50505090825250600982015460ff80821615156020840152604090920191610100909104166003811115610edf57610edf61453e565b6003811115610ef057610ef061453e565b81526020016009820160029054906101000a900460ff166004811115610f1857610f1861453e565b6004811115610f2957610f2961453e565b9052509998505050505050505050565b60005b815181101561065c57610f67828281518110610f5a57610f5a6151c0565b6020026020010151610660565b5080610f72816151ec565b915050610f3c565b610f8261336d565b805161065c90600790602084019061440a565b6004546060906000908103610fe1576040805160008082526020820190925290610fd5565b610fc26144e9565b815260200190600190039081610fba5790505b50600091509150611006565b610ffd610ff8610ff160046135ff565b8686613142565b6136bc565b60045490925090505b9250929050565b6060600780548060200260200160405190810160405280929190818152602001828054801561106557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611047575b5050505050905090565b6004818154811061107f57600080fd5b600091825260209091200154905081565b600781815481106110a057600080fd5b6000918252602090912001546001600160a01b0316905081565b6001600160a01b0382166000908152600360209081526040808320848452825280832080548251818502810185019093528083526060949383018282801561112157602002820191906000526020600020905b81548152602001906001019080831161110d575b5050505050905060008080600090505b83518110156111ef5783818151811061114c5761114c6151c0565b60200260200101519150600060038111156111695761116961453e565b600083815260016020526040902060090154610100900460ff1660038111156111945761119461453e565b14806111ca57506001600083815260016020526040902060090154610100900460ff1660038111156111c8576111c861453e565b145b156111dd57826111d9816151ec565b9350505b806111e7816151ec565b915050611131565b506000826001600160401b0381111561120a5761120a61462a565b604051908082528060200260200182016040528015611233578160200160208202803683370190505b5090506000805b855181101561132f57858181518110611255576112556151c0565b60200260200101519350600060038111156112725761127261453e565b600085815260016020526040902060090154610100900460ff16600381111561129d5761129d61453e565b14806112d357506001600085815260016020526040902060090154610100900460ff1660038111156112d1576112d161453e565b145b1561131d578581815181106112ea576112ea6151c0565b6020026020010151838381518110611304576113046151c0565b602090810291909101015281611319816151ec565b9250505b80611327816151ec565b91505061123a565b50611339826136bc565b955050505050505b92915050565b6000818152600160205260408120600501548291600160a01b90910463ffffffff1690036113875760405162461bcd60e51b81526004016106a79061510e565b8160008082815260016020526040902060090154610100900460ff1660038111156113b4576113b461453e565b146113fc5760405162461bcd60e51b815260206004820152601860248201527711d85b59481a185cc8185b1c9958591e481cdd185c9d195960421b60448201526064016106a7565b60008381526001602081905260409091206005810154910154339161142c916001600160a01b0390911690613ae6565b6001600160a01b0316146114825760405162461bcd60e51b815260206004820152601a60248201527f596f7520617265206e6f74207468652067616d65206f776e657200000000000060448201526064016106a7565b6009546001600160a01b031663a9059cbb336000868152600160205260409081902060030154905160e084901b6001600160e01b03191681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156114f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611516919061521c565b50600083815260016020526040902060098101805461ff001916610300179055600601546001600160a01b03166115505761155083613b5c565b60405183907f681705fdbd93dba3b679fd712577e9a86d57c5551c520f8c74857deb57f9623f90600090a2505050565b6060600082516001600160401b0381111561159d5761159d61462a565b6040519080825280602002602001820160405280156115d657816020015b6115c361446f565b8152602001906001900390816115bb5790505b50905060005b83518110156116b9576116078482815181106115fa576115fa6151c0565b6020026020010151611a6a565b828281518110611619576116196151c0565b6020026020010181905250818181518110611636576116366151c0565b602002602001015160c0015163ffffffff166000036116a757611671848281518110611664576116646151c0565b6020026020010151613c14565b6040516020016116819190615239565b60408051601f198184030181529082905262461bcd60e51b82526106a791600401615282565b806116b1816151ec565b9150506115dc565b5092915050565b6116c861336d565b60098054911515600160a01b0260ff60a01b19909216919091179055565b6116ee61336d565b6116f86000613ca6565b565b611764600a80548060200260200160405190810160405280929190818152602001828054801561175357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611735575b505050505061175f3390565b613d17565b8061177e5750336117736118cb565b6001600160a01b0316145b6117bb5760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b60448201526064016106a7565b6008546001600160a01b03166000908152600660205260409020548111156118205760405162461bcd60e51b8152602060048201526018602482015277416d6f756e74206578636565647320617661696c61626c6560401b60448201526064016106a7565b60095460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015611873573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611897919061521c565b506008546001600160a01b0316600090815260066020526040812080548392906118c2908490615295565b90915550505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b031660008115801561193e5750825b90506000826001600160401b0316600114801561195a5750303b155b905081158015611968575080155b156119865760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156119b057845460ff60401b1916600160401b1785555b600880546001600160a01b0389166001600160a01b0319918216811790925560098054909116909117905585516119ee90600790602089019061440a565b506009805460ff60a01b1916600160a01b179055611a0b33613d7c565b8315611a5157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b600a81815481106110a057600080fd5b611a7261446f565b600082815260016020818152604080842081516101e081018352815481529381015484840152600281015484830152600381015460608501526004810154608085015260058101546001600160a01b0380821660a087015263ffffffff600160a01b92839004811660c0880152600684015480831660e0890152839004811661010088015260078401549182166101208801529190041661014085015260088101805483518186028101860190945280845291936101608601939290879084015b82821015611bc157600084815260209020604080518082019091529083018054829060ff166003811115611b6957611b6961453e565b6003811115611b7a57611b7a61453e565b81528154602090910190610100900460ff166003811115611b9d57611b9d61453e565b6003811115611bae57611bae61453e565b8152505081526020019060010190611b33565b50505090825250600982015460ff80821615156020840152604090920191610100909104166003811115611bf757611bf761453e565b6003811115611c0857611c0861453e565b81526020016009820160029054906101000a900460ff166004811115611c3057611c3061453e565b6004811115611c4157611c4161453e565b905250600084815260026020526040902054909150611c5f90613d8d565b61016082015292915050565b611c7361336d565b6008546001600160a01b0316600090815260056020526040902054811115611cd85760405162461bcd60e51b8152602060048201526018602482015277416d6f756e74206578636565647320617661696c61626c6560401b60448201526064016106a7565b60095460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015611d2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d4f919061521c565b506008546001600160a01b0316600090815260056020526040812080548392906118c2908490615295565b6001600160a01b03841660009081526003602090815260408083208684528252918290208054835181840281018401909452808452606093611df893610ff893919290830182828015611dec57602002820191906000526020600020905b815481526020019060010190808311611dd8575b50505050508585613142565b95945050505050565b611e0961446f565b6000828152600160205260408120600501548391600160a01b90910463ffffffff169003611e495760405162461bcd60e51b81526004016106a79061510e565b826001600082815260016020526040902060090154610100900460ff166003811115611e7757611e7761453e565b14611ebc5760405162461bcd60e51b815260206004820152601560248201527411d85b59481b9bdd081858d8d95c1d1959081e595d605a1b60448201526064016106a7565b600084815260016020526040902060060154611ee9906203f48090600160a01b900463ffffffff166152a8565b4211611f375760405162461bcd60e51b815260206004820152601a60248201527f52657665616c2074696d656f7574206e6f74206578706972656400000000000060448201526064016106a7565b60008481526001602052604090206006810154600280830154600390930154611f8b936001600160a01b039093169291611f719190615205565b60008881526001602052604090206009015460ff166134f3565b600084815260016020819052604090912060098101805462ffff001916620402001790556006810154600290910154611fcf926001600160a01b039092169161347e565b600460405185907f260525a806e0714f16de6fea0094e17a171fae8df7fbf6b271e695a7c709fd6290600090a3600084815260016020818152604080842081516101e081018352815481529381015484840152600281015484830152600381015460608501526004810154608085015260058101546001600160a01b0380821660a087015263ffffffff600160a01b92839004811660c0880152600684015480831660e08901528390048116610100880152600784015491821661012088015291900416610140850152600881018054835181860281018601909452808452949591946101608701949192909184015b8282101561214d57600084815260209020604080518082019091529083018054829060ff1660038111156120f5576120f561453e565b60038111156121065761210661453e565b81528154602090910190610100900460ff1660038111156121295761212961453e565b600381111561213a5761213a61453e565b81525050815260200190600101906120bf565b50505090825250600982015460ff808216151560208401526040909201916101009091041660038111156121835761218361453e565b60038111156121945761219461453e565b81526020016009820160029054906101000a900460ff1660048111156121bc576121bc61453e565b60048111156121cd576121cd61453e565b905250949350505050565b6121e061336d565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6122516040518061012001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001606081525090565b600b5460405163097dbef760e31b81526001600160a01b03858116600483015260248201859052909116906000908290634bedf7b890604401600060405180830381865afa1580156122a7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526122cf91908101906152bb565b60408051610120810182526001600160a01b0388166000908152600360209081528382208983528152838220548352808301829052828401829052606083018290526080830182905260a08301829052845160c084015284015160e0830152918301516101008201529192505b6001600160a01b03871660009081526003602090815260408083208984529091529020548110156125d2576001600160a01b0387166000908152600360209081526040808320898452909152812080548390811061239c5761239c6151c0565b60009182526020909120015490506002600082815260016020526040902060090154610100900460ff1660038111156123d7576123d761453e565b146123e257506125c0565b600081815260016020526040812060038101546009909101548291829161240c919060ff16613e83565b91945092509050600360008581526001602052604090206009015462010000900460ff1660048111156124415761244161453e565b0361247c5760608601805190612456826151ec565b90525061246381836152a8565b8660a0018181516124749190615391565b90525061259d565b600084815260016020819052604090912001548a148080156124c95750600160008681526001602052604090206009015462010000900460ff1660048111156124c7576124c761453e565b145b806125095750801580156125095750600160008681526001602052604090206009015462010000900460ff1660048111156125065761250661453e565b14155b15612561576020870180519061251e826151ec565b90525060008581526001602052604090206003015461253e856002615205565b6125489190615295565b8760a00181815161255991906153b1565b90525061259b565b60408701805190612571826151ec565b90525060008581526001602052604090206003015460a088018051612597908390615391565b9052505b505b6125a781836152a8565b866080018181516125b891906152a8565b905250505050505b806125ca816151ec565b91505061233c565b5095945050505050565b6125e461446f565b600954600160a01b900460ff1661263d5760405162461bcd60e51b815260206004820152601760248201527f47616d65206372656174696f6e2069732070617573656400000000000000000060448201526064016106a7565b815161264890613ee6565b6126a25760405162461bcd60e51b815260206004820152602560248201527f43726561746f72204e465420636f6c6c656374696f6e206973206e6f7420616c6044820152641b1bddd95960da1b60648201526084016106a7565b60006126b683600001518460200151613ae6565b90506126c181613f4a565b60408301516001600160a01b03161561275d576126e18360400151613ee6565b61273b5760405162461bcd60e51b815260206004820152602560248201527f496e7669746564204e465420636f6c6c656374696f6e206973206e6f7420616c6044820152641b1bddd95960da1b60648201526084016106a7565b600061274f84604001518560600151613ae6565b905061275b8282613f99565b505b662386f26fc100008360a0015110156127b05760405162461bcd60e51b8152602060048201526015602482015274135a5b9a5b5d5b481cdd185ad9481b9bdd081b595d605a1b60448201526064016106a7565b6127bd8360a00151613ff2565b600080548082526001602081815260409384902083815587516005820180546001600160a01b0319166001600160a01b0392831617905591880151920191909155918501519091161561284c5760408481015160008381526001602052919091206006810180546001600160a01b0319166001600160a01b039093169290921790915560608501516002909101555b6080840151600082815260016020526040812060048101929092556008546007830180546001600160a01b0319166001600160a01b0390921691909117905560a086015160038301556005909101805463ffffffff4216600160a01b0263ffffffff60a01b19909116179055805490806128c5836151ec565b909155505083516001600160a01b0390811660009081526003602090815260408083208289015184528252808320805460018101825590845291909220018390558501511615612950576040808501516001600160a01b031660009081526003602090815282822060608801518352815291812080546001810182559082529190200181905561299f565b60008181526001602081905260408220600901805460ff1916821790556004805491820181559091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b018190555b60405181907fbd19c47e9925eb6f7be8bb1c13a841e0240aaeaf17f217e90022e9c8eb66877f90600090a2600081815260016020818152604080842081516101e081018352815481529381015484840152600281015484830152600381015460608501526004810154608085015260058101546001600160a01b0380821660a087015263ffffffff600160a01b92839004811660c0880152600684015480831660e08901528390048116610100880152600784015491821661012088015291900416610140850152600881018054835181860281018601909452808452949591946101608701949192909184015b8282101561214d57600084815260209020604080518082019091529083018054829060ff166003811115612ac357612ac361453e565b6003811115612ad457612ad461453e565b81528154602090910190610100900460ff166003811115612af757612af761453e565b6003811115612b0857612b0861453e565b8152505081526020019060010190612a8d565b612b2361446f565b8151600081815260016020526040812060050154600160a01b900463ffffffff169003612b625760405162461bcd60e51b81526004016106a79061510e565b825160008082815260016020526040902060090154610100900460ff166003811115612b9057612b9061453e565b14612bd85760405162461bcd60e51b815260206004820152601860248201527711d85b59481a185cc8185b1c9958591e481cdd185c9d195960421b60448201526064016106a7565b8351600081815260016020819052604082206005810154910154612c05916001600160a01b031690613ae6565b90506000612c1b87602001518860400151613ae6565b9050612c2681613f4a565b612c308282613f99565b6000838152600160205260409020600601546001600160a01b031615612cf557602080880151600085815260019092526040909120600601546001600160a01b039081169116148015612c985750604080880151600085815260016020529190912060020154145b612cf05760405162461bcd60e51b815260206004820152602360248201527f596f7572206e6f742074686520696e766974656520666f72207468697320676160448201526236b29760e91b60648201526084016106a7565b612dd1565b612d028760200151613ee6565b612d5d5760405162461bcd60e51b815260206004820152602660248201527f537570706c696564204e465420636f6c6c656374696f6e206973206e6f7420616044820152651b1b1bddd95960d21b60648201526084016106a7565b602087810180516000868152600180855260408083206006810180546001600160a01b0319166001600160a01b03968716179055818e0180516002909201919091559451909316825260038552828220935182529284529081208054928301815581529190912001839055612dd183613b5c565b600083815260016020526040902060030154612dec90613ff2565b866060015151600514612e3b5760405162461bcd60e51b8152602060048201526017602482015276496e76616c6964206e756d626572206f66206d6f76657360481b60448201526064016106a7565b6000805b6005811015612eef57600089606001518281518110612e6057612e606151c0565b60200260200101516003811115612e7957612e7961453e565b03612ebe5760405162461bcd60e51b8152602060048201526015602482015274125b9d985b1a59081b5bdd99481cdd5c1c1b1a5959605a1b60448201526064016106a7565b612edb826001838c6060015185815181106108f2576108f26151c0565b915080612ee7816151ec565b915050612e3f565b506000848152600260209081526040808320849055600190915280822060068101805463ffffffff60a01b1916600160a01b4263ffffffff1602179055600901805461ff0019166101001790555185917f5f8e2556f053753c316c48a4cc3bb582c792a32d588cac9e7cf1f7c9be538bdb91a2600084815260016020818152604080842081516101e081018352815481529381015484840152600281015484830152600381015460608501526004810154608085015260058101546001600160a01b0380821660a087015263ffffffff600160a01b92839004811660c0880152600684015480831660e08901528390048116610100880152600784015491821661012088015291900416610140850152600881018054835181860281018601909452808452949591946101608701949192909184015b828210156130b357600084815260209020604080518082019091529083018054829060ff16600381111561305b5761305b61453e565b600381111561306c5761306c61453e565b81528154602090910190610100900460ff16600381111561308f5761308f61453e565b60038111156130a0576130a061453e565b8152505081526020019060010190613025565b50505090825250600982015460ff808216151560208401526040909201916101009091041660038111156130e9576130e961453e565b60038111156130fa576130fa61453e565b81526020016009820160029054906101000a900460ff1660048111156131225761312261453e565b60048111156131335761313361453e565b90525098975050505050505050565b60608351600003613154575082613248565b60008385511161316557600061317f565b61317f8361ffff1685875161317a9190615295565b61414b565b90506000816001600160401b0381111561319b5761319b61462a565b6040519080825280602002602001820160405280156131c4578160200160208202803683370190505b508051909150156132445760008587516131de9190615295565b905060005b8381101561324157816131f5816153d9565b92505087828151811061320a5761320a6151c0565b6020026020010151838281518110613224576132246151c0565b602090810291909101015280613239816151ec565b9150506131e3565b50505b9150505b9392505050565b606060008360005411613263576000613279565b6132798361ffff168560005461317a9190615295565b90506000816001600160401b038111156132955761329561462a565b6040519080825280602002602001820160405280156132be578160200160208202803683370190505b50805190915015613326576000856000546132d99190615295565b905060005b8381101561332357816132f0816153d9565b92505081838281518110613306576133066151c0565b60209081029190910101528061331b816151ec565b9150506132de565b50505b611df8816136bc565b61333761336d565b6001600160a01b03811661336157604051631e4fbdf760e01b8152600060048201526024016106a7565b61336a81613ca6565b50565b336133766118cb565b6001600160a01b0316146116f85760405163118cdaa760e01b81523360048201526024016106a7565b6000600482106133e05760405162461bcd60e51b815260206004820152600c60248201526b496e76616c6964206d6f766560a01b60448201526064016106a7565b83156133ed5760806133f0565b60005b60ff166133fe846002615205565b61340891906152a8565b6003901b1985169050831561341e576080613421565b60005b60ff1661342f846002615205565b61343991906152a8565b9190911b179392505050565b60008215613454576080613457565b60005b60ff16613465836002615205565b61346f91906152a8565b84901c60031690509392505050565b600b54604051635618f6ff60e01b81526001600160a01b0385811660048301526024820185905260448201849052909116908190635618f6ff90606401600060405180830381600087803b1580156134d557600080fd5b505af11580156134e9573d6000803e3d6000fd5b5050505050505050565b60006134ff8585613ae6565b905060008060006135108686613e83565b6008546001600160a01b03166000908152600560205260408120805494975092955090935083926135429084906152a8565b9091555050841561357d576008546001600160a01b0316600090815260066020526040812080548492906135779084906152a8565b90915550505b60095460405163a9059cbb60e01b81526001600160a01b038681166004830152602482018690529091169063a9059cbb906044016020604051808303816000875af11580156135d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135f4919061521c565b505050505050505050565b80546060906000906001600160401b0381111561361e5761361e61462a565b604051908082528060200260200182016040528015613647578160200160208202803683370190505b50905060005b83548110156136a257838181548110613668576136686151c0565b9060005260206000200154828281518110613685576136856151c0565b60209081029190910101528061369a816151ec565b91505061364d565b50611341816000600184516136b79190615295565b614161565b6060600082516001600160401b038111156136d9576136d961462a565b60405190808252806020026020018201604052801561371257816020015b6136ff6144e9565b8152602001906001900390816136f75790505b50905080516000036137245792915050565b61372c61446f565b60005b8451811015613add57600085828151811061374c5761374c6151c0565b60209081029190910181015160008181526001808452604080832081516101e081018352815481529281015483870152600281015483830152600381015460608401526004810154608084015260058101546001600160a01b0380821660a086015263ffffffff600160a01b92839004811660c0870152600684015480831660e0880152839004811661010087015260078401549182166101208701529190041661014084015260088101805483518189028101890190945280845295975092959094610160870194929392909184015b828210156138ab57600084815260209020604080518082019091529083018054829060ff1660038111156138535761385361453e565b60038111156138645761386461453e565b81528154602090910190610100900460ff1660038111156138875761388761453e565b60038111156138985761389861453e565b815250508152602001906001019061381d565b50505090825250600982015460ff808216151560208401526040909201916101009091041660038111156138e1576138e161453e565b60038111156138f2576138f261453e565b81526020016009820160029054906101000a900460ff16600481111561391a5761391a61453e565b600481111561392b5761392b61453e565b90525060008281526002602052604090205490935061394990613d8d565b61016084015260408051606081018252848152600083815260016020818152918490206005810154910154935163c87b56dd60e01b815260048101949094529192908301916001600160a01b03169063c87b56dd90602401600060405180830381865afa1580156139be573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526139e691908101906153f0565b81526000838152600160209081526040909120600601549101906001600160a01b0316613a225760405180602001604052806000815250613aa9565b600083815260016020526040908190206006810154600290910154915163c87b56dd60e01b815260048101929092526001600160a01b03169063c87b56dd90602401600060405180830381865afa158015613a81573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613aa991908101906153f0565b815250848381518110613abe57613abe6151c0565b6020026020010181905250508080613ad5906151ec565b91505061372f565b50909392505050565b6040516331a9108f60e11b81526004810182905260009083906001600160a01b03821690636352211e90602401602060405180830381865afa158015613b30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b54919061545d565b949350505050565b60005b60045481101561065c5760048181548110613b7c57613b7c6151c0565b90600052602060002001548203613c025760048054613b9d90600190615295565b81548110613bad57613bad6151c0565b906000526020600020015460048281548110613bcb57613bcb6151c0565b6000918252602090912001556004805480613be857613be861547a565b600190038181906000526020600020016000905590555050565b80613c0c816151ec565b915050613b5f565b60606000613c21836142e1565b60010190506000816001600160401b03811115613c4057613c4061462a565b6040519080825280601f01601f191660200182016040528015613c6a576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084613c7457509392505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6000805b8351811015613d7257826001600160a01b0316848281518110613d4057613d406151c0565b60200260200101516001600160a01b031603613d60576001915050611341565b80613d6a816151ec565b915050613d1b565b5060009392505050565b613d846143b9565b61336a81614402565b60408051600580825260c0820190925260609160009190816020015b6040805180820190915260008082526020820152815260200190600190039081613da957905050905060005b60058110156116b9576040518060400160405280613df586600085613445565b60ff166003811115613e0957613e0961453e565b6003811115613e1a57613e1a61453e565b8152602001613e2b86600185613445565b60ff166003811115613e3f57613e3f61453e565b6003811115613e5057613e5061453e565b815250828281518110613e6557613e656151c0565b60200260200101819052508080613e7b906151ec565b915050613dd5565b60008080612710613e9661019087615205565b613ea091906154a6565b905083613eae576000613ec7565b612710613ebd6101f487615205565b613ec791906154a6565b9150613ed382826152a8565b613edd9086615295565b92509250925092565b6000805b600754811015613f415760078181548110613f0757613f076151c0565b6000918252602090912001546001600160a01b0390811690841603613f2f5750600192915050565b80613f39816151ec565b915050613eea565b50600092915050565b6001600160a01b038116331461336a5760405162461bcd60e51b8152602060048201526014602482015273165bdd481b5d5cdd081bdddb881d1a194813919560621b60448201526064016106a7565b806001600160a01b0316826001600160a01b03160361065c5760405162461bcd60e51b815260206004820152601560248201527421b0b73737ba10383630bc9037bbb7103a37b5b2b760591b60448201526064016106a7565b60095481906001600160a01b031663dd62ed3e336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381865afa158015614050573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061407491906151a7565b10156140c25760405162461bcd60e51b815260206004820181905260248201527f4552432d323020616c6c6f77616e636520697320696e73756666696369656e7460448201526064016106a7565b6009546001600160a01b03166323b872dd336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604481018490526064016020604051808303816000875af1158015614127573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065c919061521c565b600081831061415a5781613248565b5090919050565b8181808203614171575050505050565b60008560026141808787615391565b61418a91906154ba565b61419490876153b1565b815181106141a4576141a46151c0565b602002602001015190505b8183136142b3575b808684815181106141ca576141ca6151c0565b602002602001015110156141ea57826141e2816154e8565b9350506141b7565b8582815181106141fc576141fc6151c0565b602002602001015181101561421d578161421581615500565b9250506141ea565b8183136142ae57858281518110614236576142366151c0565b6020026020010151868481518110614250576142506151c0565b602002602001015187858151811061426a5761426a6151c0565b60200260200101888581518110614283576142836151c0565b6020908102919091010191909152528261429c816154e8565b93505081806142aa90615500565b9250505b6141af565b818512156142c6576142c6868684614161565b838312156142d9576142d9868486614161565b505050505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106143205772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef8100000000831061434c576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061436a57662386f26fc10000830492506010015b6305f5e1008310614382576305f5e100830492506008015b612710831061439657612710830492506004015b606483106143a8576064830492506002015b600a83106113415760010192915050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166116f857604051631afcd79f60e31b815260040160405180910390fd5b6133376143b9565b82805482825590600052602060002090810192821561445f579160200282015b8281111561445f57825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019061442a565b5061446b929150614510565b5090565b604080516101e08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e082018390526101008201839052610120820183905261014082018390526101608201526101808101829052906101a082019081526020016000905290565b60405180606001604052806144fc61446f565b815260200160608152602001606081525090565b5b8082111561446b5760008155600101614511565b60006020828403121561453757600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b6004811061336a5761336a61453e565b61456d81614554565b9052565b6005811061456d5761456d61453e565b8e8152602081018e9052604081018d9052606081018c9052608081018b90526001600160a01b038a811660a083015263ffffffff8a1660c0830152881660e08201526101c0810163ffffffff88166101008301526001600160a01b03871661012083015263ffffffff8616610140830152841515610160830152614609610180830185614564565b6146176101a0830184614571565b9f9e505050505050505050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156146625761466261462a565b60405290565b604051601f8201601f191681016001600160401b03811182821017156146905761469061462a565b604052919050565b60006001600160401b038211156146b1576146b161462a565b5060051b60200190565b6001600160a01b038116811461336a57600080fd5b600082601f8301126146e157600080fd5b813560206146f66146f183614698565b614668565b82815260059290921b8401810191818101908684111561471557600080fd5b8286015b8481101561473957803561472c816146bb565b8352918301918301614719565b509695505050505050565b60006020828403121561475657600080fd5b81356001600160401b0381111561476c57600080fd5b613b54848285016146d0565b60006001600160401b038211156147915761479161462a565b50601f01601f191660200190565b600082601f8301126147b057600080fd5b813560206147c06146f183614698565b82815260059290921b840181019181810190868411156147df57600080fd5b8286015b84811015614739578035600481106147fb5760008081fd5b83529183019183016147e3565b60006060828403121561481a57600080fd5b614822614640565b9050813581526020808301356001600160401b038082111561484357600080fd5b818501915085601f83011261485757600080fd5b81356148656146f182614778565b818152878583860101111561487957600080fd5b818585018683013760008583830101528085870152505060408501359250808311156148a457600080fd5b50506148b28482850161479f565b60408301525092915050565b6000602082840312156148d057600080fd5b81356001600160401b038111156148e657600080fd5b613b5484828501614808565b600081518084526020808501945080840160005b8381101561493f578151805161491b81614554565b885283015161492981614554565b8784015260409096019590820190600101614906565b509495945050505050565b60006101e0825184526020830151602085015260408301516040850152606083015160608501526080830151608085015260a083015161499560a08601826001600160a01b03169052565b5060c08301516149ad60c086018263ffffffff169052565b5060e08301516149c860e08601826001600160a01b03169052565b506101008381015163ffffffff90811691860191909152610120808501516001600160a01b031690860152610140808501519091169085015261016080840151818601839052614a1a838701826148f2565b9250505061018080840151614a328287018215159052565b50506101a080840151614a4782870182614564565b50506101c080840151614a5c82870182614571565b5090949350505050565b602081526000613248602083018461494a565b60006020808385031215614a8c57600080fd5b82356001600160401b0380821115614aa357600080fd5b818501915085601f830112614ab757600080fd5b8135614ac56146f182614698565b81815260059190911b83018401908481019088831115614ae457600080fd5b8585015b83811015614b1c57803585811115614b005760008081fd5b614b0e8b89838a0101614808565b845250918601918601614ae8565b5098975050505050505050565b600060208284031215614b3b57600080fd5b8135613248816146bb565b803561ffff81168114614b5857600080fd5b919050565b60008060408385031215614b7057600080fd5b82359150614b8060208401614b46565b90509250929050565b60005b83811015614ba4578181015183820152602001614b8c565b50506000910152565b60008151808452614bc5816020860160208601614b89565b601f01601f19169290920160200192915050565b6000815180845260208085019450848260051b860182860160005b85811015614c5f578383038952815160608151818652614c168287018261494a565b9150508682015185820388870152614c2e8282614bad565b91505060408083015192508582038187015250614c4b8183614bad565b9a87019a9450505090840190600101614bf4565b5090979650505050505050565b604081526000614c7f6040830185614bd9565b90508260208301529392505050565b6020808252825182820181905260009190848201906040850190845b81811015614ccf5783516001600160a01b031683529284019291840191600101614caa565b50909695505050505050565b60008060408385031215614cee57600080fd5b8235614cf9816146bb565b946020939093013593505050565b6020815260006132486020830184614bd9565b600082601f830112614d2b57600080fd5b81356020614d3b6146f183614698565b82815260059290921b84018101918181019086841115614d5a57600080fd5b8286015b848110156147395780358352918301918301614d5e565b600060208284031215614d8757600080fd5b81356001600160401b03811115614d9d57600080fd5b613b5484828501614d1a565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015614dfe57603f19888603018452614dec85835161494a565b94509285019290850190600101614dd0565b5092979650505050505050565b801515811461336a57600080fd5b600060208284031215614e2b57600080fd5b813561324881614e0b565b60008060408385031215614e4957600080fd5b8235614e54816146bb565b915060208301356001600160401b03811115614e6f57600080fd5b614e7b858286016146d0565b9150509250929050565b60008060008060808587031215614e9b57600080fd5b8435614ea6816146bb565b93506020850135925060408501359150614ec260608601614b46565b905092959194509250565b600081518084526020808501945080840160005b8381101561493f57815187529582019590820190600101614ee1565b6020815281516020820152602082015160408201526040820151606082015260608201516080820152608082015160a082015260a082015160c082015260c082015160e0820152600060e0830151610100818185015280850151915050610120808185015250613b54610140840182614ecd565b600060c08284031215614f8357600080fd5b60405160c081018181106001600160401b0382111715614fa557614fa561462a565b6040528235614fb3816146bb565b8152602083810135908201526040830135614fcd816146bb565b80604083015250606083013560608201526080830135608082015260a083013560a08201528091505092915050565b60006020828403121561500e57600080fd5b81356001600160401b038082111561502557600080fd5b908301906080828603121561503957600080fd5b6040516080810181811083821117156150545761505461462a565b604052823581526020830135615069816146bb565b60208201526040838101359082015260608301358281111561508a57600080fd5b6150968782860161479f565b60608301525095945050505050565b6000806000606084860312156150ba57600080fd5b83356001600160401b038111156150d057600080fd5b6150dc86828701614d1a565b935050602084013591506150f260408501614b46565b90509250925092565b6020815260006132486020830184614ecd565b60208082526013908201527211d85b5948191bd95cc81b9bdd08195e1a5cdd606a1b604082015260600190565b825160009082906020808701845b8381101561516e57815161515c81614554565b85529382019390820190600101615149565b5050855191506151818284838901614b89565b5001949350505050565b6000825161519d818460208701614b89565b9190910192915050565b6000602082840312156151b957600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016151fe576151fe6151d6565b5060010190565b8082028115828204841417611341576113416151d6565b60006020828403121561522e57600080fd5b815161324881614e0b565b67023b0b6b29024a2160c51b81526000825161525c816008850160208701614b89565b6e08191bd95cc81b9bdd08195e1a5cdd608a1b6008939091019283015250601701919050565b6020815260006132486020830184614bad565b81810381811115611341576113416151d6565b80820180821115611341576113416151d6565b600060208083850312156152ce57600080fd5b82516001600160401b03808211156152e557600080fd5b90840190606082870312156152f957600080fd5b615301614640565b82518152838301518482015260408301518281111561531f57600080fd5b80840193505086601f84011261533457600080fd5b825191506153446146f183614698565b82815260059290921b8301840191848101908884111561536357600080fd5b938501935b8385101561538157845182529385019390850190615368565b6040830152509695505050505050565b81810360008312801583831316838312821617156116b9576116b96151d6565b80820182811260008312801582168215821617156153d1576153d16151d6565b505092915050565b6000816153e8576153e86151d6565b506000190190565b60006020828403121561540257600080fd5b81516001600160401b0381111561541857600080fd5b8201601f8101841361542957600080fd5b80516154376146f182614778565b81815285602083850101111561544c57600080fd5b611df8826020830160208601614b89565b60006020828403121561546f57600080fd5b8151613248816146bb565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b6000826154b5576154b5615490565b500490565b6000826154c9576154c9615490565b600160ff1b8214600019841416156154e3576154e36151d6565b500590565b60006001600160ff1b0182016151fe576151fe6151d6565b6000600160ff1b82016153e8576153e86151d656fea2646970667358221220f2adfd76515bbdd554cb0156bc55889e025c84d630494647be9e2452b6bd495d64736f6c63430008140033