Transactions
Token Transfers
Tokens
Internal Transactions
Coin Balance History
Logs
Code
Read Contract
Write Contract
- Contract name:
- JackpotTicket
- Optimization enabled
- true
- Compiler version
- v0.6.12+commit.27d51765
- Optimization runs
- 200
- EVM Version
- default
- Verified at
- 2023-07-10T00:39:59.918833Z
Contract source code
// SPDX-License-Identifier: UNLICENSED
interface IERC20 {
function transfer(address to, uint256 value) external returns (bool);
function approve(address spender, uint256 value) external returns (bool);
function transferFrom(address from, address to, uint256 value) external returns (bool);
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function allowance(address owner, address spender) external view returns (uint256);
function burn(uint256 amount) external;
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
interface Router {
function WETH() external pure returns (address);
function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external payable;
function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
}
pragma solidity ^0.6.0;
// A Dividend Generating Share model secured by a decentralized smart contract on the blockchain.
// Earn dividends whenever BNG Tokens are used.
contract JackpotTicket {
/*=================================
= MODIFIERS =
=================================*/
// only people with tokens
modifier onlybelievers () {
require(myTokens() > 0);
_;
}
// only people with profits
modifier onlyhodler() {
require(myDividends(true) > 0);
_;
}
// administrators can:
// -> change the name of the contract
// -> change the name of the token
// -> change the PoS difficulty
// they CANNOT:
// -> take funds
// -> disable withdrawals
// -> kill the contract
// -> change the price of tokens
modifier onlyAdministrator() {
address _customerAddress = msg.sender;
require(administrators[(_customerAddress)]);
_;
}
modifier antiEarlyWhale(uint256 _amountOfBSC){
address _customerAddress = msg.sender;
if( onlyAmbassadors && ((totalBSCBalance() - _amountOfBSC) <= ambassadorQuota_ )){
require(
// is the customer in the ambassador list?
ambassadors_[_customerAddress] == true &&
// does the customer purchase exceed the max ambassador quota?
(ambassadorAccumulatedQuota_[_customerAddress] + _amountOfBSC) <= ambassadorMaxPurchase_
);
// updated the accumulated quota
ambassadorAccumulatedQuota_[_customerAddress] = SafeMath.add(ambassadorAccumulatedQuota_[_customerAddress], _amountOfBSC);
// execute
_;
} else {
// in case the ether count drops low, the ambassador phase won't reinitiate
onlyAmbassadors = false;
_;
}
}
/*==============================
= EVENTS =
==============================*/
event onTokenPurchase(
address indexed customerAddress,
uint256 incomingBSC,
uint256 tokensMinted,
address indexed referredBy
);
event onTokenSell(
address indexed customerAddress,
uint256 tokensBurned,
uint256 bscEarned
);
event onReinvestment(
address indexed customerAddress,
uint256 bscReinvested,
uint256 tokensMinted
);
event onWithdraw(
address indexed customerAddress,
uint256 bscWithdrawn
);
// ERC20
event Transfer(
address indexed from,
address indexed to,
uint256 tokens
);
/*=====================================
= CONFIGURABLES =
=====================================*/
string public name = "Ticket";
string public symbol = "TIK";
uint8 constant public decimals = 18;
uint8 public transferTax = 10;
uint256 constant internal tokenPriceInitial_ = 0.0000001 ether;
uint256 constant internal tokenPriceIncremental_ = 0.00000001 ether;
uint256 constant internal magnitude = 2**64;
// proof of stake
uint256 public stakingRequirement = 1;
// ambassador program
mapping(address => bool) internal ambassadors_;
uint256 constant internal ambassadorMaxPurchase_ = 1 ether;
uint256 constant internal ambassadorQuota_ = 1 ether;
// new variables for the win sysem
address [] public last5buyer = new address [] (5);
uint8 public last5Counter = 0;
bool public writeOnList = false;
uint256 public winTimer = 1 * 60; // 15 minutes // TODO 15 min!
uint256 public timerUpdate = 0;
bool public roundOver = false;
uint256 public minListAmount = 1000; // TODO 1 ether;
address public winToken = 0x01445C31581c354b7338AC35693AB2001B50b9aE; // velas usdt 6 dec
uint256 public lastJackpotAmount = 0;
uint256 public jackpotTreshold = 1000000; // TODO 1000000 !
// dev wallet address
address public dev = 0x2096aFDaA68EEaE1EbF95DFdf565eE6d9B1fbA37;
Router public router = Router(0x72E9064e0d0e85a50d058cCED3dE1957B1dCAc19);
/*================================
= DATASETS =
================================*/
// amount of shares for each address (scaled number)
mapping (address => uint256) public tokenBalanceLedger_;
mapping (address => uint256) public referralBalance_;
mapping (address => int256) public payoutsTo_;
mapping (address => uint256) public ambassadorAccumulatedQuota_;
uint256 public tokenSupply_ = 0;
uint256 public profitPerShare_;
// administrator list (see above on what they can do)
mapping(address => bool) public administrators;
bool public onlyAmbassadors = false;
/*=======================================
= PUBLIC FUNCTIONS =
=======================================*/
/*
* -- APPLICATION ENTRY POINTS --
*/
constructor () public {
// add administrators here
administrators[0x31fB16419e710603D45DfB8aCAFdF651d8aa71Bd] = true;
administrators[0x2096aFDaA68EEaE1EbF95DFdf565eE6d9B1fbA37] = true;
administrators[0x1978b5B5D7A050c778390e1dDe24C50f59457147] = true;
// add ambassadors here
ambassadors_[0x5323906f33d555228234f407157495EB73aD55Fc] = true;
ambassadors_[0x31fB16419e710603D45DfB8aCAFdF651d8aa71Bd] = true;
ambassadors_[0x2096aFDaA68EEaE1EbF95DFdf565eE6d9B1fbA37] = true;
}
// function to write the buyers address into the Array and reset timerUpdate
function mapUsersPurchase (uint256 tokenAmount, address user) internal {
if (tokenAmount >= minListAmount && !roundOver ) {
if (last5Counter == 5) {
last5Counter = 0;
}
last5buyer[last5Counter++] = user;
timerUpdate = block.timestamp + winTimer;
}
}
function timeLeft () public view returns (uint256) {
if (timerUpdate > block.timestamp) {
return timerUpdate - block.timestamp;
} else
return 0;
}
function jackpotTrigger () public {
uint256 winTokenBal = IERC20(winToken).balanceOf(address(this));
if (timeLeft() == 0 && !roundOver && winTokenBal > 1 ether) {
lastJackpotAmount = winTokenBal;
for (uint8 i = 0; i < 5; i++) {
address user = last5buyer[i];
IERC20(winToken).transfer(user, winTokenBal/10);
}
roundOver = true;
}
}
// function for admin to start the new round
function startNewRound () public onlyAdministrator {
require (roundOver == true, "round is not over now!");
// empty the last5buyer array
for (uint8 i = 0; i < 5; i++) {
last5buyer[i] = address(0);
}
roundOver = false;
timerUpdate = block.timestamp + winTimer;
}
// Converts all incoming BSC to tokens for the caller, and passes down the referral address (if any)
function buy (address _referredBy) public payable returns (uint256) {
uint256 tokenAmount = purchaseTokens(msg.value, _referredBy);
jackpotTrigger ();
if(writeOnList) {
mapUsersPurchase (tokenAmount , msg.sender);
}
}
receive() external payable { }
fallback () payable external {
uint256 tokenAmount = purchaseTokens (msg.value, address(0));
jackpotTrigger ();
if(writeOnList) {
mapUsersPurchase (tokenAmount , msg.sender);
}
}
/**
* Converts all of caller's dividends to tokens.
*/
function reinvest() onlyhodler() public {
// fetch dividends
uint256 _dividends = myDividends(false); // retrieve ref. bonus later in the code
// pay out the dividends virtually
address _customerAddress = msg.sender;
payoutsTo_[_customerAddress] += (int256) (_dividends * magnitude);
// retrieve ref. bonus
_dividends += referralBalance_[_customerAddress];
referralBalance_[_customerAddress] = 0;
// dispatch a buy order with the virtualized "withdrawn dividends"
uint256 _tokens = purchaseTokens(_dividends, address(0));
// fire event
emit onReinvestment(_customerAddress, _dividends, _tokens);
jackpotTrigger ();
}
/**
* Function to sell() and withdraw().
*/
function exit() public {
// get token count for caller & sell them all
address _customerAddress = msg.sender;
uint256 _tokens = tokenBalanceLedger_[_customerAddress];
if (_tokens > 0)
sell(_tokens);
withdraw ();
}
/**
* Withdraws all of the callers earnings.
*/
function withdraw() onlyhodler() public {
// setup data
address payable _customerAddress = msg.sender;
uint256 _dividends = myDividends(false); // get ref. bonus later in the code
// update dividend tracker
payoutsTo_[_customerAddress] += (int256) (_dividends * magnitude);
// add ref. bonus
_dividends += referralBalance_[_customerAddress];
referralBalance_[_customerAddress] = 0;
// delivery service
_customerAddress.transfer(_dividends);
// fire event
emit onWithdraw(_customerAddress, _dividends);
jackpotTrigger ();
}
function checkIfOnList (address user) public view returns (bool) {
address listUser = last5buyer[0];
if (listUser == user) {return true;}
listUser = last5buyer[1];
if (listUser == user) {return true;}
listUser = last5buyer[2];
if (listUser == user) {return true;}
listUser = last5buyer[3];
if (listUser == user) {return true;}
listUser = last5buyer[4];
if (listUser == user) {return true;}
else {return false;}
}
/**
* Liquifies tokens to bsc.
*/
function sell (uint256 _amountOfTokens) onlybelievers () public {
address _customerAddress = msg.sender;
require (checkIfOnList(_customerAddress) == false, "Sell: user is one of the last 5 buyers!");
require(_amountOfTokens <= tokenBalanceLedger_[_customerAddress], "Sell: tokenBalanceLedger_ to low!");
uint256 _tokens = _amountOfTokens;
uint256 _bsc = tokensToBSC_(_tokens);
uint256 _dividends = SafeMath.div(_bsc, transferTax);
uint256 _taxedBSC = SafeMath.sub(_bsc, _dividends);
// burn the sold tokens
tokenSupply_ = SafeMath.sub(tokenSupply_, _tokens);
tokenBalanceLedger_[_customerAddress] = SafeMath.sub(tokenBalanceLedger_[_customerAddress], _tokens);
// update dividends tracker
int256 _updatedPayouts = (int256) (profitPerShare_ * _tokens + (_taxedBSC * magnitude));
payoutsTo_[_customerAddress] -= _updatedPayouts;
// dividing by zero is a bad idea
if (tokenSupply_ > 0) {
// update the amount of dividends per token
profitPerShare_ = SafeMath.add(profitPerShare_, (_dividends * magnitude) / tokenSupply_);
}
// fire event
emit onTokenSell(_customerAddress, _tokens, _taxedBSC);
jackpotTrigger ();
}
function swapToWinToken (uint256 swapAmount) public {
address[] memory path = new address[](2);
path[0] = router.WETH();
path[1] = winToken;
router.swapExactETHForTokens {value: swapAmount} (
0, // uint amountOutMin,
path, // address[] calldata path,
address(this), // address to,
block.timestamp
);
}
/**
* Transfer tokens from the caller to a new holder.
* Remember, there's a 10% fee here as well.
*/
function transfer(address _toAddress, uint256 _amountOfTokens) onlybelievers () public returns(bool) {
address _customerAddress = msg.sender;
// make sure we have the requested tokens
require(!onlyAmbassadors && _amountOfTokens <= tokenBalanceLedger_[_customerAddress]);
// withdraw all outstanding dividends first
if(myDividends(true) > 0) withdraw();
// liquify 10% of the tokens that are transfered
// these are dispersed to shareholders
uint256 _tokenFee = SafeMath.div(_amountOfTokens, transferTax);
uint256 _taxedTokens = SafeMath.sub(_amountOfTokens, _tokenFee);
uint256 _dividends = tokensToBSC_(_tokenFee); // calculate the BNB value of the taxed tokens
// send tax to dev wallet
tokenBalanceLedger_[dev] = SafeMath.add(tokenBalanceLedger_[dev], _tokenFee);
// exchange tokens
tokenBalanceLedger_[_customerAddress] = SafeMath.sub(tokenBalanceLedger_[_customerAddress], _amountOfTokens);
tokenBalanceLedger_[_toAddress] = SafeMath.add(tokenBalanceLedger_[_toAddress], _taxedTokens);
// update dividend trackers
payoutsTo_[_customerAddress] -= (int256) (profitPerShare_ * _amountOfTokens);
payoutsTo_[_toAddress] += (int256) (profitPerShare_ * _taxedTokens);
// disperse dividends among holders
profitPerShare_ = SafeMath.add(profitPerShare_, (_dividends/2 * magnitude) / tokenSupply_);
// swap half of the dividends to the win token
uint256 winTokenToReceive = getWintokenAmount(_dividends/2);
if (winTokenToReceive > 1000) {
swapToWinToken(_dividends/2);
}
// fire event
Transfer(_customerAddress, _toAddress, _taxedTokens);
// ERC20
return true;
}
/*---------- ADMINISTRATOR ONLY FUNCTIONS ----------*/
/**
* administrator can manually disable the ambassador phase.
*/
function disableInitialStage() onlyAdministrator() public {
onlyAmbassadors = false;
}
function setAdministrator(address _newAdmin, bool _status) onlyAdministrator() public {
administrators[_newAdmin] = _status;
}
function setStakingRequirement(uint256 _amountOfTokens) onlyAdministrator() public {
stakingRequirement = _amountOfTokens;
}
function setName(string memory _name) onlyAdministrator() public {
name = _name;
}
function setSymbol(string memory _symbol) onlyAdministrator() public {
symbol = _symbol;
}
function setWinTimer (uint256 time) onlyAdministrator() public {
winTimer = time;
}
function setTimerUpdate (uint256 time) onlyAdministrator() public {
timerUpdate = time;
}
function setMinListAmount (uint256 amount) onlyAdministrator() public {
minListAmount = amount;
}
function setTransferTax (uint8 tax) onlyAdministrator() public {
transferTax = tax;
}
function setJackpotTreshold (uint256 treshold) onlyAdministrator() public {
jackpotTreshold = treshold;
}
function setWriteOnList (bool listActive) onlyAdministrator() public {
writeOnList = listActive;
}
// function for admins to receive al the remaining wintoken balance after the users got half of it.
function getLastJackpot () onlyAdministrator() public {
require(roundOver, "getLastJackpot: round is not over now!");
uint256 winTokenBal = IERC20(winToken).balanceOf(address(this));
IERC20(winToken).transfer(dev, winTokenBal);
}
// function for admins to manually reset the win timer to 0 and trigger the jackpot if the wintokenbalance is over the teshold
function pullTheTrigger () onlyAdministrator() public {
if (IERC20(winToken).balanceOf(address(this)) > jackpotTreshold){
winTimer = 0;
jackpotTrigger();
}
}
/*---------- HELPERS AND CALCULATORS ----------*/
/**
* Method to view the current BSC stored in the contract
* Example: totalBSCBalance()
*/
function totalBSCBalance() public view returns(uint) {
return address(this).balance;
}
/**
* Retrieve the total token supply.
*/
function totalSupply() public view returns(uint256) {
return tokenSupply_;
}
/**
* Retrieve the tokens owned by the caller.
*/
function myTokens() public view returns(uint256) {
address _customerAddress = msg.sender;
return balanceOf(_customerAddress);
}
/**
* Retrieve the dividends owned by the caller.
*/
function myDividends(bool _includeReferralBonus) public view returns(uint256) {
address _customerAddress = msg.sender;
return _includeReferralBonus ? dividendsOf(_customerAddress) + referralBalance_[_customerAddress] : dividendsOf(_customerAddress) ;
}
/**
* Retrieve the token balance of any single address.
*/
function balanceOf(address _customerAddress) view public returns(uint256) {
return tokenBalanceLedger_[_customerAddress];
}
/**
* Retrieve the dividend balance of any single address.
*/
function dividendsOf(address _customerAddress) view public returns(uint256) {
return (uint256) ((int256)(profitPerShare_ * tokenBalanceLedger_[_customerAddress]) - payoutsTo_[_customerAddress]) / magnitude;
}
/**
* Return the sell price of 1 individual token.
*/
function sellPrice() public view returns (uint256) {
if(tokenSupply_ == 0){
return tokenPriceInitial_ - tokenPriceIncremental_;
} else {
uint256 _bsc = tokensToBSC_(1e18);
uint256 _dividends = SafeMath.div(_bsc, transferTax );
uint256 _taxedBSC = SafeMath.sub(_bsc, _dividends);
return _taxedBSC;
}
}
/**
* Return the buy price of 1 individual token.
*/
function buyPrice() public view returns(uint256) {
if(tokenSupply_ == 0){
return tokenPriceInitial_ + tokenPriceIncremental_;
} else {
uint256 _bsc = tokensToBSC_(1e18);
uint256 _dividends = SafeMath.div(_bsc, transferTax );
uint256 _taxedBSC = SafeMath.add(_bsc, _dividends);
return _taxedBSC;
}
}
function calculateTokensReceived (uint256 _bscToSpend) public view returns(uint256) {
uint256 _dividends = SafeMath.div(_bscToSpend, transferTax);
uint256 _taxedBSC = SafeMath.sub(_bscToSpend, _dividends);
uint256 _amountOfTokens = bscToTokens_(_taxedBSC);
return _amountOfTokens;
}
function calculateBSCReceived (uint256 _tokensToSell) public view returns(uint256) {
require(_tokensToSell <= tokenSupply_);
uint256 _bsc = tokensToBSC_(_tokensToSell);
uint256 _dividends = SafeMath.div(_bsc, transferTax);
uint256 _taxedBSC = SafeMath.sub(_bsc, _dividends);
return _taxedBSC;
}
// function to get amount out from buying from LP
function getWintokenAmount (uint256 amountIn) public view returns (uint256) {
address[] memory path;
path = new address[](2);
path[0] = router.WETH();
path[1] = winToken;
uint256[] memory amountOutMins = router.getAmountsOut(amountIn, path);
return amountOutMins[path.length -1];
}
/*==========================================
= INTERNAL FUNCTIONS =
==========================================*/
// incomingBSC is the msg.value (BNB amount)
function purchaseTokens (uint256 _incomingBSC, address _referredBy) antiEarlyWhale (_incomingBSC) internal returns(uint256) {
// data setup
address _customerAddress = msg.sender;
uint256 _undividedDividends = SafeMath.div(_incomingBSC, transferTax);
uint256 _referralBonus = SafeMath.div(_undividedDividends, 3);
uint256 _dividends = SafeMath.sub(_undividedDividends, _referralBonus);
uint256 _taxedBSC = SafeMath.sub(_incomingBSC, _undividedDividends);
uint256 _amountOfTokens = bscToTokens_(_taxedBSC);
uint256 _fee = _dividends * magnitude;
require(_amountOfTokens > 0 && (SafeMath.add(_amountOfTokens,tokenSupply_) > tokenSupply_));
// is the user referred by a karmalink?
if(
// is this a referred purchase?
_referredBy != 0x0000000000000000000000000000000000000000 &&
// no cheating!
_referredBy != _customerAddress &&
tokenBalanceLedger_[_referredBy] >= stakingRequirement
) {
// wealth redistribution
referralBalance_[_referredBy] = SafeMath.add(referralBalance_[_referredBy], _referralBonus);
} else {
// no ref purchase
// add the referral bonus back to the global dividends cake
_dividends = SafeMath.add(_dividends, _referralBonus);
_fee = _dividends * magnitude;
}
// we can't give people infinite bsc
if(tokenSupply_ > 0) {
// add tokens to the pool
tokenSupply_ = SafeMath.add(tokenSupply_, _amountOfTokens);
// take the amount of dividends gained through this transaction, and allocates them evenly to each shareholder
profitPerShare_ += (_dividends * magnitude / (tokenSupply_));
// calculate the amount of tokens the customer receives over his purchase
_fee = _fee - (_fee-(_amountOfTokens * (_dividends * magnitude / (tokenSupply_))));
} else {
// add tokens to the pool
tokenSupply_ = _amountOfTokens;
}
// update circulating supply & the ledger address for the customer
tokenBalanceLedger_[_customerAddress] = SafeMath.add(tokenBalanceLedger_[_customerAddress], _amountOfTokens);
int256 _updatedPayouts = (int256) ((profitPerShare_ * _amountOfTokens) - _fee);
payoutsTo_[_customerAddress] += _updatedPayouts;
// fire event
emit onTokenPurchase(_customerAddress, _incomingBSC, _amountOfTokens, _referredBy);
return _amountOfTokens;
}
/**
* Calculate Token price based on an amount of incoming bsc
* It's an algorithm, hopefully we gave you the whitepaper with it in scientific notation;
* Some conversions occurred to prevent decimal errors or underflows / overflows in solidity code.
*/
function bscToTokens_(uint256 _bsc)
internal
view
returns(uint256)
{
uint256 _tokenPriceInitial = tokenPriceInitial_ * 1e18;
uint256 _tokensReceived =
(
(
// underflow attempts BTFO
SafeMath.sub(
(sqrt
(
(_tokenPriceInitial**2)
+
(2*(tokenPriceIncremental_ * 1e18)*(_bsc * 1e18))
+
(((tokenPriceIncremental_)**2)*(tokenSupply_**2))
+
(2*(tokenPriceIncremental_)*_tokenPriceInitial*tokenSupply_)
)
), _tokenPriceInitial
)
)/(tokenPriceIncremental_)
)-(tokenSupply_)
;
return _tokensReceived;
}
/**
* Calculate token sell value.
*/
function tokensToBSC_ (uint256 _tokens) internal view returns(uint256) {
uint256 tokens_ = (_tokens + 1e18);
uint256 _tokenSupply = (tokenSupply_ + 1e18);
uint256 _etherReceived =
(
// underflow attempts BTFO
SafeMath.sub(
(
(
(
tokenPriceInitial_ + (tokenPriceIncremental_ * (_tokenSupply/1e18))
) - tokenPriceIncremental_
) * (tokens_ - 1e18)
),(tokenPriceIncremental_*((tokens_**2-tokens_)/1e18))/2
)
/1e18);
return _etherReceived;
}
function sqrt (uint x) internal pure returns (uint y) {
uint z = (x + 1) / 2;
y = x;
while (z < y) {
y = z;
z = (x / z + z) / 2;
}
}
}
/**
* @title SafeMath
* @dev Math operations with safety checks that throw on error
*/
library SafeMath {
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
assert(c / a == b);
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
// assert(b > 0); // Solidity automatically throws when dividing by 0
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
assert(b <= a);
return a - b;
}
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
assert(c >= a);
return c;
}
}
Contract ABI
[{"type":"constructor","stateMutability":"nonpayable","inputs":[]},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"tokens","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"onReinvestment","inputs":[{"type":"address","name":"customerAddress","internalType":"address","indexed":true},{"type":"uint256","name":"bscReinvested","internalType":"uint256","indexed":false},{"type":"uint256","name":"tokensMinted","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"onTokenPurchase","inputs":[{"type":"address","name":"customerAddress","internalType":"address","indexed":true},{"type":"uint256","name":"incomingBSC","internalType":"uint256","indexed":false},{"type":"uint256","name":"tokensMinted","internalType":"uint256","indexed":false},{"type":"address","name":"referredBy","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"onTokenSell","inputs":[{"type":"address","name":"customerAddress","internalType":"address","indexed":true},{"type":"uint256","name":"tokensBurned","internalType":"uint256","indexed":false},{"type":"uint256","name":"bscEarned","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"onWithdraw","inputs":[{"type":"address","name":"customerAddress","internalType":"address","indexed":true},{"type":"uint256","name":"bscWithdrawn","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"fallback","stateMutability":"payable"},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"administrators","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"ambassadorAccumulatedQuota_","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"_customerAddress","internalType":"address"}]},{"type":"function","stateMutability":"payable","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"buy","inputs":[{"type":"address","name":"_referredBy","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"buyPrice","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"calculateBSCReceived","inputs":[{"type":"uint256","name":"_tokensToSell","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"calculateTokensReceived","inputs":[{"type":"uint256","name":"_bscToSpend","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"checkIfOnList","inputs":[{"type":"address","name":"user","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"decimals","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"dev","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"disableInitialStage","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"dividendsOf","inputs":[{"type":"address","name":"_customerAddress","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"exit","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"getLastJackpot","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getWintokenAmount","inputs":[{"type":"uint256","name":"amountIn","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"jackpotTreshold","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"jackpotTrigger","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"last5Counter","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"last5buyer","inputs":[{"type":"uint256","name":"","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"lastJackpotAmount","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"minListAmount","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"myDividends","inputs":[{"type":"bool","name":"_includeReferralBonus","internalType":"bool"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"myTokens","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"onlyAmbassadors","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"int256","name":"","internalType":"int256"}],"name":"payoutsTo_","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"profitPerShare_","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"pullTheTrigger","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"referralBalance_","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"reinvest","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"roundOver","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract Router"}],"name":"router","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"sell","inputs":[{"type":"uint256","name":"_amountOfTokens","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"sellPrice","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setAdministrator","inputs":[{"type":"address","name":"_newAdmin","internalType":"address"},{"type":"bool","name":"_status","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setJackpotTreshold","inputs":[{"type":"uint256","name":"treshold","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setMinListAmount","inputs":[{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setName","inputs":[{"type":"string","name":"_name","internalType":"string"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setStakingRequirement","inputs":[{"type":"uint256","name":"_amountOfTokens","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setSymbol","inputs":[{"type":"string","name":"_symbol","internalType":"string"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setTimerUpdate","inputs":[{"type":"uint256","name":"time","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setTransferTax","inputs":[{"type":"uint8","name":"tax","internalType":"uint8"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setWinTimer","inputs":[{"type":"uint256","name":"time","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setWriteOnList","inputs":[{"type":"bool","name":"listActive","internalType":"bool"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"stakingRequirement","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"startNewRound","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"swapToWinToken","inputs":[{"type":"uint256","name":"swapAmount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"timeLeft","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"timerUpdate","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"tokenBalanceLedger_","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"tokenSupply_","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalBSCBalance","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transfer","inputs":[{"type":"address","name":"_toAddress","internalType":"address"},{"type":"uint256","name":"_amountOfTokens","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"transferTax","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"winTimer","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"winToken","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"withdraw","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"writeOnList","inputs":[]},{"type":"receive","stateMutability":"payable"}]
Contract Creation Code
0x60c06040526006608081905265151a58dad95d60d21b60a090815262000029916000919062000277565b506040805180820190915260038082526254494b60e81b6020909201918252620000569160019162000277565b506002805460ff1916600a179055600160035560408051600580825260c08201909252906020820160a080368337505081516200009b926005925060200190620002fc565b506006805461ffff19169055603c600755600060088190556009805460ff199081169091556103e8600a55600b80546001600160a01b03199081167301445c31581c354b7338ac35693ab2001b50b9ae17909155600c839055620f4240600d55600e80548216732096afdaa68eeae1ebf95dfdf565ee6d9b1fba37179055600f80549091167372e9064e0d0e85a50d058cced3de1957b1dcac191790556014919091556017805490911690553480156200015457600080fd5b507f0f06d2e4bc0e6f321d437f3638602d93249bfb13d557108007aca23ee36dfa7e8054600160ff1991821681179092557f76e590731841eee8b2fc0e04992a1e96ef11e97c593f86d23cc40c6e39f9f84980548216831790557f1f018e601af5856695ab3db9ac90eb3095dc87d84981ad98603021f800aa8e46805482168317905560046020527fa412d3d5d371d4d6865355ffbd2b7435ca0b57ebc519e468d45c9b753d0222e880548216831790557fcb0491ebeb47a6c8fc4067cae1d65fdf96a82677b946062ec46bda15bbece2778054821683179055732096afdaa68eeae1ebf95dfdf565ee6d9b1fba376000527fd134ecaf43ad214b37f6a92c2f7042367b783318f1b0e3e8caa31c28ce2bcfb1805490911690911790556200039a565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002ba57805160ff1916838001178555620002ea565b82800160010185558215620002ea579182015b82811115620002ea578251825591602001919060010190620002cd565b50620002f892915062000362565b5090565b82805482825590600052602060002090810192821562000354579160200282015b828111156200035457825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906200031d565b50620002f892915062000379565b5b80821115620002f8576000815560010162000363565b5b80821115620002f85780546001600160a01b03191681556001016200037a565b612bea80620003aa6000396000f3fe6080604052600436106103995760003560e01c80638620410b116101dc578063c47f002711610102578063dced5da1116100a0578063f088d5471161006f578063f088d54714610cc3578063f0fb6f3f14610ce9578063f887ea4014610d15578063fdb5a03e14610d2a576103a0565b8063dced5da114610c3c578063e1456cb414610c51578063e4849b3214610c84578063e9fad8ee14610cae576103a0565b8063cac0ac7d116100dc578063cac0ac7d14610be8578063cd74911214610bfd578063d18064fe14610c12578063dad81e5914610c27576103a0565b8063c47f002714610aef578063c664f7f114610ba0578063c89b597e14610bd3576103a0565b8063a86a24eb1161017a578063b7e6c2bd11610149578063b7e6c2bd146109ff578063b84c824614610a14578063ba53cf5814610ac5578063bd85948c14610ada576103a0565b8063a86a24eb1461095d578063a8e04f3414610987578063a9059cbb1461099c578063aaa55270146109d5576103a0565b8063949e8acd116101b6578063949e8acd146108f45780639581c42f1461090957806395d89b411461091e578063a086880a14610933576103a0565b80638620410b1461087357806387c950581461088857806391cca3db146108c3576103a0565b80633ccfd60b116102c15780636697d02c1161025f578063762e1de11161022e578063762e1de1146107ce57806376be1585146108015780638124f7ac146108345780638328b61014610849576103a0565b80636697d02c14610745578063688abbf71461075a57806370a0823114610786578063710b318b146107b9576103a0565b806356d399e81161029b57806356d399e8146106be5780635a43af7f146106d35780635c5a0a9d146106fd578063651fe61114610730576103a0565b80633ccfd60b1461066a5780634b7503341461067f57806355cf6d7d14610694576103a0565b806318160ddd116103395780632fc13044116103085780632fc13044146105cd578063313ce567146105e2578063360834e01461060d5780633ae9b19b14610637576103a0565b806318160ddd1461056457806327defa1f146105795780632ac568311461058e5780632d8838c3146105a3576103a0565b80630ef9606a116103755780630ef9606a146104d257806310d0ffdd146104fc5780631300a6d11461052657806314404eb21461053b576103a0565b806265318b146103d4578062d211671461041957806306fdde0314610448576103a0565b366103a057005b60006103ad346000610d3f565b90506103b76112e0565b600654610100900460ff16156103d1576103d18133611463565b50005b3480156103e057600080fd5b50610407600480360360208110156103f757600080fd5b50356001600160a01b03166114f5565b60408051918252519081900360200190f35b34801561042557600080fd5b506104466004803603602081101561043c57600080fd5b503560ff1661152e565b005b34801561045457600080fd5b5061045d611561565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561049757818101518382015260200161047f565b50505050905090810190601f1680156104c45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104de57600080fd5b50610446600480360360208110156104f557600080fd5b50356115ef565b34801561050857600080fd5b506104076004803603602081101561051f57600080fd5b5035611611565b34801561053257600080fd5b5061040761164b565b34801561054757600080fd5b5061055061166a565b604080519115158252519081900360200190f35b34801561057057600080fd5b50610407611673565b34801561058557600080fd5b50610550611679565b34801561059a57600080fd5b50610446611682565b3480156105af57600080fd5b50610446600480360360208110156105c657600080fd5b50356117e1565b3480156105d957600080fd5b50610407611803565b3480156105ee57600080fd5b506105f7611809565b6040805160ff9092168252519081900360200190f35b34801561061957600080fd5b506104466004803603602081101561063057600080fd5b503561180e565b34801561064357600080fd5b506104076004803603602081101561065a57600080fd5b50356001600160a01b0316611830565b34801561067657600080fd5b50610446611842565b34801561068b57600080fd5b50610407611910565b3480156106a057600080fd5b50610446600480360360208110156106b757600080fd5b503561196c565b3480156106ca57600080fd5b5061040761198e565b3480156106df57600080fd5b50610407600480360360208110156106f657600080fd5b5035611994565b34801561070957600080fd5b506104076004803603602081101561072057600080fd5b50356001600160a01b0316611bef565b34801561073c57600080fd5b50610407611c01565b34801561075157600080fd5b50610446611c07565b34801561076657600080fd5b506104076004803603602081101561077d57600080fd5b50351515611cb0565b34801561079257600080fd5b50610407600480360360208110156107a957600080fd5b50356001600160a01b0316611cf1565b3480156107c557600080fd5b50610407611d0c565b3480156107da57600080fd5b50610550600480360360208110156107f157600080fd5b50356001600160a01b0316611d12565b34801561080d57600080fd5b506105506004803603602081101561082457600080fd5b50356001600160a01b0316611e47565b34801561084057600080fd5b506105f7611e5c565b34801561085557600080fd5b506104466004803603602081101561086c57600080fd5b5035611e65565b34801561087f57600080fd5b50610407611e87565b34801561089457600080fd5b50610446600480360360408110156108ab57600080fd5b506001600160a01b0381351690602001351515611ed8565b3480156108cf57600080fd5b506108d8611f20565b604080516001600160a01b039092168252519081900360200190f35b34801561090057600080fd5b50610407611f2f565b34801561091557600080fd5b506108d8611f41565b34801561092a57600080fd5b5061045d611f50565b34801561093f57600080fd5b506104076004803603602081101561095657600080fd5b5035611faa565b34801561096957600080fd5b506104466004803603602081101561098057600080fd5b5035611feb565b34801561099357600080fd5b50610446612239565b3480156109a857600080fd5b50610550600480360360408110156109bf57600080fd5b506001600160a01b038135169060200135612262565b3480156109e157600080fd5b506108d8600480360360208110156109f857600080fd5b5035612471565b348015610a0b57600080fd5b50610407612498565b348015610a2057600080fd5b5061044660048036036020811015610a3757600080fd5b810190602081018135600160201b811115610a5157600080fd5b820183602082011115610a6357600080fd5b803590602001918460018302840111600160201b83111715610a8457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061249e945050505050565b348015610ad157600080fd5b506104076124d2565b348015610ae657600080fd5b506104466124d8565b348015610afb57600080fd5b5061044660048036036020811015610b1257600080fd5b810190602081018135600160201b811115610b2c57600080fd5b820183602082011115610b3e57600080fd5b803590602001918460018302840111600160201b83111715610b5f57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506125b1945050505050565b348015610bac57600080fd5b5061040760048036036020811015610bc357600080fd5b50356001600160a01b03166125e0565b348015610bdf57600080fd5b506104076125f2565b348015610bf457600080fd5b506105f76125f8565b348015610c0957600080fd5b506104466112e0565b348015610c1e57600080fd5b50610407612601565b348015610c3357600080fd5b50610407612605565b348015610c4857600080fd5b5061055061260b565b348015610c5d57600080fd5b5061040760048036036020811015610c7457600080fd5b50356001600160a01b0316612619565b348015610c9057600080fd5b5061044660048036036020811015610ca757600080fd5b503561262b565b348015610cba57600080fd5b506104466127f5565b61040760048036036020811015610cd957600080fd5b50356001600160a01b031661281c565b348015610cf557600080fd5b5061044660048036036020811015610d0c57600080fd5b5035151561284d565b348015610d2157600080fd5b506108d8612884565b348015610d3657600080fd5b50610446612893565b6017546000908390339060ff168015610d695750670de0b6b3a764000082610d65612601565b0311155b1561106b576001600160a01b03811660009081526004602052604090205460ff1615156001148015610dbe57506001600160a01b038116600090815260136020526040902054670de0b6b3a764000090830111155b610dc757600080fd5b6001600160a01b038116600090815260136020526040902054610dea9083612943565b6001600160a01b038216600090815260136020526040812091909155600254339190610e1a90889060ff16612952565b90506000610e29826003612952565b90506000610e378383612967565b90506000610e458a85612967565b90506000610e5282612979565b9050600160401b83028115801590610e745750601454610e728382612943565b115b610e7d57600080fd5b6001600160a01b038b1615801590610ea75750866001600160a01b03168b6001600160a01b031614155b8015610ecd57506003546001600160a01b038c1660009081526010602052604090205410155b15610f13576001600160a01b038b16600090815260116020526040902054610ef59086612943565b6001600160a01b038c16600090815260116020526040902055610f28565b610f1d8486612943565b935050600160401b83025b60145415610f7957610f3c60145483612943565b6014819055600160401b850281610f4f57fe5b60158054929091049091019055601454600160401b850281610f6d57fe5b04820281039003610f7f565b60148290555b6001600160a01b038716600090815260106020526040902054610fa29083612943565b60106000896001600160a01b03166001600160a01b0316815260200190815260200160002081905550600081836015540203905080601260008a6001600160a01b03166001600160a01b03168152602001908152602001600020600082825401925050819055508b6001600160a01b0316886001600160a01b03167f022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d58f86604051808381526020018281526020019250505060405180910390a3509098505050505050506112d8565b6017805460ff19169055600254339060009061108b90889060ff16612952565b9050600061109a826003612952565b905060006110a88383612967565b905060006110b68a85612967565b905060006110c382612979565b9050600160401b830281158015906110e557506014546110e38382612943565b115b6110ee57600080fd5b6001600160a01b038b16158015906111185750866001600160a01b03168b6001600160a01b031614155b801561113e57506003546001600160a01b038c1660009081526010602052604090205410155b15611184576001600160a01b038b166000908152601160205260409020546111669086612943565b6001600160a01b038c16600090815260116020526040902055611199565b61118e8486612943565b935050600160401b83025b601454156111ea576111ad60145483612943565b6014819055600160401b8502816111c057fe5b60158054929091049091019055601454600160401b8502816111de57fe5b048202810390036111f0565b60148290555b6001600160a01b0387166000908152601060205260409020546112139083612943565b60106000896001600160a01b03166001600160a01b0316815260200190815260200160002081905550600081836015540203905080601260008a6001600160a01b03166001600160a01b03168152602001908152602001600020600082825401925050819055508b6001600160a01b0316886001600160a01b03167f022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d58f86604051808381526020018281526020019250505060405180910390a3509098505050505050505b505092915050565b600b54604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561132b57600080fd5b505afa15801561133f573d6000803e3d6000fd5b505050506040513d602081101561135557600080fd5b5051905061136161164b565b158015611371575060095460ff16155b80156113845750670de0b6b3a764000081115b1561146057600c81905560005b60058160ff16101561145157600060058260ff16815481106113af57fe5b600091825260209091200154600b546001600160a01b0391821692501663a9059cbb82600a86046040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561141c57600080fd5b505af1158015611430573d6000803e3d6000fd5b505050506040513d602081101561144657600080fd5b505050600101611391565b506009805460ff191660011790555b50565b600a548210158015611478575060095460ff16155b156114f15760065460ff1660051415611496576006805460ff191690555b6006805460ff198116600160ff928316908101909216179091556005805483929081106114bf57fe5b600091825260209091200180546001600160a01b0319166001600160a01b039290921691909117905560075442016008555b5050565b6001600160a01b0381166000908152601260209081526040808320546010909252822054601554600160401b929102030490505b919050565b3360008181526016602052604090205460ff1661154a57600080fd5b506002805460ff191660ff92909216919091179055565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156115e75780601f106115bc576101008083540402835291602001916115e7565b820191906000526020600020905b8154815290600101906020018083116115ca57829003601f168201915b505050505081565b3360008181526016602052604090205460ff1661160b57600080fd5b50600a55565b600254600090819061162790849060ff16612952565b905060006116358483612967565b9050600061164282612979565b95945050505050565b60004260085411156116635742600854039050611667565b5060005b90565b60095460ff1681565b60145490565b60175460ff1681565b3360008181526016602052604090205460ff1661169e57600080fd5b60095460ff166116df5760405162461bcd60e51b8152600401808060200182810382526026815260200180612b6e6026913960400191505060405180910390fd5b600b54604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561172a57600080fd5b505afa15801561173e573d6000803e3d6000fd5b505050506040513d602081101561175457600080fd5b5051600b54600e546040805163a9059cbb60e01b81526001600160a01b03928316600482015260248101859052905193945091169163a9059cbb916044808201926020929091908290030181600087803b1580156117b157600080fd5b505af11580156117c5573d6000803e3d6000fd5b505050506040513d60208110156117db57600080fd5b50505050565b3360008181526016602052604090205460ff166117fd57600080fd5b50600755565b600a5481565b601281565b3360008181526016602052604090205460ff1661182a57600080fd5b50600d55565b60136020526000908152604090205481565b600061184e6001611cb0565b1161185857600080fd5b33600061186481611cb0565b6001600160a01b03831660008181526012602090815260408083208054600160401b87020190556011909152808220805490839055905193019350909183156108fc0291849190818181858888f193505050501580156118c8573d6000803e3d6000fd5b506040805182815290516001600160a01b038416917fccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc919081900360200190a26114f16112e0565b60006014546000141561192957506414f46b0400611667565b600061193c670de0b6b3a7640000612a0f565b60025490915060009061195390839060ff16612952565b905060006119618383612967565b935061166792505050565b3360008181526016602052604090205460ff1661198857600080fd5b50600855565b60035481565b60408051600280825260608083018452600093909291906020830190803683375050600f54604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b1580156119fe57600080fd5b505afa158015611a12573d6000803e3d6000fd5b505050506040513d6020811015611a2857600080fd5b505181518290600090611a3757fe5b6001600160a01b039283166020918202929092010152600b54825191169082906001908110611a6257fe5b6001600160a01b03928316602091820292909201810191909152600f546040805163d06ca61f60e01b81526004810188815260248201928352865160448301528651606096949094169463d06ca61f948a9489949092606490910191858201910280838360005b83811015611ae1578181015183820152602001611ac9565b50505050905001935050505060006040518083038186803b158015611b0557600080fd5b505afa158015611b19573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015611b4257600080fd5b8101908080516040519392919084600160201b821115611b6157600080fd5b908301906020820185811115611b7657600080fd5b82518660208202830111600160201b82111715611b9257600080fd5b82525081516020918201928201910280838360005b83811015611bbf578181015183820152602001611ba7565b50505050905001604052505050905080600183510381518110611bde57fe5b602002602001015192505050919050565b60106020526000908152604090205481565b60145481565b3360008181526016602052604090205460ff16611c2357600080fd5b600d54600b54604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015611c7157600080fd5b505afa158015611c85573d6000803e3d6000fd5b505050506040513d6020811015611c9b57600080fd5b505111156114605760006007556114606112e0565b60003382611cc657611cc1816114f5565b611cea565b6001600160a01b038116600090815260116020526040902054611ce8826114f5565b015b9392505050565b6001600160a01b031660009081526010602052604090205490565b60155481565b6000806005600081548110611d2357fe5b6000918252602090912001546001600160a01b0390811691508316811415611d4f576001915050611529565b6005600181548110611d5d57fe5b6000918252602090912001546001600160a01b0390811691508316811415611d89576001915050611529565b6005600281548110611d9757fe5b6000918252602090912001546001600160a01b0390811691508316811415611dc3576001915050611529565b6005600381548110611dd157fe5b6000918252602090912001546001600160a01b0390811691508316811415611dfd576001915050611529565b6005600481548110611e0b57fe5b6000918252602090912001546001600160a01b0390811691508316811415611e37576001915050611529565b6000915050611529565b50919050565b60166020526000908152604090205460ff1681565b60025460ff1681565b3360008181526016602052604090205460ff16611e8157600080fd5b50600355565b600060145460001415611ea0575064199c82cc00611667565b6000611eb3670de0b6b3a7640000612a0f565b600254909150600090611eca90839060ff16612952565b905060006119618383612943565b3360008181526016602052604090205460ff16611ef457600080fd5b506001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b600e546001600160a01b031681565b600033611f3b81611cf1565b91505090565b600b546001600160a01b031681565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156115e75780601f106115bc576101008083540402835291602001916115e7565b6000601454821115611fbb57600080fd5b6000611fc683612a0f565b600254909150600090611fdd90839060ff16612952565b905060006116428383612967565b60408051600280825260608083018452926020830190803683375050600f54604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b15801561204f57600080fd5b505afa158015612063573d6000803e3d6000fd5b505050506040513d602081101561207957600080fd5b50518151829060009061208857fe5b6001600160a01b039283166020918202929092010152600b548251911690829060019081106120b357fe5b6001600160a01b03928316602091820292909201810191909152600f54604051637ff36ab560e01b8152600060048201818152306044840181905242606485018190526080602486019081528951608487015289519690981697637ff36ab5978b9795968b969495939460a49091019187810191028083838b5b8381101561214557818101518382015260200161212d565b50505050905001955050505050506000604051808303818588803b15801561216c57600080fd5b505af1158015612180573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405260208110156121aa57600080fd5b8101908080516040519392919084600160201b8211156121c957600080fd5b9083019060208201858111156121de57600080fd5b82518660208202830111600160201b821117156121fa57600080fd5b82525081516020918201928201910280838360005b8381101561222757818101518382015260200161220f565b50505050905001604052505050505050565b3360008181526016602052604090205460ff1661225557600080fd5b506017805460ff19169055565b60008061226d611f2f565b1161227757600080fd5b601754339060ff161580156122a457506001600160a01b0381166000908152601060205260409020548311155b6122ad57600080fd5b60006122b96001611cb0565b11156122c7576122c7611842565b6002546000906122db90859060ff16612952565b905060006122e98583612967565b905060006122f683612a0f565b600e546001600160a01b031660009081526010602052604090205490915061231e9084612943565b600e546001600160a01b0390811660009081526010602052604080822093909355908616815220546123509087612967565b6001600160a01b03808616600090815260106020526040808220939093559089168152205461237f9083612943565b6001600160a01b0388811660008181526010602090815260408083209590955560158054948a16835260129091528482208054948c029094039093558254918152929092208054928502909201909155546014546123ef9190600160401b6002850402816123e957fe5b04612943565b601555600061240060028304611994565b90506103e88111156124185761241860028304611feb565b876001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3506001979650505050505050565b6005818154811061247e57fe5b6000918252602090912001546001600160a01b0316905081565b60075481565b3360008181526016602052604090205460ff166124ba57600080fd5b81516124cd906001906020850190612ab3565b505050565b600c5481565b3360008181526016602052604090205460ff166124f457600080fd5b60095460ff161515600114612549576040805162461bcd60e51b8152602060048201526016602482015275726f756e64206973206e6f74206f766572206e6f772160501b604482015290519081900360640190fd5b60005b60058160ff16101561259b57600060058260ff168154811061256a57fe5b600091825260209091200180546001600160a01b0319166001600160a01b039290921691909117905560010161254c565b50506009805460ff191690556007544201600855565b3360008181526016602052604090205460ff166125cd57600080fd5b81516124cd906000906020850190612ab3565b60116020526000908152604090205481565b600d5481565b60065460ff1681565b4790565b60085481565b600654610100900460ff1681565b60126020526000908152604090205481565b6000612635611f2f565b1161263f57600080fd5b3361264981611d12565b156126855760405162461bcd60e51b8152600401808060200182810382526027815260200180612b476027913960400191505060405180910390fd5b6001600160a01b0381166000908152601060205260409020548211156126dc5760405162461bcd60e51b8152600401808060200182810382526021815260200180612b946021913960400191505060405180910390fd5b8160006126e882612a0f565b6002549091506000906126ff90839060ff16612952565b9050600061270d8383612967565b905061271b60145485612967565b6014556001600160a01b0385166000908152601060205260409020546127419085612967565b6001600160a01b03861660009081526010602090815260408083209390935560155460129091529190208054918602600160401b840201918290039055601454156127a15761279d601554601454600160401b8602816123e957fe5b6015555b604080518681526020810184905281516001600160a01b038916927fc4823739c5787d2ca17e404aa47d5569ae71dfb49cbf21b3f6152ed238a31139928290030190a26127ec6112e0565b50505050505050565b336000818152601060205260409020548015612814576128148161262b565b6114f1611842565b6000806128293484610d3f565b90506128336112e0565b600654610100900460ff1615611e4157611e418133611463565b3360008181526016602052604090205460ff1661286957600080fd5b50600680549115156101000261ff0019909216919091179055565b600f546001600160a01b031681565b600061289f6001611cb0565b116128a957600080fd5b60006128b56000611cb0565b3360008181526012602090815260408083208054600160401b8702019055601190915281208054908290559092019250906128f08382610d3f565b9050816001600160a01b03167fbe339fc14b041c2b0e0f3dd2cd325d0c3668b78378001e53160eab36153264588483604051808381526020018281526020019250505060405180910390a26124cd6112e0565b600082820183811015611cea57fe5b60008082848161295e57fe5b04949350505050565b60008282111561297357fe5b50900390565b6014546000906c01431e0fae6d7217caa00000009082906402540be4006129fe6129f8730380d4bd8a8678c1bb542c80deb4800000000000880268056bc75e2d631000006002860a02017005e0a1fd2712875988becaad0000000000850201780197d4df19d605767337e9f14d3eec8920e40000000000000001612a82565b85612967565b81612a0557fe5b0403949350505050565b601454600090670de0b6b3a7640000808401918101908390612a71866402540be4008386046402540be4000264174876e8000103026002670de0b6b3a7640000876002890a0381612a5c57fe5b046402540be4000281612a6b57fe5b04612967565b81612a7857fe5b0495945050505050565b80600260018201045b81811015611e4157809150600281828581612aa257fe5b040181612aab57fe5b049050612a8b565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612af457805160ff1916838001178555612b21565b82800160010185558215612b21579182015b82811115612b21578251825591602001919060010190612b06565b50612b2d929150612b31565b5090565b5b80821115612b2d5760008155600101612b3256fe53656c6c3a2075736572206973206f6e65206f6620746865206c617374203520627579657273216765744c6173744a61636b706f743a20726f756e64206973206e6f74206f766572206e6f772153656c6c3a20746f6b656e42616c616e63654c65646765725f20746f206c6f7721a2646970667358221220ba55cfd919e798ac3a2cfbb349f6a7dbe1cf73a6e01f725e346fe407998d119764736f6c634300060c0033
Deployed ByteCode
0x6080604052600436106103995760003560e01c80638620410b116101dc578063c47f002711610102578063dced5da1116100a0578063f088d5471161006f578063f088d54714610cc3578063f0fb6f3f14610ce9578063f887ea4014610d15578063fdb5a03e14610d2a576103a0565b8063dced5da114610c3c578063e1456cb414610c51578063e4849b3214610c84578063e9fad8ee14610cae576103a0565b8063cac0ac7d116100dc578063cac0ac7d14610be8578063cd74911214610bfd578063d18064fe14610c12578063dad81e5914610c27576103a0565b8063c47f002714610aef578063c664f7f114610ba0578063c89b597e14610bd3576103a0565b8063a86a24eb1161017a578063b7e6c2bd11610149578063b7e6c2bd146109ff578063b84c824614610a14578063ba53cf5814610ac5578063bd85948c14610ada576103a0565b8063a86a24eb1461095d578063a8e04f3414610987578063a9059cbb1461099c578063aaa55270146109d5576103a0565b8063949e8acd116101b6578063949e8acd146108f45780639581c42f1461090957806395d89b411461091e578063a086880a14610933576103a0565b80638620410b1461087357806387c950581461088857806391cca3db146108c3576103a0565b80633ccfd60b116102c15780636697d02c1161025f578063762e1de11161022e578063762e1de1146107ce57806376be1585146108015780638124f7ac146108345780638328b61014610849576103a0565b80636697d02c14610745578063688abbf71461075a57806370a0823114610786578063710b318b146107b9576103a0565b806356d399e81161029b57806356d399e8146106be5780635a43af7f146106d35780635c5a0a9d146106fd578063651fe61114610730576103a0565b80633ccfd60b1461066a5780634b7503341461067f57806355cf6d7d14610694576103a0565b806318160ddd116103395780632fc13044116103085780632fc13044146105cd578063313ce567146105e2578063360834e01461060d5780633ae9b19b14610637576103a0565b806318160ddd1461056457806327defa1f146105795780632ac568311461058e5780632d8838c3146105a3576103a0565b80630ef9606a116103755780630ef9606a146104d257806310d0ffdd146104fc5780631300a6d11461052657806314404eb21461053b576103a0565b806265318b146103d4578062d211671461041957806306fdde0314610448576103a0565b366103a057005b60006103ad346000610d3f565b90506103b76112e0565b600654610100900460ff16156103d1576103d18133611463565b50005b3480156103e057600080fd5b50610407600480360360208110156103f757600080fd5b50356001600160a01b03166114f5565b60408051918252519081900360200190f35b34801561042557600080fd5b506104466004803603602081101561043c57600080fd5b503560ff1661152e565b005b34801561045457600080fd5b5061045d611561565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561049757818101518382015260200161047f565b50505050905090810190601f1680156104c45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104de57600080fd5b50610446600480360360208110156104f557600080fd5b50356115ef565b34801561050857600080fd5b506104076004803603602081101561051f57600080fd5b5035611611565b34801561053257600080fd5b5061040761164b565b34801561054757600080fd5b5061055061166a565b604080519115158252519081900360200190f35b34801561057057600080fd5b50610407611673565b34801561058557600080fd5b50610550611679565b34801561059a57600080fd5b50610446611682565b3480156105af57600080fd5b50610446600480360360208110156105c657600080fd5b50356117e1565b3480156105d957600080fd5b50610407611803565b3480156105ee57600080fd5b506105f7611809565b6040805160ff9092168252519081900360200190f35b34801561061957600080fd5b506104466004803603602081101561063057600080fd5b503561180e565b34801561064357600080fd5b506104076004803603602081101561065a57600080fd5b50356001600160a01b0316611830565b34801561067657600080fd5b50610446611842565b34801561068b57600080fd5b50610407611910565b3480156106a057600080fd5b50610446600480360360208110156106b757600080fd5b503561196c565b3480156106ca57600080fd5b5061040761198e565b3480156106df57600080fd5b50610407600480360360208110156106f657600080fd5b5035611994565b34801561070957600080fd5b506104076004803603602081101561072057600080fd5b50356001600160a01b0316611bef565b34801561073c57600080fd5b50610407611c01565b34801561075157600080fd5b50610446611c07565b34801561076657600080fd5b506104076004803603602081101561077d57600080fd5b50351515611cb0565b34801561079257600080fd5b50610407600480360360208110156107a957600080fd5b50356001600160a01b0316611cf1565b3480156107c557600080fd5b50610407611d0c565b3480156107da57600080fd5b50610550600480360360208110156107f157600080fd5b50356001600160a01b0316611d12565b34801561080d57600080fd5b506105506004803603602081101561082457600080fd5b50356001600160a01b0316611e47565b34801561084057600080fd5b506105f7611e5c565b34801561085557600080fd5b506104466004803603602081101561086c57600080fd5b5035611e65565b34801561087f57600080fd5b50610407611e87565b34801561089457600080fd5b50610446600480360360408110156108ab57600080fd5b506001600160a01b0381351690602001351515611ed8565b3480156108cf57600080fd5b506108d8611f20565b604080516001600160a01b039092168252519081900360200190f35b34801561090057600080fd5b50610407611f2f565b34801561091557600080fd5b506108d8611f41565b34801561092a57600080fd5b5061045d611f50565b34801561093f57600080fd5b506104076004803603602081101561095657600080fd5b5035611faa565b34801561096957600080fd5b506104466004803603602081101561098057600080fd5b5035611feb565b34801561099357600080fd5b50610446612239565b3480156109a857600080fd5b50610550600480360360408110156109bf57600080fd5b506001600160a01b038135169060200135612262565b3480156109e157600080fd5b506108d8600480360360208110156109f857600080fd5b5035612471565b348015610a0b57600080fd5b50610407612498565b348015610a2057600080fd5b5061044660048036036020811015610a3757600080fd5b810190602081018135600160201b811115610a5157600080fd5b820183602082011115610a6357600080fd5b803590602001918460018302840111600160201b83111715610a8457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061249e945050505050565b348015610ad157600080fd5b506104076124d2565b348015610ae657600080fd5b506104466124d8565b348015610afb57600080fd5b5061044660048036036020811015610b1257600080fd5b810190602081018135600160201b811115610b2c57600080fd5b820183602082011115610b3e57600080fd5b803590602001918460018302840111600160201b83111715610b5f57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506125b1945050505050565b348015610bac57600080fd5b5061040760048036036020811015610bc357600080fd5b50356001600160a01b03166125e0565b348015610bdf57600080fd5b506104076125f2565b348015610bf457600080fd5b506105f76125f8565b348015610c0957600080fd5b506104466112e0565b348015610c1e57600080fd5b50610407612601565b348015610c3357600080fd5b50610407612605565b348015610c4857600080fd5b5061055061260b565b348015610c5d57600080fd5b5061040760048036036020811015610c7457600080fd5b50356001600160a01b0316612619565b348015610c9057600080fd5b5061044660048036036020811015610ca757600080fd5b503561262b565b348015610cba57600080fd5b506104466127f5565b61040760048036036020811015610cd957600080fd5b50356001600160a01b031661281c565b348015610cf557600080fd5b5061044660048036036020811015610d0c57600080fd5b5035151561284d565b348015610d2157600080fd5b506108d8612884565b348015610d3657600080fd5b50610446612893565b6017546000908390339060ff168015610d695750670de0b6b3a764000082610d65612601565b0311155b1561106b576001600160a01b03811660009081526004602052604090205460ff1615156001148015610dbe57506001600160a01b038116600090815260136020526040902054670de0b6b3a764000090830111155b610dc757600080fd5b6001600160a01b038116600090815260136020526040902054610dea9083612943565b6001600160a01b038216600090815260136020526040812091909155600254339190610e1a90889060ff16612952565b90506000610e29826003612952565b90506000610e378383612967565b90506000610e458a85612967565b90506000610e5282612979565b9050600160401b83028115801590610e745750601454610e728382612943565b115b610e7d57600080fd5b6001600160a01b038b1615801590610ea75750866001600160a01b03168b6001600160a01b031614155b8015610ecd57506003546001600160a01b038c1660009081526010602052604090205410155b15610f13576001600160a01b038b16600090815260116020526040902054610ef59086612943565b6001600160a01b038c16600090815260116020526040902055610f28565b610f1d8486612943565b935050600160401b83025b60145415610f7957610f3c60145483612943565b6014819055600160401b850281610f4f57fe5b60158054929091049091019055601454600160401b850281610f6d57fe5b04820281039003610f7f565b60148290555b6001600160a01b038716600090815260106020526040902054610fa29083612943565b60106000896001600160a01b03166001600160a01b0316815260200190815260200160002081905550600081836015540203905080601260008a6001600160a01b03166001600160a01b03168152602001908152602001600020600082825401925050819055508b6001600160a01b0316886001600160a01b03167f022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d58f86604051808381526020018281526020019250505060405180910390a3509098505050505050506112d8565b6017805460ff19169055600254339060009061108b90889060ff16612952565b9050600061109a826003612952565b905060006110a88383612967565b905060006110b68a85612967565b905060006110c382612979565b9050600160401b830281158015906110e557506014546110e38382612943565b115b6110ee57600080fd5b6001600160a01b038b16158015906111185750866001600160a01b03168b6001600160a01b031614155b801561113e57506003546001600160a01b038c1660009081526010602052604090205410155b15611184576001600160a01b038b166000908152601160205260409020546111669086612943565b6001600160a01b038c16600090815260116020526040902055611199565b61118e8486612943565b935050600160401b83025b601454156111ea576111ad60145483612943565b6014819055600160401b8502816111c057fe5b60158054929091049091019055601454600160401b8502816111de57fe5b048202810390036111f0565b60148290555b6001600160a01b0387166000908152601060205260409020546112139083612943565b60106000896001600160a01b03166001600160a01b0316815260200190815260200160002081905550600081836015540203905080601260008a6001600160a01b03166001600160a01b03168152602001908152602001600020600082825401925050819055508b6001600160a01b0316886001600160a01b03167f022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d58f86604051808381526020018281526020019250505060405180910390a3509098505050505050505b505092915050565b600b54604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561132b57600080fd5b505afa15801561133f573d6000803e3d6000fd5b505050506040513d602081101561135557600080fd5b5051905061136161164b565b158015611371575060095460ff16155b80156113845750670de0b6b3a764000081115b1561146057600c81905560005b60058160ff16101561145157600060058260ff16815481106113af57fe5b600091825260209091200154600b546001600160a01b0391821692501663a9059cbb82600a86046040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561141c57600080fd5b505af1158015611430573d6000803e3d6000fd5b505050506040513d602081101561144657600080fd5b505050600101611391565b506009805460ff191660011790555b50565b600a548210158015611478575060095460ff16155b156114f15760065460ff1660051415611496576006805460ff191690555b6006805460ff198116600160ff928316908101909216179091556005805483929081106114bf57fe5b600091825260209091200180546001600160a01b0319166001600160a01b039290921691909117905560075442016008555b5050565b6001600160a01b0381166000908152601260209081526040808320546010909252822054601554600160401b929102030490505b919050565b3360008181526016602052604090205460ff1661154a57600080fd5b506002805460ff191660ff92909216919091179055565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156115e75780601f106115bc576101008083540402835291602001916115e7565b820191906000526020600020905b8154815290600101906020018083116115ca57829003601f168201915b505050505081565b3360008181526016602052604090205460ff1661160b57600080fd5b50600a55565b600254600090819061162790849060ff16612952565b905060006116358483612967565b9050600061164282612979565b95945050505050565b60004260085411156116635742600854039050611667565b5060005b90565b60095460ff1681565b60145490565b60175460ff1681565b3360008181526016602052604090205460ff1661169e57600080fd5b60095460ff166116df5760405162461bcd60e51b8152600401808060200182810382526026815260200180612b6e6026913960400191505060405180910390fd5b600b54604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561172a57600080fd5b505afa15801561173e573d6000803e3d6000fd5b505050506040513d602081101561175457600080fd5b5051600b54600e546040805163a9059cbb60e01b81526001600160a01b03928316600482015260248101859052905193945091169163a9059cbb916044808201926020929091908290030181600087803b1580156117b157600080fd5b505af11580156117c5573d6000803e3d6000fd5b505050506040513d60208110156117db57600080fd5b50505050565b3360008181526016602052604090205460ff166117fd57600080fd5b50600755565b600a5481565b601281565b3360008181526016602052604090205460ff1661182a57600080fd5b50600d55565b60136020526000908152604090205481565b600061184e6001611cb0565b1161185857600080fd5b33600061186481611cb0565b6001600160a01b03831660008181526012602090815260408083208054600160401b87020190556011909152808220805490839055905193019350909183156108fc0291849190818181858888f193505050501580156118c8573d6000803e3d6000fd5b506040805182815290516001600160a01b038416917fccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc919081900360200190a26114f16112e0565b60006014546000141561192957506414f46b0400611667565b600061193c670de0b6b3a7640000612a0f565b60025490915060009061195390839060ff16612952565b905060006119618383612967565b935061166792505050565b3360008181526016602052604090205460ff1661198857600080fd5b50600855565b60035481565b60408051600280825260608083018452600093909291906020830190803683375050600f54604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b1580156119fe57600080fd5b505afa158015611a12573d6000803e3d6000fd5b505050506040513d6020811015611a2857600080fd5b505181518290600090611a3757fe5b6001600160a01b039283166020918202929092010152600b54825191169082906001908110611a6257fe5b6001600160a01b03928316602091820292909201810191909152600f546040805163d06ca61f60e01b81526004810188815260248201928352865160448301528651606096949094169463d06ca61f948a9489949092606490910191858201910280838360005b83811015611ae1578181015183820152602001611ac9565b50505050905001935050505060006040518083038186803b158015611b0557600080fd5b505afa158015611b19573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015611b4257600080fd5b8101908080516040519392919084600160201b821115611b6157600080fd5b908301906020820185811115611b7657600080fd5b82518660208202830111600160201b82111715611b9257600080fd5b82525081516020918201928201910280838360005b83811015611bbf578181015183820152602001611ba7565b50505050905001604052505050905080600183510381518110611bde57fe5b602002602001015192505050919050565b60106020526000908152604090205481565b60145481565b3360008181526016602052604090205460ff16611c2357600080fd5b600d54600b54604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015611c7157600080fd5b505afa158015611c85573d6000803e3d6000fd5b505050506040513d6020811015611c9b57600080fd5b505111156114605760006007556114606112e0565b60003382611cc657611cc1816114f5565b611cea565b6001600160a01b038116600090815260116020526040902054611ce8826114f5565b015b9392505050565b6001600160a01b031660009081526010602052604090205490565b60155481565b6000806005600081548110611d2357fe5b6000918252602090912001546001600160a01b0390811691508316811415611d4f576001915050611529565b6005600181548110611d5d57fe5b6000918252602090912001546001600160a01b0390811691508316811415611d89576001915050611529565b6005600281548110611d9757fe5b6000918252602090912001546001600160a01b0390811691508316811415611dc3576001915050611529565b6005600381548110611dd157fe5b6000918252602090912001546001600160a01b0390811691508316811415611dfd576001915050611529565b6005600481548110611e0b57fe5b6000918252602090912001546001600160a01b0390811691508316811415611e37576001915050611529565b6000915050611529565b50919050565b60166020526000908152604090205460ff1681565b60025460ff1681565b3360008181526016602052604090205460ff16611e8157600080fd5b50600355565b600060145460001415611ea0575064199c82cc00611667565b6000611eb3670de0b6b3a7640000612a0f565b600254909150600090611eca90839060ff16612952565b905060006119618383612943565b3360008181526016602052604090205460ff16611ef457600080fd5b506001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b600e546001600160a01b031681565b600033611f3b81611cf1565b91505090565b600b546001600160a01b031681565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156115e75780601f106115bc576101008083540402835291602001916115e7565b6000601454821115611fbb57600080fd5b6000611fc683612a0f565b600254909150600090611fdd90839060ff16612952565b905060006116428383612967565b60408051600280825260608083018452926020830190803683375050600f54604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b15801561204f57600080fd5b505afa158015612063573d6000803e3d6000fd5b505050506040513d602081101561207957600080fd5b50518151829060009061208857fe5b6001600160a01b039283166020918202929092010152600b548251911690829060019081106120b357fe5b6001600160a01b03928316602091820292909201810191909152600f54604051637ff36ab560e01b8152600060048201818152306044840181905242606485018190526080602486019081528951608487015289519690981697637ff36ab5978b9795968b969495939460a49091019187810191028083838b5b8381101561214557818101518382015260200161212d565b50505050905001955050505050506000604051808303818588803b15801561216c57600080fd5b505af1158015612180573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405260208110156121aa57600080fd5b8101908080516040519392919084600160201b8211156121c957600080fd5b9083019060208201858111156121de57600080fd5b82518660208202830111600160201b821117156121fa57600080fd5b82525081516020918201928201910280838360005b8381101561222757818101518382015260200161220f565b50505050905001604052505050505050565b3360008181526016602052604090205460ff1661225557600080fd5b506017805460ff19169055565b60008061226d611f2f565b1161227757600080fd5b601754339060ff161580156122a457506001600160a01b0381166000908152601060205260409020548311155b6122ad57600080fd5b60006122b96001611cb0565b11156122c7576122c7611842565b6002546000906122db90859060ff16612952565b905060006122e98583612967565b905060006122f683612a0f565b600e546001600160a01b031660009081526010602052604090205490915061231e9084612943565b600e546001600160a01b0390811660009081526010602052604080822093909355908616815220546123509087612967565b6001600160a01b03808616600090815260106020526040808220939093559089168152205461237f9083612943565b6001600160a01b0388811660008181526010602090815260408083209590955560158054948a16835260129091528482208054948c029094039093558254918152929092208054928502909201909155546014546123ef9190600160401b6002850402816123e957fe5b04612943565b601555600061240060028304611994565b90506103e88111156124185761241860028304611feb565b876001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3506001979650505050505050565b6005818154811061247e57fe5b6000918252602090912001546001600160a01b0316905081565b60075481565b3360008181526016602052604090205460ff166124ba57600080fd5b81516124cd906001906020850190612ab3565b505050565b600c5481565b3360008181526016602052604090205460ff166124f457600080fd5b60095460ff161515600114612549576040805162461bcd60e51b8152602060048201526016602482015275726f756e64206973206e6f74206f766572206e6f772160501b604482015290519081900360640190fd5b60005b60058160ff16101561259b57600060058260ff168154811061256a57fe5b600091825260209091200180546001600160a01b0319166001600160a01b039290921691909117905560010161254c565b50506009805460ff191690556007544201600855565b3360008181526016602052604090205460ff166125cd57600080fd5b81516124cd906000906020850190612ab3565b60116020526000908152604090205481565b600d5481565b60065460ff1681565b4790565b60085481565b600654610100900460ff1681565b60126020526000908152604090205481565b6000612635611f2f565b1161263f57600080fd5b3361264981611d12565b156126855760405162461bcd60e51b8152600401808060200182810382526027815260200180612b476027913960400191505060405180910390fd5b6001600160a01b0381166000908152601060205260409020548211156126dc5760405162461bcd60e51b8152600401808060200182810382526021815260200180612b946021913960400191505060405180910390fd5b8160006126e882612a0f565b6002549091506000906126ff90839060ff16612952565b9050600061270d8383612967565b905061271b60145485612967565b6014556001600160a01b0385166000908152601060205260409020546127419085612967565b6001600160a01b03861660009081526010602090815260408083209390935560155460129091529190208054918602600160401b840201918290039055601454156127a15761279d601554601454600160401b8602816123e957fe5b6015555b604080518681526020810184905281516001600160a01b038916927fc4823739c5787d2ca17e404aa47d5569ae71dfb49cbf21b3f6152ed238a31139928290030190a26127ec6112e0565b50505050505050565b336000818152601060205260409020548015612814576128148161262b565b6114f1611842565b6000806128293484610d3f565b90506128336112e0565b600654610100900460ff1615611e4157611e418133611463565b3360008181526016602052604090205460ff1661286957600080fd5b50600680549115156101000261ff0019909216919091179055565b600f546001600160a01b031681565b600061289f6001611cb0565b116128a957600080fd5b60006128b56000611cb0565b3360008181526012602090815260408083208054600160401b8702019055601190915281208054908290559092019250906128f08382610d3f565b9050816001600160a01b03167fbe339fc14b041c2b0e0f3dd2cd325d0c3668b78378001e53160eab36153264588483604051808381526020018281526020019250505060405180910390a26124cd6112e0565b600082820183811015611cea57fe5b60008082848161295e57fe5b04949350505050565b60008282111561297357fe5b50900390565b6014546000906c01431e0fae6d7217caa00000009082906402540be4006129fe6129f8730380d4bd8a8678c1bb542c80deb4800000000000880268056bc75e2d631000006002860a02017005e0a1fd2712875988becaad0000000000850201780197d4df19d605767337e9f14d3eec8920e40000000000000001612a82565b85612967565b81612a0557fe5b0403949350505050565b601454600090670de0b6b3a7640000808401918101908390612a71866402540be4008386046402540be4000264174876e8000103026002670de0b6b3a7640000876002890a0381612a5c57fe5b046402540be4000281612a6b57fe5b04612967565b81612a7857fe5b0495945050505050565b80600260018201045b81811015611e4157809150600281828581612aa257fe5b040181612aab57fe5b049050612a8b565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612af457805160ff1916838001178555612b21565b82800160010185558215612b21579182015b82811115612b21578251825591602001919060010190612b06565b50612b2d929150612b31565b5090565b5b80821115612b2d5760008155600101612b3256fe53656c6c3a2075736572206973206f6e65206f6620746865206c617374203520627579657273216765744c6173744a61636b706f743a20726f756e64206973206e6f74206f766572206e6f772153656c6c3a20746f6b656e42616c616e63654c65646765725f20746f206c6f7721a2646970667358221220ba55cfd919e798ac3a2cfbb349f6a7dbe1cf73a6e01f725e346fe407998d119764736f6c634300060c0033