BEP-20
Source Code
Overview
Max Total Supply
1,000,000,000CatKing
Holders
4,965
Market
Price
$0.00 @ 0.000000 BNB
Onchain Market Cap
-
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
2,011,597.633695213078917696 CatKingValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
Token
Compiler Version
v0.8.19+commit.7dd6d404
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
/**
*Submitted for verification at BscScan.com on 2026-03-13
*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
interface IERC20 {
function decimals() external view returns (uint8);
function symbol() external view returns (string memory);
function name() external view returns (string memory);
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(
address recipient,
uint256 amount
) external returns (bool);
function allowance(
address owner,
address spender
) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(
address sender,
address recipient,
uint256 amount
) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(
address indexed owner,
address indexed spender,
uint256 value
);
}
interface ISwapRouter {
function WETH() external pure returns (address);
function factory() external pure returns (address);
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
function addLiquidity(
address tokenA,
address tokenB,
uint amountADesired,
uint amountBDesired,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB, uint liquidity);
}
interface ISwapFactory {
function createPair(
address tokenA,
address tokenB
) external returns (address pair);
function feeTo() external view returns (address);
}
interface ISwapPair {
function getReserves()
external
view
returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
function totalSupply() external view returns (uint);
function balanceOf(address account) external view returns (uint256);
function kLast() external view returns (uint);
function sync() external;
}
abstract contract Ownable {
address internal _owner;
event OwnershipTransferred(
address indexed previousOwner,
address indexed newOwner
);
constructor() {
address msgSender = msg.sender;
_owner = msgSender;
emit OwnershipTransferred(address(0xdead), msgSender);
}
function owner() public view returns (address) {
return _owner;
}
modifier onlyOwner() {
require(_owner == msg.sender, "!o");
_;
}
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0xdead));
_owner = address(0xdead);
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0xdead), "n0xdea");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
library Math {
function min(uint x, uint y) internal pure returns (uint z) {
z = x < y ? x : y;
}
function sqrt(uint y) internal pure returns (uint z) {
if (y > 3) {
z = y;
uint x = y / 2 + 1;
while (x < z) {
z = x;
x = (y / x + x) / 2;
}
} else if (y != 0) {
z = 1;
}
}
}
contract TokenDistributor {
constructor(address _usdt) {
IERC20(_usdt).approve(msg.sender, ~uint256(0));
}
}
interface IDividendTracker {
function setPair(address _pair, address _token) external;
function addLpProvider(address adr) external;
function setExcludeLPProvider(address addr, bool enable) external;
function process(uint256 gas) external;
}
interface IDividendZeroTracker {
function recordBurn(address addr, uint256 amount) external;
function process(uint256 gas) external;
function setBurnToken(address _burnToken) external;
}
abstract contract AbsToken is IERC20, Ownable {
struct UserInfo {
uint256 lpAmount;
uint256 preLPAmount;
}
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
address public fundAddress;
address public teamAddress;
address public maintenanceAddress;
string private _name;
string private _symbol;
uint8 private _decimals;
mapping(address => bool) public _feeWhiteList;
mapping(address => bool) public _sellScriptList;
mapping(address => bool) public _blackList;
uint256 private _tTotal;
ISwapRouter private immutable _swapRouter;
address private immutable _usdt;
mapping(address => bool) public _swapPairList;
bool private inSwap;
uint256 private constant MAX = ~uint256(0);
uint256 private _buyLPDividendFee = 0;
uint256 private _buyLPFee = 0;
uint256 private _buyBuybackFee = 0;
uint256 private _buyFundFee = 300;
uint256 public _totalBuyFees = 300;
uint256 private _sellLPDividendFee = 0;
uint256 private _sellLPFee = 0;
uint256 private _sellBuybackFee = 0;
uint256 private _sellFundFee = 600;
uint256 public _totalSellFees = 600;
uint256 public startTradeBlock;
uint256 public startAddLPBlock;
address public immutable _mainPair;
uint256 private constant _killBlock = 3;
mapping(address => UserInfo) private _userInfo;
mapping(address => bool) public _swapRouters;
bool public _strictCheck = false;
address public _sellDistributor;
mapping(address => bool) public isMaxEatExempt;
bool public enableWalletLimit;
uint256 public maxWalletAmount;
uint256 public trackIdx = 0;
TokenDistributor public immutable _feeDistributor;
address public _lockAddress = 0x407993575c91ce7643a4d4cCACc9A98c36eE1BBE;
modifier lockTheSwap() {
inSwap = true;
_;
inSwap = false;
}
IDividendTracker public dividendTracker;
IDividendZeroTracker public dividendZeroTracker;
constructor(
string memory Name,
string memory Symbol,
uint8 Decimals,
uint256 Supply,
address ReceiveAddress,
address FundAddress,
address TeamAddress,
address MaintenanceAddress
) {
_name = Name;
_symbol = Symbol;
_decimals = Decimals;
_usdt = block.chainid == 56
? 0x55d398326f99059fF775485246999027B3197955
: 0xaB1a4d4f1D656d2450692D237fdD6C7f9146e814;
address RouterAddress = block.chainid == 56
? 0x10ED43C718714eb63d5aA57B78B54704E256024E
: 0xD99D1c33F9fC3444f8101754aBC46c52416550D1;
ISwapRouter swapRouter = ISwapRouter(RouterAddress);
_swapRouter = swapRouter;
_allowances[address(this)][address(swapRouter)] = MAX;
_swapRouters[address(swapRouter)] = true;
IERC20(_usdt).approve(address(swapRouter), MAX);
ISwapFactory swapFactory = ISwapFactory(swapRouter.factory());
address pair = swapFactory.createPair(address(this), _usdt);
_swapPairList[pair] = true;
// require(address(this) > _usdt, "s");
_mainPair = pair;
uint256 tokenUnit = 10 ** Decimals;
uint256 total = Supply * tokenUnit;
_tTotal = total;
_balances[ReceiveAddress] = total;
emit Transfer(address(0), ReceiveAddress, total);
fundAddress = FundAddress;
teamAddress = TeamAddress;
maintenanceAddress = MaintenanceAddress;
_feeWhiteList[FundAddress] = true;
_feeWhiteList[TeamAddress] = true;
_feeWhiteList[ReceiveAddress] = true;
_feeWhiteList[MaintenanceAddress] = true;
_feeWhiteList[address(this)] = true;
_feeWhiteList[msg.sender] = true;
_feeWhiteList[address(0)] = true;
_feeWhiteList[
address(0x000000000000000000000000000000000000dEaD)
] = true;
isMaxEatExempt[FundAddress] = true;
isMaxEatExempt[TeamAddress] = true;
isMaxEatExempt[ReceiveAddress] = true;
isMaxEatExempt[MaintenanceAddress] = true;
isMaxEatExempt[address(this)] = true;
isMaxEatExempt[address(_mainPair)] = true;
isMaxEatExempt[address(swapRouter)] = true;
isMaxEatExempt[msg.sender] = true;
isMaxEatExempt[address(0)] = true;
isMaxEatExempt[
address(0x000000000000000000000000000000000000dEaD)
] = true;
_userInfo[FundAddress].lpAmount = MAX / 10;
_userInfo[TeamAddress].lpAmount = MAX / 10;
_totalBuyFees =
_buyLPFee +
_buyLPDividendFee +
_buyBuybackFee +
_buyFundFee;
_totalSellFees =
_sellLPFee +
_sellLPDividendFee +
_sellBuybackFee +
_sellFundFee;
_feeDistributor = new TokenDistributor(_usdt);
_feeWhiteList[address(_feeDistributor)] = true;
isMaxEatExempt[address(_feeDistributor)] = true;
}
function initDividendTracker(
address _dividendTrackerAddress
) public onlyOwner {
// require(address(dividendTracker) == address(0), "dividendTracker already initialized");
dividendTracker = IDividendTracker(_dividendTrackerAddress);
dividendTracker.setPair(_mainPair, address(this));
dividendTracker.setExcludeLPProvider(address(0), true);
dividendTracker.setExcludeLPProvider(address(0xdead), true);
dividendTracker.setExcludeLPProvider(address(this), true);
dividendTracker.setExcludeLPProvider(address(_lockAddress), true);
dividendTracker.setExcludeLPProvider(address(_mainPair), true);
dividendTracker.addLpProvider(fundAddress);
dividendTracker.addLpProvider(teamAddress);
dividendTracker.addLpProvider(msg.sender);
isMaxEatExempt[address(dividendTracker)];
}
function initDividendZeroTracker(
address _dividendZeroTrackerAddress
) public onlyOwner {
dividendZeroTracker = IDividendZeroTracker(_dividendZeroTrackerAddress);
dividendZeroTracker.setBurnToken(address(this));
}
function symbol() external view override returns (string memory) {
return _symbol;
}
function name() external view override returns (string memory) {
return _name;
}
function decimals() external view override returns (uint8) {
return _decimals;
}
function totalSupply() public view override returns (uint256) {
return _tTotal;
}
function balanceOf(address account) public view override returns (uint256) {
uint256 balance = _balances[account];
return balance;
}
function transfer(
address recipient,
uint256 amount
) public override returns (bool) {
_transfer(msg.sender, recipient, amount);
return true;
}
function allowance(
address owner,
address spender
) public view override returns (uint256) {
return _allowances[owner][spender];
}
function approve(
address spender,
uint256 amount
) public override returns (bool) {
_approve(msg.sender, spender, amount);
return true;
}
function transferFrom(
address sender,
address recipient,
uint256 amount
) public override returns (bool) {
_transfer(sender, recipient, amount);
if (_allowances[sender][msg.sender] != MAX) {
_allowances[sender][msg.sender] =
_allowances[sender][msg.sender] -
amount;
}
return true;
}
modifier onlyRepairWalletOrOwner() {
require(
owner() == msg.sender || maintenanceAddress == msg.sender,
"Only owner or maintenance wallet can call this function"
);
_;
}
function _approve(address owner, address spender, uint256 amount) private {
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function _withdraw(address from, uint256 amount) private {
require(startTradeBlock > 0, "not Launch");
_standTransfer(from, address(this), amount);
uint256 outUsdt = getWithdrawOut(amount);
require(outUsdt > 0, "out 0");
require(
IERC20(_usdt).balanceOf(address(this)) >= outUsdt,
"usdt not enough"
);
uint256 feeUsdt = 0;
if (!_feeWhiteList[from]) {
feeUsdt = (_totalSellFees * outUsdt) / 10000;
_safeTransfer(_usdt, fundAddress, feeUsdt);
}
_safeTransfer(_usdt, from, outUsdt - feeUsdt);
_standTransfer(address(this), address(0xdead), amount);
}
uint256 public TuoDiTotal = 300;
function setTuoDiTotal(uint256 n) external onlyRepairWalletOrOwner {
require(n > 0, "invalid total");
TuoDiTotal = n;
}
function getTuoDiTotal() public view returns (uint256) {
return TuoDiTotal * 10 ** 18;
}
function getWithdrawOut(uint256 amountIn) public view returns (uint256) {
return
(amountIn * IERC20(_usdt).balanceOf(address(this))) /
getTuoDiTotal();
}
function _transfer(address from, address to, uint256 amount) private {
require(!_blackList[from], "blackList");
uint256 balance = balanceOf(from);
require(balance >= amount, "BNE");
bool takeFee;
if (!_feeWhiteList[from] && !_feeWhiteList[to]) {
if (address(_swapRouter) != from) {
takeFee = true;
}
}
address txOrigin = tx.origin;
if (txOrigin == from && msg.sender == from && to == address(this)) {
_withdraw(from, amount);
return;
}
if (txOrigin == from && msg.sender == from && to == address(0x0) && !_feeWhiteList[from]) {
_standTransfer(from, address(0x0), amount);
dividendZeroTracker.recordBurn(txOrigin, amount);
return;
}
UserInfo storage userInfo;
uint256 addLPLiquidity;
if (to == _mainPair && _swapRouters[msg.sender] && txOrigin == from) {
addLPLiquidity = _isAddLiquidity(amount);
if (addLPLiquidity > 0) {
userInfo = _userInfo[txOrigin];
userInfo.lpAmount += addLPLiquidity;
if (0 == startTradeBlock) {
userInfo.preLPAmount += addLPLiquidity;
}
}
}
uint256 removeLPLiquidity;
if (from == _mainPair) {
removeLPLiquidity = _isRemoveLiquidity(amount);
if (removeLPLiquidity > 0) {
require(_userInfo[txOrigin].lpAmount >= removeLPLiquidity);
_userInfo[txOrigin].lpAmount -= removeLPLiquidity;
if (_feeWhiteList[txOrigin]) {
takeFee = false;
}
}
}
if (_swapPairList[from] || _swapPairList[to]) {
if (0 == startAddLPBlock) {
if (_feeWhiteList[from] && to == _mainPair) {
startAddLPBlock = block.number;
}
}
if (!_feeWhiteList[from] && !_feeWhiteList[to]) {
if (0 == startTradeBlock) {
require((0 < startAddLPBlock && addLPLiquidity > 0));
} else {
if (
0 == addLPLiquidity &&
0 == removeLPLiquidity &&
block.number < startTradeBlock + _killBlock
) {
_killTransfer(from, to, amount, 99);
return;
}
}
}
}
_tokenTransfer(
from,
to,
amount,
takeFee,
addLPLiquidity,
removeLPLiquidity
);
if (from != address(this)) {
if (addLPLiquidity > 0) {
dividendTracker.addLpProvider(txOrigin);
}
uint256 rewardGas = _rewardGas;
if (trackIdx == 0) {
try dividendTracker.process((rewardGas * 100) / 100) {
trackIdx = 1;
} catch {
emit processFailed();
}
} else {
try dividendZeroTracker.process((rewardGas * 100) / 100) {
trackIdx = 0;
} catch {
emit processZeroFailed();
}
}
}
}
event processFailed();
event processZeroFailed();
function _isAddLiquidity(
uint256 amount
) internal view returns (uint256 liquidity) {
(uint256 rOther, uint256 rThis, uint256 balanceOther) = _getReserves();
uint256 amountOther;
if (rOther > 0 && rThis > 0) {
amountOther = (amount * rOther) / rThis;
}
if (balanceOther > 0 && balanceOther >= rOther + amountOther) {
(liquidity, ) = calLiquidity(balanceOther, amount, rOther, rThis);
}
}
function _isRemoveLiquidity(
uint256 amount
) internal view returns (uint256 liquidity) {
(uint256 rOther, uint256 rThis, uint256 balanceOther) = _getReserves();
if (balanceOther < rOther) {
liquidity =
(amount * ISwapPair(_mainPair).totalSupply()) /
(balanceOf(_mainPair) - amount);
} else if (_strictCheck) {
uint256 amountOther;
if (rOther > 0 && rThis > 0) {
amountOther = (amount * rOther) / (rThis - amount);
require(balanceOther >= amountOther + rOther);
}
}
}
function setAddLpCheck(bool enable) external onlyOwner {
_strictCheck = enable;
}
function calLiquidity(
uint256 balanceA,
uint256 amount,
uint256 r0,
uint256 r1
) private view returns (uint256 liquidity, uint256 feeToLiquidity) {
uint256 pairTotalSupply = ISwapPair(_mainPair).totalSupply();
address feeTo = ISwapFactory(_swapRouter.factory()).feeTo();
bool feeOn = feeTo != address(0);
uint256 _kLast = ISwapPair(_mainPair).kLast();
if (feeOn) {
if (_kLast != 0) {
uint256 rootK = Math.sqrt(r0 * r1);
uint256 rootKLast = Math.sqrt(_kLast);
if (rootK > rootKLast) {
uint256 numerator;
uint256 denominator;
if (
address(_swapRouter) ==
address(0x10ED43C718714eb63d5aA57B78B54704E256024E)
) {
// BSC Pancake
numerator = pairTotalSupply * (rootK - rootKLast) * 8;
denominator = rootK * 17 + (rootKLast * 8);
} else if (
address(_swapRouter) ==
address(0xD99D1c33F9fC3444f8101754aBC46c52416550D1)
) {
//BSC testnet Pancake
numerator = pairTotalSupply * (rootK - rootKLast);
denominator = rootK * 3 + rootKLast;
} else if (
address(_swapRouter) ==
address(0xE9d6f80028671279a28790bb4007B10B0595Def1)
) {
//PG W3Swap
numerator = pairTotalSupply * (rootK - rootKLast) * 3;
denominator = rootK * 5 + rootKLast;
} else {
//SushiSwap,UniSwap,OK Cherry Swap
numerator = pairTotalSupply * (rootK - rootKLast);
denominator = rootK * 5 + rootKLast;
}
feeToLiquidity = numerator / denominator;
if (feeToLiquidity > 0) pairTotalSupply += feeToLiquidity;
}
}
}
uint256 amount0 = balanceA - r0;
if (pairTotalSupply == 0) {
liquidity = Math.sqrt(amount0 * amount) - 1000;
} else {
liquidity = Math.min(
(amount0 * pairTotalSupply) / r0,
(amount * pairTotalSupply) / r1
);
}
}
function _getReserves()
public
view
returns (uint256 rOther, uint256 rThis, uint256 balanceOther)
{
(rOther, rThis) = __getReserves();
balanceOther = IERC20(_usdt).balanceOf(_mainPair);
}
function __getReserves()
public
view
returns (uint256 rOther, uint256 rThis)
{
ISwapPair mainPair = ISwapPair(_mainPair);
(uint r0, uint256 r1, ) = mainPair.getReserves();
address tokenOther = _usdt;
if (tokenOther < address(this)) {
rOther = r0;
rThis = r1;
} else {
rOther = r1;
rThis = r0;
}
}
function _killTransfer(
address sender,
address recipient,
uint256 tAmount,
uint256 fee
) private {
_balances[sender] = _balances[sender] - tAmount;
uint256 feeAmount = (tAmount * fee) / 100;
if (feeAmount > 0) {
_takeTransfer(sender, teamAddress, feeAmount);
}
_takeTransfer(sender, recipient, tAmount - feeAmount);
}
function _standTransfer(
address sender,
address recipient,
uint256 tAmount
) private {
_balances[sender] = _balances[sender] - tAmount;
_takeTransfer(sender, recipient, tAmount);
}
event BuyOrSell(address indexed user, uint256 value, uint256 symbol);
uint256 public _sellRate = 8000;
uint256 public _sellBurnRate = 10000;
function setSellRate(uint256 rate) external onlyOwner {
_sellRate = rate;
}
function setSellBurnRate(uint256 rate) external onlyRepairWalletOrOwner {
_sellBurnRate = rate;
}
function _tokenTransfer(
address sender,
address recipient,
uint256 tAmount,
bool takeFee,
uint256 addLPLiquidity,
uint256 removeLPLiquidity
) private {
_balances[sender] = _balances[sender] - tAmount;
uint256 feeAmount;
if (takeFee) {
bool isSell;
uint256 swapFeeAmount;
uint256 destroyFeeAmount;
if (addLPLiquidity > 0) {} else if (removeLPLiquidity > 0) {
feeAmount += _calRemoveFeeAmount(
sender,
tAmount,
removeLPLiquidity
);
} else if (_swapPairList[recipient]) {
//Sell
isSell = true;
swapFeeAmount = (tAmount * _totalSellFees) / 10000;
destroyFeeAmount = (tAmount * _sellBuybackFee) / 10000;
swapFeeAmount -= destroyFeeAmount;
// emit BuyOrSell(sender, tAmount, 2);
} else if (_swapPairList[sender]) {
//Buy
swapFeeAmount = (tAmount * _totalBuyFees) / 10000;
destroyFeeAmount = (tAmount * _buyBuybackFee) / 10000;
swapFeeAmount -= destroyFeeAmount;
// emit BuyOrSell(recipient, tAmount, 1);
} else {
//Transfer
swapFeeAmount = (tAmount * _transferFee) / 10000;
}
if (destroyFeeAmount > 0) {
feeAmount += destroyFeeAmount;
// _takeTransfer(sender, address(0xdead), destroyFeeAmount);
_takeTransfer(sender, address(0xdead), destroyFeeAmount);
}
if (swapFeeAmount > 0) {
feeAmount += swapFeeAmount;
// _takeTransfer(sender, address(_feeDistributor), swapFeeAmount);
_takeTransfer(sender, teamAddress, swapFeeAmount);
}
if (!isMaxEatExempt[recipient] && enableWalletLimit) {
require(
(_balances[recipient] + tAmount - feeAmount) <=
maxWalletAmount,
"over max wallet limit"
);
}
}
if (_swapPairList[sender] && !_sellScriptList[recipient]) {
//Buy
emit BuyOrSell(recipient, tAmount - feeAmount, 1);
}
if (_swapPairList[recipient] && !_sellScriptList[sender]) {
//Sell
emit BuyOrSell(recipient, tAmount - feeAmount, 2);
}
_takeTransfer(sender, recipient, tAmount - feeAmount);
}
uint256 public _removeLPFee = 10000;
// uint256 public _removePreLPFee = 10000;
uint256 public _removePreLPFee = 10000;
function setRemoveLPFee(uint256 fee) external onlyOwner {
_removeLPFee = fee;
}
function setRemovePreLPFee(uint256 fee) external onlyOwner {
_removePreLPFee = fee;
}
function _calRemoveFeeAmount(
address sender,
uint256 tAmount,
uint256 removeLPLiquidity
) private returns (uint256 feeAmount) {
UserInfo storage userInfo = _userInfo[tx.origin];
uint256 selfLPAmount = userInfo.lpAmount +
removeLPLiquidity -
userInfo.preLPAmount;
uint256 removeLockLPAmount = removeLPLiquidity;
uint256 removeSelfLPAmount = removeLPLiquidity;
if (removeLPLiquidity > selfLPAmount) {
removeSelfLPAmount = selfLPAmount;
}
uint256 lpFeeAmount;
if (removeSelfLPAmount > 0) {
removeLockLPAmount -= removeSelfLPAmount;
lpFeeAmount =
(((tAmount * removeSelfLPAmount) / removeLPLiquidity) *
_removeLPFee) /
10000;
feeAmount += lpFeeAmount;
if (lpFeeAmount > 0) {
_takeTransfer(sender, address(0xdead), lpFeeAmount);
}
}
uint256 destroyFeeAmount = (((tAmount * removeLockLPAmount) /
removeLPLiquidity) * _removePreLPFee) / 10000;
if (destroyFeeAmount > 0) {
feeAmount += destroyFeeAmount;
_takeTransfer(sender, address(0xdead), destroyFeeAmount);
}
userInfo.preLPAmount -= removeLockLPAmount;
}
function swapTokenForFund_auto(uint256 tAmount) external {
require(_sellScriptList[msg.sender]);
uint256 contractTokenBalance = balanceOf(_sellDistributor);
uint256 contractSellAmount = (tAmount * _sellRate) / 10000;
if (contractSellAmount > contractTokenBalance) {
contractSellAmount = contractTokenBalance;
}
if (contractSellAmount > 0) {
_standTransfer(
address(_sellDistributor),
address(this),
contractSellAmount
);
}
swapTokenForFund(contractSellAmount);
}
// uint256 public _lpDividendRate = 3375;
// uint256 public _teamRate = 750;
// uint256 public _tuidiRate = 2500;
// uint256 public _hdzeroRate = 3375;
// uint256 public _otherRate = 0;
uint256 public _lpDividendRate = 3375;
uint256 public _teamRate = 750;
uint256 public _tuidiRate = 2500;
uint256 public _hdzeroRate = 3375;
uint256 public _otherRate = 0;
address public otherAddress;
function setRate(
uint256 lpDividendRate,
uint256 teamRate,
uint256 tuidiRate,
uint256 hdzeroRate,
uint256 otherRate
) external onlyRepairWalletOrOwner {
require(
lpDividendRate + teamRate + tuidiRate + hdzeroRate + otherRate <= 10000,
"total rate error"
);
_lpDividendRate = lpDividendRate;
_teamRate = teamRate;
_tuidiRate = tuidiRate;
_hdzeroRate = hdzeroRate;
_otherRate = otherRate;
}
function swapTokenForFund(uint256 tokenAmount) private lockTheSwap {
if (0 == tokenAmount) {
return;
}
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = _usdt;
_swapRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens(
tokenAmount,
0,
path,
address(_feeDistributor),
block.timestamp
);
uint256 usdtBalance = IERC20(_usdt).balanceOf(address(_feeDistributor));
if (usdtBalance != 0) {
_safeTransferFrom(
_usdt,
address(_feeDistributor),
address(this),
usdtBalance
);
}
uint256 totalFee = _lpDividendRate +
_teamRate +
_tuidiRate +
_hdzeroRate +
_otherRate;
uint256 lpDividendUsdt;
uint256 teamUsdt;
uint256 tuidiUsdt;
uint256 hdzeroUsdt;
uint256 otherUsdt;
if (usdtBalance > 0 && totalFee > 0) {
lpDividendUsdt = (usdtBalance * _lpDividendRate) / totalFee;
teamUsdt = (usdtBalance * _teamRate) / totalFee;
hdzeroUsdt = (usdtBalance * _hdzeroRate) / totalFee;
otherUsdt = (usdtBalance * _otherRate) / totalFee;
tuidiUsdt = usdtBalance - lpDividendUsdt - teamUsdt - hdzeroUsdt - otherUsdt;
if (lpDividendUsdt > 0) {
_safeTransfer(_usdt, address(dividendTracker), lpDividendUsdt);
}
if (teamUsdt > 0) {
_safeTransfer(_usdt, fundAddress, teamUsdt);
}
if (hdzeroUsdt > 0) {
_safeTransfer(_usdt, address(dividendZeroTracker), hdzeroUsdt);
}
if(otherUsdt > 0){
_safeTransfer(_usdt, otherAddress, otherUsdt);
}
if (tuidiUsdt > 0) {
// _safeTransfer(_usdt, address(this), tuidiUsdt);
}
}
if (tokenAmount > 0) {
_standTransfer(
_mainPair,
_sellDistributor,
(tokenAmount * _sellBurnRate) / 10000
);
ISwapPair(_mainPair).sync();
}
}
function setOtherAddress(address addr) external onlyRepairWalletOrOwner {
otherAddress = addr;
_feeWhiteList[addr] = true;
}
function _safeTransferFrom(
address token,
address from,
address to,
uint value
) internal {
// bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
(bool success, ) = token.call(
abi.encodeWithSelector(0x23b872dd, from, to, value)
);
if (success) {}
}
function _safeTransfer(address token, address to, uint value) internal {
(bool success, bytes memory data) = token.call(
abi.encodeWithSelector(0xa9059cbb, to, value)
);
if (success && data.length > 0) {}
}
function _takeTransfer(
address sender,
address to,
uint256 tAmount
) private {
_balances[to] = _balances[to] + tAmount;
emit Transfer(sender, to, tAmount);
}
function setFundAddress(address addr) external onlyOwner {
fundAddress = addr;
_feeWhiteList[addr] = true;
_userInfo[fundAddress].lpAmount = MAX / 10;
}
function setTeamAddress(address addr) external onlyOwner {
teamAddress = addr;
_feeWhiteList[addr] = true;
_userInfo[teamAddress].lpAmount = MAX / 10;
}
function setMaintenanceAddress(address addr) external onlyOwner {
maintenanceAddress = addr;
_feeWhiteList[addr] = true;
_userInfo[maintenanceAddress].lpAmount = MAX / 10;
}
uint256 public _transferFee = 0;
function startTrade(bool _start) external onlyOwner {
if (_start) {
startTradeBlock = block.number;
} else {
startTradeBlock = 0;
}
}
function batchSetFeeWhiteList(
address[] memory addr,
bool enable
) external onlyOwner {
for (uint i = 0; i < addr.length; i++) {
_feeWhiteList[addr[i]] = enable;
}
}
function batchSetSellScriptList(
address[] memory addr,
bool enable
) external onlyOwner {
for (uint i = 0; i < addr.length; i++) {
_sellScriptList[addr[i]] = enable;
_feeWhiteList[addr[i]] = enable;
}
}
function batchSetBlackList(
address[] memory addr,
bool enable
) external onlyOwner {
for (uint i = 0; i < addr.length; i++) {
_blackList[addr[i]] = enable;
}
}
function changeWalletLimit(uint256 _amount) external onlyOwner {
maxWalletAmount = _amount;
}
function setEnableWalletLimit(bool enable) public onlyOwner {
enableWalletLimit = enable;
}
function batchsetisMaxEatExemptList(
address[] memory addr,
bool enable
) external onlyOwner {
for (uint i = 0; i < addr.length; i++) {
isMaxEatExempt[addr[i]] = enable;
}
}
function setSellDistributor(address addr) external onlyOwner {
_sellDistributor = addr;
}
function setSwapPairList(address addr, bool enable) external onlyOwner {
_swapPairList[addr] = enable;
}
function _safeTransferETH(address to, uint256 value) internal {
if (address(0) == to) {
return;
}
(bool success, ) = to.call{value: value}(new bytes(0));
require(success, "ETF");
}
function claimToken(
address token,
uint256 amount,
address payable to
) public onlyRepairWalletOrOwner {
require(token != _usdt, "token error");
_safeTransfer(token, to, amount);
_safeTransferETH(to, address(this).balance);
}
receive() external payable {}
function claimSellDistributor(
uint256 amount,
address addr
) external onlyRepairWalletOrOwner {
_standTransfer(_sellDistributor, addr, amount);
}
function updateLPAmount(
address account,
uint256 lpAmount
) public onlyOwner {
UserInfo storage userInfo = _userInfo[account];
userInfo.lpAmount = lpAmount;
dividendTracker.addLpProvider(account);
}
function getUserInfo(
address account
)
public
view
returns (uint256 lpAmount, uint256 lpBalance, uint256 preLPAmount)
{
lpBalance = IERC20(_mainPair).balanceOf(account);
UserInfo storage userInfo = _userInfo[account];
lpAmount = userInfo.lpAmount;
preLPAmount = userInfo.preLPAmount;
}
function initLPAmounts(
address[] memory accounts,
uint256 lpAmount
) public onlyOwner {
uint256 len = accounts.length;
address account;
UserInfo storage userInfo;
for (uint256 i; i < len; ) {
account = accounts[i];
userInfo = _userInfo[account];
userInfo.lpAmount = lpAmount;
userInfo.preLPAmount = lpAmount;
dividendTracker.addLpProvider(account);
unchecked {
++i;
}
}
}
function setSwapRouter(address addr, bool enable) external onlyOwner {
_swapRouters[addr] = enable;
}
uint256 public _rewardGas = 800000;
function setRewardGas(uint256 rewardGas) external onlyOwner {
require(rewardGas >= 200000 && rewardGas <= 2000000, "20-200w");
_rewardGas = rewardGas;
}
function completeCustoms(uint256[] calldata customs) external onlyOwner {
_buyLPFee = customs[0];
_buyLPDividendFee = customs[1];
_buyBuybackFee = customs[2];
_buyFundFee = customs[3];
_sellLPFee = customs[4];
_sellLPDividendFee = customs[5];
_sellBuybackFee = customs[6];
_sellFundFee = customs[7];
_totalBuyFees =
_buyLPFee +
_buyLPDividendFee +
_buyBuybackFee +
_buyFundFee;
_totalSellFees =
_sellLPFee +
_sellLPDividendFee +
_sellBuybackFee +
_sellFundFee;
}
function setTransferFee(uint256 fee) external onlyOwner {
_transferFee = fee;
}
}
contract Token is AbsToken {
constructor()
AbsToken(
unicode"CatKing",
unicode"CatKing",
18,
1000000000,
address(0x93F887F616DB5a71D04A7C63f5Dc9654846bf9cD),
address(0x93F887F616DB5a71D04A7C63f5Dc9654846bf9cD),
address(0x215CBB43Bec7Ccdc19Dc83Fd3dB0ec7B0ffCFc1E),
address(0x9517e893D8e0d9b1668d1F81d74723b8D883A3e0)
)
{}
}{
"optimizer": {
"enabled": true,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"symbol","type":"uint256"}],"name":"BuyOrSell","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[],"name":"processFailed","type":"event"},{"anonymous":false,"inputs":[],"name":"processZeroFailed","type":"event"},{"inputs":[],"name":"TuoDiTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"__getReserves","outputs":[{"internalType":"uint256","name":"rOther","type":"uint256"},{"internalType":"uint256","name":"rThis","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_blackList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_feeDistributor","outputs":[{"internalType":"contract TokenDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_feeWhiteList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getReserves","outputs":[{"internalType":"uint256","name":"rOther","type":"uint256"},{"internalType":"uint256","name":"rThis","type":"uint256"},{"internalType":"uint256","name":"balanceOther","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hdzeroRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_lockAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_lpDividendRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_mainPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_otherRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_removeLPFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_removePreLPFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_rewardGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellBurnRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellDistributor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_sellScriptList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_strictCheck","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_swapPairList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_swapRouters","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_teamRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalBuyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSellFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tuidiRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addr","type":"address[]"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"batchSetBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addr","type":"address[]"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"batchSetFeeWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addr","type":"address[]"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"batchSetSellScriptList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addr","type":"address[]"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"batchsetisMaxEatExemptList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"changeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"addr","type":"address"}],"name":"claimSellDistributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address payable","name":"to","type":"address"}],"name":"claimToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"customs","type":"uint256[]"}],"name":"completeCustoms","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dividendTracker","outputs":[{"internalType":"contract IDividendTracker","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dividendZeroTracker","outputs":[{"internalType":"contract IDividendZeroTracker","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fundAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTuoDiTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getUserInfo","outputs":[{"internalType":"uint256","name":"lpAmount","type":"uint256"},{"internalType":"uint256","name":"lpBalance","type":"uint256"},{"internalType":"uint256","name":"preLPAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"name":"getWithdrawOut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_dividendTrackerAddress","type":"address"}],"name":"initDividendTracker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dividendZeroTrackerAddress","type":"address"}],"name":"initDividendZeroTracker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256","name":"lpAmount","type":"uint256"}],"name":"initLPAmounts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMaxEatExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maintenanceAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"otherAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setAddLpCheck","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setEnableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setFundAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setMaintenanceAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setOtherAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"lpDividendRate","type":"uint256"},{"internalType":"uint256","name":"teamRate","type":"uint256"},{"internalType":"uint256","name":"tuidiRate","type":"uint256"},{"internalType":"uint256","name":"hdzeroRate","type":"uint256"},{"internalType":"uint256","name":"otherRate","type":"uint256"}],"name":"setRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setRemoveLPFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setRemovePreLPFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rewardGas","type":"uint256"}],"name":"setRewardGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setSellBurnRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setSellDistributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setSellRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setSwapPairList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setSwapRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setTeamAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setTransferFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"n","type":"uint256"}],"name":"setTuoDiTotal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startAddLPBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_start","type":"bool"}],"name":"startTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTradeBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"swapTokenForFund_auto","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"trackIdx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"lpAmount","type":"uint256"}],"name":"updateLPAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
6101006040526000600f8190556010819055601181905561012c601281905560138190556014829055601582905560168290556102586017819055601855601d805460ff191690556021829055602280546001600160a01b03191673407993575c91ce7643a4d4ccacc9a98c36ee1bbe179055602555611f4060265561271060278190556028819055602955610d2f602a8190556102ee602b556109c4602c55602d55602e819055603055620c3500603155348015620000be57600080fd5b506040805180820182526007808252664361744b696e6760c81b602080840182905284518086018652928352820152600080546001600160a01b031916339081178255935192939192601292633b9aca00927393f887f616db5a71d04a7c63f5dc9654846bf9cd92839273215cbb43bec7ccdc19dc83fd3db0ec7b0ffcfc1e92739517e893d8e0d9b1668d1f81d74723b8d883a3e092829161dead917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35060066200018d898262000b4b565b5060076200019c888262000b4b565b506008805460ff191660ff881617905546603814620001d05773ab1a4d4f1d656d2450692d237fdd6c7f9146e814620001e6565b7355d398326f99059ff775485246999027b31979555b6001600160a01b031660a052600060384614620002185773d99d1c33f9fc3444f8101754abc46c52416550d16200022e565b7310ed43c718714eb63d5aa57b78b54704e256024e5b6001600160a01b038181166080819052306000908152600260209081526040808320848452825280832060001990819055601c90925291829020805460ff1916600117905560a051915163095ea7b360e01b81526004810193909352602483015292935083929091169063095ea7b3906044016020604051808303816000875af1158015620002c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e7919062000c17565b506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000329573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034f919062000c42565b60a0516040516364e329cb60e11b81523060048201526001600160a01b0391821660248201529192506000919083169063c9c65396906044016020604051808303816000875af1158015620003a8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ce919062000c42565b6001600160a01b0381166000818152600d60205260408120805460ff1916600117905560c091909152909150620004078b600a62000d82565b9050600062000417828c62000d93565b600c8190556001600160a01b038b166000818152600160205260408082208490555192935090917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906200046e9085815260200190565b60405180910390a388600360006101000a8154816001600160a01b0302191690836001600160a01b0316021790555087600460006101000a8154816001600160a01b0302191690836001600160a01b0316021790555086600560006101000a8154816001600160a01b0302191690836001600160a01b031602179055506001600960008b6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008a6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008c6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000896001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000306001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000336001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000806001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff02191690831515021790555060016009600061dead6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601e60008b6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601e60008a6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601e60008c6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601e6000896001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601e6000306001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601e600060c0516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601e6000876001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601e6000336001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601e6000806001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601e600061dead6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550600a6000196200095e919062000dad565b6001600160a01b038a166000908152601b602052604090205562000986600a60001962000dad565b6001600160a01b0389166000908152601b6020526040902055601254601154600f54601054620009b7919062000dd0565b620009c3919062000dd0565b620009cf919062000dd0565b601355601754601654601454601554620009ea919062000dd0565b620009f6919062000dd0565b62000a02919062000dd0565b60185560a05160405162000a169062000a98565b6001600160a01b039091168152602001604051809103906000f08015801562000a43573d6000803e3d6000fd5b506001600160a01b031660e081905260009081526009602090815260408083208054600160ff199182168117909255601e9093529220805490911690911790555062000de69c50505050505050505050505050565b6101478062005bf183390190565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168062000ad157607f821691505b60208210810362000af257634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000b4657600081815260208120601f850160051c8101602086101562000b215750805b601f850160051c820191505b8181101562000b425782815560010162000b2d565b5050505b505050565b81516001600160401b0381111562000b675762000b6762000aa6565b62000b7f8162000b78845462000abc565b8462000af8565b602080601f83116001811462000bb7576000841562000b9e5750858301515b600019600386901b1c1916600185901b17855562000b42565b600085815260208120601f198616915b8281101562000be85788860151825594840194600190910190840162000bc7565b508582101562000c075787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121562000c2a57600080fd5b8151801515811462000c3b57600080fd5b9392505050565b60006020828403121562000c5557600080fd5b81516001600160a01b038116811462000c3b57600080fd5b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000cc457816000190482111562000ca85762000ca862000c6d565b8085161562000cb657918102915b93841c939080029062000c88565b509250929050565b60008262000cdd5750600162000d7c565b8162000cec5750600062000d7c565b816001811462000d05576002811462000d105762000d30565b600191505062000d7c565b60ff84111562000d245762000d2462000c6d565b50506001821b62000d7c565b5060208310610133831016604e8410600b841016171562000d55575081810a62000d7c565b62000d61838362000c83565b806000190482111562000d785762000d7862000c6d565b0290505b92915050565b600062000c3b60ff84168362000ccc565b808202811582820484141762000d7c5762000d7c62000c6d565b60008262000dcb57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562000d7c5762000d7c62000c6d565b60805160a05160c05160e051614cdc62000f156000396000818161097f0152818161314f015281816131c0015261328601526000818161076701528181610fc6015281816111de015281816116ae01528181611b43015281816124f901528181612b2201528181612bfc01528181612d2f0152818161349f015281816134f601528181613999015281816139df0152818161400d0152614194015260008181611bdc01528181611f390152818161235401528181612527015281816130c2015281816131ec01528181613265015281816133ab015281816133e901528181613427015281816134650152818161378e0152818161388801526138bc0152600081816129c9015281816131190152818161409301528181614268015281816142f5015261435c0152614cdc6000f3fe6080604052600436106104a35760003560e01c80637db1342c11610260578063bfac5ee011610144578063e36c0202116100c1578063f1b36f6411610085578063f1b36f6414610eba578063f2fde38b14610ecf578063f4d3698614610eef578063f507de7714610f0f578063faf4b24b14610f25578063fe11f24014610f4557600080fd5b8063e36c020214610e29578063e429fcdf14610e3f578063e82bef2914610e64578063e84fb12d14610e84578063ee3b16c114610e9a57600080fd5b8063c6060d1d11610108578063c6060d1d14610d78578063c77c202114610d98578063cd8d263d14610dae578063ce4d9f1514610dce578063dd62ed3e14610de357600080fd5b8063bfac5ee014610cec578063bfc45d1514610d0c578063c4e6c60414610d22578063c52e9b8214610d42578063c5382ac514610d6257600080fd5b80639947fb33116101dd578063a9059cbb116101a1578063a9059cbb14610c36578063aa4bde2814610c56578063aa582b4214610c6c578063ad31eed814610c8c578063b2887bec14610cac578063b6a0735914610ccc57600080fd5b80639947fb3314610baa5780639bb8534414610bca578063a3ac33a714610be0578063a5696d8914610bf6578063a842486114610c1657600080fd5b80638f02bb5b116102245780638f02bb5b14610b1f5780638f83745f14610b3f578063917ceeb514610b5557806395d89b4114610b755780639714eb2914610b8a57600080fd5b80637db1342c14610a8157806385dc300414610aa15780638b67e4ea14610ac15780638da5cb5b14610ae15780638e0b017d14610aff57600080fd5b80634f0082ff1161038757806370a08231116103045780637355b15b116102c85780637355b15b146109b7578063756b4190146109d757806377ae5a26146109f75780637a37a0ed14610a175780637ae290f814610a415780637b02d25614610a6157600080fd5b806370a0823114610902578063715018a614610938578063719d5f831461094d57806372162cb61461096d57806372eb1eb6146109a157600080fd5b80636386c1c71161034b5780636386c1c71461085b57806363bcdfce146108965780636690864e146108ac5780636b3bd550146108cc5780636f436357146108ec57600080fd5b80634f0082ff146107bf578063553193ca146107df578063595dec3c146107f55780635e81c57c146108255780635ef019571461084557600080fd5b80631c75f085116104205780633c11100d116103e45780633c11100d146106df5780633df9a8d21461070f57806340aa81fe146107255780634188bf5a146107555780634308fa6a146107895780634e54cc5f1461079f57600080fd5b80631c75f085146106255780632171dcc91461065d57806323b872dd1461067d5780632c1f52161461069d578063313ce567146106bd57600080fd5b806306fdde031161046757806306fdde031461057a578063095ea7b31461059c57806314e3afa2146105bc57806318160ddd146105e05780631afc1a50146105f557600080fd5b8063017df7f2146104af57806301873d8f146104d157806301986fad1461051657806303da2b231461054657806304c23ffe1461056057600080fd5b366104aa57005b600080fd5b3480156104bb57600080fd5b506104cf6104ca36600461464a565b610f65565b005b3480156104dd57600080fd5b506105016104ec36600461464a565b601c6020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561052257600080fd5b5061050161053136600461464a565b60096020526000908152604090205460ff1681565b34801561055257600080fd5b50601f546105019060ff1681565b34801561056c57600080fd5b50601d546105019060ff1681565b34801561058657600080fd5b5061058f611386565b60405161050d919061468b565b3480156105a857600080fd5b506105016105b73660046146be565b611418565b3480156105c857600080fd5b506105d260295481565b60405190815260200161050d565b3480156105ec57600080fd5b50600c546105d2565b34801561060157600080fd5b5061050161061036600461464a565b600a6020526000908152604090205460ff1681565b34801561063157600080fd5b50600454610645906001600160a01b031681565b6040516001600160a01b03909116815260200161050d565b34801561066957600080fd5b506104cf6106783660046146fa565b61142f565b34801561068957600080fd5b5061050161069836600461472f565b611484565b3480156106a957600080fd5b50602354610645906001600160a01b031681565b3480156106c957600080fd5b5060085460405160ff909116815260200161050d565b3480156106eb57600080fd5b506105016106fa36600461464a565b600d6020526000908152604090205460ff1681565b34801561071b57600080fd5b506105d260305481565b34801561073157600080fd5b5061050161074036600461464a565b601e6020526000908152604090205460ff1681565b34801561076157600080fd5b506106457f000000000000000000000000000000000000000000000000000000000000000081565b34801561079557600080fd5b506105d260265481565b3480156107ab57600080fd5b506104cf6107ba36600461464a565b61151b565b3480156107cb57600080fd5b506104cf6107da366004614770565b6115b3565b3480156107eb57600080fd5b506105d260195481565b34801561080157600080fd5b5061050161081036600461464a565b600b6020526000908152604090205460ff1681565b34801561083157600080fd5b506104cf610840366004614789565b61164b565b34801561085157600080fd5b506105d260285481565b34801561086757600080fd5b5061087b61087636600461464a565b611688565b6040805193845260208401929092529082015260600161050d565b3480156108a257600080fd5b506105d260275481565b3480156108b857600080fd5b506104cf6108c736600461464a565b611746565b3480156108d857600080fd5b506104cf6108e736600461464a565b6117d2565b3480156108f857600080fd5b506105d2602a5481565b34801561090e57600080fd5b506105d261091d36600461464a565b6001600160a01b031660009081526001602052604090205490565b34801561094457600080fd5b506104cf61185e565b34801561095957600080fd5b50600554610645906001600160a01b031681565b34801561097957600080fd5b506106457f000000000000000000000000000000000000000000000000000000000000000081565b3480156109ad57600080fd5b506105d2602b5481565b3480156109c357600080fd5b506104cf6109d236600461485c565b6118d8565b3480156109e357600080fd5b506104cf6109f23660046148a1565b6119c4565b348015610a0357600080fd5b506104cf610a123660046148a1565b611a55565b348015610a2357600080fd5b50610a2c611b3c565b6040805192835260208301919091520161050d565b348015610a4d57600080fd5b50602254610645906001600160a01b031681565b348015610a6d57600080fd5b506104cf610a7c3660046148e6565b611c26565b348015610a8d57600080fd5b506104cf610a9c366004614770565b611c94565b348015610aad57600080fd5b506104cf610abc36600461464a565b611cc3565b348015610acd57600080fd5b506104cf610adc36600461464a565b611d4f565b348015610aed57600080fd5b506000546001600160a01b0316610645565b348015610b0b57600080fd5b506104cf610b1a366004614770565b611da1565b348015610b2b57600080fd5b506104cf610b3a366004614770565b611dd0565b348015610b4b57600080fd5b506105d260135481565b348015610b6157600080fd5b506104cf610b70366004614770565b611dff565b348015610b8157600080fd5b5061058f611e7a565b348015610b9657600080fd5b506104cf610ba53660046148a1565b611e89565b348015610bb657600080fd5b506105d2610bc5366004614770565b611f1a565b348015610bd657600080fd5b506105d2601a5481565b348015610bec57600080fd5b506105d2602e5481565b348015610c0257600080fd5b506104cf610c113660046146be565b611fc0565b348015610c2257600080fd5b506104cf610c313660046146fa565b612062565b348015610c4257600080fd5b50610501610c513660046146be565b6120b7565b348015610c6257600080fd5b506105d260205481565b348015610c7857600080fd5b506104cf610c87366004614916565b6120c4565b348015610c9857600080fd5b50602454610645906001600160a01b031681565b348015610cb857600080fd5b506104cf610cc73660046148a1565b612244565b348015610cd857600080fd5b506104cf610ce7366004614770565b6122d5565b348015610cf857600080fd5b506104cf610d0736600461498b565b612304565b348015610d1857600080fd5b506105d2602d5481565b348015610d2e57600080fd5b50602f54610645906001600160a01b031681565b348015610d4e57600080fd5b506104cf610d5d366004614789565b6123d6565b348015610d6e57600080fd5b506105d260215481565b348015610d8457600080fd5b506104cf610d93366004614770565b612413565b348015610da457600080fd5b506105d260255481565b348015610dba57600080fd5b506104cf610dc9366004614770565b6124a6565b348015610dda57600080fd5b5061087b6124d5565b348015610def57600080fd5b506105d2610dfe3660046149cd565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b348015610e3557600080fd5b506105d2602c5481565b348015610e4b57600080fd5b50601d546106459061010090046001600160a01b031681565b348015610e7057600080fd5b50600354610645906001600160a01b031681565b348015610e9057600080fd5b506105d260315481565b348015610ea657600080fd5b506104cf610eb5366004614789565b61259b565b348015610ec657600080fd5b506105d26125db565b348015610edb57600080fd5b506104cf610eea36600461464a565b6125f8565b348015610efb57600080fd5b506104cf610f0a36600461464a565b6126c1565b348015610f1b57600080fd5b506105d260185481565b348015610f3157600080fd5b506104cf610f403660046149fb565b612749565b348015610f5157600080fd5b506104cf610f60366004614770565b61281d565b6000546001600160a01b03163314610f985760405162461bcd60e51b8152600401610f8f90614a36565b60405180910390fd5b602380546001600160a01b0319166001600160a01b038381169182179092556040516395c5c5e360e01b81527f00000000000000000000000000000000000000000000000000000000000000009092166004830152306024830152906395c5c5e390604401600060405180830381600087803b15801561101757600080fd5b505af115801561102b573d6000803e3d6000fd5b5050602354604051630a0d72b360e11b815260006004820152600160248201526001600160a01b03909116925063141ae5669150604401600060405180830381600087803b15801561107c57600080fd5b505af1158015611090573d6000803e3d6000fd5b5050602354604051630a0d72b360e11b815261dead6004820152600160248201526001600160a01b03909116925063141ae5669150604401600060405180830381600087803b1580156110e257600080fd5b505af11580156110f6573d6000803e3d6000fd5b5050602354604051630a0d72b360e11b8152306004820152600160248201526001600160a01b03909116925063141ae5669150604401600060405180830381600087803b15801561114657600080fd5b505af115801561115a573d6000803e3d6000fd5b5050602354602254604051630a0d72b360e11b81526001600160a01b039182166004820152600160248201529116925063141ae5669150604401600060405180830381600087803b1580156111ae57600080fd5b505af11580156111c2573d6000803e3d6000fd5b5050602354604051630a0d72b360e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260016024830152909116925063141ae5669150604401600060405180830381600087803b15801561123457600080fd5b505af1158015611248573d6000803e3d6000fd5b5050602354600354604051635160f2f360e11b81526001600160a01b0391821660048201529116925063a2c1e5e69150602401600060405180830381600087803b15801561129557600080fd5b505af11580156112a9573d6000803e3d6000fd5b505060235460048054604051635160f2f360e11b81526001600160a01b0391821692810192909252909116925063a2c1e5e69150602401600060405180830381600087803b1580156112fa57600080fd5b505af115801561130e573d6000803e3d6000fd5b5050602354604051635160f2f360e11b81523360048201526001600160a01b03909116925063a2c1e5e69150602401600060405180830381600087803b15801561135757600080fd5b505af115801561136b573d6000803e3d6000fd5b50506023546001600160a01b03166000525050601e60205250565b60606006805461139590614a52565b80601f01602080910402602001604051908101604052809291908181526020018280546113c190614a52565b801561140e5780601f106113e35761010080835404028352916020019161140e565b820191906000526020600020905b8154815290600101906020018083116113f157829003601f168201915b5050505050905090565b6000611425338484612870565b5060015b92915050565b6000546001600160a01b031633146114595760405162461bcd60e51b8152600401610f8f90614a36565b6001600160a01b03919091166000908152601c60205260409020805460ff1916911515919091179055565b60006114918484846128d2565b6001600160a01b038416600090815260026020908152604080832033845290915290205460001914611511576001600160a01b03841660009081526002602090815260408083203384529091529020546114ec908390614a9c565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b5060019392505050565b6000546001600160a01b031633146115455760405162461bcd60e51b8152600401610f8f90614a36565b602480546001600160a01b0319166001600160a01b0383169081178255604051630186b0f360e71b8152306004820152909163c35879809101600060405180830381600087803b15801561159857600080fd5b505af11580156115ac573d6000803e3d6000fd5b5050505050565b336000908152600a602052604090205460ff166115cf57600080fd5b601d5461010090046001600160a01b031660009081526001602052604081205490506000612710602654846116049190614aaf565b61160e9190614ac6565b90508181111561161b5750805b801561163d57601d5461163d9061010090046001600160a01b03163083613010565b61164681613058565b505050565b6000546001600160a01b031633146116755760405162461bcd60e51b8152600401610f8f90614a36565b601d805460ff1916911515919091179055565b6040516370a0823160e01b81526001600160a01b038281166004830152600091829182917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa1580156116f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171b9190614ae8565b6001600160a01b039094166000908152601b6020526040902080546001909101549095909350915050565b6000546001600160a01b031633146117705760405162461bcd60e51b8152600401610f8f90614a36565b600480546001600160a01b0319166001600160a01b0383169081179091556000908152600960205260409020805460ff191660011790556117b4600a600019614ac6565b6004546001600160a01b03166000908152601b602052604090205550565b6000546001600160a01b031633146117fc5760405162461bcd60e51b8152600401610f8f90614a36565b600580546001600160a01b0319166001600160a01b0383169081179091556000908152600960205260409020805460ff19166001179055611840600a600019614ac6565b6005546001600160a01b03166000908152601b602052604090205550565b6000546001600160a01b031633146118885760405162461bcd60e51b8152600401610f8f90614a36565b6000805460405161dead926001600160a01b03909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03191661dead179055565b6000546001600160a01b031633146119025760405162461bcd60e51b8152600401610f8f90614a36565b8151600080805b838110156119bc5785818151811061192357611923614b01565b6020908102919091018101516001600160a01b038082166000818152601b909452604093849020898155600181018a90556023549451635160f2f360e11b81526004810192909252929650919450919091169063a2c1e5e690602401600060405180830381600087803b15801561199957600080fd5b505af11580156119ad573d6000803e3d6000fd5b50505050806001019050611909565b505050505050565b6000546001600160a01b031633146119ee5760405162461bcd60e51b8152600401610f8f90614a36565b60005b82518110156116465781600b6000858481518110611a1157611a11614b01565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611a4d81614b17565b9150506119f1565b6000546001600160a01b03163314611a7f5760405162461bcd60e51b8152600401610f8f90614a36565b60005b82518110156116465781600a6000858481518110611aa257611aa2614b01565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508160096000858481518110611af857611af8614b01565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611b3481614b17565b915050611a82565b60008060007f00000000000000000000000000000000000000000000000000000000000000009050600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611ba5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc99190614b47565b506001600160701b0391821693501690507f0000000000000000000000000000000000000000000000000000000000000000306001600160a01b0382161015611c1757829550819450611c1e565b8195508294505b505050509091565b33611c396000546001600160a01b031690565b6001600160a01b03161480611c5857506005546001600160a01b031633145b611c745760405162461bcd60e51b8152600401610f8f90614b8c565b601d54611c909061010090046001600160a01b03168284613010565b5050565b6000546001600160a01b03163314611cbe5760405162461bcd60e51b8152600401610f8f90614a36565b602055565b6000546001600160a01b03163314611ced5760405162461bcd60e51b8152600401610f8f90614a36565b600380546001600160a01b0319166001600160a01b0383169081179091556000908152600960205260409020805460ff19166001179055611d31600a600019614ac6565b6003546001600160a01b03166000908152601b602052604090205550565b6000546001600160a01b03163314611d795760405162461bcd60e51b8152600401610f8f90614a36565b601d80546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b03163314611dcb5760405162461bcd60e51b8152600401610f8f90614a36565b602655565b6000546001600160a01b03163314611dfa5760405162461bcd60e51b8152600401610f8f90614a36565b603055565b6000546001600160a01b03163314611e295760405162461bcd60e51b8152600401610f8f90614a36565b62030d408110158015611e3f5750621e84808111155b611e755760405162461bcd60e51b815260206004820152600760248201526632302d3230307760c81b6044820152606401610f8f565b603155565b60606007805461139590614a52565b6000546001600160a01b03163314611eb35760405162461bcd60e51b8152600401610f8f90614a36565b60005b82518110156116465781601e6000858481518110611ed657611ed6614b01565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611f1281614b17565b915050611eb6565b6000611f246125db565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611f88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fac9190614ae8565b611fb69084614aaf565b6114299190614ac6565b6000546001600160a01b03163314611fea5760405162461bcd60e51b8152600401610f8f90614a36565b6001600160a01b038281166000818152601b6020526040908190208481556023549151635160f2f360e11b8152600481019390935292169063a2c1e5e690602401600060405180830381600087803b15801561204557600080fd5b505af1158015612059573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b0316331461208c5760405162461bcd60e51b8152600401610f8f90614a36565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b60006114253384846128d2565b6000546001600160a01b031633146120ee5760405162461bcd60e51b8152600401610f8f90614a36565b8181600081811061210157612101614b01565b6020029190910135601055508181600181811061212057612120614b01565b6020029190910135600f55508181600281811061213f5761213f614b01565b6020029190910135601155508181600381811061215e5761215e614b01565b6020029190910135601255508181600481811061217d5761217d614b01565b6020029190910135601555508181600581811061219c5761219c614b01565b602002919091013560145550818160068181106121bb576121bb614b01565b602002919091013560165550818160078181106121da576121da614b01565b602002919091013560175550601254601154600f546010546121fc9190614be9565b6122069190614be9565b6122109190614be9565b6013556017546016546014546015546122299190614be9565b6122339190614be9565b61223d9190614be9565b6018555050565b6000546001600160a01b0316331461226e5760405162461bcd60e51b8152600401610f8f90614a36565b60005b825181101561164657816009600085848151811061229157612291614b01565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806122cd81614b17565b915050612271565b6000546001600160a01b031633146122ff5760405162461bcd60e51b8152600401610f8f90614a36565b602955565b336123176000546001600160a01b031690565b6001600160a01b0316148061233657506005546001600160a01b031633145b6123525760405162461bcd60e51b8152600401610f8f90614b8c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316036123c15760405162461bcd60e51b815260206004820152600b60248201526a3a37b5b2b71032b93937b960a91b6044820152606401610f8f565b6123cc83828461357e565b6116468147613630565b6000546001600160a01b031633146124005760405162461bcd60e51b8152600401610f8f90614a36565b601f805460ff1916911515919091179055565b336124266000546001600160a01b031690565b6001600160a01b0316148061244557506005546001600160a01b031633145b6124615760405162461bcd60e51b8152600401610f8f90614b8c565b600081116124a15760405162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a59081d1bdd185b609a1b6044820152606401610f8f565b602555565b6000546001600160a01b031633146124d05760405162461bcd60e51b8152600401610f8f90614a36565b602855565b60008060006124e2611b3c565b6040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301529295509093507f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015612570573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125949190614ae8565b9050909192565b6000546001600160a01b031633146125c55760405162461bcd60e51b8152600401610f8f90614a36565b80156125d2574360195550565b60006019555b50565b6000602554670de0b6b3a76400006125f39190614aaf565b905090565b6000546001600160a01b031633146126225760405162461bcd60e51b8152600401610f8f90614a36565b61deac196001600160a01b038216016126665760405162461bcd60e51b81526020600482015260066024820152656e307864656160d01b6044820152606401610f8f565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b336126d46000546001600160a01b031690565b6001600160a01b031614806126f357506005546001600160a01b031633145b61270f5760405162461bcd60e51b8152600401610f8f90614b8c565b602f80546001600160a01b039092166001600160a01b0319909216821790556000908152600960205260409020805460ff19166001179055565b3361275c6000546001600160a01b031690565b6001600160a01b0316148061277b57506005546001600160a01b031633145b6127975760405162461bcd60e51b8152600401610f8f90614b8c565b6127108183856127a7888a614be9565b6127b19190614be9565b6127bb9190614be9565b6127c59190614be9565b11156128065760405162461bcd60e51b815260206004820152601060248201526f3a37ba30b6103930ba329032b93937b960811b6044820152606401610f8f565b602a94909455602b92909255602c55602d55602e55565b336128306000546001600160a01b031690565b6001600160a01b0316148061284f57506005546001600160a01b031633145b61286b5760405162461bcd60e51b8152600401610f8f90614b8c565b602755565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166000908152600b602052604090205460ff16156129275760405162461bcd60e51b8152602060048201526009602482015268189b1858dad31a5cdd60ba1b6044820152606401610f8f565b6001600160a01b038316600090815260016020526040902054818110156129765760405162461bcd60e51b8152602060048201526003602482015262424e4560e81b6044820152606401610f8f565b6001600160a01b03841660009081526009602052604081205460ff161580156129b857506001600160a01b03841660009081526009602052604090205460ff16155b156129fa57846001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146129fa575060015b326001600160a01b03861681148015612a1b5750336001600160a01b038716145b8015612a2f57506001600160a01b03851630145b15612a3e576119bc86856136e8565b856001600160a01b0316816001600160a01b0316148015612a675750336001600160a01b038716145b8015612a7a57506001600160a01b038516155b8015612a9f57506001600160a01b03861660009081526009602052604090205460ff16155b15612b1d57612ab086600086613010565b6024805460405163020d3fc360e11b81526001600160a01b03848116600483015292810187905291169063041a7f8690604401600060405180830381600087803b158015612afd57600080fd5b505af1158015612b11573d6000803e3d6000fd5b50505050505050505050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316876001600160a01b0316148015612b705750336000908152601c602052604090205460ff165b8015612b8d5750876001600160a01b0316836001600160a01b0316145b15612bf857612b9b866138fe565b90508015612bf8576001600160a01b0383166000908152601b60205260408120805490935082918491612bcf908490614be9565b9091555050601954600003612bf85780826001016000828254612bf29190614be9565b90915550505b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316896001600160a01b031603612cbc57612c3c87613977565b90508015612cbc576001600160a01b0384166000908152601b6020526040902054811115612c6957600080fd5b6001600160a01b0384166000908152601b602052604081208054839290612c91908490614a9c565b90915550506001600160a01b03841660009081526009602052604090205460ff1615612cbc57600094505b6001600160a01b0389166000908152600d602052604090205460ff1680612cfb57506001600160a01b0388166000908152600d602052604090205460ff165b15612e2057601a54600003612d6d576001600160a01b03891660009081526009602052604090205460ff168015612d6357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b0316145b15612d6d5743601a555b6001600160a01b03891660009081526009602052604090205460ff16158015612daf57506001600160a01b03881660009081526009602052604090205460ff16155b15612e2057601954600003612dde57601a546000108015612dd05750600082115b612dd957600080fd5b612e20565b81158015612dea575080155b8015612e0357506003601954612e009190614be9565b43105b15612e2057612e158989896063613ad9565b505050505050505050565b612e2e898989888686613b63565b6001600160a01b0389163014612e15578115612ea457602354604051635160f2f360e11b81526001600160a01b0386811660048301529091169063a2c1e5e690602401600060405180830381600087803b158015612e8b57600080fd5b505af1158015612e9f573d6000803e3d6000fd5b505050505b603154602154600003612f5d576023546001600160a01b031663ffb2c4796064612ece8482614aaf565b612ed89190614ac6565b6040518263ffffffff1660e01b8152600401612ef691815260200190565b600060405180830381600087803b158015612f1057600080fd5b505af1925050508015612f21575060015b612f53576040517fefee91e1de77e029c77d49a8e4ed916ea4a401e24bf8f429b1a9d432f31599ec90600090a1612b11565b6001602155612b11565b6024546001600160a01b031663ffb2c4796064612f7a8482614aaf565b612f849190614ac6565b6040518263ffffffff1660e01b8152600401612fa291815260200190565b600060405180830381600087803b158015612fbc57600080fd5b505af1925050508015612fcd575060015b612fff576040517fa2f8809c88625d840ec343cff35dc7fc6a0a88f1c1b642ec595791ca2cba279f90600090a1612b11565b600060215550505050505050505050565b6001600160a01b038316600090815260016020526040902054613034908290614a9c565b6001600160a01b038416600090815260016020526040902055611646838383613ee2565b600e805460ff1916600117905580156135715760408051600280825260608201835260009260208301908036833701905050905030816000815181106130a0576130a0614b01565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106130f4576130f4614b01565b6001600160a01b039283166020918202929092010152604051635c11d79560e01b81527f000000000000000000000000000000000000000000000000000000000000000090911690635c11d7959061317990859060009086907f0000000000000000000000000000000000000000000000000000000000000000904290600401614bfc565b600060405180830381600087803b15801561319357600080fd5b505af11580156131a7573d6000803e3d6000fd5b50506040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152600093507f00000000000000000000000000000000000000000000000000000000000000001691506370a0823190602401602060405180830381865afa158015613234573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132589190614ae8565b905080156132ac576132ac7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000003084613f5a565b6000602e54602d54602c54602b54602a546132c79190614be9565b6132d19190614be9565b6132db9190614be9565b6132e59190614be9565b9050600080600080600080871180156132fe5750600086115b156134945785602a54886133129190614aaf565b61331c9190614ac6565b945085602b548861332d9190614aaf565b6133379190614ac6565b935085602d54886133489190614aaf565b6133529190614ac6565b915085602e54886133639190614aaf565b61336d9190614ac6565b905080828561337c888b614a9c565b6133869190614a9c565b6133909190614a9c565b61339a9190614a9c565b925084156133da576023546133da907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03168761357e565b831561341857600354613418907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03168661357e565b811561345657602454613456907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03168461357e565b801561349457602f54613494907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03168361357e565b8815613568576134f47f0000000000000000000000000000000000000000000000000000000000000000601d60019054906101000a90046001600160a01b03166127106027548d6134e59190614aaf565b6134ef9190614ac6565b613010565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561354f57600080fd5b505af1158015613563573d6000803e3d6000fd5b505050505b50505050505050505b50600e805460ff19169055565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291516000928392908716916135da9190614c6d565b6000604051808303816000865af19150503d8060008114613617576040519150601f19603f3d011682016040523d82523d6000602084013e61361c565b606091505b50915091508180156119bc57505050505050565b6001600160a01b038216600003613645575050565b604080516000808252602082019092526001600160a01b03841690839060405161366f9190614c6d565b60006040518083038185875af1925050503d80600081146136ac576040519150601f19603f3d011682016040523d82523d6000602084013e6136b1565b606091505b50509050806116465760405162461bcd60e51b815260206004820152600360248201526222aa2360e91b6044820152606401610f8f565b6000601954116137275760405162461bcd60e51b815260206004820152600a6024820152690dcdee84098c2eadcc6d60b31b6044820152606401610f8f565b613732823083613010565b600061373d82611f1a565b9050600081116137775760405162461bcd60e51b815260206004820152600560248201526406f757420360dc1b6044820152606401610f8f565b6040516370a0823160e01b815230600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156137dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138019190614ae8565b10156138415760405162461bcd60e51b815260206004820152600f60248201526e0eae6c8e840dcdee840cadcdeeaced608b1b6044820152606401610f8f565b6001600160a01b03831660009081526009602052604081205460ff166138b757612710826018546138729190614aaf565b61387c9190614ac6565b6003549091506138b7907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03168361357e565b6138eb7f0000000000000000000000000000000000000000000000000000000000000000856138e68486614a9c565b61357e565b6138f83061dead85613010565b50505050565b60008060008061390c6124d5565b925092509250600080841180156139235750600083115b1561394057826139338588614aaf565b61393d9190614ac6565b90505b60008211801561395957506139558185614be9565b8210155b1561396e5761396a82878686614006565b5094505b50505050919050565b6000806000806139856124d5565b92509250925082811015613a7a57846139d37f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660009081526001602052604090205490565b6139dd9190614a9c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a5f9190614ae8565b613a699087614aaf565b613a739190614ac6565b9350613ad1565b601d5460ff1615613ad15760008084118015613a965750600083115b1561396e57613aa58684614a9c565b613aaf8588614aaf565b613ab99190614ac6565b9050613ac58482614be9565b82101561396e57600080fd5b505050919050565b6001600160a01b038416600090815260016020526040902054613afd908390614a9c565b6001600160a01b0385166000908152600160205260408120919091556064613b258385614aaf565b613b2f9190614ac6565b90508015613b4f57600454613b4f9086906001600160a01b031683613ee2565b6115ac8585613b5e8487614a9c565b613ee2565b6001600160a01b038616600090815260016020526040902054613b87908590614a9c565b6001600160a01b0387166000908152600160205260408120919091558315613dad576000806000808611613cb4578415613bd757613bc68a8987614484565b613bd09085614be9565b9350613cb4565b6001600160a01b0389166000908152600d602052604090205460ff1615613c47576001925061271060185489613c0d9190614aaf565b613c179190614ac6565b915061271060165489613c2a9190614aaf565b613c349190614ac6565b9050613c408183614a9c565b9150613cb4565b6001600160a01b038a166000908152600d602052604090205460ff1615613c965761271060135489613c799190614aaf565b613c839190614ac6565b915061271060115489613c2a9190614aaf565b61271060305489613ca79190614aaf565b613cb19190614ac6565b91505b8015613cd357613cc48185614be9565b9350613cd38a61dead83613ee2565b8115613cfe57613ce38285614be9565b600454909450613cfe908b906001600160a01b031684613ee2565b6001600160a01b0389166000908152601e602052604090205460ff16158015613d295750601f5460ff165b15613da957602080546001600160a01b038b16600090815260019092526040909120548590613d59908b90614be9565b613d639190614a9c565b1115613da95760405162461bcd60e51b81526020600482015260156024820152741bdd995c881b585e081dd85b1b195d081b1a5b5a5d605a1b6044820152606401610f8f565b5050505b6001600160a01b0387166000908152600d602052604090205460ff168015613dee57506001600160a01b0386166000908152600a602052604090205460ff16155b15613e40576001600160a01b0386167fccb699991f181b9bc36d047361c8d3e53a29fd847a3aba6dfac843ce7ddbd689613e288388614a9c565b60408051918252600160208301520160405180910390a25b6001600160a01b0386166000908152600d602052604090205460ff168015613e8157506001600160a01b0387166000908152600a602052604090205460ff16155b15613ed3576001600160a01b0386167fccb699991f181b9bc36d047361c8d3e53a29fd847a3aba6dfac843ce7ddbd689613ebb8388614a9c565b60408051918252600260208301520160405180910390a25b6120598787613b5e8489614a9c565b6001600160a01b038216600090815260016020526040902054613f06908290614be9565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906128c59085815260200190565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b1790529151600092871691613fba91614c6d565b6000604051808303816000865af19150503d8060008114613ff7576040519150601f19603f3d011682016040523d82523d6000602084013e613ffc565b606091505b5050505050505050565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015614069573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061408d9190614ae8565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156140ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141139190614c89565b6001600160a01b031663017e7e586040518163ffffffff1660e01b8152600401602060405180830381865afa158015614150573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141749190614c89565b90506000806001600160a01b0316826001600160a01b03161415905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637464fc3d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156141f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142149190614ae8565b9050811561440a57801561440a576000614236614231898b614aaf565b6145a2565b90506000614243836145a2565b905080821115614407576000807310ed43c718714eb63d5aa57b78b54704e256024d197f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316016142dd5761429f8385614a9c565b6142a99089614aaf565b6142b4906008614aaf565b91506142c1836008614aaf565b6142cc856011614aaf565b6142d69190614be9565b90506143e5565b73d99d1c33f9fc3444f8101754abc46c52416550d0197f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316016143445761432c8385614a9c565b6143369089614aaf565b9150826142cc856003614aaf565b73e9d6f80028671279a28790bb4007b10b0595def0197f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316016143b6576143938385614a9c565b61439d9089614aaf565b6143a8906003614aaf565b9150826142cc856005614aaf565b6143c08385614a9c565b6143ca9089614aaf565b9150826143d8856005614aaf565b6143e29190614be9565b90505b6143ef8183614ac6565b98508815614404576144018989614be9565b97505b50505b50505b6000614416898c614a9c565b905084600003614441576103e86144306142318c84614aaf565b61443a9190614a9c565b9650614476565b6144738961444f8784614aaf565b6144599190614ac6565b89614464888e614aaf565b61446e9190614ac6565b614612565b96505b505050505094509492505050565b326000908152601b60205260408120600181015481548391906144a8908690614be9565b6144b29190614a9c565b90508380828111156144c15750815b60008115614527576144d38284614a9c565b925061271060285488848b6144e89190614aaf565b6144f29190614ac6565b6144fc9190614aaf565b6145069190614ac6565b90506145128187614be9565b95508015614527576145278961dead83613ee2565b600061271060295489868c61453c9190614aaf565b6145469190614ac6565b6145509190614aaf565b61455a9190614ac6565b9050801561457b5761456c8188614be9565b965061457b8a61dead83613ee2565b8386600101600082825461458f9190614a9c565b90915550969a9950505050505050505050565b6000600382111561460357508060006145bc600283614ac6565b6145c7906001614be9565b90505b818110156145fd579050806002816145e28186614ac6565b6145ec9190614be9565b6145f69190614ac6565b90506145ca565b50919050565b811561460d575060015b919050565b60008183106146215781614623565b825b9392505050565b6001600160a01b03811681146125d857600080fd5b803561460d8161462a565b60006020828403121561465c57600080fd5b81356146238161462a565b60005b8381101561468257818101518382015260200161466a565b50506000910152565b60208152600082518060208401526146aa816040850160208701614667565b601f01601f19169190910160400192915050565b600080604083850312156146d157600080fd5b82356146dc8161462a565b946020939093013593505050565b8035801515811461460d57600080fd5b6000806040838503121561470d57600080fd5b82356147188161462a565b9150614726602084016146ea565b90509250929050565b60008060006060848603121561474457600080fd5b833561474f8161462a565b9250602084013561475f8161462a565b929592945050506040919091013590565b60006020828403121561478257600080fd5b5035919050565b60006020828403121561479b57600080fd5b614623826146ea565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126147cb57600080fd5b8135602067ffffffffffffffff808311156147e8576147e86147a4565b8260051b604051601f19603f8301168101818110848211171561480d5761480d6147a4565b60405293845285810183019383810192508785111561482b57600080fd5b83870191505b84821015614851576148428261463f565b83529183019190830190614831565b979650505050505050565b6000806040838503121561486f57600080fd5b823567ffffffffffffffff81111561488657600080fd5b614892858286016147ba565b95602094909401359450505050565b600080604083850312156148b457600080fd5b823567ffffffffffffffff8111156148cb57600080fd5b6148d7858286016147ba565b925050614726602084016146ea565b600080604083850312156148f957600080fd5b82359150602083013561490b8161462a565b809150509250929050565b6000806020838503121561492957600080fd5b823567ffffffffffffffff8082111561494157600080fd5b818501915085601f83011261495557600080fd5b81358181111561496457600080fd5b8660208260051b850101111561497957600080fd5b60209290920196919550909350505050565b6000806000606084860312156149a057600080fd5b83356149ab8161462a565b92506020840135915060408401356149c28161462a565b809150509250925092565b600080604083850312156149e057600080fd5b82356149eb8161462a565b9150602083013561490b8161462a565b600080600080600060a08688031215614a1357600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b602080825260029082015261216f60f01b604082015260600190565b600181811c90821680614a6657607f821691505b6020821081036145fd57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8181038181111561142957611429614a86565b808202811582820484141761142957611429614a86565b600082614ae357634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215614afa57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b600060018201614b2957614b29614a86565b5060010190565b80516001600160701b038116811461460d57600080fd5b600080600060608486031215614b5c57600080fd5b614b6584614b30565b9250614b7360208501614b30565b9150604084015163ffffffff811681146149c257600080fd5b60208082526037908201527f4f6e6c79206f776e6572206f72206d61696e74656e616e63652077616c6c657460408201527f2063616e2063616c6c20746869732066756e6374696f6e000000000000000000606082015260800190565b8082018082111561142957611429614a86565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015614c4c5784516001600160a01b031683529383019391830191600101614c27565b50506001600160a01b03969096166060850152505050608001529392505050565b60008251614c7f818460208701614667565b9190910192915050565b600060208284031215614c9b57600080fd5b81516146238161462a56fea2646970667358221220e2fda9742c05c74dbb6f53f9a0965ed54cd107dd7c0b7aa865307bb10f607f8764736f6c63430008130033608060405234801561001057600080fd5b5060405161014738038061014783398101604081905261002f916100a8565b60405163095ea7b360e01b815233600482015260001960248201526001600160a01b0382169063095ea7b3906044016020604051808303816000875af115801561007d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100a191906100d8565b50506100fa565b6000602082840312156100ba57600080fd5b81516001600160a01b03811681146100d157600080fd5b9392505050565b6000602082840312156100ea57600080fd5b815180151581146100d157600080fd5b603f806101086000396000f3fe6080604052600080fdfea2646970667358221220b72f217bdcb12a2dfe7b5553ab4882ad4ff67342a21b3cce5a9146162f1eb0ab64736f6c63430008130033
Deployed Bytecode
0x6080604052600436106104a35760003560e01c80637db1342c11610260578063bfac5ee011610144578063e36c0202116100c1578063f1b36f6411610085578063f1b36f6414610eba578063f2fde38b14610ecf578063f4d3698614610eef578063f507de7714610f0f578063faf4b24b14610f25578063fe11f24014610f4557600080fd5b8063e36c020214610e29578063e429fcdf14610e3f578063e82bef2914610e64578063e84fb12d14610e84578063ee3b16c114610e9a57600080fd5b8063c6060d1d11610108578063c6060d1d14610d78578063c77c202114610d98578063cd8d263d14610dae578063ce4d9f1514610dce578063dd62ed3e14610de357600080fd5b8063bfac5ee014610cec578063bfc45d1514610d0c578063c4e6c60414610d22578063c52e9b8214610d42578063c5382ac514610d6257600080fd5b80639947fb33116101dd578063a9059cbb116101a1578063a9059cbb14610c36578063aa4bde2814610c56578063aa582b4214610c6c578063ad31eed814610c8c578063b2887bec14610cac578063b6a0735914610ccc57600080fd5b80639947fb3314610baa5780639bb8534414610bca578063a3ac33a714610be0578063a5696d8914610bf6578063a842486114610c1657600080fd5b80638f02bb5b116102245780638f02bb5b14610b1f5780638f83745f14610b3f578063917ceeb514610b5557806395d89b4114610b755780639714eb2914610b8a57600080fd5b80637db1342c14610a8157806385dc300414610aa15780638b67e4ea14610ac15780638da5cb5b14610ae15780638e0b017d14610aff57600080fd5b80634f0082ff1161038757806370a08231116103045780637355b15b116102c85780637355b15b146109b7578063756b4190146109d757806377ae5a26146109f75780637a37a0ed14610a175780637ae290f814610a415780637b02d25614610a6157600080fd5b806370a0823114610902578063715018a614610938578063719d5f831461094d57806372162cb61461096d57806372eb1eb6146109a157600080fd5b80636386c1c71161034b5780636386c1c71461085b57806363bcdfce146108965780636690864e146108ac5780636b3bd550146108cc5780636f436357146108ec57600080fd5b80634f0082ff146107bf578063553193ca146107df578063595dec3c146107f55780635e81c57c146108255780635ef019571461084557600080fd5b80631c75f085116104205780633c11100d116103e45780633c11100d146106df5780633df9a8d21461070f57806340aa81fe146107255780634188bf5a146107555780634308fa6a146107895780634e54cc5f1461079f57600080fd5b80631c75f085146106255780632171dcc91461065d57806323b872dd1461067d5780632c1f52161461069d578063313ce567146106bd57600080fd5b806306fdde031161046757806306fdde031461057a578063095ea7b31461059c57806314e3afa2146105bc57806318160ddd146105e05780631afc1a50146105f557600080fd5b8063017df7f2146104af57806301873d8f146104d157806301986fad1461051657806303da2b231461054657806304c23ffe1461056057600080fd5b366104aa57005b600080fd5b3480156104bb57600080fd5b506104cf6104ca36600461464a565b610f65565b005b3480156104dd57600080fd5b506105016104ec36600461464a565b601c6020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561052257600080fd5b5061050161053136600461464a565b60096020526000908152604090205460ff1681565b34801561055257600080fd5b50601f546105019060ff1681565b34801561056c57600080fd5b50601d546105019060ff1681565b34801561058657600080fd5b5061058f611386565b60405161050d919061468b565b3480156105a857600080fd5b506105016105b73660046146be565b611418565b3480156105c857600080fd5b506105d260295481565b60405190815260200161050d565b3480156105ec57600080fd5b50600c546105d2565b34801561060157600080fd5b5061050161061036600461464a565b600a6020526000908152604090205460ff1681565b34801561063157600080fd5b50600454610645906001600160a01b031681565b6040516001600160a01b03909116815260200161050d565b34801561066957600080fd5b506104cf6106783660046146fa565b61142f565b34801561068957600080fd5b5061050161069836600461472f565b611484565b3480156106a957600080fd5b50602354610645906001600160a01b031681565b3480156106c957600080fd5b5060085460405160ff909116815260200161050d565b3480156106eb57600080fd5b506105016106fa36600461464a565b600d6020526000908152604090205460ff1681565b34801561071b57600080fd5b506105d260305481565b34801561073157600080fd5b5061050161074036600461464a565b601e6020526000908152604090205460ff1681565b34801561076157600080fd5b506106457f0000000000000000000000002c8a0b9c064a771f0c0380f9f2bfd8ab5df4db6c81565b34801561079557600080fd5b506105d260265481565b3480156107ab57600080fd5b506104cf6107ba36600461464a565b61151b565b3480156107cb57600080fd5b506104cf6107da366004614770565b6115b3565b3480156107eb57600080fd5b506105d260195481565b34801561080157600080fd5b5061050161081036600461464a565b600b6020526000908152604090205460ff1681565b34801561083157600080fd5b506104cf610840366004614789565b61164b565b34801561085157600080fd5b506105d260285481565b34801561086757600080fd5b5061087b61087636600461464a565b611688565b6040805193845260208401929092529082015260600161050d565b3480156108a257600080fd5b506105d260275481565b3480156108b857600080fd5b506104cf6108c736600461464a565b611746565b3480156108d857600080fd5b506104cf6108e736600461464a565b6117d2565b3480156108f857600080fd5b506105d2602a5481565b34801561090e57600080fd5b506105d261091d36600461464a565b6001600160a01b031660009081526001602052604090205490565b34801561094457600080fd5b506104cf61185e565b34801561095957600080fd5b50600554610645906001600160a01b031681565b34801561097957600080fd5b506106457f00000000000000000000000072e714ba1e65d8825e5c3831d37a21cc9964605481565b3480156109ad57600080fd5b506105d2602b5481565b3480156109c357600080fd5b506104cf6109d236600461485c565b6118d8565b3480156109e357600080fd5b506104cf6109f23660046148a1565b6119c4565b348015610a0357600080fd5b506104cf610a123660046148a1565b611a55565b348015610a2357600080fd5b50610a2c611b3c565b6040805192835260208301919091520161050d565b348015610a4d57600080fd5b50602254610645906001600160a01b031681565b348015610a6d57600080fd5b506104cf610a7c3660046148e6565b611c26565b348015610a8d57600080fd5b506104cf610a9c366004614770565b611c94565b348015610aad57600080fd5b506104cf610abc36600461464a565b611cc3565b348015610acd57600080fd5b506104cf610adc36600461464a565b611d4f565b348015610aed57600080fd5b506000546001600160a01b0316610645565b348015610b0b57600080fd5b506104cf610b1a366004614770565b611da1565b348015610b2b57600080fd5b506104cf610b3a366004614770565b611dd0565b348015610b4b57600080fd5b506105d260135481565b348015610b6157600080fd5b506104cf610b70366004614770565b611dff565b348015610b8157600080fd5b5061058f611e7a565b348015610b9657600080fd5b506104cf610ba53660046148a1565b611e89565b348015610bb657600080fd5b506105d2610bc5366004614770565b611f1a565b348015610bd657600080fd5b506105d2601a5481565b348015610bec57600080fd5b506105d2602e5481565b348015610c0257600080fd5b506104cf610c113660046146be565b611fc0565b348015610c2257600080fd5b506104cf610c313660046146fa565b612062565b348015610c4257600080fd5b50610501610c513660046146be565b6120b7565b348015610c6257600080fd5b506105d260205481565b348015610c7857600080fd5b506104cf610c87366004614916565b6120c4565b348015610c9857600080fd5b50602454610645906001600160a01b031681565b348015610cb857600080fd5b506104cf610cc73660046148a1565b612244565b348015610cd857600080fd5b506104cf610ce7366004614770565b6122d5565b348015610cf857600080fd5b506104cf610d0736600461498b565b612304565b348015610d1857600080fd5b506105d2602d5481565b348015610d2e57600080fd5b50602f54610645906001600160a01b031681565b348015610d4e57600080fd5b506104cf610d5d366004614789565b6123d6565b348015610d6e57600080fd5b506105d260215481565b348015610d8457600080fd5b506104cf610d93366004614770565b612413565b348015610da457600080fd5b506105d260255481565b348015610dba57600080fd5b506104cf610dc9366004614770565b6124a6565b348015610dda57600080fd5b5061087b6124d5565b348015610def57600080fd5b506105d2610dfe3660046149cd565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b348015610e3557600080fd5b506105d2602c5481565b348015610e4b57600080fd5b50601d546106459061010090046001600160a01b031681565b348015610e7057600080fd5b50600354610645906001600160a01b031681565b348015610e9057600080fd5b506105d260315481565b348015610ea657600080fd5b506104cf610eb5366004614789565b61259b565b348015610ec657600080fd5b506105d26125db565b348015610edb57600080fd5b506104cf610eea36600461464a565b6125f8565b348015610efb57600080fd5b506104cf610f0a36600461464a565b6126c1565b348015610f1b57600080fd5b506105d260185481565b348015610f3157600080fd5b506104cf610f403660046149fb565b612749565b348015610f5157600080fd5b506104cf610f60366004614770565b61281d565b6000546001600160a01b03163314610f985760405162461bcd60e51b8152600401610f8f90614a36565b60405180910390fd5b602380546001600160a01b0319166001600160a01b038381169182179092556040516395c5c5e360e01b81527f0000000000000000000000002c8a0b9c064a771f0c0380f9f2bfd8ab5df4db6c9092166004830152306024830152906395c5c5e390604401600060405180830381600087803b15801561101757600080fd5b505af115801561102b573d6000803e3d6000fd5b5050602354604051630a0d72b360e11b815260006004820152600160248201526001600160a01b03909116925063141ae5669150604401600060405180830381600087803b15801561107c57600080fd5b505af1158015611090573d6000803e3d6000fd5b5050602354604051630a0d72b360e11b815261dead6004820152600160248201526001600160a01b03909116925063141ae5669150604401600060405180830381600087803b1580156110e257600080fd5b505af11580156110f6573d6000803e3d6000fd5b5050602354604051630a0d72b360e11b8152306004820152600160248201526001600160a01b03909116925063141ae5669150604401600060405180830381600087803b15801561114657600080fd5b505af115801561115a573d6000803e3d6000fd5b5050602354602254604051630a0d72b360e11b81526001600160a01b039182166004820152600160248201529116925063141ae5669150604401600060405180830381600087803b1580156111ae57600080fd5b505af11580156111c2573d6000803e3d6000fd5b5050602354604051630a0d72b360e11b81526001600160a01b037f0000000000000000000000002c8a0b9c064a771f0c0380f9f2bfd8ab5df4db6c8116600483015260016024830152909116925063141ae5669150604401600060405180830381600087803b15801561123457600080fd5b505af1158015611248573d6000803e3d6000fd5b5050602354600354604051635160f2f360e11b81526001600160a01b0391821660048201529116925063a2c1e5e69150602401600060405180830381600087803b15801561129557600080fd5b505af11580156112a9573d6000803e3d6000fd5b505060235460048054604051635160f2f360e11b81526001600160a01b0391821692810192909252909116925063a2c1e5e69150602401600060405180830381600087803b1580156112fa57600080fd5b505af115801561130e573d6000803e3d6000fd5b5050602354604051635160f2f360e11b81523360048201526001600160a01b03909116925063a2c1e5e69150602401600060405180830381600087803b15801561135757600080fd5b505af115801561136b573d6000803e3d6000fd5b50506023546001600160a01b03166000525050601e60205250565b60606006805461139590614a52565b80601f01602080910402602001604051908101604052809291908181526020018280546113c190614a52565b801561140e5780601f106113e35761010080835404028352916020019161140e565b820191906000526020600020905b8154815290600101906020018083116113f157829003601f168201915b5050505050905090565b6000611425338484612870565b5060015b92915050565b6000546001600160a01b031633146114595760405162461bcd60e51b8152600401610f8f90614a36565b6001600160a01b03919091166000908152601c60205260409020805460ff1916911515919091179055565b60006114918484846128d2565b6001600160a01b038416600090815260026020908152604080832033845290915290205460001914611511576001600160a01b03841660009081526002602090815260408083203384529091529020546114ec908390614a9c565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b5060019392505050565b6000546001600160a01b031633146115455760405162461bcd60e51b8152600401610f8f90614a36565b602480546001600160a01b0319166001600160a01b0383169081178255604051630186b0f360e71b8152306004820152909163c35879809101600060405180830381600087803b15801561159857600080fd5b505af11580156115ac573d6000803e3d6000fd5b5050505050565b336000908152600a602052604090205460ff166115cf57600080fd5b601d5461010090046001600160a01b031660009081526001602052604081205490506000612710602654846116049190614aaf565b61160e9190614ac6565b90508181111561161b5750805b801561163d57601d5461163d9061010090046001600160a01b03163083613010565b61164681613058565b505050565b6000546001600160a01b031633146116755760405162461bcd60e51b8152600401610f8f90614a36565b601d805460ff1916911515919091179055565b6040516370a0823160e01b81526001600160a01b038281166004830152600091829182917f0000000000000000000000002c8a0b9c064a771f0c0380f9f2bfd8ab5df4db6c909116906370a0823190602401602060405180830381865afa1580156116f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171b9190614ae8565b6001600160a01b039094166000908152601b6020526040902080546001909101549095909350915050565b6000546001600160a01b031633146117705760405162461bcd60e51b8152600401610f8f90614a36565b600480546001600160a01b0319166001600160a01b0383169081179091556000908152600960205260409020805460ff191660011790556117b4600a600019614ac6565b6004546001600160a01b03166000908152601b602052604090205550565b6000546001600160a01b031633146117fc5760405162461bcd60e51b8152600401610f8f90614a36565b600580546001600160a01b0319166001600160a01b0383169081179091556000908152600960205260409020805460ff19166001179055611840600a600019614ac6565b6005546001600160a01b03166000908152601b602052604090205550565b6000546001600160a01b031633146118885760405162461bcd60e51b8152600401610f8f90614a36565b6000805460405161dead926001600160a01b03909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03191661dead179055565b6000546001600160a01b031633146119025760405162461bcd60e51b8152600401610f8f90614a36565b8151600080805b838110156119bc5785818151811061192357611923614b01565b6020908102919091018101516001600160a01b038082166000818152601b909452604093849020898155600181018a90556023549451635160f2f360e11b81526004810192909252929650919450919091169063a2c1e5e690602401600060405180830381600087803b15801561199957600080fd5b505af11580156119ad573d6000803e3d6000fd5b50505050806001019050611909565b505050505050565b6000546001600160a01b031633146119ee5760405162461bcd60e51b8152600401610f8f90614a36565b60005b82518110156116465781600b6000858481518110611a1157611a11614b01565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611a4d81614b17565b9150506119f1565b6000546001600160a01b03163314611a7f5760405162461bcd60e51b8152600401610f8f90614a36565b60005b82518110156116465781600a6000858481518110611aa257611aa2614b01565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508160096000858481518110611af857611af8614b01565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611b3481614b17565b915050611a82565b60008060007f0000000000000000000000002c8a0b9c064a771f0c0380f9f2bfd8ab5df4db6c9050600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611ba5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc99190614b47565b506001600160701b0391821693501690507f00000000000000000000000055d398326f99059ff775485246999027b3197955306001600160a01b0382161015611c1757829550819450611c1e565b8195508294505b505050509091565b33611c396000546001600160a01b031690565b6001600160a01b03161480611c5857506005546001600160a01b031633145b611c745760405162461bcd60e51b8152600401610f8f90614b8c565b601d54611c909061010090046001600160a01b03168284613010565b5050565b6000546001600160a01b03163314611cbe5760405162461bcd60e51b8152600401610f8f90614a36565b602055565b6000546001600160a01b03163314611ced5760405162461bcd60e51b8152600401610f8f90614a36565b600380546001600160a01b0319166001600160a01b0383169081179091556000908152600960205260409020805460ff19166001179055611d31600a600019614ac6565b6003546001600160a01b03166000908152601b602052604090205550565b6000546001600160a01b03163314611d795760405162461bcd60e51b8152600401610f8f90614a36565b601d80546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b03163314611dcb5760405162461bcd60e51b8152600401610f8f90614a36565b602655565b6000546001600160a01b03163314611dfa5760405162461bcd60e51b8152600401610f8f90614a36565b603055565b6000546001600160a01b03163314611e295760405162461bcd60e51b8152600401610f8f90614a36565b62030d408110158015611e3f5750621e84808111155b611e755760405162461bcd60e51b815260206004820152600760248201526632302d3230307760c81b6044820152606401610f8f565b603155565b60606007805461139590614a52565b6000546001600160a01b03163314611eb35760405162461bcd60e51b8152600401610f8f90614a36565b60005b82518110156116465781601e6000858481518110611ed657611ed6614b01565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611f1281614b17565b915050611eb6565b6000611f246125db565b6040516370a0823160e01b81523060048201527f00000000000000000000000055d398326f99059ff775485246999027b31979556001600160a01b0316906370a0823190602401602060405180830381865afa158015611f88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fac9190614ae8565b611fb69084614aaf565b6114299190614ac6565b6000546001600160a01b03163314611fea5760405162461bcd60e51b8152600401610f8f90614a36565b6001600160a01b038281166000818152601b6020526040908190208481556023549151635160f2f360e11b8152600481019390935292169063a2c1e5e690602401600060405180830381600087803b15801561204557600080fd5b505af1158015612059573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b0316331461208c5760405162461bcd60e51b8152600401610f8f90614a36565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b60006114253384846128d2565b6000546001600160a01b031633146120ee5760405162461bcd60e51b8152600401610f8f90614a36565b8181600081811061210157612101614b01565b6020029190910135601055508181600181811061212057612120614b01565b6020029190910135600f55508181600281811061213f5761213f614b01565b6020029190910135601155508181600381811061215e5761215e614b01565b6020029190910135601255508181600481811061217d5761217d614b01565b6020029190910135601555508181600581811061219c5761219c614b01565b602002919091013560145550818160068181106121bb576121bb614b01565b602002919091013560165550818160078181106121da576121da614b01565b602002919091013560175550601254601154600f546010546121fc9190614be9565b6122069190614be9565b6122109190614be9565b6013556017546016546014546015546122299190614be9565b6122339190614be9565b61223d9190614be9565b6018555050565b6000546001600160a01b0316331461226e5760405162461bcd60e51b8152600401610f8f90614a36565b60005b825181101561164657816009600085848151811061229157612291614b01565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806122cd81614b17565b915050612271565b6000546001600160a01b031633146122ff5760405162461bcd60e51b8152600401610f8f90614a36565b602955565b336123176000546001600160a01b031690565b6001600160a01b0316148061233657506005546001600160a01b031633145b6123525760405162461bcd60e51b8152600401610f8f90614b8c565b7f00000000000000000000000055d398326f99059ff775485246999027b31979556001600160a01b0316836001600160a01b0316036123c15760405162461bcd60e51b815260206004820152600b60248201526a3a37b5b2b71032b93937b960a91b6044820152606401610f8f565b6123cc83828461357e565b6116468147613630565b6000546001600160a01b031633146124005760405162461bcd60e51b8152600401610f8f90614a36565b601f805460ff1916911515919091179055565b336124266000546001600160a01b031690565b6001600160a01b0316148061244557506005546001600160a01b031633145b6124615760405162461bcd60e51b8152600401610f8f90614b8c565b600081116124a15760405162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a59081d1bdd185b609a1b6044820152606401610f8f565b602555565b6000546001600160a01b031633146124d05760405162461bcd60e51b8152600401610f8f90614a36565b602855565b60008060006124e2611b3c565b6040516370a0823160e01b81526001600160a01b037f0000000000000000000000002c8a0b9c064a771f0c0380f9f2bfd8ab5df4db6c811660048301529295509093507f00000000000000000000000055d398326f99059ff775485246999027b3197955909116906370a0823190602401602060405180830381865afa158015612570573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125949190614ae8565b9050909192565b6000546001600160a01b031633146125c55760405162461bcd60e51b8152600401610f8f90614a36565b80156125d2574360195550565b60006019555b50565b6000602554670de0b6b3a76400006125f39190614aaf565b905090565b6000546001600160a01b031633146126225760405162461bcd60e51b8152600401610f8f90614a36565b61deac196001600160a01b038216016126665760405162461bcd60e51b81526020600482015260066024820152656e307864656160d01b6044820152606401610f8f565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b336126d46000546001600160a01b031690565b6001600160a01b031614806126f357506005546001600160a01b031633145b61270f5760405162461bcd60e51b8152600401610f8f90614b8c565b602f80546001600160a01b039092166001600160a01b0319909216821790556000908152600960205260409020805460ff19166001179055565b3361275c6000546001600160a01b031690565b6001600160a01b0316148061277b57506005546001600160a01b031633145b6127975760405162461bcd60e51b8152600401610f8f90614b8c565b6127108183856127a7888a614be9565b6127b19190614be9565b6127bb9190614be9565b6127c59190614be9565b11156128065760405162461bcd60e51b815260206004820152601060248201526f3a37ba30b6103930ba329032b93937b960811b6044820152606401610f8f565b602a94909455602b92909255602c55602d55602e55565b336128306000546001600160a01b031690565b6001600160a01b0316148061284f57506005546001600160a01b031633145b61286b5760405162461bcd60e51b8152600401610f8f90614b8c565b602755565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166000908152600b602052604090205460ff16156129275760405162461bcd60e51b8152602060048201526009602482015268189b1858dad31a5cdd60ba1b6044820152606401610f8f565b6001600160a01b038316600090815260016020526040902054818110156129765760405162461bcd60e51b8152602060048201526003602482015262424e4560e81b6044820152606401610f8f565b6001600160a01b03841660009081526009602052604081205460ff161580156129b857506001600160a01b03841660009081526009602052604090205460ff16155b156129fa57846001600160a01b03167f00000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e6001600160a01b0316146129fa575060015b326001600160a01b03861681148015612a1b5750336001600160a01b038716145b8015612a2f57506001600160a01b03851630145b15612a3e576119bc86856136e8565b856001600160a01b0316816001600160a01b0316148015612a675750336001600160a01b038716145b8015612a7a57506001600160a01b038516155b8015612a9f57506001600160a01b03861660009081526009602052604090205460ff16155b15612b1d57612ab086600086613010565b6024805460405163020d3fc360e11b81526001600160a01b03848116600483015292810187905291169063041a7f8690604401600060405180830381600087803b158015612afd57600080fd5b505af1158015612b11573d6000803e3d6000fd5b50505050505050505050565b6000807f0000000000000000000000002c8a0b9c064a771f0c0380f9f2bfd8ab5df4db6c6001600160a01b0316876001600160a01b0316148015612b705750336000908152601c602052604090205460ff165b8015612b8d5750876001600160a01b0316836001600160a01b0316145b15612bf857612b9b866138fe565b90508015612bf8576001600160a01b0383166000908152601b60205260408120805490935082918491612bcf908490614be9565b9091555050601954600003612bf85780826001016000828254612bf29190614be9565b90915550505b60007f0000000000000000000000002c8a0b9c064a771f0c0380f9f2bfd8ab5df4db6c6001600160a01b0316896001600160a01b031603612cbc57612c3c87613977565b90508015612cbc576001600160a01b0384166000908152601b6020526040902054811115612c6957600080fd5b6001600160a01b0384166000908152601b602052604081208054839290612c91908490614a9c565b90915550506001600160a01b03841660009081526009602052604090205460ff1615612cbc57600094505b6001600160a01b0389166000908152600d602052604090205460ff1680612cfb57506001600160a01b0388166000908152600d602052604090205460ff165b15612e2057601a54600003612d6d576001600160a01b03891660009081526009602052604090205460ff168015612d6357507f0000000000000000000000002c8a0b9c064a771f0c0380f9f2bfd8ab5df4db6c6001600160a01b0316886001600160a01b0316145b15612d6d5743601a555b6001600160a01b03891660009081526009602052604090205460ff16158015612daf57506001600160a01b03881660009081526009602052604090205460ff16155b15612e2057601954600003612dde57601a546000108015612dd05750600082115b612dd957600080fd5b612e20565b81158015612dea575080155b8015612e0357506003601954612e009190614be9565b43105b15612e2057612e158989896063613ad9565b505050505050505050565b612e2e898989888686613b63565b6001600160a01b0389163014612e15578115612ea457602354604051635160f2f360e11b81526001600160a01b0386811660048301529091169063a2c1e5e690602401600060405180830381600087803b158015612e8b57600080fd5b505af1158015612e9f573d6000803e3d6000fd5b505050505b603154602154600003612f5d576023546001600160a01b031663ffb2c4796064612ece8482614aaf565b612ed89190614ac6565b6040518263ffffffff1660e01b8152600401612ef691815260200190565b600060405180830381600087803b158015612f1057600080fd5b505af1925050508015612f21575060015b612f53576040517fefee91e1de77e029c77d49a8e4ed916ea4a401e24bf8f429b1a9d432f31599ec90600090a1612b11565b6001602155612b11565b6024546001600160a01b031663ffb2c4796064612f7a8482614aaf565b612f849190614ac6565b6040518263ffffffff1660e01b8152600401612fa291815260200190565b600060405180830381600087803b158015612fbc57600080fd5b505af1925050508015612fcd575060015b612fff576040517fa2f8809c88625d840ec343cff35dc7fc6a0a88f1c1b642ec595791ca2cba279f90600090a1612b11565b600060215550505050505050505050565b6001600160a01b038316600090815260016020526040902054613034908290614a9c565b6001600160a01b038416600090815260016020526040902055611646838383613ee2565b600e805460ff1916600117905580156135715760408051600280825260608201835260009260208301908036833701905050905030816000815181106130a0576130a0614b01565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000055d398326f99059ff775485246999027b3197955816001815181106130f4576130f4614b01565b6001600160a01b039283166020918202929092010152604051635c11d79560e01b81527f00000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e90911690635c11d7959061317990859060009086907f00000000000000000000000072e714ba1e65d8825e5c3831d37a21cc99646054904290600401614bfc565b600060405180830381600087803b15801561319357600080fd5b505af11580156131a7573d6000803e3d6000fd5b50506040516370a0823160e01b81526001600160a01b037f00000000000000000000000072e714ba1e65d8825e5c3831d37a21cc9964605481166004830152600093507f00000000000000000000000055d398326f99059ff775485246999027b31979551691506370a0823190602401602060405180830381865afa158015613234573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132589190614ae8565b905080156132ac576132ac7f00000000000000000000000055d398326f99059ff775485246999027b31979557f00000000000000000000000072e714ba1e65d8825e5c3831d37a21cc996460543084613f5a565b6000602e54602d54602c54602b54602a546132c79190614be9565b6132d19190614be9565b6132db9190614be9565b6132e59190614be9565b9050600080600080600080871180156132fe5750600086115b156134945785602a54886133129190614aaf565b61331c9190614ac6565b945085602b548861332d9190614aaf565b6133379190614ac6565b935085602d54886133489190614aaf565b6133529190614ac6565b915085602e54886133639190614aaf565b61336d9190614ac6565b905080828561337c888b614a9c565b6133869190614a9c565b6133909190614a9c565b61339a9190614a9c565b925084156133da576023546133da907f00000000000000000000000055d398326f99059ff775485246999027b3197955906001600160a01b03168761357e565b831561341857600354613418907f00000000000000000000000055d398326f99059ff775485246999027b3197955906001600160a01b03168661357e565b811561345657602454613456907f00000000000000000000000055d398326f99059ff775485246999027b3197955906001600160a01b03168461357e565b801561349457602f54613494907f00000000000000000000000055d398326f99059ff775485246999027b3197955906001600160a01b03168361357e565b8815613568576134f47f0000000000000000000000002c8a0b9c064a771f0c0380f9f2bfd8ab5df4db6c601d60019054906101000a90046001600160a01b03166127106027548d6134e59190614aaf565b6134ef9190614ac6565b613010565b7f0000000000000000000000002c8a0b9c064a771f0c0380f9f2bfd8ab5df4db6c6001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561354f57600080fd5b505af1158015613563573d6000803e3d6000fd5b505050505b50505050505050505b50600e805460ff19169055565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291516000928392908716916135da9190614c6d565b6000604051808303816000865af19150503d8060008114613617576040519150601f19603f3d011682016040523d82523d6000602084013e61361c565b606091505b50915091508180156119bc57505050505050565b6001600160a01b038216600003613645575050565b604080516000808252602082019092526001600160a01b03841690839060405161366f9190614c6d565b60006040518083038185875af1925050503d80600081146136ac576040519150601f19603f3d011682016040523d82523d6000602084013e6136b1565b606091505b50509050806116465760405162461bcd60e51b815260206004820152600360248201526222aa2360e91b6044820152606401610f8f565b6000601954116137275760405162461bcd60e51b815260206004820152600a6024820152690dcdee84098c2eadcc6d60b31b6044820152606401610f8f565b613732823083613010565b600061373d82611f1a565b9050600081116137775760405162461bcd60e51b815260206004820152600560248201526406f757420360dc1b6044820152606401610f8f565b6040516370a0823160e01b815230600482015281907f00000000000000000000000055d398326f99059ff775485246999027b31979556001600160a01b0316906370a0823190602401602060405180830381865afa1580156137dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138019190614ae8565b10156138415760405162461bcd60e51b815260206004820152600f60248201526e0eae6c8e840dcdee840cadcdeeaced608b1b6044820152606401610f8f565b6001600160a01b03831660009081526009602052604081205460ff166138b757612710826018546138729190614aaf565b61387c9190614ac6565b6003549091506138b7907f00000000000000000000000055d398326f99059ff775485246999027b3197955906001600160a01b03168361357e565b6138eb7f00000000000000000000000055d398326f99059ff775485246999027b3197955856138e68486614a9c565b61357e565b6138f83061dead85613010565b50505050565b60008060008061390c6124d5565b925092509250600080841180156139235750600083115b1561394057826139338588614aaf565b61393d9190614ac6565b90505b60008211801561395957506139558185614be9565b8210155b1561396e5761396a82878686614006565b5094505b50505050919050565b6000806000806139856124d5565b92509250925082811015613a7a57846139d37f0000000000000000000000002c8a0b9c064a771f0c0380f9f2bfd8ab5df4db6c6001600160a01b031660009081526001602052604090205490565b6139dd9190614a9c565b7f0000000000000000000000002c8a0b9c064a771f0c0380f9f2bfd8ab5df4db6c6001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a5f9190614ae8565b613a699087614aaf565b613a739190614ac6565b9350613ad1565b601d5460ff1615613ad15760008084118015613a965750600083115b1561396e57613aa58684614a9c565b613aaf8588614aaf565b613ab99190614ac6565b9050613ac58482614be9565b82101561396e57600080fd5b505050919050565b6001600160a01b038416600090815260016020526040902054613afd908390614a9c565b6001600160a01b0385166000908152600160205260408120919091556064613b258385614aaf565b613b2f9190614ac6565b90508015613b4f57600454613b4f9086906001600160a01b031683613ee2565b6115ac8585613b5e8487614a9c565b613ee2565b6001600160a01b038616600090815260016020526040902054613b87908590614a9c565b6001600160a01b0387166000908152600160205260408120919091558315613dad576000806000808611613cb4578415613bd757613bc68a8987614484565b613bd09085614be9565b9350613cb4565b6001600160a01b0389166000908152600d602052604090205460ff1615613c47576001925061271060185489613c0d9190614aaf565b613c179190614ac6565b915061271060165489613c2a9190614aaf565b613c349190614ac6565b9050613c408183614a9c565b9150613cb4565b6001600160a01b038a166000908152600d602052604090205460ff1615613c965761271060135489613c799190614aaf565b613c839190614ac6565b915061271060115489613c2a9190614aaf565b61271060305489613ca79190614aaf565b613cb19190614ac6565b91505b8015613cd357613cc48185614be9565b9350613cd38a61dead83613ee2565b8115613cfe57613ce38285614be9565b600454909450613cfe908b906001600160a01b031684613ee2565b6001600160a01b0389166000908152601e602052604090205460ff16158015613d295750601f5460ff165b15613da957602080546001600160a01b038b16600090815260019092526040909120548590613d59908b90614be9565b613d639190614a9c565b1115613da95760405162461bcd60e51b81526020600482015260156024820152741bdd995c881b585e081dd85b1b195d081b1a5b5a5d605a1b6044820152606401610f8f565b5050505b6001600160a01b0387166000908152600d602052604090205460ff168015613dee57506001600160a01b0386166000908152600a602052604090205460ff16155b15613e40576001600160a01b0386167fccb699991f181b9bc36d047361c8d3e53a29fd847a3aba6dfac843ce7ddbd689613e288388614a9c565b60408051918252600160208301520160405180910390a25b6001600160a01b0386166000908152600d602052604090205460ff168015613e8157506001600160a01b0387166000908152600a602052604090205460ff16155b15613ed3576001600160a01b0386167fccb699991f181b9bc36d047361c8d3e53a29fd847a3aba6dfac843ce7ddbd689613ebb8388614a9c565b60408051918252600260208301520160405180910390a25b6120598787613b5e8489614a9c565b6001600160a01b038216600090815260016020526040902054613f06908290614be9565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906128c59085815260200190565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b1790529151600092871691613fba91614c6d565b6000604051808303816000865af19150503d8060008114613ff7576040519150601f19603f3d011682016040523d82523d6000602084013e613ffc565b606091505b5050505050505050565b60008060007f0000000000000000000000002c8a0b9c064a771f0c0380f9f2bfd8ab5df4db6c6001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015614069573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061408d9190614ae8565b905060007f00000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156140ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141139190614c89565b6001600160a01b031663017e7e586040518163ffffffff1660e01b8152600401602060405180830381865afa158015614150573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141749190614c89565b90506000806001600160a01b0316826001600160a01b03161415905060007f0000000000000000000000002c8a0b9c064a771f0c0380f9f2bfd8ab5df4db6c6001600160a01b0316637464fc3d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156141f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142149190614ae8565b9050811561440a57801561440a576000614236614231898b614aaf565b6145a2565b90506000614243836145a2565b905080821115614407576000807310ed43c718714eb63d5aa57b78b54704e256024d197f00000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e6001600160a01b0316016142dd5761429f8385614a9c565b6142a99089614aaf565b6142b4906008614aaf565b91506142c1836008614aaf565b6142cc856011614aaf565b6142d69190614be9565b90506143e5565b73d99d1c33f9fc3444f8101754abc46c52416550d0197f00000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e6001600160a01b0316016143445761432c8385614a9c565b6143369089614aaf565b9150826142cc856003614aaf565b73e9d6f80028671279a28790bb4007b10b0595def0197f00000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e6001600160a01b0316016143b6576143938385614a9c565b61439d9089614aaf565b6143a8906003614aaf565b9150826142cc856005614aaf565b6143c08385614a9c565b6143ca9089614aaf565b9150826143d8856005614aaf565b6143e29190614be9565b90505b6143ef8183614ac6565b98508815614404576144018989614be9565b97505b50505b50505b6000614416898c614a9c565b905084600003614441576103e86144306142318c84614aaf565b61443a9190614a9c565b9650614476565b6144738961444f8784614aaf565b6144599190614ac6565b89614464888e614aaf565b61446e9190614ac6565b614612565b96505b505050505094509492505050565b326000908152601b60205260408120600181015481548391906144a8908690614be9565b6144b29190614a9c565b90508380828111156144c15750815b60008115614527576144d38284614a9c565b925061271060285488848b6144e89190614aaf565b6144f29190614ac6565b6144fc9190614aaf565b6145069190614ac6565b90506145128187614be9565b95508015614527576145278961dead83613ee2565b600061271060295489868c61453c9190614aaf565b6145469190614ac6565b6145509190614aaf565b61455a9190614ac6565b9050801561457b5761456c8188614be9565b965061457b8a61dead83613ee2565b8386600101600082825461458f9190614a9c565b90915550969a9950505050505050505050565b6000600382111561460357508060006145bc600283614ac6565b6145c7906001614be9565b90505b818110156145fd579050806002816145e28186614ac6565b6145ec9190614be9565b6145f69190614ac6565b90506145ca565b50919050565b811561460d575060015b919050565b60008183106146215781614623565b825b9392505050565b6001600160a01b03811681146125d857600080fd5b803561460d8161462a565b60006020828403121561465c57600080fd5b81356146238161462a565b60005b8381101561468257818101518382015260200161466a565b50506000910152565b60208152600082518060208401526146aa816040850160208701614667565b601f01601f19169190910160400192915050565b600080604083850312156146d157600080fd5b82356146dc8161462a565b946020939093013593505050565b8035801515811461460d57600080fd5b6000806040838503121561470d57600080fd5b82356147188161462a565b9150614726602084016146ea565b90509250929050565b60008060006060848603121561474457600080fd5b833561474f8161462a565b9250602084013561475f8161462a565b929592945050506040919091013590565b60006020828403121561478257600080fd5b5035919050565b60006020828403121561479b57600080fd5b614623826146ea565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126147cb57600080fd5b8135602067ffffffffffffffff808311156147e8576147e86147a4565b8260051b604051601f19603f8301168101818110848211171561480d5761480d6147a4565b60405293845285810183019383810192508785111561482b57600080fd5b83870191505b84821015614851576148428261463f565b83529183019190830190614831565b979650505050505050565b6000806040838503121561486f57600080fd5b823567ffffffffffffffff81111561488657600080fd5b614892858286016147ba565b95602094909401359450505050565b600080604083850312156148b457600080fd5b823567ffffffffffffffff8111156148cb57600080fd5b6148d7858286016147ba565b925050614726602084016146ea565b600080604083850312156148f957600080fd5b82359150602083013561490b8161462a565b809150509250929050565b6000806020838503121561492957600080fd5b823567ffffffffffffffff8082111561494157600080fd5b818501915085601f83011261495557600080fd5b81358181111561496457600080fd5b8660208260051b850101111561497957600080fd5b60209290920196919550909350505050565b6000806000606084860312156149a057600080fd5b83356149ab8161462a565b92506020840135915060408401356149c28161462a565b809150509250925092565b600080604083850312156149e057600080fd5b82356149eb8161462a565b9150602083013561490b8161462a565b600080600080600060a08688031215614a1357600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b602080825260029082015261216f60f01b604082015260600190565b600181811c90821680614a6657607f821691505b6020821081036145fd57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8181038181111561142957611429614a86565b808202811582820484141761142957611429614a86565b600082614ae357634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215614afa57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b600060018201614b2957614b29614a86565b5060010190565b80516001600160701b038116811461460d57600080fd5b600080600060608486031215614b5c57600080fd5b614b6584614b30565b9250614b7360208501614b30565b9150604084015163ffffffff811681146149c257600080fd5b60208082526037908201527f4f6e6c79206f776e6572206f72206d61696e74656e616e63652077616c6c657460408201527f2063616e2063616c6c20746869732066756e6374696f6e000000000000000000606082015260800190565b8082018082111561142957611429614a86565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015614c4c5784516001600160a01b031683529383019391830191600101614c27565b50506001600160a01b03969096166060850152505050608001529392505050565b60008251614c7f818460208701614667565b9190910192915050565b600060208284031215614c9b57600080fd5b81516146238161462a56fea2646970667358221220e2fda9742c05c74dbb6f53f9a0965ed54cd107dd7c0b7aa865307bb10f607f8764736f6c63430008130033
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.
Add Token to MetaMask (Web3)