0 txs
0 calls
constructor
constructor(address _kronosTokenAddress, address _randomGeneratorAddress)
functions
calculateTotalPriceForBulkTickets
purefunction calculateTotalPriceForBulkTickets(uint256 _discountDivisor, uint256 _priceTicket, uint256 _numberTickets) pure returns (uint256)
currentLotteryId
viewfunction currentLotteryId() view returns (uint256)
currentTicketId
viewfunction currentTicketId() view returns (uint256)
injectorAddress
viewfunction injectorAddress() view returns (address)
kronosToken
viewfunction kronosToken() view returns (address)
MAX_LENGTH_LOTTERY
viewfunction MAX_LENGTH_LOTTERY() view returns (uint256)
MAX_TREASURY_FEE
viewfunction MAX_TREASURY_FEE() view returns (uint256)
maxNumberTicketsPerBuyOrClaim
viewfunction maxNumberTicketsPerBuyOrClaim() view returns (uint256)
maxPriceTicketInKronos
viewfunction maxPriceTicketInKronos() view returns (uint256)
MIN_DISCOUNT_DIVISOR
viewfunction MIN_DISCOUNT_DIVISOR() view returns (uint256)
MIN_LENGTH_LOTTERY
viewfunction MIN_LENGTH_LOTTERY() view returns (uint256)
minPriceTicketInKronos
viewfunction minPriceTicketInKronos() view returns (uint256)
operatorAddress
viewfunction operatorAddress() view returns (address)
owner
viewfunction owner() view returns (address)
pendingInjectionNextLottery
viewfunction pendingInjectionNextLottery() view returns (uint256)
randomGenerator
viewfunction randomGenerator() view returns (address)
treasuryAddress
viewfunction treasuryAddress() view returns (address)
viewCurrentLotteryId
viewfunction viewCurrentLotteryId() view returns (uint256)
viewLottery
viewfunction viewLottery(uint256 _lotteryId) view returns (tuple)
viewNumbersAndStatusesForTicketIds
viewfunction viewNumbersAndStatusesForTicketIds(uint256[] _ticketIds) view returns (uint32[], bool[])
viewRewardsForTicketId
viewfunction viewRewardsForTicketId(uint256 _lotteryId, uint256 _ticketId, uint32 _bracket) view returns (uint256)
viewUserInfoForLotteryId
viewfunction viewUserInfoForLotteryId(address _user, uint256 _lotteryId, uint256 _cursor, uint256 _size) view returns (uint256[], uint32[], bool[], uint256)
buyTickets
nonpayablefunction buyTickets(uint256 _lotteryId, uint32[] _ticketNumbers)
changeRandomGenerator
nonpayablefunction changeRandomGenerator(address _randomGeneratorAddress)
claimTickets
nonpayablefunction claimTickets(uint256 _lotteryId, uint256[] _ticketIds, uint32[] _brackets)
closeLottery
nonpayablefunction closeLottery(uint256 _lotteryId)
drawFinalNumberAndMakeLotteryClaimable
nonpayablefunction drawFinalNumberAndMakeLotteryClaimable(uint256 _lotteryId, bool _autoInjection)
injectFunds
nonpayablefunction injectFunds(uint256 _lotteryId, uint256 _amount)
recoverWrongTokens
nonpayablefunction recoverWrongTokens(address _tokenAddress, uint256 _tokenAmount)
renounceOwnership
nonpayablefunction renounceOwnership()
setMaxNumberTicketsPerBuy
nonpayablefunction setMaxNumberTicketsPerBuy(uint256 _maxNumberTicketsPerBuy)
setMinAndMaxTicketPriceInKronos
nonpayablefunction setMinAndMaxTicketPriceInKronos(uint256 _minPriceTicketInKronos, uint256 _maxPriceTicketInKronos)
setOperatorAndTreasuryAndInjectorAddresses
nonpayablefunction setOperatorAndTreasuryAndInjectorAddresses(address _operatorAddress, address _treasuryAddress, address _injectorAddress)
startLottery
nonpayablefunction startLottery(uint256 _endTime, uint256 _priceTicketInKronos, uint256 _discountDivisor, uint256[6] _rewardsBreakdown, uint256 _treasuryFee)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
AdminTokenRecovery
event AdminTokenRecovery(address token, uint256 amount)
LotteryClose
event LotteryClose(uint256 indexed lotteryId, uint256 firstTicketIdNextLottery)
LotteryInjection
event LotteryInjection(uint256 indexed lotteryId, uint256 injectedAmount)
LotteryNumberDrawn
event LotteryNumberDrawn(uint256 indexed lotteryId, uint256 finalNumber, uint256 countWinningTickets)
LotteryOpen
event LotteryOpen(uint256 indexed lotteryId, uint256 startTime, uint256 endTime, uint256 priceTicketInKronos, uint256 firstTicketId, uint256 injectedAmount)
NewOperatorAndTreasuryAndInjectorAddresses
event NewOperatorAndTreasuryAndInjectorAddresses(address operator, address treasury, address injector)
NewRandomGenerator
event NewRandomGenerator(address indexed randomGenerator)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
TicketsClaim
event TicketsClaim(address indexed claimer, uint256 amount, uint256 indexed lotteryId, uint256 numberTickets)
TicketsPurchase
event TicketsPurchase(address indexed buyer, uint256 indexed lotteryId, uint256 numberTickets)
errors
No errors.
creation bytecode
0x608060405260646007556509184e72a000600855643c893528006009553480156200002957600080fd5b5060405162003c1538038062003c158339810160408190526200004c91620001f8565b6001600081815581546001600160a01b031916339081179092556040518291907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600b80546001600160a01b039384166001600160a01b0319918216178255600c805493909416921691909117909155600f6020527ff4803e074bd026baaf6ed2e288c9515f68c72fb7216eebdd7cae1718a53ec375805463ffffffff199081166001179091557f169f97de0d9a84d840042b17d3c6b9638b3d6fd9024c9eb0c7a306a17b49f88f805482169092179091557fa74ba3945261e09fde15ba3db55005b205e61eeb4ad811ac0faa2b315bffeead80548216606f1790557f45f76dafbbad695564362934e24d72eedc57f9fc1a65f39bca62176cc8296828805482166104571790557f367ccd2d0ac16bf7110a5dffe0801fdc9452a95a1adb7e1a12fe97dd3e9a4edd80548216612b6717905560056000527f6bda57492eba051cb4a12a1e19df47c9755d78165341d4009b1d09b3f361620480549091166201b20717905562000230565b80516001600160a01b0381168114620001f357600080fd5b919050565b600080604083850312156200020c57600080fd5b6200021783620001db565b91506200022760208401620001db565b90509250929050565b6139d580620002406000396000f3fe608060405234801561001057600080fd5b50600436106102115760003560e01c806388303dbd11610125578063c5f956af116100ad578063dcbad90d1161007c578063dcbad90d14610445578063e8e0a55114610458578063e8fdcf8614610461578063f2b3c80914610474578063f2fde38b1461047d57600080fd5b8063c5f956af14610402578063c914914f14610415578063da4ca03914610428578063db19da0d1461043b57600080fd5b80639c384653116100f45780639c384653146103a35780639d8ca531146103b6578063b1829b82146103c9578063c38de539146103dc578063c4937ab9146103ef57600080fd5b806388303dbd1461034b5780638da5cb5b1461035e5780638fc3539a1461036f57806398359fa11461039057600080fd5b8063471aeab4116101a8578063715018a611610177578063715018a61461031657806372dbb95d1461031e5780637ae82157146103275780637cb583bd1461033a57806380a061601461034357600080fd5b8063471aeab4146102de578063686465b8146102f15780636b873788146102fa5780636be4097c1461030d57600080fd5b80631fe86c6b116101e45780631fe86c6b1461028d5780632423807a146102965780632e530cae146102b65780633f138d4b146102c957600080fd5b806305531eeb1461021657806307fb5a9c14610242578063127effb21461025957806312a9769d14610284575b600080fd5b6102296102243660046130a3565b610490565b6040516102399493929190613447565b60405180910390f35b61024b61371481565b604051908152602001610239565b60035461026c906001600160a01b031681565b6040516001600160a01b039091168152602001610239565b61024b600a5481565b61024b60075481565b6102a96102a436600461313b565b61077c565b60405161023991906135de565b61024b6102c4366004613300565b6108dd565b6102dc6102d7366004613079565b610964565b005b6102dc6102ec366004613263565b610a48565b61024b60065481565b6102dc61030836600461313b565b610b8b565b61024b60055481565b6102dc610bf5565b61024b60095481565b600b5461026c906001600160a01b031681565b61024b61012c81565b60055461024b565b6102dc6103593660046131e7565b610c69565b6001546001600160a01b031661026c565b61038261037d3660046130dc565b61122e565b6040516102399291906134bb565b6102dc61039e36600461301b565b6113e8565b60025461026c906001600160a01b031681565b6102dc6103c436600461313b565b6115d6565b6102dc6103d73660046132b1565b6117de565b6102dc6103ea366004613233565b611cc8565b61024b6103fd366004613285565b61225e565b60045461026c906001600160a01b031681565b6102dc61042336600461316d565b61230a565b6102dc610436366004613036565b612873565b61024b6205472c81565b600c5461026c906001600160a01b031681565b61024b60085481565b6102dc61046f366004613263565b612993565b61024b610bb881565b6102dc61048b36600461301b565b612a18565b6001600160a01b0384166000908152601160209081526040808320868452909152812054606091829182919085906104c88882613844565b8211156104dc576104d98882613844565b91505b60008267ffffffffffffffff8111156104f7576104f7613966565b604051908082528060200260200182016040528015610520578160200160208202803683370190505b50905060008367ffffffffffffffff81111561053e5761053e613966565b604051908082528060200260200182016040528015610567578160200160208202803683370190505b50905060008467ffffffffffffffff81111561058557610585613966565b6040519080825280602002602001820160405280156105ae578160200160208202803683370190505b50905060005b8581101561075657601160008f6001600160a01b03166001600160a01b0316815260200190815260200160002060008e81526020019081526020016000208c826105fe91906136a1565b8154811061060e5761060e613950565b906000526020600020015484828151811061062b5761062b613950565b602002602001018181525050600e600085838151811061064d5761064d613950565b6020026020010151815260200190815260200160002060000160009054906101000a900463ffffffff1683828151811061068957610689613950565b602002602001019063ffffffff16908163ffffffff168152505060006001600160a01b0316600e60008684815181106106c4576106c4613950565b60209081029190910181015182528101919091526040016000205464010000000090046001600160a01b0316141561071f57600182828151811061070a5761070a613950565b91151560209283029190910190910152610744565b600082828151811061073357610733613950565b911515602092830291909101909101525b8061074e816138ac565b9150506105b4565b50828282610764888f6136a1565b98509850985098505050505050945094509450949050565b610784612ec8565b6000828152600d60205260409081902081516101a081019092528054829060ff1660038111156107b6576107b661393a565b60038111156107c7576107c761393a565b81526001820154602082015260028201546040808301919091526003830154606083015260048301546080830152805160c081019182905260a09092019190600584019060069082845b815481526020019060010190808311610811575050509183525050600b82015460208201526040805160c081018252910190600c830160068282826020028201915b8154815260200190600101908083116108535750505091835250506040805160c081019182905260209092019190601284019060069082845b81548152602001906001019080831161088c5750505091835250506018820154602082015260198201546040820152601a8201546060820152601b9091015463ffffffff1660809091015292915050565b600060036000858152600d602052604090205460ff1660038111156109045761090461393a565b146109115750600061095d565b6000848152600d60205260409020601901548311801561094257506000848152600d60205260409020601801548311155b1561094f5750600061095d565b61095a848484612b03565b90505b9392505050565b6001546001600160a01b031633146109975760405162461bcd60e51b815260040161098e9061354c565b60405180910390fd5b600b546001600160a01b03838116911614156109ee5760405162461bcd60e51b815260206004820152601660248201527521b0b73737ba1031329025a927a727a9903a37b5b2b760511b604482015260640161098e565b610a026001600160a01b0383163383612c0e565b604080516001600160a01b0384168152602081018390527f74545154aac348a3eac92596bd1971957ca94795f4e954ec5f613b55fab78129910160405180910390a15050565b6001546001600160a01b0316331480610a6b57506002546001600160a01b031633145b610aaf5760405162461bcd60e51b81526020600482015260156024820152742737ba1037bbb732b91037b91034b73532b1ba37b960591b604482015260640161098e565b60016000838152600d602052604090205460ff166003811115610ad457610ad461393a565b14610b145760405162461bcd60e51b815260206004820152601060248201526f2637ba3a32b93c903737ba1037b832b760811b604482015260640161098e565b600b54610b2c906001600160a01b0316333084612c76565b6000828152600d60205260408120601a018054839290610b4d9084906136a1565b909155505060405181815282907f1bbd659dd628a25f7ff2eabb69c74a56939c539728282275c1c9c1a2d3e340499060200160405180910390a25050565b6001546001600160a01b03163314610bb55760405162461bcd60e51b815260040161098e9061354c565b80610bf05760405162461bcd60e51b815260206004820152600b60248201526a04d757374206265203e20360ac1b604482015260640161098e565b600755565b6001546001600160a01b03163314610c1f5760405162461bcd60e51b815260040161098e9061354c565b6001546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600180546001600160a01b0319169055565b333b15610caf5760405162461bcd60e51b815260206004820152601460248201527310dbdb9d1c9858dd081b9bdd08185b1b1bddd95960621b604482015260640161098e565b333214610cfe5760405162461bcd60e51b815260206004820152601a60248201527f50726f787920636f6e7472616374206e6f7420616c6c6f776564000000000000604482015260640161098e565b60026000541415610d215760405162461bcd60e51b815260040161098e90613581565b600260005580610d695760405162461bcd60e51b8152602060048201526013602482015272139bc81d1a58dad95d081cdc1958da599a5959606a1b604482015260640161098e565b600754811115610dae5760405162461bcd60e51b815260206004820152601060248201526f546f6f206d616e79207469636b65747360801b604482015260640161098e565b60016000848152600d602052604090205460ff166003811115610dd357610dd361393a565b14610e165760405162461bcd60e51b81526020600482015260136024820152722637ba3a32b93c9034b9903737ba1037b832b760691b604482015260640161098e565b6000838152600d60205260409020600201544210610e685760405162461bcd60e51b815260206004820152600f60248201526e2637ba3a32b93c9034b99037bb32b960891b604482015260640161098e565b6000838152600d602052604081206004810154600390910154610e8c919084612cb4565b600b54909150610ea7906001600160a01b0316333084612c76565b6000848152600d60205260408120601a018054839290610ec89084906136a1565b90915550600090505b828110156111eb576000848483818110610eed57610eed613950565b9050602002016020810190610f029190613339565b9050620f42408163ffffffff1610158015610f265750621e847f8163ffffffff1611155b610f625760405162461bcd60e51b815260206004820152600d60248201526c4f7574736964652072616e676560981b604482015260640161098e565b600086815260106020526040812090610f7c600a846138eb565b610f879060016136b9565b63ffffffff16815260208101919091526040016000908120805491610fab836138ac565b9091555050600086815260106020526040812090610fca6064846138eb565b610fd590600b6136b9565b63ffffffff16815260208101919091526040016000908120805491610ff9836138ac565b90915550506000868152601060205260408120906110196103e8846138eb565b61102490606f6136b9565b63ffffffff16815260208101919091526040016000908120805491611048836138ac565b9091555050600086815260106020526040812090611068612710846138eb565b611074906104576136b9565b63ffffffff16815260208101919091526040016000908120805491611098836138ac565b90915550506000868152601060205260408120906110b9620186a0846138eb565b6110c590612b676136b9565b63ffffffff168152602081019190915260400160009081208054916110e9836138ac565b909155505060008681526010602052604081209061110a620f4240846138eb565b611117906201b2076136b9565b63ffffffff1681526020810191909152604001600090812080549161113b836138ac565b90915550503360008181526011602090815260408083208a84528252808320600680548254600181018455928652848620909201919091558151808301835263ffffffff808816825281850196875282548652600e9094529184209151825495516001600160a01b0316640100000000026001600160c01b031990961693169290921793909317909255815491906111d2836138ac565b91905055505080806111e3906138ac565b915050610ed1565b50604051828152849033907fd7d247b583de1023852eef87b48f54354dbec771d01bc2cc49e96094efc322b99060200160405180910390a3505060016000555050565b6060808260008167ffffffffffffffff81111561124d5761124d613966565b604051908082528060200260200182016040528015611276578160200160208202803683370190505b50905060008267ffffffffffffffff81111561129457611294613966565b6040519080825280602002602001820160405280156112bd578160200160208202803683370190505b50905060005b838110156113d957600e60008989848181106112e1576112e1613950565b90506020020135815260200190815260200160002060000160009054906101000a900463ffffffff1683828151811061131c5761131c613950565b63ffffffff909216602092830291909101909101526000600e818a8a8581811061134857611348613950565b602090810292909201358352508101919091526040016000205464010000000090046001600160a01b031614156113a257600182828151811061138d5761138d613950565b911515602092830291909101909101526113c7565b60008282815181106113b6576113b6613950565b911515602092830291909101909101525b806113d1816138ac565b9150506112c3565b509093509150505b9250929050565b6001546001600160a01b031633146114125760405162461bcd60e51b815260040161098e9061354c565b60036005546000908152600d602052604090205460ff16600381111561143a5761143a61393a565b146114875760405162461bcd60e51b815260206004820152601860248201527f4c6f7474657279206e6f7420696e20636c61696d61626c650000000000000000604482015260640161098e565b806001600160a01b031663b37217a46005546006546040516020016114b6929190918252602082015260400190565b60408051808303601f1901815290829052805160209091012060e083901b6001600160e01b03191682526004820152602401600060405180830381600087803b15801561150257600080fd5b505af1158015611516573d6000803e3d6000fd5b50505050806001600160a01b031663a1c4f55a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561155357600080fd5b505afa158015611567573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158b9190613356565b50600c80546001600160a01b0319166001600160a01b0383169081179091556040517f383f8cb39dfa7c3fb901a460dd449ea924868f0a92ff03da64740fffa5f1de6290600090a250565b6003546001600160a01b031633146116005760405162461bcd60e51b815260040161098e906135b8565b600260005414156116235760405162461bcd60e51b815260040161098e90613581565b600260005560016000828152600d602052604090205460ff16600381111561164d5761164d61393a565b1461168d5760405162461bcd60e51b815260206004820152601060248201526f2637ba3a32b93c903737ba1037b832b760811b604482015260640161098e565b6000818152600d602052604090206002015442116116e05760405162461bcd60e51b815260206004820152601060248201526f2637ba3a32b93c903737ba1037bb32b960811b604482015260640161098e565b6006546000828152600d6020908152604091829020601901839055600c548251918201859052918101929092526001600160a01b03169063b37217a49060600160408051808303601f1901815290829052805160209091012060e083901b6001600160e01b03191682526004820152602401600060405180830381600087803b15801561176c57600080fd5b505af1158015611780573d6000803e3d6000fd5b5050506000828152600d6020908152604091829020805460ff1916600217905560065491519182528392507f3728e75294796694d59d2ffced9c394279baf7b9ebd2702db43f5f04bac67929910160405180910390a2506001600055565b6003546001600160a01b031633146118085760405162461bcd60e51b815260040161098e906135b8565b600554158061183c575060036005546000908152600d602052604090205460ff16600381111561183a5761183a61393a565b145b6118885760405162461bcd60e51b815260206004820152601960248201527f4e6f742074696d6520746f207374617274206c6f747465727900000000000000604482015260640161098e565b6137146118954287613844565b1180156118ad57506205472c6118ab4287613844565b105b6118f95760405162461bcd60e51b815260206004820152601f60248201527f4c6f7474657279206c656e677468206f757473696465206f662072616e676500604482015260640161098e565b600954841015801561190d57506008548411155b61194d5760405162461bcd60e51b81526020600482015260116024820152704f757473696465206f66206c696d69747360781b604482015260640161098e565b61012c83101561199f5760405162461bcd60e51b815260206004820152601860248201527f446973636f756e742064697669736f7220746f6f206c6f770000000000000000604482015260640161098e565b610bb88111156119e95760405162461bcd60e51b81526020600482015260156024820152740a8e4cac2e6eae4f240cccaca40e8dede40d0d2ced605b1b604482015260640161098e565b60a0820135608083013560608401356040850135611a0c602087013587356136a1565b611a1691906136a1565b611a2091906136a1565b611a2a91906136a1565b611a3491906136a1565b61271014611a845760405162461bcd60e51b815260206004820152601860248201527f52657761726473206d75737420657175616c2031303030300000000000000000604482015260640161098e565b60058054906000611a94836138ac565b9091555050604080516101a0810190915280600181526020014281526020018681526020018581526020018481526020018360068060200260405190810160405280929190826006602002808284376000920182905250928452505060208083018590526040805160c080820183528482528184018590528183018590526060808301869052608080840187905260a080850188905285890194909452845180840186528781528087018890528086018890528083018890528082018890528085018890529188019190915260065490870181905291860191909152600a549085015260e09093018290526005548252600d90522081518154829060ff19166001836003811115611ba757611ba761393a565b02179055506020820151600182015560408201516002820155606082015160038201556080820151600482015560a0820151611be99060058301906006612f49565b5060c0820151600b82015560e0820151611c0990600c8301906006612f49565b50610100820151611c209060128301906006612f49565b5061012082015160188201556101408201516019820155610160820151601a82015561018090910151601b909101805463ffffffff191663ffffffff909216919091179055600554600654600a5460408051428152602081018a9052908101889052606081019290925260808201527f367e70f8c0e0c0a6504d92172bda155c02022d532fc85b5d66a9c49e31c8bc779060a00160405180910390a250506000600a55505050565b6003546001600160a01b03163314611cf25760405162461bcd60e51b815260040161098e906135b8565b60026000541415611d155760405162461bcd60e51b815260040161098e90613581565b60026000818155838152600d602052604090205460ff166003811115611d3d57611d3d61393a565b14611d7e5760405162461bcd60e51b81526020600482015260116024820152704c6f7474657279206e6f7420636c6f736560781b604482015260640161098e565b600c60009054906101000a90046001600160a01b03166001600160a01b031663fbe5d9176040518163ffffffff1660e01b815260040160206040518083038186803b158015611dcc57600080fd5b505afa158015611de0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e049190613154565b8214611e465760405162461bcd60e51b8152602060048201526011602482015270273ab6b132b939903737ba10323930bbb760791b604482015260640161098e565b600c54604080516350e27aad60e11b815290516000926001600160a01b03169163a1c4f55a916004808301926020929190829003018186803b158015611e8b57600080fd5b505afa158015611e9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec39190613356565b6000848152600d60205260408120600b015491925090819061271090611ee99082613844565b6000878152600d60205260409020601a0154611f059190613825565b611f0f91906136e1565b90506000805b60068163ffffffff161015612189576000611f3182600561385b565b90506000611f408260016136b9565b611f4b90600a61373a565b611f5590886138eb565b63ffffffff8084166000908152600f6020526040902054611f779291166136b9565b60008a815260106020908152604080832063ffffffff85168452909152902054909150611fa5908790613844565b60008a8152600d6020526040902060120163ffffffff841660068110611fcd57611fcd613950565b0155600089815260106020908152604080832063ffffffff85168452909152902054611ffa908790613844565b156120f9576000898152600d6020526040902060050163ffffffff83166006811061202757612027613950565b0154156120f457600089815260106020908152604080832063ffffffff851684529091529020546127109061205d908890613844565b60008b8152600d60205260409020879060050163ffffffff86166006811061208757612087613950565b01546120939190613825565b61209d91906136e1565b6120a791906136e1565b60008a8152600d60205260409020600c0163ffffffff8416600681106120cf576120cf613950565b0155600089815260106020908152604080832063ffffffff8516845290915290205495505b612174565b6000898152600d60205260408120600c0163ffffffff84166006811061212157612121613950565b01556000898152600d6020526040902061271090869060050163ffffffff85166006811061215157612151613950565b015461215d9190613825565b61216791906136e1565b61217190856136a1565b93505b50508080612181906138c7565b915050611f15565b506000868152600d60205260409020601b8101805463ffffffff871663ffffffff19909116179055805460ff1916600317905584156121c857600a5560005b6000868152600d60205260409020601a01546121e5908390613844565b6121ef90826136a1565b600454600b5491925061220f916001600160a01b03908116911683612c0e565b6005546040805163ffffffff87168152602081018690527f98e31a6607b8b15b4d5b91de54f4c09ffe4c4cf162aa532c70b5213754e2e703910160405180910390a25050600160005550505050565b600061012c8410156122b25760405162461bcd60e51b815260206004820152601f60248201527f4d757374206265203e3d204d494e5f444953434f554e545f44495649534f5200604482015260640161098e565b816122ff5760405162461bcd60e51b815260206004820152601d60248201527f4e756d626572206f66207469636b657473206d757374206265203e2030000000604482015260640161098e565b61095a848484612cb4565b333b156123505760405162461bcd60e51b815260206004820152601460248201527310dbdb9d1c9858dd081b9bdd08185b1b1bddd95960621b604482015260640161098e565b33321461239f5760405162461bcd60e51b815260206004820152601a60248201527f50726f787920636f6e7472616374206e6f7420616c6c6f776564000000000000604482015260640161098e565b600260005414156123c25760405162461bcd60e51b815260040161098e90613581565b60026000558281146124085760405162461bcd60e51b815260206004820152600f60248201526e09cdee840e6c2daca40d8cadccee8d608b1b604482015260640161098e565b826124495760405162461bcd60e51b815260206004820152601160248201527004c656e677468206d757374206265203e3607c1b604482015260640161098e565b60075483111561248e5760405162461bcd60e51b815260206004820152601060248201526f546f6f206d616e79207469636b65747360801b604482015260640161098e565b60036000868152600d602052604090205460ff1660038111156124b3576124b361393a565b146124f85760405162461bcd60e51b81526020600482015260156024820152744c6f7474657279206e6f7420636c61696d61626c6560581b604482015260640161098e565b6000805b8481101561281157600684848381811061251857612518613950565b905060200201602081019061252d9190613339565b63ffffffff16106125775760405162461bcd60e51b8152602060048201526014602482015273427261636b6574206f7574206f662072616e676560601b604482015260640161098e565b600086868381811061258b5761258b613950565b90506020020135905080600d60008a815260200190815260200160002060190154116125ed5760405162461bcd60e51b81526020600482015260116024820152700a8d2c6d6cae892c840e8dede40d0d2ced607b1b604482015260640161098e565b6000888152600d60205260409020601801548110156126415760405162461bcd60e51b815260206004820152601060248201526f5469636b6574496420746f6f206c6f7760801b604482015260640161098e565b6000818152600e602052604090205464010000000090046001600160a01b0316331461269f5760405162461bcd60e51b815260206004820152600d60248201526c2737ba103a34329037bbb732b960991b604482015260640161098e565b6000818152600e602052604081208054640100000000600160c01b03191690556126f089838888878181106126d6576126d6613950565b90506020020160208101906126eb9190613339565b612b03565b90508061273f5760405162461bcd60e51b815260206004820152601960248201527f4e6f207072697a6520666f72207468697320627261636b657400000000000000604482015260640161098e565b85858481811061275157612751613950565b90506020020160208101906127669190613339565b63ffffffff166005146127f0576127aa898388888781811061278a5761278a613950565b905060200201602081019061279f9190613339565b6126eb9060016136b9565b156127f05760405162461bcd60e51b8152602060048201526016602482015275213930b1b5b2ba1036bab9ba103132903434b3b432b960511b604482015260640161098e565b6127fa81856136a1565b935050508080612809906138ac565b9150506124fc565b50600b54612829906001600160a01b03163383612c0e565b6040805182815260208101869052879133917f0f5fca62da8fb5d95525b49e5eaa7b20bc6bd9e2f6b64b493442d1c0bd6ef486910160405180910390a35050600160005550505050565b6001546001600160a01b0316331461289d5760405162461bcd60e51b815260040161098e9061354c565b6001600160a01b0383166128c35760405162461bcd60e51b815260040161098e9061351c565b6001600160a01b0382166128e95760405162461bcd60e51b815260040161098e9061351c565b6001600160a01b03811661290f5760405162461bcd60e51b815260040161098e9061351c565b600380546001600160a01b038581166001600160a01b0319928316811790935560048054868316908416811790915560028054928616929093168217909255604080519384526020840192909252908201527f3e945b7660001d46cfd5e729545f7f0b6c65bdee54066a91c7acad703f1b731e9060600160405180910390a1505050565b6001546001600160a01b031633146129bd5760405162461bcd60e51b815260040161098e9061354c565b80821115612a0d5760405162461bcd60e51b815260206004820152601b60248201527f6d696e5072696365206d757374206265203c206d617850726963650000000000604482015260640161098e565b600991909155600855565b6001546001600160a01b03163314612a425760405162461bcd60e51b815260040161098e9061354c565b6001600160a01b038116612aa75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161098e565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000838152600d60209081526040808320601b0154858452600e90925282205463ffffffff918216911682612b398560016136b9565b612b4490600a61373a565b612b4e90836138eb565b63ffffffff8087166000908152600f6020526040902054612b709291166136b9565b90506000612b7f8660016136b9565b612b8a90600a61373a565b612b9490856138eb565b63ffffffff8088166000908152600f6020526040902054612bb69291166136b9565b90508063ffffffff168263ffffffff161415612c01576000888152600d60205260409020600c0163ffffffff871660068110612bf457612bf4613950565b015494505050505061095d565b600094505050505061095d565b6040516001600160a01b038316602482015260448101829052612c7190849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612ceb565b505050565b6040516001600160a01b0380851660248301528316604482015260648101829052612cae9085906323b872dd60e01b90608401612c3a565b50505050565b60008382612cc38260016136a1565b612ccd9190613844565b612cd78486613825565b612ce19190613825565b61095a91906136e1565b6000612d40826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612dbd9092919063ffffffff16565b805190915015612c715780806020019051810190612d5e919061311e565b612c715760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161098e565b606061095a848460008585843b612e165760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161098e565b600080866001600160a01b03168587604051612e32919061342b565b60006040518083038185875af1925050503d8060008114612e6f576040519150601f19603f3d011682016040523d82523d6000602084013e612e74565b606091505b5091509150612e84828286612e8f565b979650505050505050565b60608315612e9e57508161095d565b825115612eae5782518084602001fd5b8160405162461bcd60e51b815260040161098e91906134e9565b604080516101a08101909152806000815260200160008152602001600081526020016000815260200160008152602001612f00612f87565b815260200160008152602001612f14612f87565b8152602001612f21612f87565b8152602001600081526020016000815260200160008152602001600063ffffffff1681525090565b8260068101928215612f77579160200282015b82811115612f77578251825591602001919060010190612f5c565b50612f83929150612fa5565b5090565b6040518060c001604052806006906020820280368337509192915050565b5b80821115612f835760008155600101612fa6565b80356001600160a01b0381168114612fd157600080fd5b919050565b60008083601f840112612fe857600080fd5b50813567ffffffffffffffff81111561300057600080fd5b6020830191508360208260051b85010111156113e157600080fd5b60006020828403121561302d57600080fd5b61095d82612fba565b60008060006060848603121561304b57600080fd5b61305484612fba565b925061306260208501612fba565b915061307060408501612fba565b90509250925092565b6000806040838503121561308c57600080fd5b61309583612fba565b946020939093013593505050565b600080600080608085870312156130b957600080fd5b6130c285612fba565b966020860135965060408601359560600135945092505050565b600080602083850312156130ef57600080fd5b823567ffffffffffffffff81111561310657600080fd5b61311285828601612fd6565b90969095509350505050565b60006020828403121561313057600080fd5b815161095d8161397c565b60006020828403121561314d57600080fd5b5035919050565b60006020828403121561316657600080fd5b5051919050565b60008060008060006060868803121561318557600080fd5b85359450602086013567ffffffffffffffff808211156131a457600080fd5b6131b089838a01612fd6565b909650945060408801359150808211156131c957600080fd5b506131d688828901612fd6565b969995985093965092949392505050565b6000806000604084860312156131fc57600080fd5b83359250602084013567ffffffffffffffff81111561321a57600080fd5b61322686828701612fd6565b9497909650939450505050565b6000806040838503121561324657600080fd5b8235915060208301356132588161397c565b809150509250929050565b6000806040838503121561327657600080fd5b50508035926020909101359150565b60008060006060848603121561329a57600080fd5b505081359360208301359350604090920135919050565b600080600080600061014086880312156132ca57600080fd5b8535945060208601359350604086013592506101208601878111156132ee57600080fd5b94979396509194606001933592915050565b60008060006060848603121561331557600080fd5b8335925060208401359150604084013561332e8161398d565b809150509250925092565b60006020828403121561334b57600080fd5b813561095d8161398d565b60006020828403121561336857600080fd5b815161095d8161398d565b600081518084526020808501945080840160005b838110156133a5578151151587529582019590820190600101613387565b509495945050505050565b8060005b6006811015612cae5781518452602093840193909101906001016133b4565b600081518084526020808501945080840160005b838110156133a557815163ffffffff16875295820195908201906001016133e7565b6004811061342757634e487b7160e01b600052602160045260246000fd5b9052565b6000825161343d818460208701613880565b9190910192915050565b6080808252855190820181905260009060209060a0840190828901845b8281101561348057815184529284019290840190600101613464565b5050508381038285015261349481886133d3565b91505082810360408401526134a98186613373565b91505082606083015295945050505050565b6040815260006134ce60408301856133d3565b82810360208401526134e08185613373565b95945050505050565b6020815260008251806020840152613508816040850160208701613880565b601f01601f19169190910160400192915050565b60208082526016908201527543616e6e6f74206265207a65726f206164647265737360501b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252600c908201526b2737ba1037b832b930ba37b960a11b604082015260600190565b6000610380820190506135f2828451613409565b6020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015161362c60a08401826133b0565b5060c0830151610160818185015260e08501519150610180613650818601846133b0565b61010086015192506136666102408601846133b0565b6101208601516103008601526101408601516103208601529085015161034085015284015163ffffffff811661036085015290505092915050565b600082198211156136b4576136b461390e565b500190565b600063ffffffff8083168185168083038211156136d8576136d861390e565b01949350505050565b6000826136f0576136f0613924565b500490565b600181815b80851115613732578163ffffffff048211156137185761371861390e565b8085161561372557918102915b93841c93908002906136fa565b509250929050565b600063ffffffff61374f818516828516613757565b949350505050565b6000826137665750600161381f565b816137735750600061381f565b81600181146137895760028114613793576137c4565b600191505061381f565b60ff8411156137a4576137a461390e565b6001841b915063ffffffff8211156137be576137be61390e565b5061381f565b5060208310610133831016604e8410600b84101617156137fb575081810a63ffffffff8111156137f6576137f661390e565b61381f565b61380583836136f5565b8063ffffffff0482111561381b5761381b61390e565b0290505b92915050565b600081600019048311821515161561383f5761383f61390e565b500290565b6000828210156138565761385661390e565b500390565b600063ffffffff838116908316818110156138785761387861390e565b039392505050565b60005b8381101561389b578181015183820152602001613883565b83811115612cae5750506000910152565b60006000198214156138c0576138c061390e565b5060010190565b600063ffffffff808316818114156138e1576138e161390e565b6001019392505050565b600063ffffffff8084168061390257613902613924565b92169190910692915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b801515811461398a57600080fd5b50565b63ffffffff8116811461398a57600080fdfea26469706673582212206ee9c19092c8503979f0dad4354fd431e076001dd4c3561ebc70766a09d8f31964736f6c63430008070033000000000000000000000000bec68a941fecc79e57762e258fd1490f29235d75000000000000000000000000cee276f4d7070f32416ed52cfaaf543b65ba2c7b