0 txs
0 calls
constructor
No constructor.
functions
access
viewfunction access() view returns (address)
addCondition
viewfunction addCondition(uint256 gameId) view returns (uint64)
affiliate
viewfunction affiliate() view returns (address)
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
checkCore
viewfunction checkCore(address core) view
checkOwner
viewfunction checkOwner(address account) view
claimTimeout
viewfunction claimTimeout() view returns (uint64)
cores
viewfunction cores(address) view returns (uint8 state, uint64 reinforcementAbility, uint128 minBet, uint128 lockedLiquidity)
dataProvider
viewfunction dataProvider() view returns (address)
factory
viewfunction factory() view returns (address)
fees
viewfunction fees(uint256) view returns (uint64)
games
viewfunction games(uint256) view returns (bytes32 unusedVariable, uint128 lockedLiquidity, uint64 startsAt, bool canceled)
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
getGameInfo
viewfunction getGameInfo(uint256 gameId) view returns (uint64, bool)
getLastDepositId
viewfunction getLastDepositId() view returns (uint48 depositId)
getLockedLiquidityLimit
viewfunction getLockedLiquidityLimit(address core) view returns (uint128)
getReserve
viewfunction getReserve() view returns (uint128 reserve)
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool)
isBettingPaused
viewfunction isBettingPaused() view returns (bool)
isDepositExists
viewfunction isDepositExists(uint256 depositId) view returns (bool)
isGameCanceled
viewfunction isGameCanceled(uint256 gameId) view returns (bool)
liquidityManager
viewfunction liquidityManager() view returns (address)
lockedLiquidity
viewfunction lockedLiquidity() view returns (uint128)
migrateAdmin
viewfunction migrateAdmin() view returns (address)
minDepo
viewfunction minDepo() view returns (uint128)
name
viewfunction name() view returns (string)
nextNode
viewfunction nextNode() view returns (uint48)
nodeWithdrawView
viewfunction nodeWithdrawView(uint48 leaf) view returns (uint128 withdrawAmount)
owner
viewfunction owner() view returns (address)
ownerOf
viewfunction ownerOf(uint256 tokenId) view returns (address)
rewards
viewfunction rewards(address) view returns (int128 amount, uint64 claimedAt)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
token
viewfunction token() view returns (address)
tokenByIndex
viewfunction tokenByIndex(uint256 index) view returns (uint256)
tokenOfOwnerByIndex
viewfunction tokenOfOwnerByIndex(address owner, uint256 index) view returns (uint256)
tokenURI
viewfunction tokenURI(uint256 tokenId) view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
treeNode
viewfunction treeNode(uint48) view returns (uint64 updateId, uint128 amount)
updateId
viewfunction updateId() view returns (uint64)
viewPayout
viewfunction viewPayout(address core, uint256 tokenId) view returns (uint128)
withdrawAfter
viewfunction withdrawAfter(uint48) view returns (uint64)
withdrawTimeout
viewfunction withdrawTimeout() view returns (uint64)
addCore
nonpayablefunction addCore(address core)
addLiquidity
nonpayablefunction addLiquidity(uint128 amount, bytes data) returns (uint48 depositId)
addReserve
nonpayablefunction addReserve(uint256 gameId, uint128 lockedReserve, uint128 finalReserve, uint48 depositId)
approve
nonpayablefunction approve(address to, uint256 tokenId)
bet
nonpayablefunction bet(address core, uint128 amount, uint64 expiresAt, tuple betData) returns (uint256)
betFor
nonpayablefunction betFor(address bettor, address core, uint128 amount, uint64 expiresAt, tuple betData) returns (uint256)
cancelGame
nonpayablefunction cancelGame(uint256 gameId)
changeAffiliate
nonpayablefunction changeAffiliate(address newAffiliate)
changeClaimTimeout
nonpayablefunction changeClaimTimeout(uint64 newClaimTimeout)
changeDataProvider
nonpayablefunction changeDataProvider(address newDataProvider)
changeFee
nonpayablefunction changeFee(uint8 feeType, uint64 newFee)
changeLiquidityManager
nonpayablefunction changeLiquidityManager(address newLiquidityManager)
changeLockedLiquidity
nonpayablefunction changeLockedLiquidity(uint256 gameId, int128 deltaReserve)
changeMinDepo
nonpayablefunction changeMinDepo(uint128 newMinDepo)
changeWithdrawTimeout
nonpayablefunction changeWithdrawTimeout(uint64 newWithdrawTimeout)
checkAccess
nonpayablefunction checkAccess(address account, address target, bytes4 selector)
claimReward
nonpayablefunction claimReward() returns (uint128 claimedAmount)
createGame
nonpayablefunction createGame(uint256 gameId, uint64 startsAt, bytes data)
initialize
nonpayablefunction initialize(address access_, address dataProvider_, address affiliate_, address token_, uint128 minDepo_, uint64 daoFee, uint64 dataProviderFee, uint64 affiliateFee)
migrateLiquidityFrom
nonpayablefunction migrateLiquidityFrom(uint48 depositId) returns (address depositOwner, uint128 withdrawnAmount)
resetLockedLiquidity
nonpayablefunction resetLockedLiquidity()
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId, bytes data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId)
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setMigrateAdmin
nonpayablefunction setMigrateAdmin(address migrateAdmin_)
shiftGame
nonpayablefunction shiftGame(uint256 gameId, uint64 startsAt)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 tokenId)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateBettingStatus
nonpayablefunction updateBettingStatus(bool isBettingPaused_)
updateCoreSettings
nonpayablefunction updateCoreSettings(address core, uint8 state, uint64 reinforcementAbility, uint128 minBet)
withdrawLiquidity
nonpayablefunction withdrawLiquidity(uint48 depositId, uint40 percent) returns (uint128 withdrawnAmount)
withdrawPayout
nonpayablefunction withdrawPayout(address core, uint256 tokenId) returns (uint128 amount)
events
AffiliateChanged
event AffiliateChanged(address newAffilaite)
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
BettingStatusChanged
event BettingStatusChanged(bool isBettingPaused)
BettorWin
event BettorWin(address indexed core, address indexed bettor, uint256 tokenId, uint256 amount)
ClaimTimeoutChanged
event ClaimTimeoutChanged(uint64 newClaimTimeout)
CoreSettingsUpdated
event CoreSettingsUpdated(address indexed core, uint8 state, uint64 reinforcementAbility, uint128 minBet)
DataProviderChanged
event DataProviderChanged(address newDataProvider)
FeeChanged
event FeeChanged(uint8 feeType, uint64 fee)
GameCanceled
event GameCanceled(uint256 indexed gameId)
GameShifted
event GameShifted(uint256 indexed gameId, uint64 newStart)
Initialized
event Initialized(uint8 version)
LiquidityAdded
event LiquidityAdded(address indexed account, uint48 indexed depositId, uint256 amount)
LiquidityManagerChanged
event LiquidityManagerChanged(address newLiquidityManager)
LiquidityRemoved
event LiquidityRemoved(address indexed account, uint48 indexed depositId, uint256 amount)
MinBetChanged
event MinBetChanged(address core, uint128 newMinBet)
MinDepoChanged
event MinDepoChanged(uint128 newMinDepo)
NewGame
event NewGame(uint256 indexed gameId, uint64 startsAt, bytes data)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
ReinforcementAbilityChanged
event ReinforcementAbilityChanged(uint128 newReinforcementAbility)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
WithdrawTimeoutChanged
event WithdrawTimeoutChanged(uint64 newWithdrawTimeout)
errors
BetExpired
error BetExpired()
BettingPaused
error BettingPaused()
ClaimTimeout
error ClaimTimeout(uint64 waitTime)
CoreNotActive
error CoreNotActive()
DepositDoesNotExist
error DepositDoesNotExist()
GameAlreadyCanceled
error GameAlreadyCanceled()
GameAlreadyCreated
error GameAlreadyCreated()
GameCanceled_
error GameCanceled_()
GameNotExists
error GameNotExists()
IncorrectCoreState
error IncorrectCoreState()
IncorrectFee
error IncorrectFee()
IncorrectGameId
error IncorrectGameId()
IncorrectMinBet
error IncorrectMinBet()
IncorrectMinDepo
error IncorrectMinDepo()
IncorrectPercent
error IncorrectPercent()
IncorrectReinforcementAbility
error IncorrectReinforcementAbility()
IncorrectTimestamp
error IncorrectTimestamp()
LeafNotExist
error LeafNotExist()
LiquidityIsLocked
error LiquidityIsLocked()
LiquidityNotOwned
error LiquidityNotOwned()
NoLiquidity
error NoLiquidity()
NotEnoughLiquidity
error NotEnoughLiquidity()
OnlyFactory
error OnlyFactory()
OnlyMigrateAdmin
error OnlyMigrateAdmin()
SafeCastError
error SafeCastError(uint8 to)
SmallBet
error SmallBet()
SmallDepo
error SmallDepo()
UnknownCore
error UnknownCore()
WithdrawalTimeout
error WithdrawalTimeout(uint64 waitTime)
creation bytecode
0x608060405234801561001057600080fd5b50615f7180620000216000396000f3fe6080604052600436106103505760003560e01c806301ffc9a7146103735780630695bfd2146103a857806306fdde03146103c85780630700037d146103ea578063081812fc14610450578063095ea7b31461047d5780630e1da6c31461049d578063117a5b90146104cb578063161d07701461055e57806318160ddd1461058b57806323b872dd146105aa57806323ebb4a4146105ca57806325aa820b146105ea578063266cccd21461060a5780632f745c591461062b578063325ac4601461064b578063338274381461066b57806342842e0e1461068c57806345e05f43146106ac57806347e1d550146106cd5780634acc79ed146107395780634f6ccce71461075957806359bf5d39146107795780635a8d9d151461078e578063613db23b146107ae5780636352211e146107e55780636396eb8d1461080557806365715c5614610825578063685775f01461084457806369958ab91461086657806370a0823114610886578063710e71c0146108a657806371907f17146108c65780637f4270c1146108e65780638154f2d3146109065780638164b4d61461092657806385ad32c41461094657806387757e31146109b35780638da5cb5b146109d35780638e8dc736146109e85780639207c4af14610a0857806395d89b4114610a2957806396577a3314610a3e5780639aebfea714610a5e5780639c15d1a214610a7e578063a22cb46514610aa6578063a882206114610ac6578063b334ed8614610ae6578063b439824414610b07578063b88a802f14610b2f578063b88d4fde14610b44578063bdb36f8914610b64578063bfcf04cf14610b84578063c26e1b4414610bab578063c45a015514610be2578063c87b56dd14610c02578063cb3f1aac14610c22578063ccc3d8e314610c42578063cd6072e614610c62578063d2a382b214610cd1578063db1c822714610cf1578063dd9ea29914610d11578063de7ad2d114610d26578063df1459a714610d46578063e0e3671c14610d8d578063e2ca81f014610dad578063e7324cc214610de8578063e937a8d914610e08578063e985e9c514610e2a578063ea963ec414610e4a578063ec24ffbf14610e6a578063f2fde38b14610e8a578063f6ff5df314610eaa578063fc0c546a14610eca578063fdb985f114610eea57600080fd5b3661036e5760ff546001600160a01b0316331461036c57600080fd5b005b600080fd5b34801561037f57600080fd5b5061039361038e366004614dfc565b610f0a565b60405190151581526020015b60405180910390f35b3480156103b457600080fd5b5061036c6103c3366004614e2e565b610f35565b3480156103d457600080fd5b506103dd610f95565b60405161039f9190614e9b565b3480156103f657600080fd5b5061042e610405366004614e2e565b61010660205260009081526040902054600f81900b90600160801b90046001600160401b031682565b60408051600f9390930b83526001600160401b0390911660208301520161039f565b34801561045c57600080fd5b5061047061046b366004614eae565b611027565b60405161039f9190614ec7565b34801561048957600080fd5b5061036c610498366004614edb565b61104e565b3480156104a957600080fd5b50610102546104be906001600160401b031681565b60405161039f9190614f07565b3480156104d757600080fd5b506105266104e6366004614eae565b61010460205260009081526040902080546001909101546001600160801b03811690600160801b81046001600160401b031690600160c01b900460ff1684565b604080519485526001600160801b0390931660208501526001600160401b03909116918301919091521515606082015260800161039f565b34801561056a57600080fd5b5061057e610579366004614edb565b611168565b60405161039f9190614f1b565b34801561059757600080fd5b5060cd545b60405190815260200161039f565b3480156105b657600080fd5b5061036c6105c5366004614f2f565b611257565b3480156105d657600080fd5b5061036c6105e5366004614f94565b611288565b3480156105f657600080fd5b5061057e610605366004614edb565b61132b565b34801561061657600080fd5b5061010b54610470906001600160a01b031681565b34801561063757600080fd5b5061059c610646366004614edb565b6113aa565b34801561065757600080fd5b5061036c610666366004614fde565b611440565b34801561067757600080fd5b5061010954610470906001600160a01b031681565b34801561069857600080fd5b5061036c6106a7366004614f2f565b6116a6565b3480156106b857600080fd5b5061010a54610470906001600160a01b031681565b3480156106d957600080fd5b5061071a6106e8366004614eae565b60009081526101046020526040902060010154600160801b81046001600160401b031691600160c01b90910460ff1690565b604080516001600160401b03909316835290151560208301520161039f565b34801561074557600080fd5b506104be610754366004614eae565b6116c1565b34801561076557600080fd5b5061059c610774366004614eae565b6116f5565b34801561078557600080fd5b5061057e611788565b34801561079a57600080fd5b5061036c6107a936600461507f565b6117b5565b3480156107ba57600080fd5b506107ce6107c9366004615121565b611903565b60405165ffffffffffff909116815260200161039f565b3480156107f157600080fd5b50610470610800366004614eae565b611a7b565b34801561081157600080fd5b5061036c610820366004615175565b611aaf565b34801561083157600080fd5b506000546107ce9065ffffffffffff1681565b34801561085057600080fd5b5061036c61010180546001600160801b03169055565b34801561087257600080fd5b5061036c610881366004614eae565b611b2b565b34801561089257600080fd5b5061059c6108a1366004614e2e565b611c0d565b3480156108b257600080fd5b5061057e6108c1366004614e2e565b611c93565b3480156108d257600080fd5b5060fe54610470906001600160a01b031681565b3480156108f257600080fd5b5061057e6109013660046151d6565b611cc7565b34801561091257600080fd5b5061036c6109213660046151f1565b611dff565b34801561093257600080fd5b5061036c610941366004615242565b611fdb565b34801561095257600080fd5b506109a3610961366004614e2e565b610103602052600090815260409020805460019091015460ff8216916001600160401b03610100820416916001600160801b03600160481b9092048216911684565b60405161039f9493929190615285565b3480156109bf57600080fd5b5061036c6109ce3660046152c0565b61205a565b3480156109df57600080fd5b50610470612156565b3480156109f457600080fd5b5061036c610a03366004615319565b612165565b348015610a1457600080fd5b506101015461057e906001600160801b031681565b348015610a3557600080fd5b506103dd6121c3565b348015610a4a57600080fd5b5061036c610a59366004615334565b6121d2565b348015610a6a57600080fd5b5061036c610a79366004614e2e565b612367565b348015610a8a57600080fd5b50610102546104be90600160401b90046001600160401b031681565b348015610ab257600080fd5b5061036c610ac1366004615378565b6123f9565b348015610ad257600080fd5b5061036c610ae13660046153a6565b612408565b348015610af257600080fd5b5061010054610470906001600160a01b031681565b348015610b1357600080fd5b506101015461057e90600160801b90046001600160801b031681565b348015610b3b57600080fd5b5061057e6124b3565b348015610b5057600080fd5b5061036c610b5f36600461546b565b612569565b348015610b7057600080fd5b506104be610b7f366004614eae565b6125a1565b348015610b9057600080fd5b506000546104be90600160301b90046001600160401b031681565b348015610bb757600080fd5b506104be610bc63660046151d6565b610107602052600090815260409020546001600160401b031681565b348015610bee57600080fd5b5060fd54610470906001600160a01b031681565b348015610c0e57600080fd5b506103dd610c1d366004614eae565b612605565b348015610c2e57600080fd5b5061036c610c3d366004614e2e565b612679565b348015610c4e57600080fd5b5061036c610c5d3660046154d6565b6126a5565b348015610c6e57600080fd5b50610caa610c7d3660046151d6565b6001602052600090815260409020546001600160401b03811690600160401b90046001600160801b031682565b604080516001600160401b0390931683526001600160801b0390911660208301520161039f565b348015610cdd57600080fd5b5061036c610cec366004615319565b6126fc565b348015610cfd57600080fd5b5061036c610d0c366004614e2e565b612751565b348015610d1d57600080fd5b506107ce6127a6565b348015610d3257600080fd5b5061036c610d41366004614e2e565b6127c3565b348015610d5257600080fd5b50610d66610d613660046151d6565b612804565b604080516001600160a01b0390931683526001600160801b0390911660208301520161039f565b348015610d9957600080fd5b5061036c610da8366004614e2e565b61286f565b348015610db957600080fd5b50610393610dc8366004614eae565b60009081526101046020526040902060010154600160c01b900460ff1690565b348015610df457600080fd5b5061057e610e033660046154f3565b6128e1565b348015610e1457600080fd5b5061010b5461039390600160a01b900460ff1681565b348015610e3657600080fd5b50610393610e45366004615529565b612930565b348015610e5657600080fd5b5061059c610e65366004615569565b61295e565b348015610e7657600080fd5b5061059c610e853660046155ee565b612988565b348015610e9657600080fd5b5061036c610ea5366004614e2e565b6129ae565b348015610eb657600080fd5b50610393610ec5366004614eae565b612a25565b348015610ed657600080fd5b5060ff54610470906001600160a01b031681565b348015610ef657600080fd5b5061036c610f05366004614e2e565b612a30565b60006001600160e01b0319821663780e9d6360e01b1480610f2f5750610f2f82612a85565b92915050565b610f3e3361286f565b61010980546001600160a01b0319166001600160a01b0383161790556040517f3d34cc8a188b0116ebbbbab43310493807ae037bdab3d6746427d0e815dce3e090610f8a908390614ec7565b60405180910390a150565b606060998054610fa490615654565b80601f0160208091040260200160405190810160405280929190818152602001828054610fd090615654565b801561101d5780601f10610ff25761010080835404028352916020019161101d565b820191906000526020600020905b81548152906001019060200180831161100057829003601f168201915b5050505050905090565b600061103282612ad5565b506000908152609d60205260409020546001600160a01b031690565b600061105982611a7b565b9050806001600160a01b0316836001600160a01b0316036110cb5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806110e757506110e78133612930565b6111595760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016110c2565b6111638383612afa565b505050565b600082611174816127c3565b604051637e40cb6b60e11b8152600481018490526000906001600160a01b0386169063fc8196d69060240160408051808303816000875af11580156111bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e19190615688565b935090506001600160801b038316156111fe576111fe8184612b68565b604080518581526001600160801b03851660208201526001600160a01b0380841692908816917f53df85a6d27721f38c9c99d095a4c565f68a5e74f22f17c711578461253cbef2910160405180910390a3505092915050565b6112613382612b88565b61127d5760405162461bcd60e51b81526004016110c2906156b7565b611163838383612be6565b6112913361286f565b806101058360028111156112a7576112a761525f565b600381106112b7576112b7615704565b600491828204019190066008026101000a8154816001600160401b0302191690836001600160401b031602179055506112ee612d43565b7fe1fa3eb1a7d6742cc114a9e0bb7fea501c069f767320079521d8a45ef2b40bfb828260405161131f92919061571a565b60405180910390a15050565b600082611337816127c3565b604051632589867d60e01b8152600481018490526001600160a01b03851690632589867d90602401602060405180830381865afa15801561137c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a0919061573f565b91505b5092915050565b60006113b583611c0d565b82106114175760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016110c2565b506001600160a01b0391909116600090815260cb60209081526040808320938352929052205490565b600254610100900460ff16158080156114605750600254600160ff909116105b80611481575061146f30612da5565b158015611481575060025460ff166001145b6114e45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016110c2565b6002805460ff191660011790558015611507576002805461ff0019166101001790555b846001600160801b03166000036115315760405163fa6bfc6d60e01b815260040160405180910390fd5b611539612db4565b61158b6040518060400160405280601281526020017120bd3ab9379026281027232a103a37b5b2b760711b81525060405180604001604052806006815260200165262816a0ad2960d11b815250612deb565b611593612e1c565b60fd80546001600160a01b0319908116331790915560fe80546001600160a01b038c81169184169190911790915561010080548b831690841617905561010a80548a831690841617905560ff80549189169190921617905561010580546001600160401b03858116600160401b026001600160801b03199092168782161791909117600160801b600160c01b031916600160801b91851691909102179055611639612d43565b61010180546001600160801b0319166001600160801b038716179055801561169b576002805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b61116383838360405180602001604052806000815250612569565b61010581600381106116d257600080fd5b60049182820401919006600802915054906101000a90046001600160401b031681565b600061170060cd5490565b82106117635760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016110c2565b60cd828154811061177657611776615704565b90600052602060002001549050919050565b60016000819052602052600080516020615edc83398151915254600160401b90046001600160801b031690565b6117be3361286f565b836117c8816127c3565b816001600160801b03166000036117f25760405163cad66eef60e01b815260040160405180910390fd5b64e8d4a51000836001600160401b031611156118215760405163c6e3629b60e01b815260040160405180910390fd5b60008460028111156118355761183561525f565b0361185357604051635b10d6dd60e01b815260040160405180910390fd5b6001600160a01b0385166000908152610103602052604090208054610100600160c81b031916600160481b6001600160801b03851602610100600160481b031916176101006001600160401b03861602178082558590829060ff191660018360028111156118c3576118c361525f565b0217905550856001600160a01b0316600080516020615f1c8339815191528686866040516118f39392919061575c565b60405180910390a2505050505050565b610101546000906001600160801b039081169085161015611937576040516320d3137f60e01b815260040160405180910390fd5b61194084612e76565b61194984612e97565b610109549091506001600160a01b0316156119ca57610109546040516371de94bf60e01b81526001600160a01b03909116906371de94bf9061199790339085908990899089906004016157b8565b600060405180830381600087803b1580156119b157600080fd5b505af11580156119c5573d6000803e3d6000fd5b505050505b610102546119e890600160401b90046001600160401b03164261581b565b65ffffffffffff821660008181526101076020526040902080546001600160401b0319166001600160401b039390931692909217909155611a2a903390612f26565b8065ffffffffffff16336001600160a01b03167f04aea1979a2b879b0578efc9fb3e03cd6ae3bdc964f047e81f526ea2350967e586604051611a6c9190614f1b565b60405180910390a39392505050565b600080611a878361302d565b90506001600160a01b038116610f2f5760405162461bcd60e51b81526004016110c29061583b565b60fe54604051636396eb8d60e01b81526001600160a01b03858116600483015284811660248301526001600160e01b03198416604483015290911690636396eb8d90606401600060405180830381600087803b158015611b0e57600080fd5b505af1158015611b22573d6000803e3d6000fd5b50505050505050565b6369958ab960e01b611b3e333083611aaf565b6000611b4983613048565b6001810154909150600160c01b900460ff1615611b795760405163c076a8db60e01b815260040160405180910390fd5b600181015461010180546001600160801b0392831692601091611ba5918591600160801b90041661586d565b82546001600160801b039182166101009390930a92830291909202199091161790555060018101805460ff60c01b1916600160c01b17905560405183907f8f1ffb72cf9e5acc4eddafab2be9e2951d12377b9e1e4bdc7bd686b19c91fd8990600090a2505050565b60006001600160a01b038216611c775760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016110c2565b506001600160a01b03166000908152609c602052604090205490565b6000610f2f611ca0611788565b6001600160801b0316611cb28461308b565b5461010090046001600160401b0316906130a6565b6000600160281b65ffffffffffff83161080611d0c57506001611cef600160281b600261588d565b611cf991906158bb565b65ffffffffffff168265ffffffffffff16115b15611d1957506000919050565b65ffffffffffff82166000908152600160205260408120546001600160401b03169003611d4857506000919050565b600160008181526020829052600080516020615edc83398151915254909182918291611db5916001600160401b0316600160281b82611d8882600261588d565b611d9291906158bb565b6001600160281b81611da582600261588d565b611daf91906158bb565b8c6130c2565b65ffffffffffff83166000908152600160205260409020549295509093509150611df6908490849084908990600160401b90046001600160801b03166131de565b95945050505050565b33611e09816127c3565b6000610106600060fd60009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8791906158da565b6001600160a01b03908116825260208083019390935260409182016000908120610100548316825261010690945282812061010a54909216815291909120919250906001600160801b038088169087161115611f3f576000611ee9888861586d565b9050611ef78282600261332e565b611f038483600161332e565b611f0f8684600061332e565b611f1991906158f7565b611f2391906158f7565b611f2d908261586d565b9050611f39818761339d565b50611fb7565b6000611f4b878961586d565b6001600160801b03161115611fb7576000611f66878961586d565b9050611f74828260026134a8565b611f80848360016134a8565b611f8c868460006134a8565b611f9691906158f7565b611fa091906158f7565b611faa908261586d565b9050611fb5816134e4565b505b6001600160801b03871615611fd157611fd13389896135a0565b5050505050505050565b611fe43361286f565b806001600160801b031660000361200e5760405163fa6bfc6d60e01b815260040160405180910390fd5b61010180546001600160801b0319166001600160801b0383161790556040517f483032c7f41f1ba71455a09f574b92ba07ae933719975978f96f457d4c1c98d390610f8a908390614f1b565b6387757e3160e01b61206d333083611aaf565b6000858152610104602052604090206001810154600160801b90046001600160401b0316156120af576040516346a9b15d60e01b815260040160405180910390fd5b856000036120d0576040516371da551f60e11b815260040160405180910390fd5b42856001600160401b031610156120fa5760405163686c69fd60e01b815260040160405180910390fd5b600181018054600160801b600160c01b031916600160801b6001600160401b0388160217905560405186907f30d7667b0121b3761106ae782d6892de37229291507dbdfa69c66d9452b92e0c906118f390889088908890615917565b6035546001600160a01b031690565b61216e3361286f565b6101028054600160401b600160801b031916600160401b6001600160401b038416021790556040517f527dd140711eb0a9177d62725055c7fe5eb62351eabf406fd3f80886ba57ea3090610f8a908390614f07565b6060609a8054610fa490615654565b336121dc8161368e565b600082600f0b13156123545781831561223f57600084815261010460205260408120600101805483929061221a9084906001600160801b03166158f7565b92506101000a8154816001600160801b0302191690836001600160801b031602179055505b600061224a3361308b565b600181018054919250839160009061226c9084906001600160801b03166158f7565b92506101000a8154816001600160801b0302191690836001600160801b031602179055508161010160108282829054906101000a90046001600160801b03166122b591906158f7565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555060006122e3611788565b610101546001600160801b039182169250600160801b90041681108061232e5750815461231e9061010090046001600160401b0316826130a6565b60018301546001600160801b0316115b1561234c57604051634323a55560e01b815260040160405180910390fd5b505050505050565b61116333846123628561593c565b6135a0565b60fd546001600160a01b0316331461239257604051630636a15760e11b815260040160405180910390fd5b600061239d8261308b565b80546001600160c81b0319166901000000e8d4a51000011781556040519091506001600160a01b03831690600080516020615f1c833981519152906123ed9060019064e8d4a5100090829061575c565b60405180910390a25050565b6124043383836136cc565b5050565b63a882206160e01b61241b333083611aaf565b816001600160401b03166000036124455760405163686c69fd60e01b815260040160405180910390fd5b8161244f84613048565b60010160106101000a8154816001600160401b0302191690836001600160401b03160217905550827fd9d775beef68977fe4ecd3d35a3441b417b2876ea656d0a6bfb568f8ff56fa9b836040516124a69190614f07565b60405180910390a2505050565b336000908152610106602052604081206101025481546001600160401b03918216916124e791600160801b9004164261595f565b101561252a57610102548154612510916001600160401b0390811691600160801b90041661581b565b6040516318789e3d60e21b81526004016110c29190614f07565b8054600f0b60008113156125645781546001600160c01b031916600160801b426001600160401b0316021782559150816125643382612b68565b505090565b6125733383612b88565b61258f5760405162461bcd60e51b81526004016110c2906156b7565b61259b84848484613796565b50505050565b6000336125ad8161368e565b60006125b884613048565b6001810154909150600160c01b900460ff16156125e857604051639b83033760e01b815260040160405180910390fd5b60010154600160801b90046001600160401b031691505b50919050565b606061261082612ad5565b600061262760408051602081019091526000815290565b905060008151116126475760405180602001604052806000815250612672565b80612651846137c9565b604051602001612662929190615972565b6040516020818303038152906040525b9392505050565b6126823361286f565b61010b80546001600160a01b0319166001600160a01b0392909216919091179055565b6126ae3361286f565b61010b8054821515600160a01b0260ff60a01b199091161790556040517f6dc6f4e4d7d3d289169a014e3668556975c677dd5e793ef2e7877dfd39de8daa90610f8a90831515815260200190565b6127053361286f565b61010280546001600160401b0319166001600160401b0383161790556040517f27cd37fc700f6b98651e78d699d1bcc11b859e18a8ab4948c58dbfa51572e0c990610f8a908390614f07565b61275a3361286f565b61010080546001600160a01b0319166001600160a01b0383161790556040517f0a399af491b2850718a568553f7c18dbda624e511789ab3473b72a6a4d6d748b90610f8a908390614ec7565b600080546127be9060019065ffffffffffff166158bb565b905090565b60006127ce8261308b565b5460ff1660028111156127e3576127e361525f565b0361280157604051632b3907cb60e21b815260040160405180910390fd5b50565b61010b5460009081906001600160a01b031633146128355760405163f9940e8f60e01b815260040160405180910390fd5b64e8d4a5100061284c65ffffffffffff8516611a7b565b61010b54909350612867906001600160a01b0316858361385b565b915050915091565b806001600160a01b0316612881612156565b6001600160a01b0316146128015760405162461bcd60e51b815260206004820152602160248201527f4f776e61626c653a206163636f756e74206973206e6f7420746865206f776e656044820152603960f91b60648201526084016110c2565b60006128f48365ffffffffffff16611a7b565b6001600160a01b0316336001600160a01b03161461292557604051633ce20b5960e11b815260040160405180910390fd5b61267233848461385b565b6001600160a01b039182166000908152609e6020908152604080832093909416825291909152205460ff1690565b600061296984612e76565b61297e86868686612979876159a1565b613aa5565b9695505050505050565b600061299384612e76565b6129a333868686612979876159a1565b90505b949350505050565b6129b73361286f565b6001600160a01b038116612a1c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016110c2565b61280181613be7565b6000610f2f82613c39565b612a393361286f565b61010a80546001600160a01b0319166001600160a01b0383161790556040517fe19055046dfef573b2fa49ecf8a090264a874d696fa77fabec601b1c602e342a90610f8a908390614ec7565b60006001600160e01b031982166380ac58cd60e01b1480612ab657506001600160e01b03198216635b5e139f60e01b145b80610f2f57506301ffc9a760e01b6001600160e01b0319831614610f2f565b612ade81613c39565b6128015760405162461bcd60e51b81526004016110c29061583b565b6000818152609d6020526040902080546001600160a01b0319166001600160a01b0384169081179091558190612b2f82611a7b565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60ff54612404906001600160a01b0316836001600160801b038416613c56565b600080612b9483611a7b565b9050806001600160a01b0316846001600160a01b03161480612bbb5750612bbb8185612930565b806113a05750836001600160a01b0316612bd484611027565b6001600160a01b031614949350505050565b826001600160a01b0316612bf982611a7b565b6001600160a01b031614612c1f5760405162461bcd60e51b81526004016110c290615a28565b6001600160a01b038216612c815760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016110c2565b612c8c838383613d87565b826001600160a01b0316612c9f82611a7b565b6001600160a01b031614612cc55760405162461bcd60e51b81526004016110c290615a28565b6000818152609d6020908152604080832080546001600160a01b03199081169091556001600160a01b03878116808652609c8552838620805460001901905590871680865283862080546001019055868652609b9094528285208054909216841790915590518493600080516020615efc83398151915291a4505050565b64e8d4a51000612d536002613e3f565b612d5d6001613e3f565b612d676000613e3f565b612d71919061581b565b612d7b919061581b565b6001600160401b03161115612da35760405163cd3cb2bb60e01b815260040160405180910390fd5b565b6001600160a01b03163b151590565b600254610100900460ff16612ddb5760405162461bcd60e51b81526004016110c290615a6d565b612de3613e8c565b612da3613eb3565b600254610100900460ff16612e125760405162461bcd60e51b81526004016110c290615a6d565b6124048282613ee3565b6000805465ffffffffffff1916600160281b178082556001600160401b03600160301b90910416906006612e4f83615ab8565b91906101000a8154816001600160401b0302191690836001600160401b0316021790555050565b60ff54612801906001600160a01b031633306001600160801b038516613f23565b6000805465ffffffffffff168180612eae83615ae6565b91906101000a81548165ffffffffffff021916908365ffffffffffff1602179055509050612f218183600080600681819054906101000a90046001600160401b0316612ef990615ab8565b91906101000a8154816001600160401b0302191690836001600160401b031602179055614059565b919050565b6001600160a01b038216612f7c5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016110c2565b612f8581613c39565b15612fa25760405162461bcd60e51b81526004016110c290615b01565b612fae60008383613d87565b612fb781613c39565b15612fd45760405162461bcd60e51b81526004016110c290615b01565b6001600160a01b0382166000818152609c6020908152604080832080546001019055848352609b90915280822080546001600160a01b031916841790555183929190600080516020615efc833981519152908290a45050565b6000908152609b60205260409020546001600160a01b031690565b6000818152610104602052604081206001810154600160801b90046001600160401b03168203610f2f576040516387aeb83d60e01b815260040160405180910390fd5b6001600160a01b031660009081526101036020526040902090565b600064e8d4a510006130b88385615b37565b6126729190615b6c565b65ffffffffffff8416600090815260016020526040812054819081906001600160401b03808c16911610156130fe5750899150879050866131d0565b8365ffffffffffff168765ffffffffffff16036131225750829150849050836131d0565b600060026131308789615b80565b61313a9190615b9f565b90508465ffffffffffff168765ffffffffffff161115801561316c57508065ffffffffffff168565ffffffffffff1611155b156131975761318b888c898961318384600261588d565b8c878c6130c2565b919550935091506131ce565b6131c6888c89896131a984600261588d565b6131b4906001615b80565b6131bf876001615b80565b8c8c6130c2565b919550935091505b505b985098509895505050505050565b60008265ffffffffffff168665ffffffffffff16036131fe575080611df6565b600061320b87600261588d565b9050600061321a88600261588d565b613225906001615b80565b65ffffffffffff8084166000908152600160205260408082205492841682528120549293506001600160801b03600160401b92839004811693919261326c92041683615bc4565b905080600003613283576000945050505050611df6565b600081613299846001600160801b038a16615b37565b6132a39190615b6c565b9050600060026132b38b8d615b80565b6132bd9190615b9f565b90508865ffffffffffff168b65ffffffffffff16111580156132ef57508065ffffffffffff168965ffffffffffff1611155b1561330e57613301868c838c866131de565b9650505050505050611df6565b6133018561331d836001615b80565b8c8c613329878e61586d565b6131de565b60008061333b84846140a2565b855490915060009061335090600f0b836140e2565b86549091508290879060009061336a908490600f0b615bd7565b92506101000a8154816001600160801b030219169083600f0b6001600160801b0316021790555080925050509392505050565b600160008181526020829052600080516020615edc8339815191525490918291829161340a916001600160401b0316600160281b826133dd82600261588d565b6133e791906158bb565b6001600160281b816133fa82600261588d565b61340491906158bb565b8b6130c2565b6000549295509093509150600160301b90046001600160401b031661343d8484848861343586615ab8565b955085614120565b6134776001600160281b8161345382600261588d565b61345d91906158bb565b600160281b898b600061346f89615ab8565b985088614296565b600080546001600160401b03909216600160301b02600160301b600160701b03199092169190911790555050505050565b6000806134b584846140a2565b85549091506000906134ca90600f0b836144e8565b86549091508290879060009061336a908490600f0b615c04565b60016000819052602052600080516020615edc833981519152546001600160801b03808316600160401b9092041610612801576128016001600160281b8161352d82600261588d565b61353791906158bb565b600054600160281b906135549060019065ffffffffffff166158bb565b8660016000600681819054906101000a90046001600160401b031661357890615ab8565b91906101000a8154816001600160401b0302191690836001600160401b031602179055614296565b81156135f65760008281526101046020526040812060010180548392906135d19084906001600160801b031661586d565b92506101000a8154816001600160801b0302191690836001600160801b031602179055505b806136008461308b565b600101805460009061361c9084906001600160801b031661586d565b92506101000a8154816001600160801b0302191690836001600160801b031602179055508061010160108282829054906101000a90046001600160801b0316613665919061586d565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550505050565b60016136998261308b565b5460ff1660028111156136ae576136ae61525f565b1461280157604051630324ec9560e41b815260040160405180910390fd5b816001600160a01b0316836001600160a01b0316036137295760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b60448201526064016110c2565b6001600160a01b038381166000818152609e6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6137a1848484612be6565b6137ad84848484614516565b61259b5760405162461bcd60e51b81526004016110c290615c31565b606060006137d68361461b565b60010190506000816001600160401b038111156137f5576137f56153c9565b6040519080825280601f01601f19166020018201604052801561381f576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461382957509392505050565b65ffffffffffff82166000908152610107602052604081205442906001600160401b039081169082168111156138af576138958282615c83565b604051633ca8f33960e11b81526004016110c29190614f07565b610102546138cd90600160401b90046001600160401b03168361581b565b65ffffffffffff861660009081526101076020526040812080546001600160401b0319166001600160401b03939093169290921790915561390c611788565b9050600061391987611cc7565b905061392587876146f1565b610109549095506001600160a01b0316156139bd57610109546001600160a01b03166324bd902e8861395681611cc7565b6040516001600160e01b031960e085901b16815265ffffffffffff90921660048301526001600160801b03166024820152604401600060405180830381600087803b1580156139a457600080fd5b505af11580156139b8573d6000803e3d6000fd5b505050505b806001600160801b0316856001600160801b0316036139e7576139e78765ffffffffffff1661487e565b6001600160801b03851615613a505761010154613a1490600160801b90046001600160801b03168361586d565b6001600160801b0316856001600160801b03161115613a4657604051636bac637f60e01b815260040160405180910390fd5b613a508886612b68565b8665ffffffffffff16886001600160a01b03167f6cf9643c04552344f0a92825c122b0a19d0b217bbeec89f3444755e3899f854f87604051613a929190614f1b565b60405180910390a3505050509392505050565b600084613ab18161368e565b61010b54600160a01b900460ff1615613add5760405163847d3af960e01b815260040160405180910390fd5b836001600160401b03164210613b0657604051637a0ef04360e11b815260040160405180910390fd5b613b0f8661308b565b546001600160801b03600160481b90910481169086161015613b4457604051632fb3e82760e01b815260040160405180910390fd5b82516001600160a01b0316613b6757613b5b612156565b6001600160a01b031683525b60405163d9c92bd760e01b81526001600160a01b0387169063d9c92bd790613b97908a9089908890600401615ca3565b6020604051808303816000875af1158015613bb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bda9190615d04565b91505b5095945050505050565b603580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080613c458361302d565b6001600160a01b0316141592915050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691613cb29190615d1d565b6000604051808303816000865af19150503d8060008114613cef576040519150601f19603f3d011682016040523d82523d6000602084013e613cf4565b606091505b5091509150818015613d1e575080511580613d1e575080806020019051810190613d1e9190615d39565b613d805760405162461bcd60e51b815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201526c185b9cd9995c8819985a5b1959609a1b60648201526084016110c2565b5050505050565b6001600160a01b038316613de257613ddd8160cd8054600083815260ce60205260408120829055600182018355919091527f83978b4c69c48dd978ab43fe30f077615294f938fb7f936d9eb340e51ea7db2e0155565b613e05565b816001600160a01b0316836001600160a01b031614613e0557613e05838261490d565b6001600160a01b038216613e1c57611163816149aa565b826001600160a01b0316826001600160a01b031614611163576111638282614a59565b6000610105826002811115613e5657613e5661525f565b60038110613e6657613e66615704565b600491828204019190066008029054906101000a90046001600160401b03169050919050565b600254610100900460ff16612da35760405162461bcd60e51b81526004016110c290615a6d565b600254610100900460ff16613eda5760405162461bcd60e51b81526004016110c290615a6d565b612da333613be7565b600254610100900460ff16613f0a5760405162461bcd60e51b81526004016110c290615a6d565b6099613f168382615d9c565b50609a6111638282615d9c565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b1790529151600092839290881691613f879190615d1d565b6000604051808303816000865af19150503d8060008114613fc4576040519150601f19603f3d011682016040523d82523d6000602084013e613fc9565b606091505b5091509150818015613ff3575080511580613ff3575080806020019051810190613ff39190615d39565b61234c5760405162461bcd60e51b815260206004820152603160248201527f5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472604482015270185b9cd9995c919c9bdb4819985a5b1959607a1b60648201526084016110c2565b61406584848484614a9d565b8365ffffffffffff1660011461259b5761259b60018565ffffffffffff161161408f57600161409a565b61409a600286615b9f565b848484614059565b60006126726140d46140cf856001600160801b03166140c086613e3f565b6001600160401b0316906130a6565b614b9a565b6001600160801b0316614bcb565b60008083600f0b12156141195760006140fb8385615bd7565b9050600081600f0b1361410f576000614111565b805b915050610f2f565b5080610f2f565b8165ffffffffffff168565ffffffffffff160315613d8057600061414586600261588d565b9050600061415487600261588d565b61415f906001615b80565b65ffffffffffff808916600090815260016020526040808220548684168352818320549385168352908220549394506001600160801b03600160401b91829004811694938290048116939190910416906141b98284615bc4565b9050806000036141ce57505050505050613d80565b6000816141e4856001600160801b038816615b37565b6141ee9190615b6c565b90506141fb87828a614c01565b61420f86614209838861586d565b8a614c01565b6000600261421d8c8e615b80565b6142279190615b9f565b90508965ffffffffffff168c65ffffffffffff161115801561425957508065ffffffffffff168a65ffffffffffff1611155b156142705761426b888d838d8d614120565b614287565b6142878761427f836001615b80565b8d8d8d614120565b50505050505050505050505050565b8465ffffffffffff168765ffffffffffff161480156142c457508365ffffffffffff168665ffffffffffff16145b806142de57508565ffffffffffff168765ffffffffffff16145b156142f4576142ef88848484614a9d565b611fd1565b60006002614302888a615b80565b61430c9190615b9f565b90508465ffffffffffff168865ffffffffffff161115801561433e57508065ffffffffffff168565ffffffffffff1611155b156143625761435d6143518a600261588d565b89838989898989614296565b6144dc565b60006001816143728c600261588d565b65ffffffffffff1681526020810191909152604001600090812054600160401b90046001600160801b0316915084156143ac5760006143e2565b6143e26143ba8c600261588d565b6143c5906001615b80565b6143d0856001615b80565b8b6143dc8b6001615b80565b8d614c7a565b600160006143f18e600261588d565b6143fc906001615b80565b65ffffffffffff16815260208101919091526040016000205461442f9190600160401b90046001600160801b031661586d565b6001600160801b0316905060006144468284615bc4565b9050806000036144595750505050611fd1565b60008161446f856001600160801b038b16615b37565b6144799190615b6c565b90506144956144898e600261588d565b8d878d89868d8d614296565b6144d76144a38e600261588d565b6144ae906001615b80565b6144b9876001615b80565b8d6144c5896001615b80565b8d6144d0878f61586d565b8d8d614296565b505050505b61169b89858585614a9d565b60008083600f0b1261450d5781600f0b83600f0b136145075782612672565b81612672565b50600092915050565b600061452a846001600160a01b0316612da5565b1561461357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290614561903390899088908890600401615e5b565b6020604051808303816000875af192505050801561459c575060408051601f3d908101601f1916820190925261459991810190615e8e565b60015b6145f9573d8080156145ca576040519150601f19603f3d011682016040523d82523d6000602084013e6145cf565b606091505b5080516000036145f15760405162461bcd60e51b81526004016110c290615c31565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506129a6565b5060016129a6565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b831061465a5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b8310614684576904ee2d6d415b85acef8160201b830492506020015b662386f26fc1000083106146a257662386f26fc10000830492506010015b6305f5e10083106146ba576305f5e100830492506008015b61271083106146ce57612710830492506004015b606483106146e0576064830492506002015b600a8310610f2f5760010192915050565b65ffffffffffff82166000908152600160205260408120546001600160401b0316810361473157604051631b2862ff60e21b815260040160405180910390fd5b64e8d4a510008264ffffffffff16111561475e57604051635a60b01360e01b815260040160405180910390fd5b600160008181526020829052600080516020615edc833981519152549091829182916147cb916001600160401b0316600160281b8261479e82600261588d565b6147a891906158bb565b6001600160281b816147bb82600261588d565b6147c591906158bb565b8d6130c2565b6000549295509093509150600160301b90046001600160401b03166147f68484848a61343586615ab8565b65ffffffffffff87166000908152600160205260409020546148309064ffffffffff881690600160401b90046001600160801b03166130a6565b945061484a8786600161484285615ab8565b945084614059565b600080546001600160401b03909216600160301b02600160301b600160701b03199092169190911790555091949350505050565b600061488982611a7b565b905061489781600084613d87565b6148a082611a7b565b6000838152609d6020908152604080832080546001600160a01b03199081169091556001600160a01b038516808552609c84528285208054600019019055878552609b90935281842080549091169055519293508492600080516020615efc833981519152908390a45050565b6000600161491a84611c0d565b614924919061595f565b600083815260cc6020526040902054909150808214614977576001600160a01b038416600090815260cb60209081526040808320858452825280832054848452818420819055835260cc90915290208190555b50600091825260cc602090815260408084208490556001600160a01b03909416835260cb81528383209183525290812055565b60cd546000906149bc9060019061595f565b600083815260ce602052604081205460cd80549394509092849081106149e4576149e4615704565b906000526020600020015490508060cd8381548110614a0557614a05615704565b600091825260208083209091019290925582815260ce909152604080822084905585825281205560cd805480614a3d57614a3d615eab565b6001900381819060005260206000200160009055905550505050565b6000614a6483611c0d565b6001600160a01b03909316600090815260cb60209081526040808320868452825280832085905593825260cc9052919091209190915550565b65ffffffffffff8416600090815260016020526040902080546001600160401b0319166001600160401b0383161790558115614b365765ffffffffffff841660009081526001602052604090208054849190600890614b0d908490600160401b90046001600160801b031661586d565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555061259b565b65ffffffffffff841660009081526001602052604090208054849190600890614b70908490600160401b90046001600160801b03166158f7565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555050505050565b60006001600160801b03821115614bc7576003604051639b3137df60e01b81526004016110c29190615ec1565b5090565b600060016001607f1b036001600160801b0383161115614bc7576001604051639b3137df60e01b81526004016110c29190615ec1565b65ffffffffffff83166000908152600160205260409020546001600160801b03838116600160401b90920416146111635765ffffffffffff8316600090815260016020526040902080546001600160801b038416600160401b026001600160c01b03199091166001600160401b03841617179055505050565b60008265ffffffffffff168565ffffffffffff16148015614caa57508165ffffffffffff168465ffffffffffff16145b80614cc457508365ffffffffffff168565ffffffffffff16145b15614cf7575065ffffffffffff8516600090815260016020526040902054600160401b90046001600160801b0316611df6565b60006002614d058688615b80565b614d0f9190615b9f565b90508365ffffffffffff168665ffffffffffff1611158015614d4157508065ffffffffffff168465ffffffffffff1611155b15614db057614d5d614d5488600261588d565b87838785614c7a565b614d6790836158f7565b9150614d9f614d7788600261588d565b614d82906001615b80565b614d8d836001615b80565b87614d99856001615b80565b87614c7a565b614da990836158f7565b9150613bdd565b614ddc614dbe88600261588d565b614dc9906001615b80565b614dd4836001615b80565b878787614c7a565b613bda90836158f7565b6001600160e01b03198116811461280157600080fd5b600060208284031215614e0e57600080fd5b813561267281614de6565b6001600160a01b038116811461280157600080fd5b600060208284031215614e4057600080fd5b813561267281614e19565b60005b83811015614e66578181015183820152602001614e4e565b50506000910152565b60008151808452614e87816020860160208601614e4b565b601f01601f19169290920160200192915050565b6020815260006126726020830184614e6f565b600060208284031215614ec057600080fd5b5035919050565b6001600160a01b0391909116815260200190565b60008060408385031215614eee57600080fd5b8235614ef981614e19565b946020939093013593505050565b6001600160401b0391909116815260200190565b6001600160801b0391909116815260200190565b600080600060608486031215614f4457600080fd5b8335614f4f81614e19565b92506020840135614f5f81614e19565b929592945050506040919091013590565b6003811061280157600080fd5b80356001600160401b0381168114612f2157600080fd5b60008060408385031215614fa757600080fd5b8235614fb281614f70565b9150614fc060208401614f7d565b90509250929050565b6001600160801b038116811461280157600080fd5b600080600080600080600080610100898b031215614ffb57600080fd5b883561500681614e19565b9750602089013561501681614e19565b9650604089013561502681614e19565b9550606089013561503681614e19565b9450608089013561504681614fc9565b935061505460a08a01614f7d565b925061506260c08a01614f7d565b915061507060e08a01614f7d565b90509295985092959890939650565b6000806000806080858703121561509557600080fd5b84356150a081614e19565b935060208501356150b081614f70565b92506150be60408601614f7d565b915060608501356150ce81614fc9565b939692955090935050565b60008083601f8401126150eb57600080fd5b5081356001600160401b0381111561510257600080fd5b60208301915083602082850101111561511a57600080fd5b9250929050565b60008060006040848603121561513657600080fd5b833561514181614fc9565b925060208401356001600160401b0381111561515c57600080fd5b615168868287016150d9565b9497909650939450505050565b60008060006060848603121561518a57600080fd5b833561519581614e19565b925060208401356151a581614e19565b915060408401356151b581614de6565b809150509250925092565b803565ffffffffffff81168114612f2157600080fd5b6000602082840312156151e857600080fd5b612672826151c0565b6000806000806080858703121561520757600080fd5b84359350602085013561521981614fc9565b9250604085013561522981614fc9565b9150615237606086016151c0565b905092959194509250565b60006020828403121561525457600080fd5b813561267281614fc9565b634e487b7160e01b600052602160045260246000fd5b600381106128015761280161525f565b6080810161529286615275565b9481526001600160401b039390931660208401526001600160801b0391821660408401521660609091015290565b600080600080606085870312156152d657600080fd5b843593506152e660208601614f7d565b925060408501356001600160401b0381111561530157600080fd5b61530d878288016150d9565b95989497509550505050565b60006020828403121561532b57600080fd5b61267282614f7d565b6000806040838503121561534757600080fd5b82359150602083013580600f0b811461535f57600080fd5b809150509250929050565b801515811461280157600080fd5b6000806040838503121561538b57600080fd5b823561539681614e19565b9150602083013561535f8161536a565b600080604083850312156153b957600080fd5b82359150614fc060208401614f7d565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126153f057600080fd5b81356001600160401b038082111561540a5761540a6153c9565b604051601f8301601f19908116603f01168101908282118183101715615432576154326153c9565b8160405283815286602085880101111561544b57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806000806080858703121561548157600080fd5b843561548c81614e19565b9350602085013561549c81614e19565b92506040850135915060608501356001600160401b038111156154be57600080fd5b6154ca878288016153df565b91505092959194509250565b6000602082840312156154e857600080fd5b81356126728161536a565b6000806040838503121561550657600080fd5b61550f836151c0565b9150602083013564ffffffffff8116811461535f57600080fd5b6000806040838503121561553c57600080fd5b823561554781614e19565b9150602083013561535f81614e19565b6000606082840312156125ff57600080fd5b600080600080600060a0868803121561558157600080fd5b853561558c81614e19565b9450602086013561559c81614e19565b935060408601356155ac81614fc9565b92506155ba60608701614f7d565b915060808601356001600160401b038111156155d557600080fd5b6155e188828901615557565b9150509295509295909350565b6000806000806080858703121561560457600080fd5b843561560f81614e19565b9350602085013561561f81614fc9565b925061562d60408601614f7d565b915060608501356001600160401b0381111561564857600080fd5b6154ca87828801615557565b600181811c9082168061566857607f821691505b6020821081036125ff57634e487b7160e01b600052602260045260246000fd5b6000806040838503121561569b57600080fd5b82516156a681614e19565b602084015190925061535f81614fc9565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6040810161572784615275565b9281526001600160401b039190911660209091015290565b60006020828403121561575157600080fd5b815161267281614fc9565b6060810161576985615275565b9381526001600160401b039290921660208301526001600160801b031660409091015290565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038616815265ffffffffffff851660208201526001600160801b03841660408201526080606082018190526000906157fa908301848661578f565b979650505050505050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b038181168382160190808211156113a3576113a3615805565b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b6001600160801b038281168282160390808211156113a3576113a3615805565b600065ffffffffffff808316818516818304811182151516156158b2576158b2615805565b02949350505050565b65ffffffffffff8281168282160390808211156113a3576113a3615805565b6000602082840312156158ec57600080fd5b815161267281614e19565b6001600160801b038181168382160190808211156113a3576113a3615805565b6001600160401b03841681526040602082018190526000906129a3908301848661578f565b6000600f82900b6001607f1b810161595657615956615805565b60000392915050565b81810381811115610f2f57610f2f615805565b60008351615984818460208801614e4b565b835190830190615998818360208801614e4b565b01949350505050565b6000606082360312156159b357600080fd5b604051606081016001600160401b0380821183831017156159d6576159d66153c9565b81604052843591506159e782614e19565b8183526159f660208601614f7d565b60208401526040850135915080821115615a0f57600080fd5b50615a1c368286016153df565b60408301525092915050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60006001600160401b038281166002600160401b03198101615adc57615adc615805565b6001019392505050565b600065ffffffffffff808316818103615adc57615adc615805565b6020808252601c908201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b604082015260600190565b6000816000190483118215151615615b5157615b51615805565b500290565b634e487b7160e01b600052601260045260246000fd5b600082615b7b57615b7b615b56565b500490565b65ffffffffffff8181168382160190808211156113a3576113a3615805565b600065ffffffffffff80841680615bb857615bb8615b56565b92169190910492915050565b80820180821115610f2f57610f2f615805565b600f81810b9083900b0160016001607f1b03811360016001607f1b031982121715610f2f57610f2f615805565b600f82810b9082900b0360016001607f1b0319811260016001607f1b0382131715610f2f57610f2f615805565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160401b038281168282160390808211156113a3576113a3615805565b6001600160a01b0384811682526001600160801b03841660208084019190915260606040808501829052855190931681850152908401516001600160401b031660808401529083015160a083019190915260009061297e60c0840182614e6f565b600060208284031215615d1657600080fd5b5051919050565b60008251615d2f818460208701614e4b565b9190910192915050565b600060208284031215615d4b57600080fd5b81516126728161536a565b601f82111561116357600081815260208120601f850160051c81016020861015615d7d5750805b601f850160051c820191505b8181101561234c57828155600101615d89565b81516001600160401b03811115615db557615db56153c9565b615dc981615dc38454615654565b84615d56565b602080601f831160018114615dfe5760008415615de65750858301515b600019600386901b1c1916600185901b17855561234c565b600085815260208120601f198616915b82811015615e2d57888601518255948401946001909101908401615e0e565b5085821015615e4b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061297e90830184614e6f565b600060208284031215615ea057600080fd5b815161267281614de6565b634e487b7160e01b600052603160045260246000fd5b6020810160048310615ed557615ed561525f565b9190529056fecc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efd108a4f6fc411b0a4df994fcad4ff1051f5d37f74abaf52fb1e1e2c54b32880fa264697066735822122010f2fe33e875a11890ba7210197280f3c56c7a0a31fab8143e05854213aed90864736f6c63430008100033