0 txs
0 calls
constructor
No constructor.
functions
attemptCost
viewfunction attemptCost() view returns (uint256)
attemptsToken
viewfunction attemptsToken() view returns (address)
canRegister
viewfunction canRegister(address player) view returns (bool)
creator
viewfunction creator() view returns (address)
distributionModule
viewfunction distributionModule() view returns (address)
endTime
viewfunction endTime() view returns (uint256)
entryFee
viewfunction entryFee() view returns (uint256)
entryFeePrizePoolPercentage
viewfunction entryFeePrizePoolPercentage() view returns (uint256)
entryFeeToken
viewfunction entryFeeToken() view returns (address)
estimatePrizeForRank
viewfunction estimatePrizeForRank(uint256 _rank) view returns (tuple[] estimatedRewards)
feePercentages
viewfunction feePercentages(uint256) view returns (uint256)
feeReceivers
viewfunction feeReceivers(uint256) view returns (address)
fetchWinnersFromLeaderboard
viewfunction fetchWinnersFromLeaderboard() view returns (address[] winners, uint256[] scores)
getAttemptsFeeBonusPoolAmount
viewfunction getAttemptsFeeBonusPoolAmount() view returns (uint256)
getCostForAttempts
viewfunction getCostForAttempts(uint256 _attempts) view returns (uint256)
getCurrentStatus
viewfunction getCurrentStatus() view returns (string)
getEntryFeeAmount
viewfunction getEntryFeeAmount() view returns (uint256)
getEntryFeeBonusPoolAmount
viewfunction getEntryFeeBonusPoolAmount() view returns (uint256)
getEntryFeeToken
viewfunction getEntryFeeToken() view returns (address)
getPlayerAttemptsTokenReward
viewfunction getPlayerAttemptsTokenReward(address player) view returns (uint256)
getPlayerEntryTokenReward
viewfunction getPlayerEntryTokenReward(address player) view returns (uint256)
getPlayerMainReward
viewfunction getPlayerMainReward(address player) view returns (uint256)
getPlayerRewardDetails
viewfunction getPlayerRewardDetails(address _player) view returns (address prizeTokenAddress, uint256 prizeTokenRewardAmount, address entryFeeTokenAddress, uint256 entryFeeTokenRewardAmount, address attemptsTokenAddress, uint256 attemptsTokenRewardAmount)
getPrizePoolDetails
viewfunction getPrizePoolDetails() view returns (address prizeTokenAddress, uint256 prizeTokenAmount, address entryFeeTokenAddress, uint256 entryFeeTokenAmount, address attemptsTokenAddress, uint256 attemptsTokenAmount)
getPrizeToken
viewfunction getPrizeToken() view returns (address)
getRecentRegisteredPlayers
viewfunction getRecentRegisteredPlayers() view returns (address[])
getRegisteredPlayersCount
viewfunction getRegisteredPlayersCount() view returns (uint256)
getRemainingAttempts
viewfunction getRemainingAttempts(address _player) view returns (uint256)
getTournamentTiming
viewfunction getTournamentTiming() view returns (uint256 registrationStartTime_, uint256 registrationEndTime_, uint256 startTime_, uint256 endTime_)
getWhitelistedAddresses
viewfunction getWhitelistedAddresses() view returns (address[])
hasApprovedEnoughTokens
viewfunction hasApprovedEnoughTokens(address player) view returns (bool)
hasApprovedEnoughTokensForAttempts
viewfunction hasApprovedEnoughTokensForAttempts(address _player, uint256 _attempts) view returns (bool)
hasClaimedRefund
viewfunction hasClaimedRefund(address) view returns (bool)
hasPlayerClaimedPrize
viewfunction hasPlayerClaimedPrize(address player) view returns (bool)
initialAttempts
viewfunction initialAttempts() view returns (uint256)
isEntryFeeAddedToPrizePool
viewfunction isEntryFeeAddedToPrizePool() view returns (bool)
isPlayerRegistered
viewfunction isPlayerRegistered(address player) view returns (bool)
isSponsorDonationsEnabled
viewfunction isSponsorDonationsEnabled() view returns (bool)
isTournamentPublic
viewfunction isTournamentPublic() view returns (bool)
leaderboard
viewfunction leaderboard() view returns (address)
maxPlayers
viewfunction maxPlayers() view returns (uint256)
minimumParticipantsRequired
viewfunction minimumParticipantsRequired() view returns (uint256)
owner
viewfunction owner() view returns (address)
payPerAttemptEnabled
viewfunction payPerAttemptEnabled() view returns (bool)
platformOwner
viewfunction platformOwner() view returns (address)
prizeToken
viewfunction prizeToken() view returns (address)
registrationEndTime
viewfunction registrationEndTime() view returns (uint256)
registrationStartTime
viewfunction registrationStartTime() view returns (uint256)
startTime
viewfunction startTime() view returns (uint256)
supportsPermit
viewfunction supportsPermit() view returns (bool)
winnerSelectionModule
viewfunction winnerSelectionModule() view returns (address)
batchRemovePlayersFromWhitelist
nonpayablefunction batchRemovePlayersFromWhitelist(address[] _addresses)
batchWhitelistPlayers
nonpayablefunction batchWhitelistPlayers(address[] _addresses)
cancelTournament
nonpayablefunction cancelTournament()
claimPrizes
nonpayablefunction claimPrizes(address[] _winners)
finalizeWinners
nonpayablefunction finalizeWinners()
fundTournament
payablefunction fundTournament() payable
initialize
nonpayablefunction initialize(address _creator, address _platformOwner, tuple _entryFeeConfig, tuple _timingConfig, tuple _prizeConfig, tuple _distributionConfig, tuple _winnerSelectionConfig, tuple _registrationConfig, address _leaderboard, tuple _attemptsConfig)
manualFinalizeWinners
nonpayablefunction manualFinalizeWinners(address[] winners, uint256[] scores)
purchaseAttempts
payablefunction purchaseAttempts(uint256 _attempts) payable
purchaseAttemptsFor
payablefunction purchaseAttemptsFor(address _player, uint256 _attempts) payable
purchaseAttemptsWithToken
nonpayablefunction purchaseAttemptsWithToken(uint256 _attempts, bool usePermit, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
purchaseAttemptsWithTokenFor
nonpayablefunction purchaseAttemptsWithTokenFor(address _player, uint256 _attempts, bool usePermit, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
refundEntryFee
nonpayablefunction refundEntryFee()
register
payablefunction register() payable
registerFor
payablefunction registerFor(address _player) payable
registerPlayers
nonpayablefunction registerPlayers(address[] players)
registerWithToken
nonpayablefunction registerWithToken(bool usePermit, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
registerWithTokenFor
nonpayablefunction registerWithTokenFor(address _player, bool usePermit, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
renounceOwnership
nonpayablefunction renounceOwnership()
replaceWhitelistedPlayers
nonpayablefunction replaceWhitelistedPlayers(address[] _addresses)
resetAllPlayerAttempts
nonpayablefunction resetAllPlayerAttempts()
setLeaderboard
nonpayablefunction setLeaderboard(address _leaderboard)
sponsorDonation
payablefunction sponsorDonation(uint256 amount) payable
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
withdrawPrize
nonpayablefunction withdrawPrize()
events
AttemptsPurchased
event AttemptsPurchased(address indexed player, uint256 attempts, uint256 cost)
EntryFeeBonusPoolUpdated
event EntryFeeBonusPoolUpdated(address token, uint256 amount)
Initialized
event Initialized(uint64 version)
LeaderboardUpdated
event LeaderboardUpdated(address indexed leaderboard)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PlayerRefunded
event PlayerRefunded(address indexed player, uint256 amount)
PrizePoolUpdated
event PrizePoolUpdated(address indexed token, uint256 amount)
TournamentAccessSet
event TournamentAccessSet(bool isPublic)
TournamentCanceled
event TournamentCanceled(string reason)
TournamentCompleted
event TournamentCompleted(uint256 timestamp)
TournamentCreated
event TournamentCreated(address indexed tournament, address indexed creator, bool indexed isPublic)
TournamentFunded
event TournamentFunded(uint256 amount, uint256 timestamp)
errors
InvalidConfig
error InvalidConfig(string reason)
InvalidInitialization
error InvalidInitialization()
NotAuthorized
error NotAuthorized(address caller, address required)
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ParameterValidationFailed
error ParameterValidationFailed(uint8 code, uint256 provided, uint256 required)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
ValidationFailed
error ValidationFailed(uint8 code)
creation bytecode
0x60808060405234601a57600160005561599990816100208239f35b600080fdfe6080806040526004361015610028575b5036156100205761001e6149b3565b005b61001e6149b3565b60003560e01c90816235104a14613b555750806302d05d3f14613b2e578063072ea61c14613b1057806308ded2c814613af25780631417b82a14613a7d57806315151c4b14613a3f5780631603a975146138f9578063185a63e01461389f5780631aa3a008146137795780631df6cb9b146135ae578063211fe54c1461359057806328a96ed1146135755780633197cbb614613557578063320d46d4146134b657806339fede371461193c5780633f587374146132f15780633fb170c9146132d3578063435e75c31461325b57806348d37a58146131745780634c2412a2146131565780634df8ccb11461312d578063546a7e8e14613033578063552ef59b14612fbd57806357863a9014612e7d578063599b0255146122465780635b381760146121dc5780635b5b46b21461216a5780635efc11d81461214157806362429f6a146120c2578063646156aa14611fce57806367acaf8b14611e0357806368a94dfc14611dc457806368f84efb14611da65780636af4236814611d7d5780636d02802714611d155780636e7ee89b14611bbb5780636faa091314611b28578063715018a614611ad057806372ab508314611ab2578063733386d914611a1a578063746d0537146119f457806374b9b4851461198357806378e97925146119655780637b1497631461193c57806386f5e3571461183257806388698a36146117d85780638a0c6831146116295780638ac0838e146115b75780638da5cb5b146115815780639221351f146114ee57806392d06558146114cb5780639721d393146114a857806398436748146114395780639af5c09d1461141b5780639cd58530146113f2578063a3dd2619146112de578063a772febc146112c0578063bd35278c146111d2578063c3b3b1981461112c578063c505a4ac14610f85578063c7cd695914610f10578063cdb3879214610f62578063cf606fce14610f39578063d0ef024a14610f10578063d1f1f77414610e78578063d566a5b214610cbb578063df43dc9c14610c98578063dff7d2c714610c7a578063e30e383414610b40578063e4785c5414610b0f578063ead3cb68146107dc578063eb56b740146107b3578063ed6ebfd4146106e4578063f1a2de7214610585578063f2fde38b1461055c5763f93e926814610378573861000f565b34610557576020366003190112610557576004356001600160401b038111610557576103a8903690600401613be0565b6103b06154c8565b6103d66103d0602754602854602954602a54906019549260265494614a90565b50614d52565b6103de614d97565b601654610541577325f82df665888e38307c8a64183a02eb29adc3c39060005b81811061040d575b6001600055005b61042061041b82848761498f565b61499f565b60405163fd12622d60e01b8152601460048201526001600160a01b039091166024820152602081604481875af490811561051757600091610523575b506104e15761046f61041b82848761498f565b604051630f9c83a760e11b8152601460048201526001600160a01b039091166024820152602081604481875af4908115610517576000916104e9575b50156104e15760195460155411156104dc57806104d66104d161041b600194868961498f565b614e7a565b016103fe565b610406565b6001906104d6565b61050a915060203d8111610510575b6105028183613c46565b810190613dc0565b386104ab565b503d6104f8565b6040513d6000823e3d90fd5b61053b915060203d8111610510576105028183613c46565b3861045c565b630567353360e41b600052601260045260246000fd5b600080fd5b346105575760203660031901126105575761001e610578613b8a565b6105806154c8565b61492b565b346105575760203660031901126105575761059e613b8a565b6105a66154c8565b6105cc6105c6602754602854602954602a54906019549260265494614a90565b50614d76565b6105d581614a6a565b6040516105e3606082613c46565b602281527f496e76616c6964206c6561646572626f61726420696d706c656d656e7461746960208201526137b760f11b604082015260008060405160208101906302dec47760e21b82526004815261063c602482613c46565b5190855afa3d156106df573d61065181613ce5565b9061065f6040519283613c46565b8152600060203d92013e5b156106b65750603180546001600160a01b0319166001600160a01b039290921691821790557f15c0ddea91f2823561ff8e02d5db6aff66b51a9fe1f37f3e60c24107ce24684a600080a2005b6040516389a6198960e01b8152602060048201529081906106db906024830190613d60565b0390fd5b61066a565b34610557576020366003190112610557576004356001600160401b03811161055757610714903690600401613be0565b9061071d6154c8565b601e5460ff16917325f82df665888e38307c8a64183a02eb29adc3c3600884101561079d57803b156105575760009261077c9260405195869485938493631c65743360e01b8552601460048601526060602486015260648501916144a1565b90604483015203915af480156105175761079257005b600061001e91613c46565b634e487b7160e01b600052602160045260246000fd5b34610557576000366003190112610557576031546040516001600160a01b039091168152602090f35b34610557576040366003190112610557576004356001600160401b0381116105575761080c903690600401613be0565b6024356001600160401b0381116105575761082b903690600401613be0565b9060018060a01b036020541633148015610afb575b61084990613dd8565b61086f610869602754602854602954602a54906019549260265494614a90565b50614d85565b818303610aab578215610a705773cae2bbeb35847c0c5bfdb86237154bb7d0e19a8393843b15610557576040516377d4565d60e01b81526001600482015260606024820152936108c4916064860191906144a1565b8381036003190160448501528281526001600160fb1b0383116105575783809260209260009560051b80928583013701030181855af4801561051757610a5f575b50602f54602354603654602b546001600160a01b039182169360089190911c60ff169282169116843b1561055757610954600093604051958694859463b4b8300160e01b8652600486016144f8565b0381855af4801561051757610a4e575b506023546001600160a01b0316813b156105575760006109989160405180938192633c50057d60e01b83526004830161452a565b0381855af4801561051757610a3d575b506036546001600160a01b031690803b15610557576109df916000916040518080958194639a4b565360e01b83526004830161452a565b03915af4801561051757610a2c575b610a00600660ff19601e541617601e55565b7fcdac78591ae836e3c817bf6dc0ba9fa0c8e312b6b25358009d27c0c6d8a3cc306020604051428152a1005b6000610a3791613c46565b806109ee565b6000610a4891613c46565b816109a8565b6000610a5991613c46565b81610964565b6000610a6a91613c46565b81610905565b60405162461bcd60e51b8152602060048201526013602482015272139bc81dda5b9b995c9cc81c1c9bdd9a591959606a1b6044820152606490fd5b60405162461bcd60e51b815260206004820152602260248201527f57696e6e65727320616e642073636f726573206c656e677468206d69736d61746044820152610c6d60f31b6064820152608490fd5b506021546001600160a01b03163314610840565b34610557576040366003190112610557576020610b36610b2d613b8a565b602435906148df565b6040519015158152f35b602036600319011261055757610b54613b8a565b610b746103d0602754602854602954602a54906019549260265494614a90565b610b7c614d97565b602354604051630f9c83a760e11b8152601460048201526001600160a01b03838116602483018190527325f82df665888e38307c8a64183a02eb29adc3c39493909116929190602082604481885af491821561051757600092610c58575b5060209060446040518097819363fd12622d60e01b83526014600484015260248301525af49283156105175761040694600094610c31575b5090610c2c91601954601554906016549687943494614db9565b615023565b610c2c92919450610c509060203d602011610510576105028183613c46565b939091610c12565b6020919250610c7390823d8411610510576105028183613c46565b9190610bda565b34610557576000366003190112610557576020602854604051908152f35b34610557576020366003190112610557576020610b36610cb6613b8a565b614873565b600036600319011261055757610ce76105c6602754602854602954602a54906019549260265494614a90565b610cef614d97565b7388a25628d5b6d5a94a253caa51bd90a9095ce35c60018060a01b036024541660325460405191630b7c14f360e11b83523360048401523060248401526044830152606482015234608482015260208160a481855af490811561051757600091610e43575b50610d6181600454614866565b60048190556024546040519182526001600160a01b0316907f73a890e82dae909f48433f13becf0f9a62a71f7be28275654f6e3d3d4076cb6490602090a260ff60145460081c16610e29575b813b1561055757600060249260405193848092630495655760e01b8252601e60048301525af4908115610517577f58ade524a9f998dd25643fb2c9424063d519f3a694cb31184950904ea287848c92604092610e18575b508151908152426020820152a16001600055005b6000610e2391613c46565b83610e04565b602054610e3e906001600160a01b0316614e7a565b610dad565b906020823d602011610e70575b81610e5d60209383613c46565b81010312610e6d57505182610d54565b80fd5b3d9150610e50565b34610557576020366003190112610557576004356001600160401b03811161055757610ea8903690600401613be0565b90610eb16154c8565b601e5460ff16917325f82df665888e38307c8a64183a02eb29adc3c3600884101561079d57803b156105575760009261077c926040519586948593849363598ae07560e01b8552601460048601526060602486015260648501916144a1565b34610557576000366003190112610557576024546040516001600160a01b039091168152602090f35b34610557576000366003190112610557576030546040516001600160a01b039091168152602090f35b3461055757600036600319011261055757602060ff602b54166040519015158152f35b3461055757602036600319011261055757610f9e613b8a565b602480546040516386f3c35d60e01b8152600160048201526001600160a01b0393841692810183905292169073cae2bbeb35847c0c5bfdb86237154bb7d0e19a8390602084604481855af4938415610517576000946110f8575b50602354604051630658757960e21b815260016004820152602481018390526001600160a01b039091169190602081604481875af4908115610517576000916110c6575b50602060018060a01b03603654169260446040518097819363154b9bbd60e01b83526001600484015260248301525af492831561051757600093611090575b61108c945060405196879687613d85565b0390f35b92506020843d6020116110be575b816110ab60209383613c46565b810103126105575761108c93519261107b565b3d915061109e565b90506020813d6020116110f0575b816110e160209383613c46565b8101031261055757518661103c565b3d91506110d4565b9093506020813d602011611124575b8161111460209383613c46565b8101031261055757519284610ff8565b3d9150611107565b3461055757602036600319011261055757611145613b8a565b604051630658757960e21b8152600160048201526001600160a01b03909116602482015260208160448173cae2bbeb35847c0c5bfdb86237154bb7d0e19a835af480156105175760009061119f575b602090604051908152f35b506020813d6020116111ca575b816111b960209383613c46565b810103126105575760209051611194565b3d91506111ac565b346105575760003660031901126105575760018060a01b03602454166004549060018060a01b036023541673cae2bbeb35847c0c5bfdb86237154bb7d0e19a83906040519163e554069b60e01b835260016004840152602083602481845af480156105175760009061128d575b60365460405163caa1efc960e01b81526001600482015294506001600160a01b031691602090859060249082905af4928315610517576000936110905761108c945060405196879687613d85565b506020833d6020116112b8575b816112a760209383613c46565b81010312610557576024925161123f565b3d915061129a565b34610557576000366003190112610557576020601654604051908152f35b346105575760003660031901126105575761130c602754602854602954602a54906019549260265494614a90565b50600881101561079d5760ff604051916303d8822360e11b83521660048201526000816024817388a25628d5b6d5a94a253caa51bd90a9095ce35c5af49081156105175760009161136e575b6040516020808252819061108c90820185613d60565b3d8083833e61137d8183613c46565b8101906020818303126113ea578051906001600160401b0382116113ee570181601f820112156113ea578051926113b384613ce5565b926113c16040519485613c46565b84845260208584010111610e6d575061108c926113e49160208085019101613d3d565b90611358565b8280fd5b8380fd5b3461055757600036600319011261055757602f546040516001600160a01b039091168152602090f35b34610557576000366003190112610557576020602754604051908152f35b34610557576000366003190112610557576114696114556145f1565b604051928392604084526040840190613d00565b82810360208401526020808351928381520192019060005b81811061148f575050500390f35b8251845285945060209384019390920191600101611481565b3461055757600036600319011261055757602060ff601454166040519015158152f35b3461055757600036600319011261055757602060ff603354166040519015158152f35b3461055757602036600319011261055757611507613b8a565b604051633438f3c360e11b8152600160048201526001600160a01b03909116602482015260208160448173cae2bbeb35847c0c5bfdb86237154bb7d0e19a835af4801561051757602091600091611564575b506040519015158152f35b61157b9150823d8411610510576105028183613c46565b82611559565b3461055757600036600319011261055757600080516020615904833981519152546040516001600160a01b039091168152602090f35b34610557576020366003190112610557576115d0613b8a565b60405163154b9bbd60e01b8152600160048201526001600160a01b03909116602482015260208160448173cae2bbeb35847c0c5bfdb86237154bb7d0e19a835af480156105175760009061119f57602090604051908152f35b346105575760003660031901126105575761166061165a602754602854602954602a54906019549260265494614a90565b50614d64565b611668614d97565b60405163fd12622d60e01b8152601460048201523360248201526020816044817325f82df665888e38307c8a64183a02eb29adc3c35af4908115610517576000916117b9575b50156117a35733600052601f60205260ff6040600020541661178d57336000908152601f60205260409020805460ff191660011790556023546016547346cf9cbd532ca298fa32a8636c25288b12f71850916001600160a01b031690823b156105575760405163abb384e960e01b81529260009284928391829161173791339060048501614036565b03915af480156105175761177c575b6016546040519081527f48d31f1c958cd44f1f83a52ae2dfaf61e88a1b82c07a6d5711a4abef60b6531e60203392a26001600055005b600061178791613c46565b80611746565b630567353360e41b600052602a60045260246000fd5b630567353360e41b600052600e60045260246000fd5b6117d2915060203d602011610510576105028183613c46565b816116ae565b346105575760003660031901126105575760405163e554069b60e01b81526001600482015260208160248173cae2bbeb35847c0c5bfdb86237154bb7d0e19a835af480156105175760009061119f57602090604051908152f35b346105575760e03660031901126105575761184b613b8a565b604435906024358215158303610557576084359160ff8316830361055757611871614d97565b61187f60ff60335416614a4d565b603154611894906001600160a01b0316614a6a565b61189d826151a5565b6036546001600160a01b0316926118b384615485565b6118bf8360355461400d565b937346cf9cbd532ca298fa32a8636c25288b12f71850803b15610557576119119660009360405198899485938493635f94e72f60e01b855260c4359260a435928d606435923090339060048b01613fb6565b03915af4938415610517576104069461192b575b5061520e565b600061193691613c46565b84611925565b34610557576000366003190112610557576023546040516001600160a01b039091168152602090f35b34610557576000366003190112610557576020602954604051908152f35b346105575760203660031901126105575761199c613b8a565b6031546001600160a01b0316906020906119b583614a6a565b60405163cbea18e560e01b81526001600160a01b03909116600482015291829060249082905afa80156105175760009061119f57602090604051908152f35b3461055757600036600319011261055757602060ff602b5460081c166040519015158152f35b34610557576020366003190112610557576004356001600160401b03811161055757611a4a903690600401613be0565b90611a536154c8565b601e5460ff16917325f82df665888e38307c8a64183a02eb29adc3c3600884101561079d57803b156105575760009261077c9260405195869485938493633cf31bfd60e21b8552601460048601526060602486015260648501916144a1565b34610557576000366003190112610557576020603454604051908152f35b3461055757600036600319011261055757611ae96154c8565b60008051602061590483398151915280546001600160a01b031981169091556000906001600160a01b03166000805160206159248339815191528280a3005b346105575760003660031901126105575760405163183f5e2d60e21b815260146004820152601e60248201526000816044817325f82df665888e38307c8a64183a02eb29adc3c35af480156105175761108c91600091611b98575b50604051918291602083526020830190613d00565b611bb591503d806000833e611bad8183613c46565b810190613e9e565b82611b83565b34610557576000366003190112610557576020546001600160a01b031633148015611d01575b611bea90613dd8565b611c0a610869602754602854602954602a54906019549260265494614a90565b611c126145f1565b9073cae2bbeb35847c0c5bfdb86237154bb7d0e19a8391823b15610557576040516377d4565d60e01b8152600160048201526060602482015291829190611c5d906064840190613d00565b6003198382030160448401526020808351928381520192019060005b818110611ce857505050908082600093500381855af4801561051757610a5f5750602f54602354603654602b546001600160a01b039182169360089190911c60ff169282169116843b1561055757610954600093604051958694859463b4b8300160e01b8652600486016144f8565b8251845285945060209384019390920191600101611c79565b506021546001600160a01b03163314611be1565b34610557576000366003190112610557576040516334bfd66d60e11b8152601460048201526000816024817325f82df665888e38307c8a64183a02eb29adc3c35af480156105175761108c91600091611b985750604051918291602083526020830190613d00565b34610557576020366003190112610557576020611d9e60043560355461400d565b604051908152f35b34610557576000366003190112610557576020603554604051908152f35b34610557576020366003190112610557576001600160a01b03611de5613b8a565b16600052601f602052602060ff604060002054166040519015158152f35b346105575760c036600319011261055757611e1c613b8a565b611e24613bb4565b90611e2d613bd0565b611e4d6103d0602754602854602954602a54906019549260265494614a90565b611e55614d97565b602354604051630f9c83a760e11b8152601460048201526001600160a01b03848116602483018190529216917325f82df665888e38307c8a64183a02eb29adc3c39190602082604481865af491821561051757600092611fac575b5060209060446040518095819363fd12622d60e01b83526014600484015260248301525af491821561051757600092611f89575b5060195460155460165494611efd948694859492614e3b565b6023546001600160a01b0316917346cf9cbd532ca298fa32a8636c25288b12f7185090813b1561055757600093611f5a60405197889586948594635f94e72f60e01b865260a4359360843593604435923090339060048b01613fb6565b03915af49182156105175761040692611f78575b5060165490615023565b6000611f8391613c46565b82611f6e565b611efd9250611fa69060203d602011610510576105028183613c46565b91611ee4565b6020919250611fc790823d8411610510576105028183613c46565b9190611eb0565b34610557576000366003190112610557576020546001600160a01b0316331480156120ae575b611ffd90613dd8565b7388a25628d5b6d5a94a253caa51bd90a9095ce35c803b1561055757600060249160405192838092630d76e8f760e21b8252601e60048301525af480156105175761209d575b7f5c812b9b0ebe7d7e71ac02e835b15a409d81c662b214ebf6514bc02552a40433606060405160208152601e60208201527f546f75726e616d656e742063616e63656c65642062792063726561746f7200006040820152a1005b60006120a891613c46565b80612043565b506021546001600160a01b03163314611ff4565b6040366003190112610557576104066120d9613b8a565b6024356120e4614d97565b6120f260ff60335416614a4d565b603154612107906001600160a01b0316614a6a565b612110816151a5565b603654612125906001600160a01b03166151c2565b6121318160355461400d565b9161213c83346151e7565b61520e565b34610557576000366003190112610557576036546040516001600160a01b039091168152602090f35b3461055757602036600319011261055757612183613b8a565b6040516386f3c35d60e01b8152600160048201526001600160a01b03909116602482015260208160448173cae2bbeb35847c0c5bfdb86237154bb7d0e19a835af480156105175760009061119f57602090604051908152f35b3461055757602036600319011261055757600435602d5481101561055757600090602d5481101561223257602d9091526000805160206158e483398151915201546040516001600160a01b039091168152602090f35b634e487b7160e01b82526032600452602482fd5b346105575761026036600319011261055757612260613b8a565b6024356001600160a01b0381168103610557576044356001600160401b0381116105575760c06003198236030112610557576040519060c082016001600160401b03811183821017612c8c576040526122bb81600401613ba0565b8252602481013560208301526122d360448201613bc3565b60408301526064810135606083015260848101356001600160401b038111610557576123059060043691840101613c80565b608083015260a4810135906001600160401b0382116105575701366023820112156105575760048101359061233982613c69565b916123476040519384613c46565b808352602060048185019260051b840101019136831161055757602401905b828210612e6d5750505060a082015260803660631901126105575760405161238d81613c10565b6064358152608435602082015260a435604082015260c4356060820152606060e3193601126105575760405192606084016001600160401b03811185821017612c8c5760405260e4356001600160a01b0381168103610557578452610104356020850152610124358015158103610557576040850152610144356001600160401b0381116105575760406003198236030112610557576040519061243082613c2b565b61243c81600401613ba0565b82526024810135906001600160401b03821161055757013660238201121561055757600481013561246c81613ce5565b9161247a6040519384613c46565b818352366024828401011161055757816000926024602093018386013783010152602082015260403661016319011261055757604051916124ba83613c2b565b610164356001600160a01b03811681036105575783526101843560208401526001600160401b036101a435116105575760a06101a43536036003190112610557576040519560a087016001600160401b03811188821017612c8c576040526101a43560040135875260246101a4350135602088015261253e60446101a43501613bc3565b60408801526101a435606401356001600160401b0381116105575761256c90600436916101a4350101613c80565b606088015261258060846101a43501613bc3565b60808801526101c435946001600160a01b0386168603610557576080366101e319011261055757604051926125b484613c10565b6101e4358015158103610557578452610204356020850152610224356040850152610244356001600160a01b038116810361055757606085015260008051602061594483398151915254996001600160401b038b1680159081612e5d575b6001149081612e53575b159081612e4a575b50612e39576001600160401b03198b166001176000805160206159448339815191525560408b901c60ff1615612e10575b61265d6158b5565b6126656158b5565b61266e8261492b565b6001600160a01b038116158015612dff575b612de95782516020840151906040850151906060860151921191821592612dde575b5050612dc857608089015160a08a015190519051811490811591612dbd575b50612da757895160208b0151908015612d91578115918215612d87575b5050612d725761271060608a015111612d5c5761271060608a01511080612d4e575b612cdd575b855160609392919061271f906001600160a01b0316614a6a565b8751612733906001600160a01b0316614a6a565b61274060208601516154ab565b6127516020860151806032556154ab565b602080546001600160a01b03199081166001600160a01b03938416178255602180548216948416949094179093558a8101516022558a51602380548516918416919091179055855160248054909416921691909117909155895160255589810151602655815160275581015160285560408101516029550151602a5560808601518051906001600160401b038211612c8c57600160401b8211612c8c57602090602d5483602d55808410612cbf575b5001602d600052602060002060005b838110612ca2575050505060a08601518051906001600160401b038211612c8c57600160401b8211612c8c57602090602e5483602e55808410612c6e575b5001602e600052602060002060005b838110612c5a5750505050604086810151602b80546060808b0151602c558585015161ffff19909216931515600890811b61ff009081169590951792151560ff8181169490941790945587516033805491151590941660ff199182161790935560208089015160345595880151603555960151603680546001600160a01b03199081166001600160a01b03938416908117909255601e80549094169093556009805461ff0019169490981b909416929092179095559251600180548616918516919091179055875160028054861691851691909117905560038054851690911790558351602f8054909416921691821790925591015190803b156105575760405163a83e3c3b60e01b815260206004820152916000918391829084908290612988906024830190613d60565b03925af1801561051757612c49575b50602060018060a01b03825116918260018060a01b03196030541617603055015190604051916020830152602082526129d1604083613c46565b803b156105575760405163a83e3c3b60e01b815260206004820152916000918391829084908290612a06906024830190613d60565b03925af1801561051757612c38575b506001600160a01b038116612c12575b507fae84a4167ee7df20ec7c82a1fab75bae7764b08bfdb6749ff2fa375d838cf6d560206040840151151560145460018060a01b0385511660018060a01b0319601754161760175561ff006080870151151560081b169060ff83169061ffff19161717601455604051908152a160408201511580612c04575b612b6d575b606091516015556020810151601655604081015115156017549060ff60a01b9060a01b169060ff60a01b1916176017550151601855600060195560ff60018060a01b0360205416918160145416151560405193307f59308f3a6248fc407421c460def93cd0cca27a16e9073432973fa019b9cd31af600080a460401c1615612b2757005b600080516020615944833981519152805460ff60401b19169055600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b7325f82df665888e38307c8a64183a02eb29adc3c39160608101519260ff601e541693600885101561079d57813b1561055757600091612bd291604051809781948293633cf31bfd60e21b845260146004850152606060248501526064840190613d00565b90604483015203915af492831561051757606093612bf3575b509150612aa3565b6000612bfe91613c46565b84612beb565b506060820151511515612a9e565b603180546001600160a01b0319166001600160a01b039290921691909117905583612a25565b6000612c4391613c46565b84612a15565b6000612c5491613c46565b85612997565b60019060208451940193818401550161285c565b612c8690602e600052848460002091820191016144e1565b8b61284d565b634e487b7160e01b600052604160045260246000fd5b82516001600160a01b03168183015560209092019160010161280f565b612cd790602d600052848460002091820191016144e1565b8b612800565b9996939097949198959260009a60009b5b60a08801518d81511115612d1b57600191612d0c8f612d1393613ee9565b5190614866565b9c019b612cee565b506127109194979a9295989b9396999c5003612d38579091612705565b630567353360e41b600052602b60045260246000fd5b506080890151511515612700565b630567353360e41b600052600560045260246000fd5b630567353360e41b6000526004805260246000fd5b1190508c806126de565b630567353360e41b600052600360045260246000fd5b630567353360e41b600052600260045260246000fd5b60059150118c6126c1565b630567353360e41b600052600160045260246000fd5b111590508c806126a2565b630567353360e41b600052600060045260246000fd5b506001600160a01b03821615612680565b6001600160481b03198b166001600160401b011760008051602061594483398151915255612655565b63f92ee8a960e01b60005260046000fd5b9050158c612624565b303b15915061261c565b60408d901c60ff16159150612612565b8135815260209182019101612366565b34610557576020366003190112610557576004356001600160401b03811161055757612ead903690600401613be0565b612eca602754602854602954602a54906019549260265494614a90565b50600881101561079d57600603612fa757612ee3614d97565b600d546000805160206159048339815191525460ff90911615906001600160a01b031681612f9c575b50612f865773cae2bbeb35847c0c5bfdb86237154bb7d0e19a8391823b1561055757612f609260009260405180958194829363b312641560e01b8452600160048501526040602485015260448401916144a1565b03915af4801561051757612f75576001600055005b6000612f8091613c46565b80610406565b630567353360e41b600052601360045260246000fd5b905033141583612f0c565b630567353360e41b600052600860045260246000fd5b3461055757602036600319011261055757612fd96004356140af565b60405180916020820160208352815180915260206040840192019060005b818110613005575050500390f35b825180516001600160a01b031685526020908101518186015286955060409094019390920191600101612ff7565b346105575760c03660031901126105575760043561304f613bb4565b90613058613bd0565b90613061614d97565b61306f60ff60335416614a4d565b603154613084906001600160a01b0316614a6a565b61308d816151a5565b6036546001600160a01b0316916130a383615485565b6130af8260355461400d565b927346cf9cbd532ca298fa32a8636c25288b12f71850803b15610557576131019560009360405197889485938493635f94e72f60e01b855260a43592608435928c604435923090339060048b01613fb6565b03915af4928315610517576104069361311c575b503361520e565b600061312791613c46565b83613115565b34610557576000366003190112610557576021546040516001600160a01b039091168152602090f35b34610557576000366003190112610557576020602554604051908152f35b34610557576000366003190112610557576131a561165a602754602854602954602a54906019549260265494614a90565b6020546001600160a01b031633819003613243576131c1614d97565b602080546024546032546040516377f2db5960e01b81529392849283926131fa9290916001600160a01b03908116911660048501614036565b03817388a25628d5b6d5a94a253caa51bd90a9095ce35c5af4801561051757613224576001600055005b61323c9060203d602011610510576105028183613c46565b5080610406565b63c55ddc9760e01b6000523360045260245260446000fd5b602036600319011261055757610406600435613275614d97565b61328360ff60335416614a4d565b603154613298906001600160a01b0316614a6a565b6132a1816151a5565b6036546132b6906001600160a01b03166151c2565b6132c28160355461400d565b906132cd82346151e7565b3361520e565b34610557576000366003190112610557576020601954604051908152f35b346105575760a03660031901126105575760043580151581036105575760443560ff811681036105575761333b6103d0602754602854602954602a54906019549260265494614a90565b613343614d97565b602354604051630f9c83a760e11b8152601460048201523360248201526001600160a01b03909116907325f82df665888e38307c8a64183a02eb29adc3c3602082604481845af490811561051757604492600092613494575b506020906040519384809263fd12622d60e01b8252601460048301523360248301525af491821561051757600092613471575b50601954601554601654946133e8948694859492614e3b565b6023546001600160a01b0316917346cf9cbd532ca298fa32a8636c25288b12f7185090813b156105575760009361344560405196879586948594635f94e72f60e01b86526084359360643593602435923090339060048b01613fb6565b03915af4801561051757613460575b61040660165433615023565b600061346b91613c46565b80613454565b6133e8925061348e9060203d602011610510576105028183613c46565b916133cf565b60209192506134af90823d8411610510576105028183613c46565b919061339c565b34610557576020366003190112610557576134cf613b8a565b6134ec602754602854602954602a54906019549260265494614a90565b50600881101561079d5760405163ae63ca9b60e01b8152601460048201526001600160a01b03909216602483015260448201526020816064817325f82df665888e38307c8a64183a02eb29adc3c35af480156105175760209160009161156457506040519015158152f35b34610557576000366003190112610557576020602a54604051908152f35b34610557576000366003190112610557576020610b36613f43565b34610557576000366003190112610557576020602654604051908152f35b60203660031901126105575760043560ff601e5460081c166135cf81615118565b6024546001600160a01b0316908161365e5750505061360b60ff601e5460081c1660ff602b541660018060a01b03602454169134913491615134565b73cae2bbeb35847c0c5bfdb86237154bb7d0e19a83803b1561055757600060649160405192838092636d7737f760e11b8252600160048301523360248301523460448301525af480156105175761079257005b60ff602b541661366f600092615118565b1561376557503461374f578115613739576020826136a492604051938492839263fb2efb2560e01b8452303360048601613f18565b03817388a25628d5b6d5a94a253caa51bd90a9095ce35c5af480156105175761371c575b5073cae2bbeb35847c0c5bfdb86237154bb7d0e19a8390813b1561055757600090606460405180948193636d7737f760e11b83526001600484015233602484015260448301525af480156105175761079257005b6137349060203d602011610510576105028183613c46565b6136c8565b630567353360e41b600052601860045260246000fd5b630567353360e41b600052601760045260246000fd5b630567353360e41b81526014600452602490fd5b6000366003190112610557576137a56103d0602754602854602954602a54906019549260265494614a90565b6137ad614d97565b602354604051630f9c83a760e11b815260146004820152336024820152906001600160a01b03167325f82df665888e38307c8a64183a02eb29adc3c3602083604481845af49081156105175760449360009261387d575b506020906040519485809263fd12622d60e01b8252601460048301523360248301525af4908115610517576104069360009261385a575b5060195460155460165494613854948694349492614db9565b33615023565b61385492506138779060203d602011610510576105028183613c46565b9161383b565b602091925061389890823d8411610510576105028183613c46565b9190613804565b346105575760003660031901126105575760405163caa1efc960e01b81526001600482015260208160248173cae2bbeb35847c0c5bfdb86237154bb7d0e19a835af480156105175760009061119f57602090604051908152f35b34610557576000366003190112610557576020546001600160a01b031633148015613a2b575b61392890613dd8565b61393660ff60335416614a4d565b60315461394b906001600160a01b0316614a6a565b6019546040519063183f5e2d60e21b82526014600483015260248201526000816044817325f82df665888e38307c8a64183a02eb29adc3c35af490811561051757600091613a10575b5060005b815181101561001e576031546001600160a01b0390811691906139bb8285613ee9565b51169160345492813b15610557576001936139ef926000928360405180968195829462a914b360e51b845260048401613efd565b03925af16139ff575b5001613998565b6000613a0a91613c46565b836139f8565b613a2591503d806000833e611bad8183613c46565b81613994565b506021546001600160a01b0316331461391f565b3461055757602036600319011261055757600435602e5481101561055757600090602e5481101561223257602082602e829452200154604051908152f35b3461055757602036600319011261055757613a96613b8a565b60405163fd12622d60e01b8152601460048201526001600160a01b0390911660248201526020816044817325f82df665888e38307c8a64183a02eb29adc3c35af480156105175760209160009161156457506040519015158152f35b34610557576000366003190112610557576020602c54604051908152f35b34610557576000366003190112610557576020602254604051908152f35b3461055757600036600319011261055757602080546040516001600160a01b039091168152f35b346105575760003660031901126105575760809060275460285460295490602a54928452602084015260408301526060820152f35b600435906001600160a01b038216820361055757565b35906001600160a01b038216820361055757565b60243590811515820361055757565b3590811515820361055757565b6064359060ff8216820361055757565b9181601f84011215610557578235916001600160401b038311610557576020808501948460051b01011161055757565b608081019081106001600160401b03821117612c8c57604052565b604081019081106001600160401b03821117612c8c57604052565b601f909101601f19168101906001600160401b03821190821017612c8c57604052565b6001600160401b038111612c8c5760051b60200190565b9080601f83011215610557578135613c9781613c69565b92613ca56040519485613c46565b81845260208085019260051b82010192831161055757602001905b828210613ccd5750505090565b60208091613cda84613ba0565b815201910190613cc0565b6001600160401b038111612c8c57601f01601f191660200190565b906020808351928381520192019060005b818110613d1e5750505090565b82516001600160a01b0316845260209384019390920191600101613d11565b60005b838110613d505750506000910152565b8181015183820152602001613d40565b90602091613d7981518092818552858086019101613d3d565b601f01601f1916010190565b6001600160a01b039182168152602081019290925291821660408201526060810192909252909116608082015260a081019190915260c00190565b90816020910312610557575180151581036105575790565b15613ddf57565b60405162461bcd60e51b815260206004820152602360248201527f54463a2043616c6c6572206d7573742062652063726561746f72206f72206f776044820152623732b960e91b6064820152608490fd5b9080601f8301121561055757815190613e4882613c69565b92613e566040519485613c46565b82845260208085019360051b82010191821161055757602001915b818310613e7e5750505090565b82516001600160a01b038116810361055757815260209283019201613e71565b906020828203126105575781516001600160401b03811161055757613ec39201613e30565b90565b805115613ed35760200190565b634e487b7160e01b600052603260045260246000fd5b8051821015613ed35760209160051b010190565b6001600160a01b039091168152602081019190915260400190565b6001600160a01b03918216815291811660208301529091166040820152606081019190915260800190565b6023546001600160a01b03168015613fb0576040519063bcd12a5760e01b825260048201526020816024817346cf9cbd532ca298fa32a8636c25288b12f718505af490811561051757600091613f97575090565b613ec3915060203d602011610510576105028183613c46565b50600090565b6001600160a01b039182168152918116602083015290911660408201526060810191909152901515608082015260a081019190915260ff90911660c082015260e08101919091526101008101919091526101200190565b8181029291811591840414171561402057565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03918216815291166020820152604081019190915260600190565b60405190614067602083613c46565b600080835282815b82811061407b57505050565b60209060405161408a81613c2b565b600081526000838201528282850101520161406f565b60001981146140205760010190565b602f546001600160a01b031615614498576030546001600160a01b0316156144985760045473cae2bbeb35847c0c5bfdb86237154bb7d0e19a83916040519263e554069b60e01b845260016004850152602084602481845af493841561051757600094614463575b5060206024916040519283809263caa1efc960e01b8252600160048301525af490811561051757600091614431575b506019549260009084156144235760305460405163053d316360e11b8152929060209084906001600160a01b031681806141848b3060048401613efd565b03915afa909283826143ec575b50506141a557505050505050613ec3614058565b6101246060929460018060a01b03602f541660018060a01b03602454169660018060a01b03602354169860018060a01b0360365416976040519b8c97889663061a571160e51b885260048801526024870152604486015260648501528860848501528960a48501528760c485015260e48401526101048301525afa9260009084829683966143a5575b5061424157505050505050613ec3614058565b600095821515948561439c575b811515908161438c575b871515948561437c575b61426b8a613c69565b996142796040519b8c613c46565b808b52614288601f1991613c69565b0160005b818110614356575050600097614321575b50506142e3575b50506142b1575b50505090565b6142da92604051916142c283613c2b565b825260208201526142d38285613ee9565b5282613ee9565b503880806142ab565b90614319929491604051916142f783613c2b565b825260208201526143088288613ee9565b526143138187613ee9565b506140a0565b9138806142a4565b6040519297509061433183613c2b565b8252602082015261434188613ec6565b5261434b87613ec6565b50600194388061429d565b808c602080936040519261436984613c2b565b600084526000838501520101520161428c565b98614386906140a0565b98614262565b97614396906140a0565b97614258565b6001975061424e565b9291965094506060823d6060116143e4575b816143c460609383613c46565b81010312610e6d575080519460406020830151920151959195943861422e565b3d91506143b7565b909193506020823d60201161441b575b8161440960209383613c46565b81010312610e6d575051913880614191565b3d91506143fc565b505050505050613ec3614058565b90506020813d60201161445b575b8161444c60209383613c46565b81010312610557575138614146565b3d915061443f565b9093506020813d602011614490575b8161447f60209383613c46565b810103126105575751926020614117565b3d9150614472565b50613ec3614058565b9160209082815201919060005b8181106144bb5750505090565b909192602080600192838060a01b036144d388613ba0565b1681520194019291016144ae565b8181106144ec575050565b600081556001016144e1565b600181526001600160a01b03918216602082015291811660408301529091166060820152901515608082015260a00190565b600181526001600160a01b03909116602082015260a060408201819052602d8054918301829052600090815291929160c08401916000805160206158e4833981519152915b8181106145c55750505082810360608401526020602e54918281520190602e60005260206000209060005b8181106145af57505050608061271091930152565b825484526020909301926001928301920161459a565b82546001600160a01b031684526020909301926001928301920161456f565b9190820391821161402057565b6031546040516307de2a8d60e11b81526001600160a01b0390911660048201529060008260248173827f84e133ad2ab3f2dadcdd63758d5ef700dd235af480156105175760009283916147ad575b508092809181516001811161478e575b5060305460195460405163053d316360e11b81529160209183916001600160a01b03169082908190614685903060048401613efd565b03915afa9081156105175760009161475c575b50808351116146a9575b5050509190565b91945091506146b781613c69565b916146c56040519384613c46565b818352601f196146d483613c69565b013660208501376146e482613c69565b946146f26040519687613c46565b828652601f1961470184613c69565b0136602088013760005b83811061471e57505050503880806146a2565b6001906001600160a01b036147338285613ee9565b511661473f8288613ee9565b5261474a8185613ee9565b51614755828a613ee9565b520161470b565b906020823d602011614786575b8161477660209383613c46565b81010312610e6d57505138614698565b3d9150614769565b6000198101908111614020576147a79060008385615562565b3861464f565b90503d8084833e6147be8183613c46565b81016040828203126113ee5781516001600160401b03811161485e57816147e6918401613e30565b602083015190926001600160401b038211614862570181601f8201121561485e5780519061481382613c69565b956148216040519788613c46565b82875260208088019360051b830101938411610e6d5750602001905b82821061484e57505050913861463f565b815181526020918201910161483d565b8480fd5b8580fd5b9190820180921161402057565b6023546001600160a01b031680156148d8576016546040516307db951960e11b815292602092849283926148ad9230919060048601613f18565b03817346cf9cbd532ca298fa32a8636c25288b12f718505af490811561051757600091613f97575090565b5050600190565b6036549091906001600160a01b031680156149235761490260209260355461400d565b926148ad60405194859384936307db951960e11b8552309160048601613f18565b505050600190565b6001600160a01b031680156149795760008051602061590483398151915280546001600160a01b0319811683179091556001600160a01b0316600080516020615924833981519152600080a3565b631e4fbdf760e01b600052600060045260246000fd5b9190811015613ed35760051b0190565b356001600160a01b03811681036105575790565b601e546149dd60009160ff602b541660018060a01b036024541691349160ff349260081c16615134565b73cae2bbeb35847c0c5bfdb86237154bb7d0e19a83803b15614a49578160649160405192838092636d7737f760e11b8252600160048301523360248301523460448301525af48015614a3e57614a31575050565b81614a3b91613c46565b50565b6040513d84823e3d90fd5b5080fd5b15614a5457565b630567353360e41b600052602c60045260246000fd5b6001600160a01b031615614a7a57565b630567353360e41b600052600660045260246000fd5b949192939060ff601e541695600887101561079d5760068714614d1657600060078814614cd757508615614c885742101580614c7f575b614c445742101580614c3b575b614b9d57505042101580614b94575b614b5857421015614b1a5790604051614afd604082613c46565b600d81526c43757272656e7420737461746560981b602082015290565b50600590604051614b2c604082613c46565b601c81527b2bb0b4ba34b733903337b9103bb4b73732b91039b2b632b1ba34b7b760211b602082015290565b5050600490604051614b6b604082613c46565b6019815278546f75726e616d656e7420697320696e2070726f677265737360381b602082015290565b50804210614ae3565b925092505010614be557600390604051614bb8604082613c46565b601d81527f526567697374726174696f6e20706572696f642068617320656e646564000000602082015290565b600790604051614bf6606082613c46565b602f81527f546f75726e616d656e742063616e63656c6c65643a20696e737566666963696560208201526e6e74207061727469636970616e747360881b604082015290565b50824210614ad4565b505050505050600290604051614c5b604082613c46565b60148152732932b3b4b9ba3930ba34b7b71034b99037b832b760611b602082015290565b50804210614ac7565b50505050505050600090604051614ca0606082613c46565b602181527f57616974696e6720666f7220696e697469616c207072697a652066756e64696e6020820152606760f81b604082015290565b97965050505050505060079150604051614cf2604082613c46565b6014815273151bdd5c9b985b595b9d0818d85b98d95b1b195960621b602082015290565b50505050505050600690604051614d2e604082613c46565b6014815273151bdd5c9b985b595b9d0818dbdb5c1b195d195960621b602082015290565b600881101561079d57600203612fa757565b600881101561079d57600703612fa757565b600881101561079d57612fa757565b600881101561079d57600503612fa757565b600260005414614da8576002600055565b633ee5aeb560e01b60005260046000fd5b9495946001600160a01b0316614e255715614e0f57614df9571015614de357614de1916151e7565b565b630567353360e41b600052600c60045260246000fd5b630567353360e41b600052600b60045260246000fd5b630567353360e41b600052600a60045260246000fd5b630567353360e41b600052601060045260246000fd5b9495946001600160a01b031615614e645715614e0f57614df9571015614de357614de1916151e7565b630567353360e41b600052601160045260246000fd5b906000917325f82df665888e38307c8a64183a02eb29adc3c3803b156113ee5760405163a1dac55560e01b8152601460048201526001600160a01b0383166024820181905291908581604481855af4801561501857615003575b5060409060c460018060a01b0360315416602c54928451958694859363ac26ed3160e01b85526014600486015260248501526044840152612710606484015260848301528860a48301525af4908115614ff85784908592614fb7575b50614de193945080614f5f575b5080614f4a575b5061575c565b614f5690601254614866565b60125538614f44565b614f8c7f7f6a60d17ce498d90bd33896f8b7f03360a10aa5dc784d369c817883b06af06e91600554614866565b6005819055602354604051918291614fae91906001600160a01b031683613efd565b0390a138614f3d565b9150506040813d604011614ff0575b81614fd360409383613c46565b810103126113ee57614de192935060208151910151908493614f30565b3d9150614fc6565b6040513d86823e3d90fd5b946150118160409397613c46565b9490614ed4565b6040513d88823e3d90fd5b7325f82df665888e38307c8a64183a02eb29adc3c39291833b156105575760405163a1dac55560e01b8152601460048201526001600160a01b038316602482018190526000959092918681604481855af4801561510d576150f3575b509060c460409260018060a01b036031541690602c54938551968795869463ac26ed3160e01b865260146004870152602486015260448501526127106064850152608484015260a48301525af4908115614ff85784908592614fb75750614de193945080614f5f575080614f4a575061575c565b86615104604094939860c493613c46565b9691925061507f565b6040513d89823e3d90fd5b61511e57565b630567353360e41b600052600960045260246000fd5b615142919250939293615118565b1561518f576001600160a01b03166151795766038d7ea4c680001161516357565b630567353360e41b600052601660045260246000fd5b630567353360e41b600052601560045260246000fd5b630567353360e41b600052601460045260246000fd5b156151ac57565b630567353360e41b600052602d60045260246000fd5b6001600160a01b03166151d157565b630567353360e41b600052602e60045260246000fd5b8181036151f2575050565b63683d8f5360e01b600052600d60045260245260445260646000fd5b90602b549260ff60009460081c1660001461547157602c546040519063a62e1f7b60e01b8252826004830152602482015261271060448201526020816064817388a25628d5b6d5a94a253caa51bd90a9095ce35c5af4908115615466578591615434575b50806153cd575b61528390826145e4565b806153b8575b505b60405163fd12622d60e01b8152601460048201526001600160a01b0384166024820181905293906020816044817325f82df665888e38307c8a64183a02eb29adc3c35af4908115615018578691615399575b501561538b575b6031546001600160a01b031690813b1561486257858461531c9382938360405180978195829462a914b360e51b845260048401613efd565b03925af19182615376575b505061534157630567353360e41b84526027600452602484fd5b7fbdfa70f134f830ea0b5c8186db46fbd405e72d53bb6114776e8e80e4e3dae90e9293509060409182519182526020820152a2565b8161538091613c46565b61485e578438615327565b61539481614e7a565b6152e4565b6153b2915060203d602011610510576105028183613c46565b386152dd565b6153c490601354614866565b60135538615289565b73cae2bbeb35847c0c5bfdb86237154bb7d0e19a83803b1561486257856044916040519283809263eaad17f360e01b8252600160048301528660248301525af480156150185761541e575b50615279565b9461542d816152839397613c46565b9490615418565b90506020813d60201161545e575b8161544f60209383613c46565b8101031261485e575138615272565b3d9150615442565b6040513d87823e3d90fd5b61547d81601354614866565b60135561528b565b6001600160a01b03161561549557565b630567353360e41b600052602f60045260246000fd5b156154b257565b630567353360e41b600052600760045260246000fd5b600080516020615904833981519152546001600160a01b031633036154e957565b63118cdaa760e01b6000523360045260246000fd5b90600019820191821360011661402057565b8181039291600013801582851316918412161761402057565b906001820191600060018412911290801582169115161761402057565b9190916000838201938412911290801582169115161761402057565b90929192828412156156925761558b61558561557e8686615510565b6002900590565b85615546565b936156146155998684613ee9565b51956155a58685613ee9565b516155b08286613ee9565b516155bb8887613ee9565b526155c68286613ee9565b526155ff6155e46155d78888613ee9565b516001600160a01b031690565b9161560e6155f56155d7838a613ee9565b6155ff8a8a613ee9565b6001600160a01b039091169052565b86613ee9565b8094815b8581106156ce57505061562b8483613ee9565b516156368684613ee9565b516156418685613ee9565b5261564c8684613ee9565b5261568161565d6155d78686613ee9565b61567761566d6155d78988613ee9565b6155ff8888613ee9565b6155ff8786613ee9565b8085136156b3575b50828412615698575b50505050565b6156a46156aa94615529565b91615562565b38808080615692565b6156c8906156c0866154fe565b908385615562565b38615689565b816156d98286613ee9565b51116156e8575b600101615618565b95615754816156f960019387613ee9565b516157048a88613ee9565b5161570f8389613ee9565b5261571a8a88613ee9565b5261574f61572b6155d7838a613ee9565b61574561573b6155d78d8c613ee9565b6155ff858c613ee9565b6155ff8b8a613ee9565b6140a0565b9690506156e0565b6033549060ff600092161580156158a2575b6157f05760315460405163cbea18e560e01b81526001600160a01b03838116600483015290911690602081602481855afa84918161586e575b5061580657505060018060a01b036031541660345491813b156113ee579183916157e7938360405180968195829462a914b360e51b845260048401613efd565b03925af16157f4575b5050565b6157ff828092613c46565b610e6d5750565b60345490818110615819575b5050505050565b615822916145e4565b91813b156113ee5791839161584d938360405180968195829462a914b360e51b845260048401613efd565b03925af161585e575b808080615812565b8161586891613c46565b38615856565b9091506020813d60201161589a575b8161588a60209383613c46565b8101031261485e575190386157a7565b3d915061587d565b506031546001600160a01b03161561576e565b60ff6000805160206159448339815191525460401c16156158d257565b631afcd79f60e31b60005260046000fdfe4a2cc91ee622da3bc833a54c37ffcb6f3ec23b7793efc5eaf5e71b7b406c5c069016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220b0e83a1c673382e9fc217cb037a1850c683890c492d6f723b96cc2715df74fe864736f6c634300081b0033