0 txs
27 calls
constructor
constructor()
functions
ADMIN_ROLE
viewfunction ADMIN_ROLE() view returns (bytes32)
allBeneficiaries
viewfunction allBeneficiaries(uint256) view returns (address)
autoTransferAddress1
viewfunction autoTransferAddress1() view returns (address)
autoTransferAddress2
viewfunction autoTransferAddress2() view returns (address)
autoTransferThreshold
viewfunction autoTransferThreshold() view returns (uint256)
calculateCost
viewfunction calculateCost(uint256 amount) view returns (uint256)
calculateEthCost
viewfunction calculateEthCost(uint256 tokenAmount, uint256 ethPriceInUSD) view returns (uint256)
calculateTokenAmountForEth
viewfunction calculateTokenAmountForEth(uint256 ethSent, uint256 ethPriceInUSD) view returns (uint256)
calculateUsdtCost
viewfunction calculateUsdtCost(uint256 tokenAmount) view returns (uint256)
claimStarted
viewfunction claimStarted() view returns (bool)
currentRound
viewfunction currentRound() view returns (uint256)
currentRoundStartTime
viewfunction currentRoundStartTime() view returns (uint256)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
ethPriceFeed
viewfunction ethPriceFeed() view returns (address)
getCurrentPrice
viewfunction getCurrentPrice() view returns (uint256)
getLatestPrice
viewfunction getLatestPrice() view returns (uint256)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isWhitelisted
viewfunction isWhitelisted(address) view returns (bool)
lastEthPrice
viewfunction lastEthPrice() view returns (int256)
minReferralUsd
viewfunction minReferralUsd() view returns (uint256)
paused
viewfunction paused() view returns (bool)
PAUSER_ROLE
viewfunction PAUSER_ROLE() view returns (bytes32)
presaleEndTime
viewfunction presaleEndTime() view returns (uint256)
presaleRules
viewfunction presaleRules() view returns (uint256 initialPrice, uint256 priceIncreasePercentage, uint256 tokensPerRound, uint256 roundDuration)
presaleStartTime
viewfunction presaleStartTime() view returns (uint256)
presaleToken
viewfunction presaleToken() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
referralSystem
viewfunction referralSystem() view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
tokensSoldInCurrentRound
viewfunction tokensSoldInCurrentRound() view returns (uint256)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
UPGRADER_ROLE
viewfunction UPGRADER_ROLE() view returns (bytes32)
usdtAutoTransferThreshold
viewfunction usdtAutoTransferThreshold() view returns (uint256)
usdToken
viewfunction usdToken() view returns (address)
whitelistOnly
viewfunction whitelistOnly() view returns (bool)
addToWhitelist
nonpayablefunction addToWhitelist(address[] users)
advanceRoundIfNeeded
nonpayablefunction advanceRoundIfNeeded()
buyWithEth
payablefunction buyWithEth(uint256 tokenAmount, string code) payable
buyWithUsdt
nonpayablefunction buyWithUsdt(uint256 tokenAmount, string code)
getLatestEthPrice
nonpayablefunction getLatestEthPrice() returns (int256)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(address _usdToken, address _presaleToken, address _ethPriceFeed, address _autoTransferAddress1, address _autoTransferAddress2, address _referralManager)
pause
nonpayablefunction pause()
removeFromWhitelist
nonpayablefunction removeFromWhitelist(address[] users)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setAutoTransferAddress2
nonpayablefunction setAutoTransferAddress2(address _addr)
setLastEthPrice
nonpayablefunction setLastEthPrice(int256 _price)
setReferralSystem
nonpayablefunction setReferralSystem(address addr)
setWhitelistStatus
nonpayablefunction setWhitelistStatus(bool _whitelistOnly)
startClaim
nonpayablefunction startClaim()
transferContractBalance
nonpayablefunction transferContractBalance()
unlock
nonpayablefunction unlock() returns (bool)
unpause
nonpayablefunction unpause()
updatePresaleRules
nonpayablefunction updatePresaleRules(tuple r)
updatePresaleTimes
nonpayablefunction updatePresaleTimes(uint256 _startTime, uint256 _endTime)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
withdrawTokens
nonpayablefunction withdrawTokens(address token, uint256 amount, address to)
events
ClaimStarted
event ClaimStarted(uint256 startTime)
Initialized
event Initialized(uint64 version)
Paused
event Paused(address account)
PresaleRulesUpdated
event PresaleRulesUpdated(uint256 initialPrice, uint256 priceIncreasePercentage, uint256 tokensPerRound, uint256 roundDuration)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
RoundAdvanced
event RoundAdvanced(uint256 newRound, uint256 newPrice)
TokensPurchased
event TokensPurchased(address indexed buyer, uint256 amount, uint256 cost)
Unpaused
event Unpaused(address account)
Upgraded
event Upgraded(address indexed implementation)
WhitelistStatusChanged
event WhitelistStatusChanged(address indexed user, bool status)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
AddressEmptyCode
error AddressEmptyCode(address target)
EnforcedPause
error EnforcedPause()
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
ExpectedPause
error ExpectedPause()
FailedCall
error FailedCall()
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516138966100fd60003960008181612af401528181612b1d0152612c8001526138966000f3fe60806040526004361061038c5760003560e01c80638a19c8bc116101dc578063af7665ce11610102578063eb91d37e116100a0578063efd42f481161006f578063efd42f4814610a27578063f04450c214610a3d578063f72c0d8b14610a5d578063f897a22b14610a9157600080fd5b8063eb91d37e146109bd578063ec004cd0146109d2578063ecbfc077146109f2578063ed622dd314610a0757600080fd5b8063cc2a9a5b116100dc578063cc2a9a5b14610945578063d547741f14610965578063e63ab1e914610985578063e86fa665146109a757600080fd5b8063af7665ce146108e4578063c1664b1314610904578063c829ecea1461092557600080fd5b8063a04e876c1161017a578063a82524b211610149578063a82524b214610850578063a990604d14610866578063ad3cb1cc14610886578063af5100bc146108c457600080fd5b8063a04e876c146107f1578063a217fddf14610811578063a6587b3214610826578063a69df4b51461083b57600080fd5b806396d65f0e116101b657806396d65f0e146107865780639a01126c1461079b5780639bc5c509146107bb5780639dfc8cf7146107db57600080fd5b80638a19c8bc1461073b5780638e15f4731461075157806391d148541461076657600080fd5b80633f4ba83a116102c157806355f84ea91161025f57806375b238fc1161022e57806375b238fc146106c45780637f649783146106e65780638456cb591461070657806385c09ccd1461071b57600080fd5b806355f84ea9146106565780635c975abb146106765780636f8ff6ca1461069b5780637038fc4e146106ae57600080fd5b80634b4687b51161029b5780634b4687b5146105ed5780634f1ef2861461060e57806352d1902d14610621578063548db1741461063657600080fd5b80633f4ba83a146105985780634a999118146105ad5780634af18f4f146105cd57600080fd5b806330c0b9ec1161032e5780633778486911610308578063377848691461051c578063380dd9011461053c5780633a31abd4146105525780633af32abf1461056857600080fd5b806330c0b9ec146104c757806335474c38146104dc57806336568abe146104fc57600080fd5b8063249b7c191161036a578063249b7c191461043757806324ffea1a1461044d5780632b850fcf146104855780632f2ff15d146104a557600080fd5b806301ffc9a71461039157806312c12631146103c6578063248a9ca314610409575b600080fd5b34801561039d57600080fd5b506103b16103ac36600461306f565b610ab1565b60405190151581526020015b60405180910390f35b3480156103d257600080fd5b50600954600a54600b54600c546103e99392919084565b6040805194855260208501939093529183015260608201526080016103bd565b34801561041557600080fd5b50610429610424366004613099565b610ae8565b6040519081526020016103bd565b34801561044357600080fd5b5061042960045481565b34801561045957600080fd5b5060115461046d906001600160a01b031681565b6040516001600160a01b0390911681526020016103bd565b34801561049157600080fd5b5060135461046d906001600160a01b031681565b3480156104b157600080fd5b506104c56104c03660046130c7565b610b0a565b005b3480156104d357600080fd5b50610429610b2c565b3480156104e857600080fd5b506104c56104f736600461313e565b610bfb565b34801561050857600080fd5b506104c56105173660046130c7565b610c7f565b34801561052857600080fd5b506104c56105373660046131a8565b610cb7565b34801561054857600080fd5b50610429600e5481565b34801561055e57600080fd5b5061042960025481565b34801561057457600080fd5b506103b1610583366004613226565b60086020526000908152604090205460ff1681565b3480156105a457600080fd5b506104c56110f6565b3480156105b957600080fd5b506104c56105c8366004613243565b611119565b3480156105d957600080fd5b506104296105e8366004613099565b611150565b3480156105f957600080fd5b506007546103b190600160a81b900460ff1681565b6104c561061c366004613265565b611177565b34801561062d57600080fd5b50610429611196565b34801561064257600080fd5b506104c5610651366004613312565b6111b3565b34801561066257600080fd5b5060075461046d906001600160a01b031681565b34801561068257600080fd5b506000805160206138018339815191525460ff166103b1565b6104c56106a93660046131a8565b61129f565b3480156106ba57600080fd5b5061042960145481565b3480156106d057600080fd5b5061042960008051602061384183398151915281565b3480156106f257600080fd5b506104c5610701366004613312565b611748565b34801561071257600080fd5b506104c5611834565b34801561072757600080fd5b50610429610736366004613389565b611854565b34801561074757600080fd5b50610429600d5481565b34801561075d57600080fd5b506104296118aa565b34801561077257600080fd5b506103b16107813660046130c7565b611a51565b34801561079257600080fd5b506104c5611a89565b3480156107a757600080fd5b506104c56107b6366004613226565b611b12565b3480156107c757600080fd5b506104c56107d63660046133ab565b611b4d565b3480156107e757600080fd5b5061042960065481565b3480156107fd57600080fd5b5060125461046d906001600160a01b031681565b34801561081d57600080fd5b50610429600081565b34801561083257600080fd5b506104c5611cf5565b34801561084757600080fd5b506103b1611d01565b34801561085c57600080fd5b5061042960035481565b34801561087257600080fd5b506104c5610881366004613226565b611daf565b34801561089257600080fd5b506108b7604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516103bd9190613411565b3480156108d057600080fd5b506104296108df366004613099565b611e32565b3480156108f057600080fd5b5060015461046d906001600160a01b031681565b34801561091057600080fd5b506007546103b190600160a01b900460ff1681565b34801561093157600080fd5b50610429610940366004613389565b611e75565b34801561095157600080fd5b506104c5610960366004613444565b611eb1565b34801561097157600080fd5b506104c56109803660046130c7565b6121c5565b34801561099157600080fd5b506104296000805160206137c183398151915281565b3480156109b357600080fd5b50610429600f5481565b3480156109c957600080fd5b506104296121e1565b3480156109de57600080fd5b5061046d6109ed366004613099565b61224b565b3480156109fe57600080fd5b506104c5612275565b348015610a1357600080fd5b506104c5610a22366004613389565b612329565b348015610a3357600080fd5b5061042960055481565b348015610a4957600080fd5b506104c5610a58366004613099565b61234d565b348015610a6957600080fd5b506104297f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e381565b348015610a9d57600080fd5b5060005461046d906001600160a01b031681565b60006001600160e01b03198216637965db0b60e01b1480610ae257506301ffc9a760e01b6001600160e01b03198316145b92915050565b60009081526000805160206137e1833981519152602052604090206001015490565b610b1382610ae8565b610b1c816123ab565b610b2683836123b5565b50505050565b60015460408051633fabe5a360e21b815290516000926001600160a01b03169163feaf968c9160048083019260a09291908290030181865afa925050508015610b92575060408051601f3d908101601f19168201909252610b8f918101906134e2565b60015b15610bf457600084138015610ba75750600082115b8015610bc55750846001600160501b0316816001600160501b031610155b8015610bdb5750610e10610bd9834261354a565b105b15610bee57505050601481905592915050565b50505050505b5060145490565b600080516020613841833981519152610c13816123ab565b81516009819055602080840151600a819055604080860151600b819055606080880151600c819055835196875294860193909352908401528201527f10ee86b96eb23ed10035f4828b1922087a5a6538abb471c707c205fd33959d669060800160405180910390a15050565b6001600160a01b0381163314610ca85760405163334bd91960e11b815260040160405180910390fd5b610cb2828261245a565b505050565b610cbf6124d6565b610cc7612507565b6003544210158015610cdb57506004544211155b610d195760405162461bcd60e51b815260206004820152600a6024820152694e6f742061637469766560b01b60448201526064015b60405180910390fd5b600754600160a81b900460ff161580610d4157503360009081526008602052604090205460ff165b610d7f5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081dda1a5d195b1a5cdd1959608a1b6044820152606401610d10565b6000610d8a84611150565b9050600254811015610dc95760405162461bcd60e51b81526020600482015260086024820152674d696e2024302e3160c01b6044820152606401610d10565b6000610dd485611e32565b600054909150610def906001600160a01b031633308461253f565b610df76125a6565b601154604051639f2c950360e01b8152336004820152602481018790526001600160a01b0390911690639f2c950390604401600060405180830381600087803b158015610e4357600080fd5b505af1158015610e57573d6000803e3d6000fd5b50505050610e64856128c5565b6000610e6e610b2c565b90506000610e7b82612987565b90508415801590610e94575067016345785d8a00008410155b156110a057601254604051629957a160e61b81526000916001600160a01b031690632655e84090610ecb908a908a90600401613586565b602060405180830381865afa158015610ee8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0c919061359a565b90506001600160a01b03811615801590610f2f57506001600160a01b0381163314155b1561109e57601254604051632789fae160e01b81526001600160a01b0390911690632789fae190610f6f9033908b908b908b906000908a906004016135b7565b600060405180830381600087803b158015610f8957600080fd5b505af1158015610f9d573d6000803e3d6000fd5b5050601254604051636f156c8d60e11b81526001600160a01b03858116600483015260009450909116915063de2ad91a90602401602060405180830381865afa158015610fee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101291906135fa565b9050600061101f82612a35565b9050600061102d8b83612a62565b9050801561109a57601154604051639f2c950360e01b8152336004820152602481018390526001600160a01b0390911690639f2c950390604401600060405180830381600087803b15801561108157600080fd5b505af1158015611095573d6000803e3d6000fd5b505050505b5050505b505b604080518881526020810185905233917f8fafebcaf9d154343dad25669bfa277f4fbacd7ac6b0c4fed522580e040a0f33910160405180910390a250505050610cb2600160008051602061382183398151915255565b6000805160206137c183398151915261110e816123ab565b611116612a8f565b50565b600080516020613841833981519152611131816123ab565b5060078054911515600160a81b0260ff60a81b19909216919091179055565b6000670de0b6b3a76400006111636121e1565b61116d9084613613565b610ae29190613640565b61117f612ae9565b61118882612b8e565b6111928282612bb8565b5050565b60006111a0612c75565b506000805160206137a183398151915290565b6000805160206138418339815191526111cb816123ab565b60005b82811015610b26576000600860008686858181106111ee576111ee613654565b90506020020160208101906112039190613226565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905583838281811061123d5761123d613654565b90506020020160208101906112529190613226565b6001600160a01b03167f8daaf060c3306c38e068a75c054bf96ecd85a3db1252712c4d93632744c42e0d600060405161128f911515815260200190565b60405180910390a26001016111ce565b6112a76124d6565b6112af612507565b60035442101580156112c357506004544211155b6112fc5760405162461bcd60e51b815260206004820152600a6024820152694e6f742061637469766560b01b6044820152606401610d10565b600754600160a81b900460ff16158061132457503360009081526008602052604090205460ff165b6113625760405162461bcd60e51b815260206004820152600f60248201526e139bdd081dda1a5d195b1a5cdd1959608a1b6044820152606401610d10565b600061136c610b2c565b9050600061137982612987565b905060006113878683611854565b9050803410156113cc5760405162461bcd60e51b815260206004820152601060248201526f115512081a5b9cdd59999a58da595b9d60821b6044820152606401610d10565b60006113d787611150565b90506002548110156114165760405162461bcd60e51b81526020600482015260086024820152674d696e2024302e3160c01b6044820152606401610d10565b61141e6125a6565b601154604051639f2c950360e01b8152336004820152602481018990526001600160a01b0390911690639f2c950390604401600060405180830381600087803b15801561146a57600080fd5b505af115801561147e573d6000803e3d6000fd5b5050505061148b876128c5565b6000611497833461354a565b905080156114ce57604051339082156108fc029083906000818181858888f193505050501580156114cc573d6000803e3d6000fd5b505b85158015906114e5575067016345785d8a00008210155b156116f157601254604051629957a160e61b81526000916001600160a01b031690632655e8409061151c908b908b90600401613586565b602060405180830381865afa158015611539573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155d919061359a565b90506001600160a01b0381161580159061158057506001600160a01b0381163314155b156116ef57601254604051632789fae160e01b81526001600160a01b0390911690632789fae1906115c09033908c908c9089906001908d906004016135b7565b600060405180830381600087803b1580156115da57600080fd5b505af11580156115ee573d6000803e3d6000fd5b5050601254604051636f156c8d60e11b81526001600160a01b03858116600483015260009450909116915063de2ad91a90602401602060405180830381865afa15801561163f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166391906135fa565b9050600061167082612a35565b9050600061167e8c83612a62565b905080156116eb57601154604051639f2c950360e01b8152336004820152602481018390526001600160a01b0390911690639f2c950390604401600060405180830381600087803b1580156116d257600080fd5b505af11580156116e6573d6000803e3d6000fd5b505050505b5050505b505b604080518981526020810185905233917f8fafebcaf9d154343dad25669bfa277f4fbacd7ac6b0c4fed522580e040a0f33910160405180910390a25050505050610cb2600160008051602061382183398151915255565b600080516020613841833981519152611760816123ab565b60005b82811015610b265760016008600086868581811061178357611783613654565b90506020020160208101906117989190613226565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558383828181106117d2576117d2613654565b90506020020160208101906117e79190613226565b6001600160a01b03167f8daaf060c3306c38e068a75c054bf96ecd85a3db1252712c4d93632744c42e0d6001604051611824911515815260200190565b60405180910390a2600101611763565b6000805160206137c183398151915261184c816123ab565b611116612cbe565b6000806118636012600a613751565b61186b6121e1565b6118759086613613565b61187f9190613640565b90508261188e6012600a613751565b6118989083613613565b6118a29190613640565b949350505050565b6000806000806000600160009054906101000a90046001600160a01b03166001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015611905573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192991906134e2565b945094505093509350600083136119725760405162461bcd60e51b815260206004820152600d60248201526c496e76616c696420707269636560981b6044820152606401610d10565b600082116119b55760405162461bcd60e51b815260206004820152601060248201526f526f756e6420696e636f6d706c65746560801b6044820152606401610d10565b836001600160501b0316816001600160501b03161015611a045760405162461bcd60e51b815260206004820152600a6024820152695374616c65206461746160b01b6044820152606401610d10565b610e10611a11834261354a565b10611a485760405162461bcd60e51b8152602060048201526007602482015266151bdbc81bdb1960ca1b6044820152606401610d10565b50909392505050565b60009182526000805160206137e1833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600080516020613841833981519152611aa1816123ab565b4780611ad85760405162461bcd60e51b815260206004820152600660248201526509cde408aa8960d31b6044820152606401610d10565b6007546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610cb2573d6000803e3d6000fd5b600080516020613841833981519152611b2a816123ab565b50601280546001600160a01b0319166001600160a01b0392909216919091179055565b600080516020613841833981519152611b65816123ab565b611b6d612507565b6001600160a01b038216611bb75760405162461bcd60e51b8152602060048201526011602482015270125b9d985b1a59081c9958da5c1a595b9d607a1b6044820152606401610d10565b6001600160a01b038416611c4f574760008415611bd45784611bd6565b815b905060008111611c115760405162461bcd60e51b815260206004820152600660248201526509cde408aa8960d31b6044820152606401610d10565b6040516001600160a01b0385169082156108fc029083906000818181858888f19350505050158015611c47573d6000803e3d6000fd5b505050611cde565b611cde828415611c5f5784611ccb565b6000546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611ca7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ccb91906135fa565b6000546001600160a01b03169190612d07565b610b26600160008051602061382183398151915255565b611cff60006128c5565b565b600754600090600160a01b900460ff16611d4b5760405162461bcd60e51b815260206004820152600b60248201526a139bdd081cdd185c9d195960aa1b6044820152606401610d10565b60115460405163196cff2960e31b81523360048201526001600160a01b039091169063cb67f94890602401600060405180830381600087803b158015611d9057600080fd5b505af1158015611da4573d6000803e3d6000fd5b505050506001905090565b600080516020613841833981519152611dc7816123ab565b6001600160a01b038216611e0f5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610d10565b50601380546001600160a01b0319166001600160a01b0392909216919091179055565b600080611e416012600a613751565b611e496121e1565b611e539085613613565b611e5d9190613640565b9050611e6e64e8d4a5100082613640565b9392505050565b600080670de0b6b3a7640000611e8b8486613613565b611e959190613640565b9050611e9f6121e1565b61189882670de0b6b3a7640000613613565b6000611ebb612d38565b805490915060ff600160401b820416159067ffffffffffffffff16600081158015611ee35750825b905060008267ffffffffffffffff166001148015611f005750303b155b905081158015611f0e575080155b15611f2c5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611f5657845460ff60401b1916600160401b1785555b611f5e612d61565b611f66612d61565b611f6e612d61565b611f76612d69565b611f816000336123b5565b50611f9a6000805160206137c1833981519152336123b5565b50611fc57f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3336123b5565b50611fde600080516020613841833981519152336123b5565b50600080546001600160a01b03808e166001600160a01b0319928316178355601180548e831690841617905560018054918d1691909216811790915560408051633fabe5a360e21b8152905163feaf968c9160048082019260a0929091908290030181865afa158015612055573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207991906134e2565b505050601481905567016345785d8a0000600255670de0b6b3a7640000600555633b9aca00600655600780546001600160a01b03808e166001600160a01b03199283161790925560138054928d1692909116919091179055604080516080810182526601c6bf526340008082526101f46020830181905269d3c21bcecceda100000093830184905262093a806060909301839052600991909155600a55600b91909155600c5542600381905590925061213691506228de8061375d565b600455506001600d55600354600e556000600f556007805460ff60a01b19169055601280546001600160a01b0319166001600160a01b03881617905583156121b857845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050565b6121ce82610ae8565b6121d7816123ab565b610b26838361245a565b600954600d546000919082906001106121fb57600061220a565b6001600d5461220a919061354a565b9050600061271082600960010154856122239190613613565b61222d9190613613565b6122379190613640565b9050612243818461375d565b935050505090565b6010818154811061225b57600080fd5b6000918252602090912001546001600160a01b0316905081565b60008051602061384183398151915261228d816123ab565b600754600160a01b900460ff16156122d95760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e481cdd185c9d1959608a1b6044820152606401610d10565b6007805460ff60a01b1916600160a01b1790556040517f1d2d0140bdb23d465e3a2c0ae7edbe68191a2fffd831f87747b5eda2d732977c9061231e9042815260200190565b60405180910390a150565b600080516020613841833981519152612341816123ab565b50600391909155600455565b600080516020613841833981519152612365816123ab565b600082136123a55760405162461bcd60e51b815260206004820152600d60248201526c496e76616c696420707269636560981b6044820152606401610d10565b50601455565b6111168133612d79565b60006000805160206137e18339815191526123d08484611a51565b612450576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556124063390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610ae2565b6000915050610ae2565b60006000805160206137e18339815191526124758484611a51565b15612450576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610ae2565b6000805160206138018339815191525460ff1615611cff5760405163d93c066560e01b815260040160405180910390fd5b60008051602061382183398151915280546001190161253957604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b6040516001600160a01b038481166024830152838116604483015260648201839052610b269186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050612db2565b34156127bc5760055447908110611116576013546001600160a01b031661265d576007546040516000916001600160a01b03169083908381818185875af1925050503d8060008114612614576040519150601f19603f3d011682016040523d82523d6000602084013e612619565b606091505b50509050806111925760405162461bcd60e51b815260206004820152601060248201526f11551208185d5d1bcc4819985a5b195960821b6044820152606401610d10565b6000606461266c83605a613613565b6126769190613640565b90506000612684828461354a565b6007546040519192506000916001600160a01b039091169084908381818185875af1925050503d80600081146126d6576040519150601f19603f3d011682016040523d82523d6000602084013e6126db565b606091505b505090508061271f5760405162461bcd60e51b815260206004820152601060248201526f11551208185d5d1bcc4819985a5b195960821b6044820152606401610d10565b6013546040516000916001600160a01b03169084908381818185875af1925050503d806000811461276c576040519150601f19603f3d011682016040523d82523d6000602084013e612771565b606091505b50509050806127b55760405162461bcd60e51b815260206004820152601060248201526f11551208185d5d1bcc8819985a5b195960821b6044820152606401610d10565b5050505050565b600080546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015612805573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061282991906135fa565b90506006548110611116576013546001600160a01b031661286157600754600054611116916001600160a01b03918216911683612d07565b6000606461287083605a613613565b61287a9190613640565b90506000612888828461354a565b6007546000549192506128a8916001600160a01b03908116911684612d07565b601354600054610cb2916001600160a01b03918216911683612d07565b600081600f546128d5919061375d565b600b5490915060006128e78284613640565b90506128f38284613770565b600f55600c54600e54612906919061375d565b42111561291b5761291860018261375d565b90505b8015610b265780600d6000828254612933919061375d565b909155505042600e55600d547fed61a2d4b614cbd5677b44533d7c136e648e6d1d48f11bc307e8269df0f0ba96906129696121e1565b6040805192835260208301919091520160405180910390a150505050565b60006129956008601261354a565b6129a090600a613751565b6129ac90600019613640565b821115612a145760405162461bcd60e51b815260206004820152603060248201527f546f6b656e556e6974733a2045544820707269636520746f2057656920636f6e60448201526f76657273696f6e206f766572666c6f7760801b6064820152608401610d10565b612a206008601261354a565b612a2b90600a613751565b610ae29083613613565b600060038211612a4857506101f4919050565b60078211612a5957506102bc919050565b506103e8919050565b6000612710612a718385613613565b611e6e9190613640565b600160008051602061382183398151915255565b612a97612e23565b600080516020613801833981519152805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200161231e565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480612b7057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612b646000805160206137a1833981519152546001600160a01b031690565b6001600160a01b031614155b15611cff5760405163703e46dd60e11b815260040160405180910390fd5b7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3611192816123ab565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612c12575060408051601f3d908101601f19168201909252612c0f918101906135fa565b60015b612c3a57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d10565b6000805160206137a18339815191528114612c6b57604051632a87526960e21b815260048101829052602401610d10565b610cb28383612e53565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611cff5760405163703e46dd60e11b815260040160405180910390fd5b612cc66124d6565b600080516020613801833981519152805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612ad1565b6040516001600160a01b03838116602483015260448201839052610cb291859182169063a9059cbb90606401612574565b6000807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610ae2565b611cff612ea9565b612d71612ea9565b611cff612ece565b612d838282611a51565b6111925760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610d10565b600080602060008451602086016000885af180612dd5576040513d6000823e3d81fd5b50506000513d91508115612ded578060011415612dfa565b6001600160a01b0384163b155b15610b2657604051635274afe760e01b81526001600160a01b0385166004820152602401610d10565b6000805160206138018339815191525460ff16611cff57604051638dfc202b60e01b815260040160405180910390fd5b612e5c82612ed6565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612ea157610cb28282612f3b565b611192612fb1565b612eb1612fd0565b611cff57604051631afcd79f60e31b815260040160405180910390fd5b612a7b612ea9565b806001600160a01b03163b600003612f0c57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d10565b6000805160206137a183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612f589190613784565b600060405180830381855af49150503d8060008114612f93576040519150601f19603f3d011682016040523d82523d6000602084013e612f98565b606091505b5091509150612fa8858383612fea565b95945050505050565b3415611cff5760405163b398979f60e01b815260040160405180910390fd5b6000612fda612d38565b54600160401b900460ff16919050565b606082612fff57612ffa82613046565b611e6e565b815115801561301657506001600160a01b0384163b155b1561303f57604051639996b31560e01b81526001600160a01b0385166004820152602401610d10565b5092915050565b8051156130565780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b60006020828403121561308157600080fd5b81356001600160e01b031981168114611e6e57600080fd5b6000602082840312156130ab57600080fd5b5035919050565b6001600160a01b038116811461111657600080fd5b600080604083850312156130da57600080fd5b8235915060208301356130ec816130b2565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613136576131366130f7565b604052919050565b6000608082840312801561315157600080fd5b506040516000906080810167ffffffffffffffff81118282101715613178576131786130f7565b60409081528435825260208086013590830152848101359082015260609384013593810193909352509092915050565b6000806000604084860312156131bd57600080fd5b83359250602084013567ffffffffffffffff8111156131db57600080fd5b8401601f810186136131ec57600080fd5b803567ffffffffffffffff81111561320357600080fd5b86602082840101111561321557600080fd5b939660209190910195509293505050565b60006020828403121561323857600080fd5b8135611e6e816130b2565b60006020828403121561325557600080fd5b81358015158114611e6e57600080fd5b6000806040838503121561327857600080fd5b8235613283816130b2565b9150602083013567ffffffffffffffff81111561329f57600080fd5b8301601f810185136132b057600080fd5b803567ffffffffffffffff8111156132ca576132ca6130f7565b6132dd601f8201601f191660200161310d565b8181528660208385010111156132f257600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000806020838503121561332557600080fd5b823567ffffffffffffffff81111561333c57600080fd5b8301601f8101851361334d57600080fd5b803567ffffffffffffffff81111561336457600080fd5b8560208260051b840101111561337957600080fd5b6020919091019590945092505050565b6000806040838503121561339c57600080fd5b50508035926020909101359150565b6000806000606084860312156133c057600080fd5b83356133cb816130b2565b92506020840135915060408401356133e2816130b2565b809150509250925092565b60005b838110156134085781810151838201526020016133f0565b50506000910152565b60208152600082518060208401526134308160408501602087016133ed565b601f01601f19169190910160400192915050565b60008060008060008060c0878903121561345d57600080fd5b8635613468816130b2565b95506020870135613478816130b2565b94506040870135613488816130b2565b93506060870135613498816130b2565b925060808701356134a8816130b2565b915060a08701356134b8816130b2565b809150509295509295509295565b80516001600160501b03811681146134dd57600080fd5b919050565b600080600080600060a086880312156134fa57600080fd5b613503866134c6565b60208701516040880151606089015192975090955093509150613528608087016134c6565b90509295509295909350565b634e487b7160e01b600052601160045260246000fd5b81810381811115610ae257610ae2613534565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020815260006118a260208301848661355d565b6000602082840312156135ac57600080fd5b8151611e6e816130b2565b6001600160a01b038716815260a0602082018190526000906135dc908301878961355d565b60408301959095525091151560608301526080909101529392505050565b60006020828403121561360c57600080fd5b5051919050565b8082028115828204841417610ae257610ae2613534565b634e487b7160e01b600052601260045260246000fd5b60008261364f5761364f61362a565b500490565b634e487b7160e01b600052603260045260246000fd5b6001815b60018411156136a55780850481111561368957613689613534565b600184161561369757908102905b60019390931c92800261366e565b935093915050565b6000826136bc57506001610ae2565b816136c957506000610ae2565b81600181146136df57600281146136e957613705565b6001915050610ae2565b60ff8411156136fa576136fa613534565b50506001821b610ae2565b5060208310610133831016604e8410600b8410161715613728575081810a610ae2565b613735600019848461366a565b806000190482111561374957613749613534565b029392505050565b6000611e6e83836136ad565b80820180821115610ae257610ae2613534565b60008261377f5761377f61362a565b500690565b600082516137968184602087016133ed565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775a2646970667358221220166b42bdefc7e60479e0f3f6d32b629f633d57e05ba5ed28a472df7999dd204664736f6c634300081c0033