0 txs
0 calls
constructor
constructor()
functions
acquiredStarterMiner
viewfunction acquiredStarterMiner(address) view returns (bool)
blocksUntilNextHalving
viewfunction blocksUntilNextHalving() view returns (uint256)
burnPct
viewfunction burnPct() view returns (uint256)
cooldown
viewfunction cooldown() view returns (uint256)
cumulativeEthermaxPerHash
viewfunction cumulativeEthermaxPerHash() view returns (uint256)
dekalitRektoshi
viewfunction dekalitRektoshi() view returns (address)
etherMax
viewfunction etherMax() view returns (address)
facilities
viewfunction facilities(uint256) view returns (uint256 maxMiners, uint256 totalPowerOutput, uint256 cost, bool inProduction, uint256 x, uint256 y)
facilityCount
viewfunction facilityCount() view returns (uint256)
facilityFeeRecipient
viewfunction facilityFeeRecipient() view returns (address)
facilityFees
viewfunction facilityFees(uint256) view returns (uint256)
getEthermaxPerBlock
viewfunction getEthermaxPerBlock() view returns (uint256)
getPlayerMinersPaginated
viewfunction getPlayerMinersPaginated(address player, uint256 startIndex, uint256 size) view returns (tuple[])
getReferrals
viewfunction getReferrals(address referrer) view returns (address[])
HALVING_INTERVAL
viewfunction HALVING_INTERVAL() view returns (uint256)
INITIAL_ETHERMAX_PER_BLOCK
viewfunction INITIAL_ETHERMAX_PER_BLOCK() view returns (uint256)
initialFacilityPrice
viewfunction initialFacilityPrice() view returns (uint256)
initializedStarterFacility
viewfunction initializedStarterFacility(address) view returns (bool)
lastFacilityUpgradeTimestamp
viewfunction lastFacilityUpgradeTimestamp(address) view returns (uint256)
lastRewardBlock
viewfunction lastRewardBlock() view returns (uint256)
miners
viewfunction miners(uint256) view returns (uint256 minerIndex, uint256 x, uint256 y, uint256 id, uint256 hashrate, uint256 powerConsumption, uint256 cost, bool inProduction)
minerSecondHandMarket
viewfunction minerSecondHandMarket(uint256) view returns (uint256)
miningHasStarted
viewfunction miningHasStarted() view returns (bool)
owner
viewfunction owner() view returns (address)
ownerToFacility
viewfunction ownerToFacility(address) view returns (uint256 facilityIndex, uint256 maxMiners, uint256 totalPowerOutput, uint256 currMiners, uint256 currPowerOutput, uint256 x, uint256 y)
pendingRewards
viewfunction pendingRewards(address player) view returns (uint256)
playerEthermaxDebt
viewfunction playerEthermaxDebt(address) view returns (uint256)
playerEthermaxPerBlock
viewfunction playerEthermaxPerBlock(address player) view returns (uint256)
playerHashrate
viewfunction playerHashrate(address) view returns (uint256)
playerMinersId
viewfunction playerMinersId(uint256) view returns (uint256 minerIndex, uint256 x, uint256 y, uint256 id, uint256 hashrate, uint256 powerConsumption, uint256 cost, bool inProduction)
playerMinersOwned
viewfunction playerMinersOwned(address) view returns (uint256 _spacer)
playerOccupiedCoords
viewfunction playerOccupiedCoords(address, uint256, uint256) view returns (bool)
playerPendingRewards
viewfunction playerPendingRewards(address) view returns (uint256)
referralBonusPaid
viewfunction referralBonusPaid(address) view returns (uint256)
referralFee
viewfunction referralFee() view returns (uint256)
referrals
viewfunction referrals(address) view returns (address)
referredUsers
viewfunction referredUsers(address, uint256) view returns (address)
REWARDS_PRECISION
viewfunction REWARDS_PRECISION() view returns (uint256)
startBlock
viewfunction startBlock() view returns (uint256)
STARTER_FACILITY_INDEX
viewfunction STARTER_FACILITY_INDEX() view returns (uint256)
STARTER_MINER_INDEX
viewfunction STARTER_MINER_INDEX() view returns (uint256)
timeUntilNextFacilityUpgrade
viewfunction timeUntilNextFacilityUpgrade(address player) view returns (uint256)
totalHashrate
viewfunction totalHashrate() view returns (uint256)
uniqueMinerCount
viewfunction uniqueMinerCount() view returns (uint256)
addFacility
nonpayablefunction addFacility(uint256 maxMiners, uint256 totalPowerOutput, uint256 cost, bool inProduction, uint256 x, uint256 y)
addMiner
nonpayablefunction addMiner(uint256 hashrate, uint256 powerConsumption, uint256 cost, bool inProduction)
addSecondaryMarketForMiner
nonpayablefunction addSecondaryMarketForMiner(uint256 minerIndex, uint256 price)
buyMiner
nonpayablefunction buyMiner(uint256 minerIndex, uint256 x, uint256 y)
buyNewFacility
nonpayablefunction buyNewFacility()
changeFacilityCost
nonpayablefunction changeFacilityCost(uint256 facilityIndex, uint256 newCost)
changeMinerCost
nonpayablefunction changeMinerCost(uint256 minerIndex, uint256 newCost)
claimRewards
nonpayablefunction claimRewards()
getFreeStarterMiner
nonpayablefunction getFreeStarterMiner(uint256 x, uint256 y)
purchaseInitialFacility
payablefunction purchaseInitialFacility(address referrer) payable
renounceOwnership
nonpayablefunction renounceOwnership()
sellMiner
nonpayablefunction sellMiner(uint256 minerId)
setBurnPct
nonpayablefunction setBurnPct(uint256 burn)
setCooldown
nonpayablefunction setCooldown(uint256 _cooldown)
setDekalitRektoshi
nonpayablefunction setDekalitRektoshi(address _dekalitRektoshi)
setEthermax
nonpayablefunction setEthermax(address _etherMax)
setFacilityFee
nonpayablefunction setFacilityFee(uint256 facilityIndex, uint256 fee)
setFacilityFeeRecipient
nonpayablefunction setFacilityFeeRecipient(address _facilityFeeRecipient)
setInitialFacilityPrice
nonpayablefunction setInitialFacilityPrice(uint256 _initialPrice)
setReferralFee
nonpayablefunction setReferralFee(uint256 fee)
toggleFacilityProduction
nonpayablefunction toggleFacilityProduction(uint256 facilityIndex, bool inProduction)
toggleMinerProduction
nonpayablefunction toggleMinerProduction(uint256 minerIndex, bool inProduction)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
withdraw
nonpayablefunction withdraw()
withdrawEthermax
nonpayablefunction withdrawEthermax(uint256 amt)
events
FacilityBought
event FacilityBought(address indexed player, uint256 facilityIndex, uint256 cost)
FacilityCostChanged
event FacilityCostChanged(uint256 facilityIndex, uint256 newCost)
FacilityProductionToggled
event FacilityProductionToggled(uint256 facilityIndex, bool inProduction)
InitialFacilityPurchased
event InitialFacilityPurchased(address indexed player)
MinerBought
event MinerBought(address indexed player, uint256 minerIndex, uint256 cost, uint256 minerId, uint256 x, uint256 y)
MinerCostChanged
event MinerCostChanged(uint256 minerIndex, uint256 newCost)
MinerProductionToggled
event MinerProductionToggled(uint256 minerIndex, bool inProduction)
MinerSecondaryMarketAdded
event MinerSecondaryMarketAdded(uint256 minerIndex, uint256 price)
MinerSold
event MinerSold(address indexed player, uint256 minerIndex, uint256 price, uint256 minerId, uint256 x, uint256 y)
MiningStarted
event MiningStarted(uint256 startBlock)
NewFacilityAdded
event NewFacilityAdded(uint256 facilityIndex, uint256 totalPowerOutput, uint256 cost, bool inProduction, uint256 x, uint256 y)
NewMinerAdded
event NewMinerAdded(uint256 minerIndex, uint256 hashrate, uint256 powerConsumption, uint256 cost, bool inProduction)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PlayerHashrateDecreased
event PlayerHashrateDecreased(address indexed player, uint256 hashrate, uint256 pendingRewards)
PlayerHashrateIncreased
event PlayerHashrateIncreased(address indexed player, uint256 hashrate, uint256 pendingRewards)
RewardsClaimed
event RewardsClaimed(address indexed player, uint256 amount)
errors
AlreadyAtMaxFacility
error AlreadyAtMaxFacility()
AlreadyPurchasedInitialFactory
error AlreadyPurchasedInitialFactory()
CantBuyNewFacilityYet
error CantBuyNewFacilityYet()
CantModifyStarterFacility
error CantModifyStarterFacility()
CantModifyStarterMiner
error CantModifyStarterMiner()
FacilityDimensionsInvalid
error FacilityDimensionsInvalid()
FacilityInadequatePowerOutput
error FacilityInadequatePowerOutput()
GreatDepression
error GreatDepression()
IncorrectValue
error IncorrectValue()
IndexOutOfBounds
error IndexOutOfBounds()
InvalidFacilityIndex
error InvalidFacilityIndex()
InvalidFee
error InvalidFee()
InvalidMinerCoordinates
error InvalidMinerCoordinates()
InvalidMinerIndex
error InvalidMinerIndex()
InvalidPowerOutput
error InvalidPowerOutput()
InvalidReferrer
error InvalidReferrer()
MinerNotInProduction
error MinerNotInProduction()
MiningHasntStarted
error MiningHasntStarted()
NeedToInitializeFacility
error NeedToInitializeFacility()
NewFacilityNotInProduction
error NewFacilityNotInProduction()
NonExistentFacility
error NonExistentFacility()
NonExistentMiner
error NonExistentMiner()
NoRewardsPending
error NoRewardsPending()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
PlayerDoesNotOwnMiner
error PlayerDoesNotOwnMiner()
StarterMinerAlreadyAcquired
error StarterMinerAlreadyAcquired()
TooPoor
error TooPoor()
WithdrawFailed
error WithdrawFailed()
creation bytecode
0x60c060405262015180600b556658d15e17628000600c55670a688906bd8b0000600d55662386f26fc100006020553480156200003a57600080fd5b5033806200006257604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6200006d8162000204565b506006600081546200007f9062000254565b9190508190556080818152505060405180610100016040528060805181526020016000198152602001600019815260200160001981526020016064815260200160018152602001600019815260200160001515815250601160006080518152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e08201518160070160006101000a81548160ff0219169083151502179055509050506040518060c0016040528060048152602001601c81526020016000198152602001600015158152602001600281526020016002815250601260006007600081546200019e9062000254565b918290555081526020808201929092526040908101600020835181559183015160018301558201516002820155606082015160038201805460ff19169115159190911790556080820151600482015560a09182015160059091015560075490526200027c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000600182016200027557634e487b7160e01b600052601160045260246000fd5b5060010190565b60805160a051613c79620002d36000396000818161086001528181611e3d015281816124e30152612a9e015260008181610e4901528181611a2e01528181611c3e0152818161242201526129920152613c796000f3fe6080604052600436106103fa5760003560e01c806372779cba11610213578063aded46db11610123578063dd6a4c65116100ab578063e2b15d8c1161007a578063e2b15d8c14610dd6578063e92820e614610e17578063ea26fa2d14610e37578063eef3b2d014610e6b578063f2fde38b14610e8157600080fd5b8063dd6a4c6514610ca2578063df1e3b7f14610d40578063e041dda514610d60578063e0d152af14610d7557600080fd5b8063c51a2bba116100f2578063c51a2bba14610bf5578063ca18117014610c15578063cbea07ce14610c45578063d147129614610c62578063d9ba62b314610c8257600080fd5b8063aded46db14610b7f578063bfe5990d14610b95578063c243589414610bb5578063c3573e3c14610bd557600080fd5b80638da5cb5b116101a65780639ca423b3116101755780639ca423b314610ad35780639f715f6014610b09578063a867a99114610b29578063a9f8d18114610b49578063aa9dc65414610b5f57600080fd5b80638da5cb5b14610a455780638dfc393314610a6357806394fc19e414610aa35780639618b31c14610abd57600080fd5b8063811c5089116101e2578063811c5089146109d357806384ae2bc6146109f35780638685e3f214610a0957806386b3cd2614610a2957600080fd5b806372779cba1461095a578063787a08a6146109705780637e08b5b3146109865780637fdaa1cd146109b357600080fd5b80633e89bb131161030e57806359058ad1116102a15780636756a1c7116102705780636756a1c7146108cf57806369f0ee33146108ef5780636d12ff521461090f578063713494d714610925578063715018a61461094557600080fd5b806359058ad11461084e5780635a5ccef0146108825780635c7421e3146108985780635fd9491d146108b857600080fd5b8063476e2e66116102dd578063476e2e661461076b57806348cd4cb11461078b5780634fc3f41a146107a1578063542f9e6a146107c157600080fd5b80633e89bb13146106d157806340f5da9e146106e457806341a0894d14610711578063453dfbfb1461073e57600080fd5b8063281017061161039157806332af7cae1161036057806332af7cae14610622578063372500ab1461065a5780633a8ee01e1461066f5780633b6e41a41461068f5780633ccfd60b146106bc57600080fd5b806328101706146105b85780632fc96ce6146105d857806330775a94146105ed57806331d7a2621461060257600080fd5b80631a267cd2116103cd5780631a267cd2146104f65780631e57057d14610531578063234f3f1b1461055e57806324b4464e1461058b57600080fd5b80630e55b68e146103ff57806310d9675914610421578063157e204c146104a957806315cfde41146104d6575b600080fd5b34801561040b57600080fd5b5061041f61041a3660046137a3565b610ea1565b005b34801561042d57600080fd5b5061047561043c3660046137be565b60126020526000908152604090208054600182015460028301546003840154600485015460059095015493949293919260ff9091169186565b6040805196875260208701959095529385019290925215156060840152608083015260a082015260c0015b60405180910390f35b3480156104b557600080fd5b506104c96104c43660046137d7565b610ecb565b6040516104a0919061380a565b3480156104e257600080fd5b5061041f6104f13660046137a3565b61107d565b34801561050257600080fd5b506105236105113660046137a3565b601d6020526000908152604090205481565b6040519081526020016104a0565b34801561053d57600080fd5b5061052361054c3660046137a3565b60136020526000908152604090205481565b34801561056a57600080fd5b506105236105793660046137a3565b600e6020526000908152604090205481565b34801561059757600080fd5b506105236105a63660046137be565b60186020526000908152604090205481565b3480156105c457600080fd5b506105236105d33660046137a3565b6110a7565b3480156105e457600080fd5b50610523611121565b3480156105f957600080fd5b5061041f611198565b34801561060e57600080fd5b5061052361061d3660046137a3565b6114e1565b34801561062e57600080fd5b50600154610642906001600160a01b031681565b6040516001600160a01b0390911681526020016104a0565b34801561066657600080fd5b5061041f6116ea565b34801561067b57600080fd5b5061041f61068a366004613899565b6119db565b34801561069b57600080fd5b506105236106aa3660046137be565b601e6020526000908152604090205481565b3480156106c857600080fd5b5061041f611cbe565b61041f6106df3660046137a3565b611d42565b3480156106f057600080fd5b506105236106ff3660046137a3565b600f6020526000908152604090205481565b34801561071d57600080fd5b5061073161072c3660046137a3565b611f11565b6040516104a091906138bb565b34801561074a57600080fd5b506105236107593660046137a3565b60106020526000908152604090205481565b34801561077757600080fd5b5061041f610786366004613908565b611f87565b34801561079757600080fd5b5061052360035481565b3480156107ad57600080fd5b5061041f6107bc3660046137be565b612391565b3480156107cd57600080fd5b506108196107dc3660046137a3565b6015602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949593949293919290919087565b604080519788526020880196909652948601939093526060850191909152608084015260a083015260c082015260e0016104a0565b34801561085a57600080fd5b506105237f000000000000000000000000000000000000000000000000000000000000000081565b34801561088e57600080fd5b5061052360095481565b3480156108a457600080fd5b5061041f6108b3366004613899565b61239e565b3480156108c457600080fd5b506105236213c68081565b3480156108db57600080fd5b5061041f6108ea366004613899565b6123f5565b3480156108fb57600080fd5b5061041f61090a366004613899565b6124b6565b34801561091b57600080fd5b5061052360075481565b34801561093157600080fd5b5061041f6109403660046137be565b61256e565b34801561095157600080fd5b5061041f6125a4565b34801561096657600080fd5b5061052360065481565b34801561097c57600080fd5b50610523600b5481565b34801561099257600080fd5b506105236109a13660046137a3565b601a6020526000908152604090205481565b3480156109bf57600080fd5b50600254610642906001600160a01b031681565b3480156109df57600080fd5b506105236109ee3660046137a3565b6125b8565b3480156109ff57600080fd5b50610523600c5481565b348015610a1557600080fd5b5061041f610a24366004613942565b612621565b348015610a3557600080fd5b50610523670de0b6b3a764000081565b348015610a5157600080fd5b506000546001600160a01b0316610642565b348015610a6f57600080fd5b50610a93610a7e3660046137a3565b60176020526000908152604090205460ff1681565b60405190151581526020016104a0565b348015610aaf57600080fd5b50600454610a939060ff1681565b348015610ac957600080fd5b50610523600d5481565b348015610adf57600080fd5b50610642610aee3660046137a3565b601b602052600090815260409020546001600160a01b031681565b348015610b1557600080fd5b5061041f610b24366004613995565b6127d8565b348015610b3557600080fd5b50601f54610642906001600160a01b031681565b348015610b5557600080fd5b5061052360085481565b348015610b6b57600080fd5b5061041f610b7a3660046137be565b6128ed565b348015610b8b57600080fd5b50610523600a5481565b348015610ba157600080fd5b5061041f610bb0366004613899565b61296e565b348015610bc157600080fd5b5061041f610bd03660046139d6565b612988565b348015610be157600080fd5b5061041f610bf03660046137a3565b612a34565b348015610c0157600080fd5b5061041f610c103660046137be565b612a5e565b348015610c2157600080fd5b50610a93610c303660046137a3565b60166020526000908152604090205460ff1681565b348015610c5157600080fd5b506105236802b5e3af16b188000081565b348015610c6e57600080fd5b5061041f610c7d3660046139d6565b612a94565b348015610c8e57600080fd5b5061041f610c9d3660046137be565b612b40565b348015610cae57600080fd5b50610d03610cbd3660046137be565b6014602052600090815260409020805460018201546002830154600384015460048501546005860154600687015460079097015495969495939492939192909160ff1688565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c0830152151560e0820152610100016104a0565b348015610d4c57600080fd5b5061041f610d5b3660046137be565b612e27565b348015610d6c57600080fd5b50610523612e34565b348015610d8157600080fd5b50610d03610d903660046137be565b6011602052600090815260409020805460018201546002830154600384015460048501546005860154600687015460079097015495969495939492939192909160ff1688565b348015610de257600080fd5b50610a93610df13660046137d7565b601960209081526000938452604080852082529284528284209052825290205460ff1681565b348015610e2357600080fd5b50610642610e32366004613a06565b612e85565b348015610e4357600080fd5b506105237f000000000000000000000000000000000000000000000000000000000000000081565b348015610e7757600080fd5b5061052360205481565b348015610e8d57600080fd5b5061041f610e9c3660046137a3565b612ebd565b610ea9612f00565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166000908152601360205260408120606091610eef82612f2d565b9050808510610f33576040805160008082526020820190925290610f29565b610f16613740565b815260200190600190039081610f0e5790505b5092505050611076565b6000610f3f8683613a5c565b90506000818611610f505785610f52565b815b905060008167ffffffffffffffff811115610f6f57610f6f613a30565b604051908082528060200260200182016040528015610fa857816020015b610f95613740565b815260200190600190039081610f8d5790505b50905060005b8281101561106e5760146000610fce610fc7848d613a6f565b8990612f38565b81526020808201929092526040908101600020815161010081018352815481526001820154938101939093526002810154918301919091526003810154606083015260048101546080830152600581015460a0830152600681015460c08301526007015460ff16151560e0820152825183908390811061105057611050613a82565b6020026020010181905250808061106690613a98565b915050610fae565b509450505050505b9392505050565b611085612f00565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006009546000036110bb57506000919050565b60006213c680600354436110cf9190613a5c565b6110d99190613ac7565b6110e4906002613bbf565b6110f7906802b5e3af16b1880000613ac7565b6001600160a01b0384166000908152600e6020526040902054600954919250611076918390612f44565b600060035460000361114657604051633017f16560e11b815260040160405180910390fd5b60006213c6806111568143613ac7565b611161906001613a6f565b61116b9190613bcb565b6213c68060035461117c9190613be2565b6111869190613a6f565b90506111924382613a5c565b91505090565b3360009081526016602052604090205460ff166111c8576040516306016a2760e11b815260040160405180910390fd5b336000908152601560205260409020805460075481036111fb576040516372932dd360e01b815260040160405180910390fd5b600b54336000908152601a60205260409020546112189042613a5c565b1015611237576040516341fde9ef60e01b815260040160405180910390fd5b6000601281611247846001613a6f565b81526020808201929092526040908101600020815160c08101835281548152600182015493810193909352600281015491830191909152600381015460ff161515606083018190526004820154608084015260059091015460a08301529091506112c4576040516323e697d360e11b815260040160405180910390fd5b60408181015160015491516370a0823160e01b815233600482015290916001600160a01b0316906370a0823190602401602060405180830381865afa158015611311573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113359190613bf6565b1015611357576040516001627a6f0d60e11b0319815260040160405180910390fd5b60015460408281015190516323b872dd60e01b815233600482015230602482015260448101919091526001600160a01b03909116906323b872dd906064016020604051808303816000875af11580156113b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d89190613c0f565b506001546040820151600d546001600160a01b03909216916342966c68916113ff91612f6a565b6040518263ffffffff1660e01b815260040161141d91815260200190565b600060405180830381600087803b15801561143757600080fd5b505af115801561144b573d6000803e3d6000fd5b505084549150849050600061145f83613a98565b90915550508051600184015560208082015160028501556080820151600585015560a08201516006850155336000818152601a835260409081902042905585548185015182519182529381019390935290917fe2dbc44c627e3876b04b29d12596a77c7d0fa585ccb754b9fcd92e48d813dd77910160405180910390a2505050565b60045460009060ff166114f657506000919050565b60095460000361153e576001600160a01b0382166000908152600f6020526040902054600c54611538919061153390670de0b6b3a7640000613a5c565b612f6a565b92915050565b6008546003546000906213c680906115569084613a5c565b6115609190613ac7565b61156b906002613bbf565b61157e906802b5e3af16b1880000613ac7565b600a549091505b4383101561164b5760006213c68061159d8186613ac7565b6115a8906001613a6f565b6115b29190613bcb565b6213c6806003546115c39190613be2565b6115cd9190613a6f565b905060004382106115de57436115e0565b815b6009549091501561162c57600954670de0b6b3a76400006116018784613a5c565b61160b9087613bcb565b6116159190613bcb565b61161f9190613ac7565b6116299084613a6f565b92505b80945081850361164457611641600285613ac7565b93505b5050611585565b6001600160a01b0385166000908152601060205260409020546116e190670de0b6b3a76400009061167c9084613a5c565b6001600160a01b0388166000908152600e602052604090205461169f9190613bcb565b6116a99190613ac7565b6001600160a01b0387166000908152600f60205260409020546116cc9190613a6f565b600c5461153390670de0b6b3a7640000613a5c565b95945050505050565b6116f333612f9c565b336000908152600f6020526040812054908190036117245760405163037dc8f760e21b815260040160405180910390fd5b3360009081526015602090815260408083208054600f909352908320839055600c54909290611754908590612f6a565b905060006117628286613a5c565b6000848152601e602052604081205491925090611780908390612f6a565b905061178c8183613a5c565b600154601f546040516340c10f1960e01b81526001600160a01b0391821660048201526024810185905292945016906340c10f1990604401600060405180830381600087803b1580156117de57600080fd5b505af11580156117f2573d6000803e3d6000fd5b50506001546040516340c10f1960e01b8152336004820152602481018690526001600160a01b0390911692506340c10f199150604401600060405180830381600087803b15801561184257600080fd5b505af1158015611856573d6000803e3d6000fd5b5050336000908152601b60205260409020546001600160a01b03169150508015611913576001546040516340c10f1960e01b81526001600160a01b03838116600483015260248201879052909116906340c10f1990604401600060405180830381600087803b1580156118c857600080fd5b505af11580156118dc573d6000803e3d6000fd5b505050506001600160a01b0381166000908152601d602052604081208054869290611908908490613a6f565b9091555061199d9050565b6001546040516340c10f1960e01b8152306004820152602481018690526001600160a01b03909116906340c10f1990604401600060405180830381600087803b15801561195f57600080fd5b505af1158015611973573d6000803e3d6000fd5b5050306000908152601d602052604081208054889450909250611997908490613a6f565b90915550505b60405187815233907ffc30cddea38e2bf4d6ea7d3f9ed3b6ad7f176419f4963bd81318067a4aee73fe9060200160405180910390a250505050505050565b3360009081526017602052604090205460ff1615611a0c57604051633874d2ad60e11b815260040160405180910390fd5b336000818152601760209081526040808320805460ff191660019081179091557f0000000000000000000000000000000000000000000000000000000000000000845260118352818420825161010081018452815481529181015482850152600281015482840152600381015460608301526004810154608083015260058082015460a084015260068083015460c085015260079092015460ff16151560e0840152958552601590935292209283015490830154919291611ad191869186919061304c565b15611aef57604051632a00382b60e21b815260040160405180910390fd5b80600201548260a001518260040154611b089190613a6f565b1115611b27576040516303eff4bd60e61b815260040160405180910390fd5b602082018490526040820183905260058054600090611b4590613a98565b9182905550606083015233600081815260196020908152604080832088845282528083208784528252808320805460ff1916600117905560055493835260139091529020611b929161309a565b5060058054600090815260146020908152604080832086518155918601516001830155850151600282015560608501516003808301919091556080860151600483015560a08601519382019390935560c0850151600682015560e08501516007909101805460ff1916911515919091179055908201805491611c1383613a98565b91905055508160a00151816004016000828254611c309190613a6f565b9091555050600554604080517f000000000000000000000000000000000000000000000000000000000000000081526000602082015290810191909152606081018590526080810184905233907f70a5d2d3258adcf9978a193a4dd8fa309ae83a9f1046a0a5ea99a133bf34f9a59060a00160405180910390a2611cb83383608001516130a6565b50505050565b611cc6612f00565b60025460405147916000916001600160a01b039091169083908381818185875af1925050503d8060008114611d17576040519150601f19603f3d011682016040523d82523d6000602084013e611d1c565b606091505b5050905080611d3e57604051631d42c86760e21b815260040160405180910390fd5b5050565b6020543414611d6457604051636956f2ab60e11b815260040160405180910390fd5b3360009081526016602052604090205460ff1615611d95576040516311fcdefb60e31b815260040160405180910390fd5b336001600160a01b03821603611dbe57604051630c22084560e31b815260040160405180910390fd5b336000908152601660205260409020805460ff191660011790556001600160a01b03811615611e3b57336000818152601b6020908152604080832080546001600160a01b0387166001600160a01b03199182168117909255908452601c835290832080546001810182559084529190922001805490911690911790555b7f00000000000000000000000000000000000000000000000000000000000000006000818152601260209081526040808320815160c0810183528154815260018083015482860190815260028085015484870152600385015460ff161515606085015260048501546080850190815260059586015460a0860190815233808b526015909952878a209a8b558551948b019490945591519089015551928701929092559051600686015590519093927fe424ed553a53c3a900c875ed34d63043e4dfb799427ee8ae0836b046a603c90e91a2505050565b6001600160a01b0381166000908152601c6020908152604091829020805483518184028101840190945280845260609392830182828015611f7b57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611f5d575b50505050509050919050565b600083815260116020908152604080832081516101008101835281548152600182015481850152600282015481840152600382015460608201526004820154608082015260058083015460a083015260068084015460c084015260079093015460ff16151560e083015233865260159094529190932091820154928201549092612014918691869161304c565b1561203257604051632a00382b60e21b815260040160405180910390fd5b8160e0015161205457604051631551537360e31b815260040160405180910390fd5b60c08201516001546040516370a0823160e01b81523360048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156120a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c59190613bf6565b10156120e7576040516001627a6f0d60e11b0319815260040160405180910390fd5b80600201548260a0015182600401546121009190613a6f565b111561211f576040516303eff4bd60e61b815260040160405180910390fd5b60015460c08301516040516323b872dd60e01b815233600482015230602482015260448101919091526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561217c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a09190613c0f565b5060015460c0830151600d546001600160a01b03909216916342966c68916121c791612f6a565b6040518263ffffffff1660e01b81526004016121e591815260200190565b600060405180830381600087803b1580156121ff57600080fd5b505af1158015612213573d6000803e3d6000fd5b5050505060208201849052604082018390526005805460009061223590613a98565b9182905550606083015233600081815260196020908152604080832088845282528083208784528252808320805460ff19166001179055600554938352601390915290206122829161309a565b5060058054600090815260146020908152604080832086518155918601516001830155850151600282015560608501516003808301919091556080860151600483015560a08601519382019390935560c0850151600682015560e08501516007909101805460ff191691151591909117905590820180549161230383613a98565b91905055508160a001518160040160008282546123209190613a6f565b909155505060c0820151600554604080518881526020810193909352820152606081018590526080810184905233907f70a5d2d3258adcf9978a193a4dd8fa309ae83a9f1046a0a5ea99a133bf34f9a59060a00160405180910390a261238a3383608001516130a6565b5050505050565b612399612f00565b600b55565b6123a6612f00565b60008281526018602090815260409182902083905581518481529081018390527f86257f0afab037798cc4548a6d86125f52c92410a1e29aff03d787d49dac20db910160405180910390a15050565b6123fd612f00565b60065482111561242057604051633a6c77df60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000008203612460576040516311c175a160e21b815260040160405180910390fd5b600082815260116020908152604091829020600681018490558251858152918201849052917ff920b24ea96b3814655944622f9eb86875e3193c5de1a9de018777e6c8705cee91015b60405180910390a1505050565b6124be612f00565b6007548211156124e157604051630d96812160e31b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000008203612521576040516378fd0bb160e11b815260040160405180910390fd5b600082815260126020908152604091829020600281018490558251858152918201849052917ff721e9425607d38abda58b925d2a080b3aefa127d46973d2683875dc87cb9a6b91016124a9565b612576612f00565b670de0b6b3a764000081111561259f576040516358d620b360e01b815260040160405180910390fd5b600c55565b6125ac612f00565b6125b660006131b3565b565b600b546001600160a01b0382166000908152601a6020526040812054909142916125e29190613a6f565b10156125f057506000919050565b600b546001600160a01b0383166000908152601a6020526040902054429161261791613a6f565b6115389190613a5c565b612629612f00565b856126348284613bcb565b14612652576040516311cba80760e21b815260040160405180910390fd5b600754600090815260126020526040902060040154821080612687575060075460009081526012602052604090206005015481105b156126a5576040516311cba80760e21b815260040160405180910390fd5b6007546000908152601260205260409020600101548510156126da57604051630d2a50ed60e41b815260040160405180910390fd5b6040518060c001604052808781526020018681526020018581526020018415158152602001838152602001828152506012600060076000815461271c90613a98565b9182905550815260208082019290925260409081016000208351815583830151600182015583820151600282015560608085015160038301805460ff1916911515919091179055608080860151600484015560a09586015160059093019290925560075483519081529384018a905283830189905287151590840152820185905291810183905290517f6ae4a0e17ec15e82a1af6ff99411c44193a38f27f15c3ddd30b0f09ab1c5fd2c9160c0908290030190a1505050505050565b6127e0612f00565b6006600081546127ef90613a98565b909155506040805161010081018252600680548083526000602080850182815285870183815260608701848152608088018d815260a089018d815260c08a018d81528c151560e08c019081529888526011909652958a9020985189559251600189015590516002880155516003870155516004860155905160058501555183830155516007909201805492151560ff19909316929092179091555490517fe0a2f8482bbba7e119c069eb63409ac33b15fc516cffed25aeabb6a9669e07c2916128df9187908790879087909485526020850193909352604084019190915260608301521515608082015260a00190565b60405180910390a150505050565b6128f5612f00565b60015460025460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb906044016020604051808303816000875af115801561294a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d3e9190613c0f565b612976612f00565b6000918252601e602052604090912055565b612990612f00565b7f00000000000000000000000000000000000000000000000000000000000000008210806129bf575060065482115b156129dd57604051633b87f10960e01b815260040160405180910390fd5b60008281526011602090815260409182902060078101805460ff1916851515908117909155835186815292830152917fd0a7ceb410ade2d440d8ed59d6b338fe480f98025101655790e0de736edddabe91016124a9565b612a3c612f00565b601f80546001600160a01b0319166001600160a01b0392909216919091179055565b612a66612f00565b670de0b6b3a7640000811115612a8f576040516358d620b360e01b815260040160405180910390fd5b600d55565b612a9c612f00565b7f0000000000000000000000000000000000000000000000000000000000000000821080612acb575060075482115b15612ae957604051631dbb333f60e31b815260040160405180910390fd5b60008281526012602090815260409182902060038101805460ff1916851515908117909155835186815292830152917f0bd772fd008a8dd5673c42a4f50f72220b2603eee55113cd6c38ff78d71e644f91016124a9565b336000908152601360205260409020612b599082613203565b612b7657604051633d9f63cb60e01b815260040160405180910390fd5b60008181526014602090815260408083208151610100810183528154815260018083015482860152600283015482850152600383015460608301526004808401546080840152600584015460a0840152600684015460c084015260079093015460ff16151560e0830152338652601585528386208251875260189095529483902054945492516370a0823160e01b8152309281019290925293916001600160a01b0316906370a0823190602401602060405180830381865afa158015612c40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c649190613bf6565b811115612c845760405163515d3e8160e01b815260040160405180910390fd5b600382018054906000612c9683613c2c565b91905055508260a00151826004016000828254612cb39190613a5c565b9091555050336000908152601360205260409020612cd1908561320f565b506000848152601460209081526040808320838155600181018490556002810184905560038101849055600481018490556005810184905560068101849055600701805460ff1990811690915533808552601984528285208885018051875290855283862089850180518852908652958490208054909316909255875191519451835192835293820186905281830189905260608201949094526080810192909252517f952aa29dabfc45e8c9bba19903b0a8bb9031c952db14a06ad48af137e5835b079181900360a00190a2612dac33846080015161321b565b8015611cb85760015460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015612e03573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061238a9190613c0f565b612e2f612f00565b602055565b60045460009060ff16612e475750600090565b60006213c68060035443612e5b9190613a5c565b612e659190613ac7565b9050612e72816002613bbf565b611192906802b5e3af16b1880000613ac7565b601c6020528160005260406000208181548110612ea157600080fd5b6000918252602090912001546001600160a01b03169150829050565b612ec5612f00565b6001600160a01b038116612ef457604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b612efd816131b3565b50565b6000546001600160a01b031633146125b65760405163118cdaa760e01b8152336004820152602401612eeb565b6000611538826132c3565b60006110768383613313565b82820283158482048414178202612f635763ad251c276000526004601cfd5b0492915050565b60008160001904831115612f8c578115612f8c5763bac65e5b6000526004601cfd5b50670de0b6b3a764000091020490565b612fa461335d565b6001600160a01b038116600090815260106020526040902054600a54670de0b6b3a764000091612fd391613a5c565b6001600160a01b0383166000908152600e6020526040902054612ff69190613bcb565b6130009190613ac7565b6001600160a01b0382166000908152600f602052604081208054909190613028908490613a6f565b9091555050600a546001600160a01b03909116600090815260106020526040902055565b6000828510158061305d5750818410155b1561306a57506001613092565b50336000908152601960209081526040808320878452825280832086845290915290205460ff165b949350505050565b60006110768383613481565b60045460ff16613103576004805460ff1916600117905543600381905560088190556040517fdaae9aa758637a0d349f036f099afd70aa88d8ac63fce096321de512ffebc16c916130fa9190815260200190565b60405180910390a15b61310c82612f9c565b806009600082825461311e9190613a6f565b90915550506001600160a01b0382166000908152600e60205260408120805483929061314b908490613a6f565b90915550506001600160a01b0382166000908152600e6020908152604080832054600f8352928190205481519384529183019190915233917fa051d58ced8df58040b29d2c939da70a826ae40290f77c9a66b38b8b85315f6591015b60405180910390a25050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600061107683836135a2565b6000611076838361362f565b61322482612f9c565b80600960008282546132369190613a5c565b90915550506001600160a01b0382166000908152600e602052604081208054839290613263908490613a5c565b90915550506001600160a01b0382166000908152600e6020908152604080832054600f8352928190205481519384529183019190915233917fe331ada0d0e61e9a4196bf4994f2519193d70a601daff346c4276d591664da9a91016131a7565b6318fb58646004526000818152602481208019548060011c92508061330c578154600093501561330c5760019250828201541561330c5760029250828201541561330c57600392505b5050919050565b6318fb586460045260008281526024902081015468fbb67fda52d4bfb8bf8114150261333e836132c3565b821061153857604051634e23d03560e01b815260040160405180910390fd5b60095460000361336d5743600855565b6008546003546000906213c680906133859084613a5c565b61338f9190613ac7565b61339a906002613bbf565b6133ad906802b5e3af16b1880000613ac7565b90505b438210156134795760006213c6806133c88185613ac7565b6133d3906001613a6f565b6133dd9190613bcb565b6213c6806003546133ee9190613be2565b6133f89190613a6f565b90506000438210613409574361340b565b815b600954909150670de0b6b3a76400006134248684613a5c565b61342e9086613bcb565b6134389190613bcb565b6134429190613ac7565b600a60008282546134539190613a6f565b925050819055508093508184036134725761346f600284613ac7565b92505b50506133b0565b505043600855565b6318fb586460045260008281526024812068fbb67fda52d4bfb8bf83036134b05763f5a267f16000526004601cfd5b826134c25768fbb67fda52d4bfb8bf92505b8019548160205280613567578154806134e257848355600193505061359a565b8481036134ef575061359a565b60018301548061350a5785600185015560019450505061359a565b85810361351857505061359a565b600284015480613534578660028601556001955050505061359a565b8681036135435750505061359a565b60009283526040808420600190559183528183206002905582529020600390555060075b836000526040600020805461359857600191821c8381018690558083019182905590821b821783195590925061359a565b505b505092915050565b6318fb586460045260008281526024812068fbb67fda52d4bfb8bf83036135d15763f5a267f16000526004601cfd5b826135e35768fbb67fda52d4bfb8bf92505b801954613615578054600192508314613628576001810154831461362857600281015483146136285760009150613628565b8060205282600052604060002054151591505b5092915050565b6318fb586460045260008281526024812068fbb67fda52d4bfb8bf830361365e5763f5a267f16000526004601cfd5b826136705768fbb67fda52d4bfb8bf92505b801954806136dd57600192508382540361369e5760018201805483556002830180549091556000905561359a565b836001830154036136bd5760028201805460018401556000905561359a565b836002830154036136d4576000600283015561359a565b6000925061359a565b816020528360005260406000208054806136f857505061359a565b60018360011c039250826001820314613724578284015480600183038601558060005250806040600020555b5060018260011b17831955600081555060019250505092915050565b604051806101000160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b80356001600160a01b038116811461379e57600080fd5b919050565b6000602082840312156137b557600080fd5b61107682613787565b6000602082840312156137d057600080fd5b5035919050565b6000806000606084860312156137ec57600080fd5b6137f584613787565b95602085013595506040909401359392505050565b602080825282518282018190526000919060409081850190868401855b8281101561388c5781518051855286810151878601528581015186860152606080820151908601526080808201519086015260a0808201519086015260c0808201519086015260e0908101511515908501526101009093019290850190600101613827565b5091979650505050505050565b600080604083850312156138ac57600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b818110156138fc5783516001600160a01b0316835292840192918401916001016138d7565b50909695505050505050565b60008060006060848603121561391d57600080fd5b505081359360208301359350604090920135919050565b8015158114612efd57600080fd5b60008060008060008060c0878903121561395b57600080fd5b863595506020870135945060408701359350606087013561397b81613934565b9598949750929560808101359460a0909101359350915050565b600080600080608085870312156139ab57600080fd5b84359350602085013592506040850135915060608501356139cb81613934565b939692955090935050565b600080604083850312156139e957600080fd5b8235915060208301356139fb81613934565b809150509250929050565b60008060408385031215613a1957600080fd5b613a2283613787565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8181038181111561153857611538613a46565b8082018082111561153857611538613a46565b634e487b7160e01b600052603260045260246000fd5b600060018201613aaa57613aaa613a46565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082613ad657613ad6613ab1565b500490565b600181815b80851115613b16578160001904821115613afc57613afc613a46565b80851615613b0957918102915b93841c9390800290613ae0565b509250929050565b600082613b2d57506001611538565b81613b3a57506000611538565b8160018114613b505760028114613b5a57613b76565b6001915050611538565b60ff841115613b6b57613b6b613a46565b50506001821b611538565b5060208310610133831016604e8410600b8410161715613b99575081810a611538565b613ba38383613adb565b8060001904821115613bb757613bb7613a46565b029392505050565b60006110768383613b1e565b808202811582820484141761153857611538613a46565b600082613bf157613bf1613ab1565b500690565b600060208284031215613c0857600080fd5b5051919050565b600060208284031215613c2157600080fd5b815161107681613934565b600081613c3b57613c3b613a46565b50600019019056fea264697066735822122038ae62771fdddd23d579b678697530d6562d768bf723cf8c8c1c0981ebad0c9b64736f6c63430008140033