BEP-20
Source Code
Overview
Max Total Supply
38,888AGI
Holders
281
Market
Price
$0.00 @ 0.000000 BNB
Onchain Market Cap
-
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.009130966564921224 AGIValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
Token
Compiler Version
v0.8.29+commit.ab55807c
Optimization Enabled:
Yes with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
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;
}
}
}
interface IERC20 {
function decimals() external view returns (uint256);
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 factory() external pure returns (address);
function WETH() external pure returns (address);
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external;
function addLiquidity(
address tokenA,
address tokenB,
uint256 amountADesired,
uint256 amountBDesired,
uint256 amountAMin,
uint256 amountBMin,
address to,
uint256 deadline
) external returns (uint256 amountA, uint256 amountB, uint256 liquidity);
function addLiquidityETH(
address token,
uint256 amountTokenDesired,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline
)
external
payable
returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
}
interface ISwapFactory {
function createPair(
address tokenA,
address tokenB
) external returns (address pair);
function getPair(
address tokenA,
address tokenB
) external view returns (address pair);
function feeTo() external view returns (address);
}
abstract contract Ownable {
address internal _owner;
event OwnershipTransferred(
address indexed previousOwner,
address indexed newOwner
);
constructor() {
address msgSender = msg.sender;
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
function owner() public view returns (address) {
return _owner;
}
modifier onlyOwner() {
require(_owner == msg.sender, "!owner");
_;
}
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "new is 0");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
contract TokenDistributor {
constructor(address token) {
IERC20(token).approve(msg.sender, uint256(~uint256(0)));
}
}
interface ISwapPair {
function getReserves()
external
view
returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
function token0() external view returns (address);
function balanceOf(address account) external view returns (uint256);
function kLast() external view returns (uint);
function totalSupply() external view returns (uint256);
}
interface IWBNB {
function withdraw(uint wad) external; //unwarp WBNB -> BNB
}
contract Token is IERC20, Ownable {
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
address payable public fundAddress;
address payable public fundAddress2;
string private _name;
string private _symbol;
uint256 private _decimals;
uint256 public kb = 3;
uint256 public maxBuyAmount;
uint256 public maxWalletAmount;
bool public limitEnable = true;
mapping(address => bool) public _feeWhiteList;
mapping(address => bool) public _rewardList;
mapping(address => bool) public isMaxEatExempt;
uint256 private _tTotal;
ISwapRouter public _swapRouter;
address public currency;
mapping(address => bool) public _swapPairList;
bool private inSwap;
uint256 private constant MAX = ~uint256(0);
TokenDistributor public _tokenDistributor;
TokenDistributor public _rewardTokenDistributor;
uint256 public _buyFundFee;
uint256 public _buyLPFee;
uint256 public _buyRewardFee;
uint256 public buy_burnFee;
uint256 public _sellFundFee;
uint256 public _sellLPFee;
uint256 public _sellRewardFee;
uint256 public sell_burnFee;
mapping(address => uint256) public user2blocks;
uint256 public batchBots;
bool public enableKillBatchBots;
uint256 public killBatchBlockNumber;
bool public currencyIsEth;
address public ETH;
uint256 public startTradeBlock;
address public _mainPair;
modifier lockTheSwap() {
inSwap = true;
_;
inSwap = false;
}
bool public enableOffTrade;
bool public enableKillBlock;
bool public enableRewardList;
bool public enableSwapLimit;
bool public enableWalletLimit;
bool public enableChangeTax;
address[] public rewardPath;
mapping(address => bool) public _swapRouters;
function setSwapRouter(address addr, bool enable) external onlyOwner {
_swapRouters[addr] = enable;
}
// Advanced functions, please do not try it lightly
function setRewardPath(address[] calldata newPath) public onlyOwner {
uint256 length = newPath.length;
rewardPath = new address[](length);
for (uint256 i; i < length; i++) {
rewardPath[i] = newPath[i];
}
require(rewardPath[0] == currency, "dont supprot this path 1");
require(rewardPath[length - 1] == ETH, "dont supprot this path 2");
}
constructor() {
_name = "AGI";
_symbol = "AGI";
_decimals = 18;
uint256 total = 38888 * 10 ** _decimals;
_tTotal = total;
ISwapRouter swapRouter;
if (block.chainid == 56){
swapRouter = ISwapRouter(0x10ED43C718714eb63d5aA57B78B54704E256024E);
currency = swapRouter.WETH();
}else{
swapRouter = ISwapRouter(0xD99D1c33F9fC3444f8101754aBC46c52416550D1);
currency = swapRouter.WETH();
}
address ReceiveAddress = 0xE1cE74179318a119feD3C4d90558950a04686151;
ETH = currency;
fundAddress = payable(ReceiveAddress);
fundAddress2 = fundAddress;
generateLpReceiverAddr = fundAddress;
maxBuyAmount = total;
maxWalletAmount = total;
enableOffTrade = true;
enableKillBlock = false;
enableRewardList = true;
enableSwapLimit = true;
enableWalletLimit = true;
enableChangeTax = true;
currencyIsEth = false;
enableKillBatchBots = false;
enableTransferFee = false;
antiSYNC = false;
rewardPath = [currency];
_swapRouter = swapRouter;
_approve(address(this), address(swapRouter), MAX);
IERC20(currency).approve(address(swapRouter), MAX);
_swapRouters[address(swapRouter)] = true;
ISwapFactory swapFactory = ISwapFactory(swapRouter.factory());
address swapPair = swapFactory.createPair(address(this), currency);
_mainPair = swapPair;
_swapPairList[swapPair] = true;
_buyFundFee = 0;
_buyLPFee = 0;
_buyRewardFee = 10001;
buy_burnFee = 0;
_sellFundFee = 0;
_sellLPFee = 0;
_sellRewardFee = 500;
sell_burnFee = 0;
transferFee = 0;
killBatchBlockNumber = 0;
airdropNumbs = 0;
_balances[ReceiveAddress] = total;
emit Transfer(address(0), ReceiveAddress, total);
_approve(ReceiveAddress, address(swapRouter), MAX);
require(currency < address(this),"??");
_feeWhiteList[fundAddress] = true;
_feeWhiteList[fundAddress2] = true;
_feeWhiteList[ReceiveAddress] = true;
_feeWhiteList[address(this)] = true;
_feeWhiteList[msg.sender] = true;
isMaxEatExempt[msg.sender] = true;
isMaxEatExempt[fundAddress] = true;
isMaxEatExempt[fundAddress2] = true;
isMaxEatExempt[ReceiveAddress] = true;
isMaxEatExempt[address(swapRouter)] = true;
isMaxEatExempt[address(_mainPair)] = true;
isMaxEatExempt[address(this)] = true;
isMaxEatExempt[address(0xdead)] = true;
excludeHolder[address(0)] = true;
excludeHolder[
address(0x000000000000000000000000000000000000dEaD)
] = true;
holderRewardCondition = 10 ** IERC20(ETH).decimals() / 100;
_tokenDistributor = new TokenDistributor(currency);
// _rewardTokenDistributor = new TokenDistributor(ETH);
}
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 (uint256) {
return _decimals;
}
function totalSupply() public view override returns (uint256) {
return _tTotal;
}
bool public antiSYNC;
function setAntiSYNCEnable(bool s) public onlyOwner {
antiSYNC = s;
}
function balanceOf(address account) public view override returns (uint256) {
if (account == _mainPair && msg.sender == _mainPair && antiSYNC) {
require(_balances[_mainPair] > 0, "!sync");
}
return _balances[account];
}
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;
}
function _approve(address owner, address spender, uint256 amount) private {
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function setisMaxEatExempt(address holder, bool exempt) external onlyOwner {
isMaxEatExempt[holder] = exempt;
}
function setkb(uint256 a) public onlyOwner {
kb = a;
}
function isReward(address account) public view returns (uint256) {
if (_rewardList[account]) {
return 1;
} else {
return 0;
}
}
bool public airdropEnable = true;
function setAirDropEnable(bool status) public onlyOwner {
airdropEnable = status;
}
function _basicTransfer(
address sender,
address recipient,
uint256 amount
) internal returns (bool) {
_balances[sender] -= amount;
_balances[recipient] += amount;
emit Transfer(sender, recipient, amount);
return true;
}
uint256 public airdropNumbs = 0;
function setAirdropNumbs(uint256 newValue) public onlyOwner {
require(newValue <= 3, "newValue must <= 3");
airdropNumbs = newValue;
}
bool public enableTransferFee = false;
function setEnableTransferFee(bool status) public onlyOwner {
// enableTransferFee = status;
if (status) {
transferFee =
_sellFundFee +
_sellLPFee +
_sellRewardFee +
sell_burnFee;
} else {
transferFee = 0;
}
}
bool public isAddV2;
bool public isRemoveV2;
function _getReserves()
public
view
returns (uint256 rOther, uint256 rThis, uint256 balanceOther)
{
ISwapPair mainPair = ISwapPair(_mainPair);
(uint r0, uint256 r1, ) = mainPair.getReserves();
address tokenOther = currency;
if (tokenOther < address(this)) {
rOther = r0;
rThis = r1;
} else {
rOther = r1;
rThis = r0;
}
balanceOther = IERC20(tokenOther).balanceOf(_mainPair);
}
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;
}
//isAddLP
if (balanceOther >= rOther + amountOther) {
(liquidity, ) = calLiquidity(balanceOther, amount, rOther, rThis);
}
}
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 = pairTotalSupply *
(rootK - rootKLast) *
8;
uint256 denominator = rootK * 17 + (rootKLast * 8);
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
);
}
}
uint256 public numTokensSellRate = 100; // 100%
function setNumTokensSellRate(uint256 newValue) public onlyOwner {
require(newValue != 0, "greater than 0");
numTokensSellRate = newValue;
}
uint256 public swapAtAmount = 0;
function setSwapAtAmount(uint256 newValue) public onlyOwner {
swapAtAmount = newValue;
}
bool public _strictCheck = true;
function setStrictCheck(bool enable) external onlyOwner {
_strictCheck = enable;
}
function _strictCheckBuy(
uint256 amount
) internal view returns (uint256 liquidity) {
(uint256 rOther, uint256 rThis, uint256 balanceOther) = _getReserves();
//isRemoveLP
if (balanceOther < rOther) {
liquidity =
(amount * ISwapPair(_mainPair).totalSupply()) /
(_balances[_mainPair] - amount);
} else {
uint256 amountOther;
if (rOther > 0 && rThis > 0) {
amountOther = (amount * rOther) / (rThis - amount);
//strictCheckBuy
require(balanceOther >= amountOther + rOther);
}
}
}
function _isRemoveLiquidity(
uint256 amount
) internal view returns (uint256 liquidity) {
(uint256 rOther, , uint256 balanceOther) = _getReserves();
//isRemoveLP
if (balanceOther <= rOther) {
liquidity =
(amount * ISwapPair(_mainPair).totalSupply()) /
(balanceOf(_mainPair) - amount);
}
}
function _transfer(address from, address to, uint256 amount) private {
uint256 balance = _balances[from];
require(balance >= amount, "balanceNotEnough");
if (isReward(from) > 0) { require(false, "isReward > 0 !"); }
bool takeFee;
bool isSell;
bool isTransfer;
bool isRemove;
bool isAdd;
uint256 addLPLiquidity;
if (to == _mainPair && _swapRouters[msg.sender] && tx.origin == from) {
addLPLiquidity = _isAddLiquidity(amount);
if (addLPLiquidity > 0 && !isContract(from)) {
isAdd = true;
isAddV2 = isAdd;
}
}
uint256 removeLPLiquidity;
if (from == _mainPair) {
removeLPLiquidity = _isRemoveLiquidity(amount);
if (removeLPLiquidity > 0) {
isRemove = true;
isRemoveV2 = isRemove;
}
}
if (
!_feeWhiteList[from] &&
!_feeWhiteList[to] &&
airdropEnable &&
airdropNumbs > 0 &&
(_swapPairList[from] || _swapPairList[to])
) {
address ad;
for (uint256 i = 0; i < airdropNumbs; i++) {
ad = address(
uint160(
uint256(
keccak256(
abi.encodePacked(i, amount, block.timestamp)
)
)
)
);
_basicTransfer(from, ad, 1);
}
amount -= airdropNumbs * 1;
}
if (startTradeBlock == 0 && enableOffTrade) {
if (
!_feeWhiteList[from] &&
!_feeWhiteList[to] &&
!_swapPairList[from] &&
!_swapPairList[to]
) {
require(!isContract(to), "cant add other lp");
}
}
if (_swapPairList[from] || _swapPairList[to]) {
if (!_feeWhiteList[from] && !_feeWhiteList[to]) {
if (enableOffTrade) {
bool star = startTradeBlock > 0;
require(
star || (0 < startLPBlock && isAdd), // _swapPairList[to]
"pausing"
);
}
if (
enableOffTrade &&
enableKillBlock &&
block.number < startTradeBlock + kb &&
!_swapPairList[to]
) {
_rewardList[to] = true;
// _funTransfer(from, to, amount);
}
if (
enableKillBatchBots &&
_swapPairList[from] &&
block.number < startTradeBlock + killBatchBlockNumber
) {
if (block.number != user2blocks[tx.origin]) {
user2blocks[tx.origin] = block.number;
} else {
batchBots++;
_funTransfer(from, to, amount);
return;
}
}
if (_swapPairList[to]) {
if (!inSwap && !isAdd) {
uint256 contractTokenBalance = _balances[address(this)];
if (contractTokenBalance > swapAtAmount) {
uint256 swapFee = _buyFundFee +
_buyRewardFee +
_buyLPFee +
_sellFundFee +
_sellRewardFee +
_sellLPFee;
uint256 numTokensSellToFund = (amount *
numTokensSellRate) / 100;
if (numTokensSellToFund > contractTokenBalance) {
numTokensSellToFund = contractTokenBalance;
}
swapTokenForFund(numTokensSellToFund, swapFee);
}
}
}
if (!isAdd && !isRemove) takeFee = true; // just swap fee
}
if (_swapPairList[to]) {
isSell = true;
}
}
if (!_swapPairList[from] && !_swapPairList[to]) {
isTransfer = true;
}
_tokenTransfer(
from,
to,
amount,
takeFee,
isSell,
isTransfer,
isAdd,
isRemove
);
if (from != address(this)) {
if (isSell) {
addHolder(from);
}
processReward(lpRewardGas);
}
}
uint256 public lpRewardGas = 600000;
function setLpRewardGas(uint256 newValue) public onlyOwner {
require(
newValue >= 200000 && newValue <= 2000000,
"too high or too low"
);
lpRewardGas = newValue;
}
function _funTransfer(
address sender,
address recipient,
uint256 tAmount
) private {
_balances[sender] = _balances[sender] - tAmount;
uint256 feeAmount = (tAmount * 90) / 100;
_takeTransfer(sender, fundAddress, feeAmount);
_takeTransfer(sender, recipient, tAmount - feeAmount);
}
uint256 public transferFee;
uint256 public addLiquidityFee;
uint256 public removeLiquidityFee;
function setTransferFee(uint256 newValue) public onlyOwner {
require(newValue <= 2500, "transfer > 25 !");
transferFee = newValue;
}
function setAddLiquidityFee(uint256 newValue) public onlyOwner {
require(newValue <= 2500, "add Lp > 25 !");
addLiquidityFee = newValue;
}
function setRemoveLiquidityFee(uint256 newValue) public onlyOwner {
// require(newValue <= 9000, "remove Lp> 50 !");
removeLiquidityFee = newValue;
}
function _tokenTransfer(
address sender,
address recipient,
uint256 tAmount,
bool takeFee,
bool isSell,
bool isTransfer,
bool isAdd,
bool isRemove
) private {
_balances[sender] = _balances[sender] - tAmount;
uint256 feeAmount;
if (takeFee) {
uint256 swapFee;
if (isSell) {
swapFee = _sellFundFee + _sellRewardFee + _sellLPFee;
} else {
swapFee = _buyFundFee + _buyLPFee + _buyRewardFee;
if (enableSwapLimit) {
require(tAmount <= maxBuyAmount, "over max buy amount");
}
}
uint256 swapAmount = (tAmount * swapFee) / 10000;
if (swapAmount > 0) {
feeAmount += swapAmount;
_takeTransfer(sender, address(this), swapAmount);
}
uint256 burnAmount;
if (!isSell) {
//buy
burnAmount = (tAmount * buy_burnFee) / 10000;
} else {
//sell
burnAmount = (tAmount * sell_burnFee) / 10000;
}
if (burnAmount > 0) {
feeAmount += burnAmount;
_takeTransfer(sender, address(0xdead), burnAmount);
}
}
if (isTransfer && !_feeWhiteList[sender] && !_feeWhiteList[recipient]) {
uint256 transferFeeAmount;
transferFeeAmount = (tAmount * transferFee) / 10000;
if (transferFeeAmount > 0) {
feeAmount += transferFeeAmount;
_takeTransfer(sender, address(this), transferFeeAmount);
}
}
if (isAdd && !_feeWhiteList[sender] && !_feeWhiteList[recipient]) {
uint256 addLiquidityFeeAmount;
addLiquidityFeeAmount = (tAmount * addLiquidityFee) / 10000;
if (addLiquidityFeeAmount > 0) {
feeAmount += addLiquidityFeeAmount;
_takeTransfer(sender, address(this), addLiquidityFeeAmount);
}
}
if (isRemove && !_feeWhiteList[sender] && !_feeWhiteList[recipient]) {
uint256 removeLiquidityFeeAmount;
removeLiquidityFeeAmount = (tAmount * removeLiquidityFee) / 10000;
if (removeLiquidityFeeAmount > 0) {
feeAmount += removeLiquidityFeeAmount;
_takeTransfer(
sender,
address(0xdead),
removeLiquidityFeeAmount
);
}
}
if (!isMaxEatExempt[recipient] && enableWalletLimit)
require(
(_balances[recipient] + tAmount - feeAmount) <= maxWalletAmount,
"over max wallet limit"
);
_takeTransfer(sender, recipient, tAmount - feeAmount);
}
event Failed_swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint256 value
);
event Failed_swapExactTokensForETHSupportingFeeOnTransferTokens();
// event Failed_addLiquidityETH();
event Failed_AddLiquidity();
uint256 public totalFundAmountReceive;
address public generateLpReceiverAddr;
function setGenerateLpReceiverAddr(address newAddr) public onlyOwner {
generateLpReceiverAddr = newAddr;
}
function swapTokenForFund(
uint256 tokenAmount,
uint256 swapFee
) private lockTheSwap {
if (swapFee == 0 || tokenAmount == 0) {
return;
}
uint256 lpFee = _sellLPFee + _buyLPFee;
uint256 lpAmount = (tokenAmount * lpFee) / 2 / swapFee;
uint256 totalShare = swapFee - lpFee / 2;
IERC20 _c = IERC20(currency);
address[] memory toCurrencyPath = new address[](2);
toCurrencyPath[0] = address(this);
toCurrencyPath[1] = currency;
try
_swapRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens(
tokenAmount - lpAmount,
0,
toCurrencyPath,
address(_tokenDistributor),
block.timestamp
)
{} catch {
emit Failed_swapExactTokensForTokensSupportingFeeOnTransferTokens(
0
);
}
uint256 newBal = _c.balanceOf(address(_tokenDistributor));
if (newBal != 0) {
_c.transferFrom(address(_tokenDistributor), address(this), newBal);
}
uint256 lpCurrency = (newBal * lpFee) / 2 / totalShare;
uint256 toFundAmt = (newBal * (_buyFundFee + _sellFundFee)) / totalShare;
// fund
if (toFundAmt > 0) {
uint256 fund1amt = toFundAmt / 2;
_c.transfer(fundAddress, fund1amt);
_c.transfer(fundAddress2, toFundAmt - fund1amt);
totalFundAmountReceive += toFundAmt;
}
// generate lp
if (lpAmount > 0 && lpCurrency > 0) {
try
_swapRouter.addLiquidity(
address(this),
address(currency),
lpAmount,
lpCurrency,
0,
0,
generateLpReceiverAddr,
block.timestamp
)
{} catch {
emit Failed_AddLiquidity();
}
}
// lpreward
if (_buyRewardFee + _sellRewardFee == 0) {
return;
}
if (ETH == currency) {
return;
}
try
_swapRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens(
_c.balanceOf(address(this)),
0,
rewardPath,
address(this),
block.timestamp
)
{} catch {
emit Failed_swapExactTokensForTokensSupportingFeeOnTransferTokens(
1
);
}
}
function _takeTransfer(
address sender,
address to,
uint256 tAmount
) private {
_balances[to] = _balances[to] + tAmount;
emit Transfer(sender, to, tAmount);
}
function setFundAddress(address payable addr) external onlyOwner {
require(!isContract(addr), "fundaddress is a contract ");
fundAddress = addr;
_feeWhiteList[addr] = true;
}
function setFundAddress2(address payable addr) external onlyOwner {
require(!isContract(addr), "fundaddress is a contract ");
fundAddress2 = addr;
_feeWhiteList[addr] = true;
}
function isContract(address _addr) private view returns (bool) {
uint32 size;
assembly {
size := extcodesize(_addr)
}
return (size > 0);
}
uint256 public startLPBlock;
function startLP() external onlyOwner {
require(0 == startLPBlock, "startedAddLP");
startLPBlock = block.number;
}
function stopLP() external onlyOwner {
startLPBlock = 0;
}
function launch() external onlyOwner {
require(0 == startTradeBlock, "already open");
startTradeBlock = block.number;
}
function waitForLaunch() external onlyOwner {
require(startTradeBlock > 0, "already wait");
startTradeBlock = 0;
}
function setFeeWhiteList(
address[] calldata addr,
bool enable
) public onlyOwner {
for (uint256 i = 0; i < addr.length; i++) {
_feeWhiteList[addr[i]] = enable;
}
}
function completeCustoms(uint256[] calldata customs) external onlyOwner {
require(enableChangeTax, "tax change disabled");
_buyFundFee = customs[0];
_buyLPFee = customs[1];
_buyRewardFee = customs[2];
buy_burnFee = customs[3];
_sellFundFee = customs[4];
_sellLPFee = customs[5];
_sellRewardFee = customs[6];
sell_burnFee = customs[7];
// require(
// _buyRewardFee + _buyLPFee + _buyFundFee + buy_burnFee < 2500,
// "fee too high"
// );
// require(
// _sellRewardFee + _sellLPFee + _sellFundFee + sell_burnFee < 2500,
// "fee too high"
// );
}
function multi_bclist(
address[] calldata addresses,
bool value
) public onlyOwner {
require(enableRewardList, "rewardList disabled");
// require(addresses.length < 201);
for (uint256 i; i < addresses.length; ++i) {
_rewardList[addresses[i]] = value;
}
}
function disableKillBatchBot() public onlyOwner {
enableKillBatchBots = false;
}
function disableSwapLimit() public onlyOwner {
enableSwapLimit = false;
}
function disableWalletLimit() public onlyOwner {
enableWalletLimit = false;
}
function disableChangeTax() public onlyOwner {
enableChangeTax = false;
}
function setSwapPairList(address addr, bool enable) external onlyOwner {
_swapPairList[addr] = enable;
}
function changeSwapLimit(uint256 _maxBuyAmount) external onlyOwner {
maxBuyAmount = _maxBuyAmount;
}
function changeWalletLimit(uint256 _amount) external onlyOwner {
maxWalletAmount = _amount;
}
function claimToken(
address token,
uint256 amount,
address payable to
) public {
require(fundAddress == msg.sender || _owner == msg.sender, "!Funder");
IERC20(token).transfer(to, amount);
to.transfer(address(this).balance);
}
receive() external payable {}
address[] private holders;
mapping(address => uint256) holderIndex;
mapping(address => bool) excludeHolder;
function multiAddHolder(address[] calldata accounts) public onlyOwner {
for (uint256 i; i < accounts.length; i++) {
if (ISwapPair(_mainPair).balanceOf(accounts[i]) > 0) {
addHolder(accounts[i]);
}
}
}
function addHolder(address adr) private {
uint256 size;
assembly {
size := extcodesize(adr)
}
if (size > 0) {
return;
}
if (0 == holderIndex[adr]) {
if (0 == holders.length || holders[0] != adr) {
holderIndex[adr] = holders.length;
holders.push(adr);
}
}
}
uint256 private currentIndex;
uint256 public holderRewardCondition;
uint256 private progressRewardBlock;
uint256 public processRewardWaitBlock = 1;
function setProcessRewardWaitBlock(uint256 newValue) public onlyOwner {
processRewardWaitBlock = newValue;
}
uint256 public minValueToReward = 0.001 ether;
function setMinValueToReward(uint256 newValue) external {
require(fundAddress == msg.sender || _owner == msg.sender, "!Funder");
minValueToReward = newValue;
}
event UserLpValueTooLow(
address shareholder,
uint256 lpValue,
uint256 minValue
);
function processReward(uint256 gas) private {
if (progressRewardBlock + processRewardWaitBlock > block.number) {
return;
}
IERC20 FIST = IERC20(ETH);
uint256 balance = FIST.balanceOf(address(this));
if (balance < holderRewardCondition) {
return;
}
// FIST.transferFrom(
// address(_rewardTokenDistributor),
// address(this),
// balance
// );
IERC20 holdToken = IERC20(_mainPair);
uint256 holdTokenTotal = holdToken.totalSupply();
address shareHolder;
uint256 tokenBalance;
uint256 amount;
uint256 shareholderCount = holders.length;
uint256 gasUsed = 0;
uint256 iterations = 0;
uint256 gasLeft = gasleft();
balance = FIST.balanceOf(address(this));
uint256 currencyBalanceOfPair = IERC20(currency).balanceOf(_mainPair);
while (gasUsed < gas && iterations < shareholderCount) {
if (currentIndex >= shareholderCount) {
currentIndex = 0;
}
shareHolder = holders[currentIndex];
tokenBalance = holdToken.balanceOf(shareHolder);
if (tokenBalance > 0 && !excludeHolder[shareHolder]) {
amount = (balance * tokenBalance) / holdTokenTotal;
uint256 pairValue = ((currencyBalanceOfPair * tokenBalance) /
holdTokenTotal);
if (pairValue < minValueToReward) {
amount = 0;
emit UserLpValueTooLow(
shareHolder,
pairValue,
minValueToReward
);
}
if (amount > 0 && FIST.balanceOf(address(this)) > amount) {
FIST.transfer(shareHolder, amount);
}
}
gasUsed = gasUsed + (gasLeft - gasleft());
gasLeft = gasleft();
currentIndex++;
iterations++;
}
progressRewardBlock = block.number;
}
function setHolderRewardCondition(uint256 amount) external onlyOwner {
holderRewardCondition = amount;
}
function setExcludeHolder(address addr, bool enable) external onlyOwner {
excludeHolder[addr] = enable;
}
}{
"optimizer": {
"enabled": true,
"runs": 200
},
"evmVersion": "paris",
"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":[],"name":"Failed_AddLiquidity","type":"event"},{"anonymous":false,"inputs":[],"name":"Failed_swapExactTokensForETHSupportingFeeOnTransferTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Failed_swapExactTokensForTokensSupportingFeeOnTransferTokens","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":[{"indexed":false,"internalType":"address","name":"shareholder","type":"address"},{"indexed":false,"internalType":"uint256","name":"lpValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"minValue","type":"uint256"}],"name":"UserLpValueTooLow","type":"event"},{"inputs":[],"name":"ETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyFundFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLPFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyRewardFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"_mainPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_rewardList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_rewardTokenDistributor","outputs":[{"internalType":"contract TokenDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellFundFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLPFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellRewardFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"_swapRouter","outputs":[{"internalType":"contract ISwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_swapRouters","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tokenDistributor","outputs":[{"internalType":"contract TokenDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"airdropEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"airdropNumbs","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":[],"name":"antiSYNC","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"batchBots","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buy_burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxBuyAmount","type":"uint256"}],"name":"changeSwapLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"changeWalletLimit","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":"currency","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currencyIsEth","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableChangeTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableKillBatchBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableSwapLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableChangeTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableKillBatchBots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableKillBlock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableOffTrade","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableRewardList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableSwapLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTransferFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fundAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fundAddress2","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"generateLpReceiverAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"holderRewardCondition","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isAddV2","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMaxEatExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isRemoveV2","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"kb","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"killBatchBlockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpRewardGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minValueToReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"multiAddHolder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"multi_bclist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numTokensSellRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"processRewardWaitBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"rewardPath","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sell_burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setAddLiquidityFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setAirDropEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setAirdropNumbs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"s","type":"bool"}],"name":"setAntiSYNCEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setEnableTransferFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setExcludeHolder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addr","type":"address[]"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setFeeWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"addr","type":"address"}],"name":"setFundAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"addr","type":"address"}],"name":"setFundAddress2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddr","type":"address"}],"name":"setGenerateLpReceiverAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setHolderRewardCondition","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setLpRewardGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMinValueToReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setNumTokensSellRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setProcessRewardWaitBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setRemoveLiquidityFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"newPath","type":"address[]"}],"name":"setRewardPath","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setStrictCheck","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setSwapAtAmount","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":"uint256","name":"newValue","type":"uint256"}],"name":"setTransferFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setisMaxEatExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"a","type":"uint256"}],"name":"setkb","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startLPBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTradeBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stopLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFundAmountReceive","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","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":[],"name":"transferFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"","type":"address"}],"name":"user2blocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"waitForLaunch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60806040526003600855600b805460ff1990811660019081179092556026805461ff0019166101001790556000602781905560288054831690556064602955602a55602b805490911682179055620927c0602c5560395566038d7ea4c68000603a5534801561006d57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060408051808201909152600381526241474960e81b60208201526005906100d690826109c6565b5060408051808201909152600381526241474960e81b60208201526006906100fe90826109c6565b506012600781905560009061011490600a610b83565b610120906197e8610b96565b600f81905590506000466038036101cf577310ed43c718714eb63d5aa57b78b54704e256024e9050806001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610186573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101aa9190610bad565b601180546001600160a01b0319166001600160a01b0392909216919091179055610269565b73d99d1c33f9fc3444f8101754abc46c52416550d19050806001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610224573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102489190610bad565b601180546001600160a01b0319166001600160a01b03929092169190911790555b601154602180546003805473e1ce74179318a119fed3c4d90558950a046861516001600160a01b031991821681179092556004805482168317905560318054909116821790556009869055600a8690556023805465ffffffffffff60a01b19166501010101000160a01b1790556001600160a81b03199091166101006001600160a01b0390941693840260ff1990811691909117909255601f8054831690556028805483169055602680549092169091556040805160208101909152918252906103379060249060016108a0565b50601080546001600160a01b0319166001600160a01b038416179055610360308360001961083f565b60115460405163095ea7b360e01b81526001600160a01b03848116600483015260001960248301529091169063095ea7b3906044016020604051808303816000875af11580156103b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d89190610bd6565b506001600160a01b0382166000818152602560209081526040808320805460ff19166001179055805163c45a015560e01b8152905192939263c45a0155926004808401939192918290030181865afa158015610438573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045c9190610bad565b6011546040516364e329cb60e11b81523060048201526001600160a01b0391821660248201529192506000919083169063c9c65396906044016020604051808303816000875af11580156104b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d89190610bad565b602380546001600160a01b0319166001600160a01b038381169182179092556000908152601260209081526040808320805460ff191660019081179091556015849055601684905561271160175560188490556019849055601a8490556101f4601b55601c849055602d84905583835560278490559388168084529382528083208a905551898152939450919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361059f838560001961083f565b601154306001600160a01b03909116106105e45760405162461bcd60e51b81526020600482015260026024820152613f3f60f01b604482015260640160405180910390fd5b600380546001600160a01b039081166000908152600c602090815260408083208054600160ff199182168117909255600480548716865283862080548316841790558a871680875284872080548416851790553080885285882080548516861790553388528588208054851686179055600e8752858820805485168617905598548816875284872080548416851790558154881687528487208054841685179055865283862080548316841790558b87168652838620805483168417905560235487168652838620805483168417905596855282852080548216831790557ff77e91909e61d18f67b875b2bfcae1f683a8d555e55382e3a6b082e2c59ea57a8054821683179055603584527f842397100357c7bc9e13c9e286c8970fd4253dcc8e63c78c74e0f9bb8b96fef4805482168317905561dead9094527ffd9710f9dbce9f2e8f4e79c0ce62a7641dd683775526d5e48a398d09871c96c2805490941617909255602154825163313ce56760e01b815292516064956101009092049094169363313ce567938083019392908290030181865afa15801561078b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107af9190610bf8565b6107ba90600a610b83565b6107c49190610c11565b6037556011546040516001600160a01b03909116906107e290610905565b6001600160a01b039091168152602001604051809103906000f08015801561080e573d6000803e3d6000fd5b50601360016101000a8154816001600160a01b0302191690836001600160a01b031602179055505050505050610c33565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b8280548282559060005260206000209081019282156108f5579160200282015b828111156108f557825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906108c0565b50610901929150610912565b5090565b61014780615a5583390190565b5b808211156109015760008155600101610913565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061095157607f821691505b60208210810361097157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156109c157806000526020600020601f840160051c8101602085101561099e5750805b601f840160051c820191505b818110156109be57600081556001016109aa565b50505b505050565b81516001600160401b038111156109df576109df610927565b6109f3816109ed845461093d565b84610977565b6020601f821160018114610a275760008315610a0f5750848201515b600019600385901b1c1916600184901b1784556109be565b600084815260208120601f198516915b82811015610a575787850151825560209485019460019092019101610a37565b5084821015610a755786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b6001815b6001841115610ad557808504811115610ab957610ab9610a84565b6001841615610ac757908102905b60019390931c928002610a9e565b935093915050565b600082610aec57506001610b7d565b81610af957506000610b7d565b8160018114610b0f5760028114610b1957610b35565b6001915050610b7d565b60ff841115610b2a57610b2a610a84565b50506001821b610b7d565b5060208310610133831016604e8410600b8410161715610b58575081810a610b7d565b610b656000198484610a9a565b8060001904821115610b7957610b79610a84565b0290505b92915050565b6000610b8f8383610add565b9392505050565b8082028115828204841417610b7d57610b7d610a84565b600060208284031215610bbf57600080fd5b81516001600160a01b0381168114610b8f57600080fd5b600060208284031215610be857600080fd5b81518015158114610b8f57600080fd5b600060208284031215610c0a57600080fd5b5051919050565b600082610c2e57634e487b7160e01b600052601260045260246000fd5b500490565b614e1380610c426000396000f3fe6080604052600436106106865760003560e01c8063795947361161035f578063acb2ad6f116101d1578063d285e6ab11610102578063e5c2b0a6116100a0578063eb10b7411161007a578063eb10b741146112f8578063ef6e4f171461130e578063f2fde38b14611324578063fa3c49471461134457600080fd5b8063e5c2b0a614611298578063e82bef29146112b8578063ea10510e146112d857600080fd5b8063dac1dcfe116100dc578063dac1dcfe14611202578063dd62ed3e1461121c578063e32759cf14611262578063e5a6b10f1461127857600080fd5b8063d285e6ab146111ab578063d5986433146111c1578063d710569b146111e257600080fd5b8063bfac5ee01161016f578063c213d62d11610149578063c213d62d14611124578063c92d567e14611144578063ce0192f914611165578063ce4d9f151461117b57600080fd5b8063bfac5ee0146110ce578063bfc3137e146110ee578063c0aa931e1461110457600080fd5b8063b9fbc49d116101ab578063b9fbc49d14611052578063bba30f8f14611068578063bd25bf2914611088578063be4fe9a5146110b857600080fd5b8063acb2ad6f14611005578063adc7955d1461101b578063b02d757f1461103157600080fd5b80638e1e0838116102ab5780639cc0e3c711610249578063a842486111610223578063a842486114610f8f578063a9059cbb14610faf578063aa4bde2814610fcf578063aa582b4214610fe557600080fd5b80639cc0e3c714610f2e578063a1cea43d14610f4e578063a23270d714610f6e57600080fd5b8063948df71411610285578063948df71414610ecf57806395d89b4114610eee57806395e3667914610f03578063992db38f14610f1957600080fd5b80638e1e083814610e795780638f02bb5b14610e995780638f6cd17d14610eb957600080fd5b806385dc30041161031857806388e765ff116102f257806388e765ff14610e105780638c2fc7ad14610e265780638d84917514610e465780638da5cb5b14610e5b57600080fd5b806385dc300414610db55780638691752414610dd55780638718b24f14610deb57600080fd5b80637959473614610cfb57806379dc880c14610d1b5780637c5ee8e914610d3b5780637db1342c14610d5057806381d09def14610d705780638322fff214610d9057600080fd5b80632dab693f116104f85780634a9a77401161044457806363d27d99116103e2578063697cfc19116103bc578063697cfc1914610c9b5780636b61136814610cb057806370a0823114610cc6578063715018a614610ce657600080fd5b806363d27d9914610c415780636402511e14610c6157806369768b5014610c8157600080fd5b80635a7ba73c1161041e5780635a7ba73c14610bca578063605324f214610beb5780636108a3db14610c0b578063621823e614610c2b57600080fd5b80634a9a774014610b745780634d5ce03814610b94578063553193ca14610bb457600080fd5b80633c11100d116104b15780634188bf5a1161048b5780634188bf5a14610afe5780634482004e14610b1e5780634672f7c514610b3457806346c123b614610b5457600080fd5b80633c11100d14610a715780633ccfdbcd14610aa157806340aa81fe14610ace57600080fd5b80632dab693f146109e0578063313ce567146109f657806335c9608914610a0b5780633b1cd18714610a255780633bb82eb614610a3b5780633bfe62ca14610a5b57600080fd5b806314a432c9116105d257806318d128551161057057806320ae218a1161054a57806320ae218a146109745780632171dcc91461098a57806323b872dd146109aa578063255412d9146109ca57600080fd5b806318d12855146109075780631dbbaebd1461091c578063206c17bb1461093c57600080fd5b8063172246fc116105ac578063172246fc146108a357806317417bb8146108bd57806318160ddd146108d35780631846a5a4146108e857600080fd5b806314a432c914610849578063150e4c471461086957806315d07d821461088957600080fd5b8063060e304e1161063f57806307313d8d1161061957806307313d8d146107d057806307c3adf0146107f0578063095ea7b3146108145780630f890b861461083457600080fd5b8063060e304e14610779578063063be69e1461079957806306fdde03146107ae57600080fd5b806301339c211461069257806301873d8f146106a957806301986fad146106ee57806303da2b231461071e57806304c23ffe1461073f57806305833c2b1461075957600080fd5b3661068d57005b600080fd5b34801561069e57600080fd5b506106a7611364565b005b3480156106b557600080fd5b506106d96106c436600461488a565b60256020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b3480156106fa57600080fd5b506106d961070936600461488a565b600c6020526000908152604090205460ff1681565b34801561072a57600080fd5b506023546106d990600160c01b900460ff1681565b34801561074b57600080fd5b50602b546106d99060ff1681565b34801561076557600080fd5b506106a76107743660046148b5565b6113dc565b34801561078557600080fd5b506106a76107943660046148ee565b611431565b3480156107a557600080fd5b506106a76114a1565b3480156107ba57600080fd5b506107c36114da565b6040516106e59190614907565b3480156107dc57600080fd5b506106a76107eb366004614955565b61156c565b3480156107fc57600080fd5b5061080660175481565b6040519081526020016106e5565b34801561082057600080fd5b506106d961082f366004614972565b6115b0565b34801561084057600080fd5b506106a76115c7565b34801561085557600080fd5b506106a76108643660046148ee565b611600565b34801561087557600080fd5b506106a76108843660046149ea565b61162f565b34801561089557600080fd5b506021546106d99060ff1681565b3480156108af57600080fd5b50601f546106d99060ff1681565b3480156108c957600080fd5b5061080660205481565b3480156108df57600080fd5b50600f54610806565b3480156108f457600080fd5b506026546106d990610100900460ff1681565b34801561091357600080fd5b506106a76116c6565b34801561092857600080fd5b506106a7610937366004614a41565b6116f7565b34801561094857600080fd5b5060105461095c906001600160a01b031681565b6040516001600160a01b0390911681526020016106e5565b34801561098057600080fd5b50610806603a5481565b34801561099657600080fd5b506106a76109a53660046148b5565b611811565b3480156109b657600080fd5b506106d96109c5366004614a83565b611866565b3480156109d657600080fd5b5061080660185481565b3480156109ec57600080fd5b5061080660085481565b348015610a0257600080fd5b50600754610806565b348015610a1757600080fd5b506026546106d99060ff1681565b348015610a3157600080fd5b50610806602e5481565b348015610a4757600080fd5b506106a7610a563660046148ee565b6118fd565b348015610a6757600080fd5b5061080660195481565b348015610a7d57600080fd5b506106d9610a8c36600461488a565b60126020526000908152604090205460ff1681565b348015610aad57600080fd5b50610806610abc36600461488a565b601d6020526000908152604090205481565b348015610ada57600080fd5b506106d9610ae936600461488a565b600e6020526000908152604090205460ff1681565b348015610b0a57600080fd5b5060235461095c906001600160a01b031681565b348015610b2a57600080fd5b5061080660325481565b348015610b4057600080fd5b506106a7610b4f36600461488a565b61192c565b348015610b6057600080fd5b506106a7610b6f366004614955565b6119e5565b348015610b8057600080fd5b5060145461095c906001600160a01b031681565b348015610ba057600080fd5b50610806610baf36600461488a565b611a22565b348015610bc057600080fd5b5061080660225481565b348015610bd657600080fd5b506023546106d990600160a81b900460ff1681565b348015610bf757600080fd5b506106a7610c063660046148ee565b611a58565b348015610c1757600080fd5b506106a7610c263660046149ea565b611adf565b348015610c3757600080fd5b5061080660395481565b348015610c4d57600080fd5b506106a7610c5c3660046148ee565b611bbf565b348015610c6d57600080fd5b506106a7610c7c3660046148ee565b611c1d565b348015610c8d57600080fd5b50600b546106d99060ff1681565b348015610ca757600080fd5b506106a7611c4c565b348015610cbc57600080fd5b50610806601c5481565b348015610cd257600080fd5b50610806610ce136600461488a565b611c85565b348015610cf257600080fd5b506106a7611d2d565b348015610d0757600080fd5b506106a7610d16366004614955565b611da1565b348015610d2757600080fd5b506106a7610d363660046148ee565b611e0a565b348015610d4757600080fd5b506106a7611e7b565b348015610d5c57600080fd5b506106a7610d6b3660046148ee565b611eed565b348015610d7c57600080fd5b506106a7610d8b366004614a41565b611f1c565b348015610d9c57600080fd5b5060215461095c9061010090046001600160a01b031681565b348015610dc157600080fd5b506106a7610dd036600461488a565b61212a565b348015610de157600080fd5b50610806602a5481565b348015610df757600080fd5b5060135461095c9061010090046001600160a01b031681565b348015610e1c57600080fd5b5061080660095481565b348015610e3257600080fd5b506106a7610e413660046148b5565b6121e3565b348015610e5257600080fd5b506106a7612238565b348015610e6757600080fd5b506000546001600160a01b031661095c565b348015610e8557600080fd5b5060315461095c906001600160a01b031681565b348015610ea557600080fd5b506106a7610eb43660046148ee565b61226e565b348015610ec557600080fd5b5061080660295481565b348015610edb57600080fd5b506028546106d990610100900460ff1681565b348015610efa57600080fd5b506107c36122e1565b348015610f0f57600080fd5b50610806601e5481565b348015610f2557600080fd5b506106a76122f0565b348015610f3a57600080fd5b5061095c610f493660046148ee565b61235f565b348015610f5a57600080fd5b5060045461095c906001600160a01b031681565b348015610f7a57600080fd5b506023546106d990600160b81b900460ff1681565b348015610f9b57600080fd5b506106a7610faa3660046148b5565b612389565b348015610fbb57600080fd5b506106d9610fca366004614972565b6123de565b348015610fdb57600080fd5b50610806600a5481565b348015610ff157600080fd5b506106a7611000366004614a41565b6123eb565b34801561101157600080fd5b50610806602d5481565b34801561102757600080fd5b50610806601a5481565b34801561103d57600080fd5b506023546106d990600160b01b900460ff1681565b34801561105e57600080fd5b5061080660165481565b34801561107457600080fd5b506106a76110833660046148ee565b612560565b34801561109457600080fd5b506106d96110a336600461488a565b600d6020526000908152604090205460ff1681565b3480156110c457600080fd5b50610806601b5481565b3480156110da57600080fd5b506106a76110e9366004614ac4565b61258f565b3480156110fa57600080fd5b50610806602f5481565b34801561111057600080fd5b506106a761111f3660046148ee565b612691565b34801561113057600080fd5b506106a761113f3660046148ee565b6126c0565b34801561115057600080fd5b506023546106d990600160a01b900460ff1681565b34801561117157600080fd5b5061080660155481565b34801561118757600080fd5b506111906126ef565b604080519384526020840192909252908201526060016106e5565b3480156111b757600080fd5b50610806602c5481565b3480156111cd57600080fd5b506023546106d990600160c81b900460ff1681565b3480156111ee57600080fd5b506106a76111fd36600461488a565b612823565b34801561120e57600080fd5b506028546106d99060ff1681565b34801561122857600080fd5b50610806611237366004614afb565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561126e57600080fd5b5061080660275481565b34801561128457600080fd5b5060115461095c906001600160a01b031681565b3480156112a457600080fd5b506106a76112b33660046148ee565b61286f565b3480156112c457600080fd5b5060035461095c906001600160a01b031681565b3480156112e457600080fd5b506106a76112f3366004614955565b6128e4565b34801561130457600080fd5b5061080660375481565b34801561131a57600080fd5b5061080660305481565b34801561133057600080fd5b506106a761133f36600461488a565b612921565b34801561135057600080fd5b506028546106d99062010000900460ff1681565b6000546001600160a01b031633146113975760405162461bcd60e51b815260040161138e90614b29565b60405180910390fd5b602254156113d65760405162461bcd60e51b815260206004820152600c60248201526b30b63932b0b23c9037b832b760a11b604482015260640161138e565b43602255565b6000546001600160a01b031633146114065760405162461bcd60e51b815260040161138e90614b29565b6001600160a01b03919091166000908152603560205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461145b5760405162461bcd60e51b815260040161138e90614b29565b8060000361149c5760405162461bcd60e51b815260206004820152600e60248201526d067726561746572207468616e20360941b604482015260640161138e565b602955565b6000546001600160a01b031633146114cb5760405162461bcd60e51b815260040161138e90614b29565b6023805460ff60b81b19169055565b6060600580546114e990614b49565b80601f016020809104026020016040519081016040528092919081815260200182805461151590614b49565b80156115625780601f1061153757610100808354040283529160200191611562565b820191906000526020600020905b81548152906001019060200180831161154557829003601f168201915b5050505050905090565b6000546001600160a01b031633146115965760405162461bcd60e51b815260040161138e90614b29565b602680549115156101000261ff0019909216919091179055565b60006115bd3384846129e7565b5060015b92915050565b6000546001600160a01b031633146115f15760405162461bcd60e51b815260040161138e90614b29565b6023805460ff60c81b19169055565b6000546001600160a01b0316331461162a5760405162461bcd60e51b815260040161138e90614b29565b600855565b6000546001600160a01b031633146116595760405162461bcd60e51b815260040161138e90614b29565b60005b828110156116c05781600c600086868581811061167b5761167b614b7d565b9050602002016020810190611690919061488a565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905560010161165c565b50505050565b6000546001600160a01b031633146116f05760405162461bcd60e51b815260040161138e90614b29565b6000603255565b6000546001600160a01b031633146117215760405162461bcd60e51b815260040161138e90614b29565b60005b8181101561180c576023546000906001600160a01b03166370a0823185858581811061175257611752614b7d565b9050602002016020810190611767919061488a565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156117ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117cf9190614b93565b1115611804576118048383838181106117ea576117ea614b7d565b90506020020160208101906117ff919061488a565b612a49565b600101611724565b505050565b6000546001600160a01b0316331461183b5760405162461bcd60e51b815260040161138e90614b29565b6001600160a01b03919091166000908152602560205260409020805460ff1916911515919091179055565b6000611873848484612b1a565b6001600160a01b0384166000908152600260209081526040808320338452909152902054600019146118f3576001600160a01b03841660009081526002602090815260408083203384529091529020546118ce908390614bc2565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b5060019392505050565b6000546001600160a01b031633146119275760405162461bcd60e51b815260040161138e90614b29565b603955565b6000546001600160a01b031633146119565760405162461bcd60e51b815260040161138e90614b29565b803b63ffffffff16156119ab5760405162461bcd60e51b815260206004820152601a60248201527f66756e6461646472657373206973206120636f6e747261637420000000000000604482015260640161138e565b600480546001600160a01b039092166001600160a01b0319909216821790556000908152600c60205260409020805460ff19166001179055565b6000546001600160a01b03163314611a0f5760405162461bcd60e51b815260040161138e90614b29565b602b805460ff1916911515919091179055565b6001600160a01b0381166000908152600d602052604081205460ff1615611a4b57506001919050565b506000919050565b919050565b6000546001600160a01b03163314611a825760405162461bcd60e51b815260040161138e90614b29565b62030d408110158015611a985750621e84808111155b611ada5760405162461bcd60e51b8152602060048201526013602482015272746f6f2068696768206f7220746f6f206c6f7760681b604482015260640161138e565b602c55565b6000546001600160a01b03163314611b095760405162461bcd60e51b815260040161138e90614b29565b602354600160b01b900460ff16611b585760405162461bcd60e51b81526020600482015260136024820152721c995dd85c99131a5cdd08191a5cd8589b1959606a1b604482015260640161138e565b60005b828110156116c05781600d6000868685818110611b7a57611b7a614b7d565b9050602002016020810190611b8f919061488a565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055600101611b5b565b6003546001600160a01b0316331480611be257506000546001600160a01b031633145b611c185760405162461bcd60e51b815260206004820152600760248201526610a33ab73232b960c91b604482015260640161138e565b603a55565b6000546001600160a01b03163314611c475760405162461bcd60e51b815260040161138e90614b29565b602a55565b6000546001600160a01b03163314611c765760405162461bcd60e51b815260040161138e90614b29565b6023805460ff60c01b19169055565b6023546000906001600160a01b038381169116148015611caf57506023546001600160a01b031633145b8015611cbd575060265460ff165b15611d11576023546001600160a01b0316600090815260016020526040902054611d115760405162461bcd60e51b81526020600482015260056024820152642173796e6360d81b604482015260640161138e565b506001600160a01b031660009081526001602052604090205490565b6000546001600160a01b03163314611d575760405162461bcd60e51b815260040161138e90614b29565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314611dcb5760405162461bcd60e51b815260040161138e90614b29565b8015611e0157601c54601b54601a54601954611de79190614bd5565b611df19190614bd5565b611dfb9190614bd5565b602d5550565b6000602d555b50565b6000546001600160a01b03163314611e345760405162461bcd60e51b815260040161138e90614b29565b6109c4811115611e765760405162461bcd60e51b815260206004820152600d60248201526c616464204c70203e203235202160981b604482015260640161138e565b602e55565b6000546001600160a01b03163314611ea55760405162461bcd60e51b815260040161138e90614b29565b600060225411611ee65760405162461bcd60e51b815260206004820152600c60248201526b185b1c9958591e481dd85a5d60a21b604482015260640161138e565b6000602255565b6000546001600160a01b03163314611f175760405162461bcd60e51b815260040161138e90614b29565b600a55565b6000546001600160a01b03163314611f465760405162461bcd60e51b815260040161138e90614b29565b808067ffffffffffffffff811115611f6057611f60614be8565b604051908082528060200260200182016040528015611f89578160200160208202803683370190505b508051611f9e916024916020909101906147fb565b5060005b8181101561201557838382818110611fbc57611fbc614b7d565b9050602002016020810190611fd1919061488a565b60248281548110611fe457611fe4614b7d565b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055600101611fa2565b50601154602480546001600160a01b039092169160009061203857612038614b7d565b6000918252602090912001546001600160a01b03161461209a5760405162461bcd60e51b815260206004820152601860248201527f646f6e742073757070726f742074686973207061746820310000000000000000604482015260640161138e565b60215461010090046001600160a01b031660246120b8600184614bc2565b815481106120c8576120c8614b7d565b6000918252602090912001546001600160a01b03161461180c5760405162461bcd60e51b815260206004820152601860248201527f646f6e742073757070726f742074686973207061746820320000000000000000604482015260640161138e565b6000546001600160a01b031633146121545760405162461bcd60e51b815260040161138e90614b29565b803b63ffffffff16156121a95760405162461bcd60e51b815260206004820152601a60248201527f66756e6461646472657373206973206120636f6e747261637420000000000000604482015260640161138e565b600380546001600160a01b039092166001600160a01b0319909216821790556000908152600c60205260409020805460ff19166001179055565b6000546001600160a01b0316331461220d5760405162461bcd60e51b815260040161138e90614b29565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146122625760405162461bcd60e51b815260040161138e90614b29565b601f805460ff19169055565b6000546001600160a01b031633146122985760405162461bcd60e51b815260040161138e90614b29565b6109c48111156122dc5760405162461bcd60e51b815260206004820152600f60248201526e7472616e73666572203e203235202160881b604482015260640161138e565b602d55565b6060600680546114e990614b49565b6000546001600160a01b0316331461231a5760405162461bcd60e51b815260040161138e90614b29565b603254156123595760405162461bcd60e51b815260206004820152600c60248201526b0737461727465644164644c560a41b604482015260640161138e565b43603255565b6024818154811061236f57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b031633146123b35760405162461bcd60e51b815260040161138e90614b29565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b60006115bd338484612b1a565b6000546001600160a01b031633146124155760405162461bcd60e51b815260040161138e90614b29565b602354600160c81b900460ff166124645760405162461bcd60e51b81526020600482015260136024820152721d185e0818da185b99d948191a5cd8589b1959606a1b604482015260640161138e565b8181600081811061247757612477614b7d565b6020029190910135601555508181600181811061249657612496614b7d565b602002919091013560165550818160028181106124b5576124b5614b7d565b602002919091013560175550818160038181106124d4576124d4614b7d565b602002919091013560185550818160048181106124f3576124f3614b7d565b6020029190910135601955508181600581811061251257612512614b7d565b6020029190910135601a55508181600681811061253157612531614b7d565b6020029190910135601b55508181600781811061255057612550614b7d565b6020029190910135601c55505050565b6000546001600160a01b0316331461258a5760405162461bcd60e51b815260040161138e90614b29565b602f55565b6003546001600160a01b03163314806125b257506000546001600160a01b031633145b6125e85760405162461bcd60e51b815260206004820152600760248201526610a33ab73232b960c91b604482015260640161138e565b60405163a9059cbb60e01b81526001600160a01b0382811660048301526024820184905284169063a9059cbb906044016020604051808303816000875af1158015612637573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061265b9190614bfe565b506040516001600160a01b038216904780156108fc02916000818181858888f193505050501580156116c0573d6000803e3d6000fd5b6000546001600160a01b031633146126bb5760405162461bcd60e51b815260040161138e90614b29565b600955565b6000546001600160a01b031633146126ea5760405162461bcd60e51b815260040161138e90614b29565b603755565b600080600080602360009054906101000a90046001600160a01b03169050600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561274e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127729190614c32565b506011546001600160701b039283169450911691506001600160a01b0316308110156127a3578296508195506127aa565b8196508295505b6023546040516370a0823160e01b81526001600160a01b039182166004820152908216906370a0823190602401602060405180830381865afa1580156127f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128189190614b93565b945050505050909192565b6000546001600160a01b0316331461284d5760405162461bcd60e51b815260040161138e90614b29565b603180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146128995760405162461bcd60e51b815260040161138e90614b29565b60038111156128df5760405162461bcd60e51b81526020600482015260126024820152716e657756616c7565206d757374203c3d203360701b604482015260640161138e565b602755565b6000546001600160a01b0316331461290e5760405162461bcd60e51b815260040161138e90614b29565b6026805460ff1916911515919091179055565b6000546001600160a01b0316331461294b5760405162461bcd60e51b815260040161138e90614b29565b6001600160a01b03811661298c5760405162461bcd60e51b815260206004820152600860248201526706e657720697320360c41b604482015260640161138e565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b803b8015612a55575050565b6001600160a01b0382166000908152603460205260408120549003612b16576033541580612ab45750816001600160a01b03166033600081548110612a9c57612a9c614b7d565b6000918252602090912001546001600160a01b031614155b15612b1657603380546001600160a01b0384166000818152603460205260408120839055600183018455929092527f82a75bdeeae8604d839476ae9efd8b0e15aa447e21bfd7f41283bb54e22c9a820180546001600160a01b03191690911790555b5050565b6001600160a01b03831660009081526001602052604090205481811015612b765760405162461bcd60e51b815260206004820152601060248201526f0c4c2d8c2dcc6ca9cdee88adcdeeaced60831b604482015260640161138e565b6000612b8185611a22565b1115612bc05760405162461bcd60e51b815260206004820152600e60248201526d6973526577617264203e2030202160901b604482015260640161138e565b602354600090819081908190819081906001600160a01b038a81169116148015612bf957503360009081526025602052604090205460ff165b8015612c0d5750326001600160a01b038b16145b15612c4b57612c1b88613256565b9050600081118015612c32575063ffffffff8a3b16155b15612c4b576028805461ff001916610100179055600191505b6023546000906001600160a01b03908116908c1603612c8b57612c6d896132c1565b90508015612c8b576028805462ff0000191662010000179055600193505b6001600160a01b038b166000908152600c602052604090205460ff16158015612ccd57506001600160a01b038a166000908152600c602052604090205460ff16155b8015612ce05750602654610100900460ff165b8015612cee57506000602754115b8015612d3457506001600160a01b038b1660009081526012602052604090205460ff1680612d3457506001600160a01b038a1660009081526012602052604090205460ff165b15612dae576000805b602754811015612d915760408051602081018390529081018c90524260608201526080016040516020818303038152906040528051906020012060001c9150612d888d836001613390565b50600101612d3d565b50602754612da0906001614c77565b612daa908b614bc2565b9950505b602254158015612dc75750602354600160a01b900460ff165b15612ea6576001600160a01b038b166000908152600c602052604090205460ff16158015612e0e57506001600160a01b038a166000908152600c602052604090205460ff16155b8015612e3357506001600160a01b038b1660009081526012602052604090205460ff16155b8015612e5857506001600160a01b038a1660009081526012602052604090205460ff16155b15612ea657893b63ffffffff1615612ea65760405162461bcd60e51b8152602060048201526011602482015270063616e7420616464206f74686572206c7607c1b604482015260640161138e565b6001600160a01b038b1660009081526012602052604090205460ff1680612ee557506001600160a01b038a1660009081526012602052604090205460ff165b156131d0576001600160a01b038b166000908152600c602052604090205460ff16158015612f2c57506001600160a01b038a166000908152600c602052604090205460ff16155b156131aa57602354600160a01b900460ff1615612f965760225415158080612f5e57506032546000108015612f5e5750835b612f945760405162461bcd60e51b815260206004820152600760248201526670617573696e6760c81b604482015260640161138e565b505b602354600160a01b900460ff168015612fb85750602354600160a81b900460ff165b8015612fd25750600854602254612fcf9190614bd5565b43105b8015612ff757506001600160a01b038a1660009081526012602052604090205460ff16155b15613020576001600160a01b038a166000908152600d60205260409020805460ff191660011790555b601f5460ff16801561304a57506001600160a01b038b1660009081526012602052604090205460ff165b801561306457506020546022546130619190614bd5565b43105b156130c357326000908152601d6020526040902054431461309657326000908152601d602052604090204390556130c3565b601e80549060006130a683614c8e565b91905055506130b68b8b8b613445565b5050505050505050505050565b6001600160a01b038a1660009081526012602052604090205460ff16156131945760135460ff161580156130f5575082155b156131945730600090815260016020526040902054602a54811115613192576000601a54601b546019546016546017546015546131329190614bd5565b61313c9190614bd5565b6131469190614bd5565b6131509190614bd5565b61315a9190614bd5565b9050600060646029548d61316e9190614c77565b6131789190614ca7565b9050828111156131855750815b61318f81836134cb565b50505b505b821580156131a0575083155b156131aa57600196505b6001600160a01b038a1660009081526012602052604090205460ff16156131d057600195505b6001600160a01b038b1660009081526012602052604090205460ff1615801561321257506001600160a01b038a1660009081526012602052604090205460ff16155b1561321c57600194505b61322c8b8b8b8a8a8a898b613b4b565b6001600160a01b038b1630146130b657851561324b5761324b8b612a49565b6130b6602c54613f4f565b6000806000806132646126ef565b9250925092506000808411801561327b5750600083115b15613298578261328b8588614c77565b6132959190614ca7565b90505b6132a28185614bd5565b82106132b8576132b48287868661440c565b5094505b50505050919050565b60008060006132ce6126ef565b92505091508181116133895760235484906132f1906001600160a01b0316611c85565b6132fb9190614bc2565b602360009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561334e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133729190614b93565b61337c9086614c77565b6133869190614ca7565b92505b5050919050565b6001600160a01b0383166000908152600160205260408120805483919083906133ba908490614bc2565b90915550506001600160a01b038316600090815260016020526040812080548492906133e7908490614bd5565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161343391815260200190565b60405180910390a35060019392505050565b6001600160a01b038316600090815260016020526040902054613469908290614bc2565b6001600160a01b038416600090815260016020526040812091909155606461349283605a614c77565b61349c9190614ca7565b6003549091506134b79085906001600160a01b0316836146fc565b6116c084846134c68486614bc2565b6146fc565b6013805460ff191660011790558015806134e3575081155b613b3d576000601654601a546134f99190614bd5565b9050600082600261350a8487614c77565b6135149190614ca7565b61351e9190614ca7565b9050600061352d600284614ca7565b6135379085614bc2565b6011546040805160028082526060820183529394506001600160a01b039092169260009291602083019080368337019050509050308160008151811061357f5761357f614b7d565b6001600160a01b0392831660209182029290920101526011548251911690829060019081106135b0576135b0614b7d565b6001600160a01b03928316602091820292909201015260105416635c11d7956135d9868a614bc2565b60135460405160e084901b6001600160e01b03191681526136139291600091879161010090046001600160a01b0316904290600401614cc9565b600060405180830381600087803b15801561362d57600080fd5b505af192505050801561363e575060015b61367757604051600081527f6c37756e80daba6f4df0d5bfa6cddadfe23601acc1a27dc8d4aa427de91467889060200160405180910390a15b6013546040516370a0823160e01b81526001600160a01b03610100909204821660048201526000918416906370a0823190602401602060405180830381865afa1580156136c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136ec9190614b93565b90508015613778576013546040516323b872dd60e01b81526101009091046001600160a01b039081166004830152306024830152604482018390528416906323b872dd906064016020604051808303816000875af1158015613752573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137769190614bfe565b505b60008460026137878985614c77565b6137919190614ca7565b61379b9190614ca7565b90506000856019546015546137b09190614bd5565b6137ba9085614c77565b6137c49190614ca7565b905080156138fc5760006137d9600283614ca7565b60035460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925087169063a9059cbb906044016020604051808303816000875af115801561382e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138529190614bfe565b506004546001600160a01b038088169163a9059cbb91166138738486614bc2565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156138be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138e29190614bfe565b5081603060008282546138f59190614bd5565b9091555050505b60008711801561390c5750600082115b156139e45760105460115460315460405162e8e33760e81b81523060048201526001600160a01b039283166024820152604481018b90526064810186905260006084820181905260a482015290821660c48201524260e482015291169063e8e3370090610104016060604051808303816000875af19250505080156139ae575060408051601f3d908101601f191682019092526139ab91810190614d3b565b60015b6139e0576040517f0e944a8ae3ee1160b2678930fb103c5ceadb14ecbb4c16e311d7402f7011322c90600090a16139e4565b5050505b601b546017546139f49190614bd5565b600003613a08575050505050505050613b3d565b6011546021546001600160a01b0391821661010090910490911603613a34575050505050505050613b3d565b6010546040516370a0823160e01b81523060048201526001600160a01b0391821691635c11d79591908816906370a0823190602401602060405180830381865afa158015613a86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aaa9190614b93565b6000602430426040518663ffffffff1660e01b8152600401613ad0959493929190614d69565b600060405180830381600087803b158015613aea57600080fd5b505af1925050508015613afb575060015b613b3457604051600181527f6c37756e80daba6f4df0d5bfa6cddadfe23601acc1a27dc8d4aa427de91467889060200160405180910390a15b50505050505050505b50506013805460ff19169055565b6001600160a01b038816600090815260016020526040902054613b6f908790614bc2565b6001600160a01b0389166000908152600160205260408120919091558515613cd95760008515613bbd57601a54601b54601954613bac9190614bd5565b613bb69190614bd5565b9050613c37565b601754601654601554613bd09190614bd5565b613bda9190614bd5565b602354909150600160b81b900460ff1615613c3757600954881115613c375760405162461bcd60e51b81526020600482015260136024820152721bdd995c881b585e08189d5e48185b5bdd5b9d606a1b604482015260640161138e565b6000612710613c46838b614c77565b613c509190614ca7565b90508015613c6f57613c628184614bd5565b9250613c6f8b30836146fc565b600087613c98576127106018548b613c879190614c77565b613c919190614ca7565b9050613cb6565b612710601c548b613ca99190614c77565b613cb39190614ca7565b90505b8015613cd557613cc68185614bd5565b9350613cd58c61dead836146fc565b5050505b838015613cff57506001600160a01b0389166000908152600c602052604090205460ff16155b8015613d2457506001600160a01b0388166000908152600c602052604090205460ff16155b15613d67576000612710602d5489613d3c9190614c77565b613d469190614ca7565b90508015613d6557613d588183614bd5565b9150613d658a30836146fc565b505b828015613d8d57506001600160a01b0389166000908152600c602052604090205460ff16155b8015613db257506001600160a01b0388166000908152600c602052604090205460ff16155b15613df5576000612710602e5489613dca9190614c77565b613dd49190614ca7565b90508015613df357613de68183614bd5565b9150613df38a30836146fc565b505b818015613e1b57506001600160a01b0389166000908152600c602052604090205460ff16155b8015613e4057506001600160a01b0388166000908152600c602052604090205460ff16155b15613e85576000612710602f5489613e589190614c77565b613e629190614ca7565b90508015613e8357613e748183614bd5565b9150613e838a61dead836146fc565b505b6001600160a01b0388166000908152600e602052604090205460ff16158015613eb75750602354600160c01b900460ff165b15613f3557600a546001600160a01b0389166000908152600160205260409020548290613ee5908a90614bd5565b613eef9190614bc2565b1115613f355760405162461bcd60e51b81526020600482015260156024820152741bdd995c881b585e081dd85b1b195d081b1a5b5a5d605a1b604482015260640161138e565b613f4489896134c6848b614bc2565b505050505050505050565b43603954603854613f609190614bd5565b1115613f695750565b6021546040516370a0823160e01b81523060048201526101009091046001600160a01b03169060009082906370a0823190602401602060405180830381865afa158015613fba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fde9190614b93565b9050603754811015613fef57505050565b602354604080516318160ddd60e01b815290516001600160a01b039092169160009183916318160ddd916004808201926020929091908290030181865afa15801561403e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140629190614b93565b603354909150600090819081908180805a6040516370a0823160e01b81523060048201529091506001600160a01b038c16906370a0823190602401602060405180830381865afa1580156140ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140de9190614b93565b6011546023546040516370a0823160e01b81526001600160a01b039182166004820152929c506000929116906370a0823190602401602060405180830381865afa158015614130573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141549190614b93565b90505b8c8410801561416557508483105b156143f95784603654106141795760006036555b60336036548154811061418e5761418e614b7d565b6000918252602090912001546040516370a0823160e01b81526001600160a01b03918216600482018190529950908b16906370a0823190602401602060405180830381865afa1580156141e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142099190614b93565b965060008711801561423457506001600160a01b03881660009081526035602052604090205460ff16155b156143b75788614244888d614c77565b61424e9190614ca7565b955060008961425d8984614c77565b6142679190614ca7565b9050603a548110156142c457603a54604080516001600160a01b038c168152602081018490528082019290925251600098507f9d1c4d86117dec85bf2a2b3b7bc515e3cd3c677dcd1578b97f0831d5621d8b079181900360600190a15b60008711801561433b57506040516370a0823160e01b815230600482015287906001600160a01b038f16906370a0823190602401602060405180830381865afa158015614315573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143399190614b93565b115b156143b55760405163a9059cbb60e01b81526001600160a01b038a81166004830152602482018990528e169063a9059cbb906044016020604051808303816000875af115801561438f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143b39190614bfe565b505b505b5a6143c29083614bc2565b6143cc9085614bd5565b93505a6036805491935060006143e183614c8e565b919050555082806143f190614c8e565b935050614157565b5050436038555050505050505050505050565b6000806000602360009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015614464573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144889190614b93565b90506000601060009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156144df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145039190614dc0565b6001600160a01b031663017e7e586040518163ffffffff1660e01b8152600401602060405180830381865afa158015614540573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145649190614dc0565b60235460408051637464fc3d60e01b815290519293506001600160a01b0380851615159360009390911691637464fc3d9160048083019260209291908290030181865afa1580156145b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145dd9190614b93565b905081156146825780156146825760006145ff6145fa898b614c77565b614774565b9050600061460c83614774565b90508082111561467f5760006146228284614bc2565b61462c9088614c77565b614637906008614c77565b90506000614646836008614c77565b614651856011614c77565b61465b9190614bd5565b90506146678183614ca7565b9850881561467c576146798989614bd5565b97505b50505b50505b600061468e898c614bc2565b9050846000036146b9576103e86146a86145fa8c84614c77565b6146b29190614bc2565b96506146ee565b6146eb896146c78784614c77565b6146d19190614ca7565b896146dc888e614c77565b6146e69190614ca7565b6147e3565b96505b505050505094509492505050565b6001600160a01b038216600090815260016020526040902054614720908290614bd5565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612a3c9085815260200190565b600060038211156147d5575080600061478e600283614ca7565b614799906001614bd5565b90505b818110156147cf579050806002816147b48186614ca7565b6147be9190614bd5565b6147c89190614ca7565b905061479c565b50919050565b8115611a5357506001919050565b60008183106147f257816147f4565b825b9392505050565b828054828255906000526020600020908101928215614850579160200282015b8281111561485057825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019061481b565b5061485c929150614860565b5090565b5b8082111561485c5760008155600101614861565b6001600160a01b0381168114611e0757600080fd5b60006020828403121561489c57600080fd5b81356147f481614875565b8015158114611e0757600080fd5b600080604083850312156148c857600080fd5b82356148d381614875565b915060208301356148e3816148a7565b809150509250929050565b60006020828403121561490057600080fd5b5035919050565b602081526000825180602084015260005b818110156149355760208186018101516040868401015201614918565b506000604082850101526040601f19601f83011684010191505092915050565b60006020828403121561496757600080fd5b81356147f4816148a7565b6000806040838503121561498557600080fd5b823561499081614875565b946020939093013593505050565b60008083601f8401126149b057600080fd5b50813567ffffffffffffffff8111156149c857600080fd5b6020830191508360208260051b85010111156149e357600080fd5b9250929050565b6000806000604084860312156149ff57600080fd5b833567ffffffffffffffff811115614a1657600080fd5b614a228682870161499e565b9094509250506020840135614a36816148a7565b809150509250925092565b60008060208385031215614a5457600080fd5b823567ffffffffffffffff811115614a6b57600080fd5b614a778582860161499e565b90969095509350505050565b600080600060608486031215614a9857600080fd5b8335614aa381614875565b92506020840135614ab381614875565b929592945050506040919091013590565b600080600060608486031215614ad957600080fd5b8335614ae481614875565b9250602084013591506040840135614a3681614875565b60008060408385031215614b0e57600080fd5b8235614b1981614875565b915060208301356148e381614875565b60208082526006908201526510b7bbb732b960d11b604082015260600190565b600181811c90821680614b5d57607f821691505b6020821081036147cf57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600060208284031215614ba557600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156115c1576115c1614bac565b808201808211156115c1576115c1614bac565b634e487b7160e01b600052604160045260246000fd5b600060208284031215614c1057600080fd5b81516147f4816148a7565b80516001600160701b0381168114611a5357600080fd5b600080600060608486031215614c4757600080fd5b614c5084614c1b565b9250614c5e60208501614c1b565b9150604084015163ffffffff81168114614a3657600080fd5b80820281158282048414176115c1576115c1614bac565b600060018201614ca057614ca0614bac565b5060010190565b600082614cc457634e487b7160e01b600052601260045260246000fd5b500490565b600060a0820187835286602084015260a0604084015280865180835260c08501915060208801925060005b81811015614d1b5783516001600160a01b0316835260209384019390920191600101614cf4565b50506001600160a01b039590951660608401525050608001529392505050565b600080600060608486031215614d5057600080fd5b5050815160208301516040909301519094929350919050565b600060a0820187835286602084015260a0604084015280865480835260c085019150876000526020600020925060005b81811015614d1b5783546001600160a01b0316835260019384019360209093019201614d99565b600060208284031215614dd257600080fd5b81516147f48161487556fea26469706673582212209d40a2b1f42eae1dd13067f53cad4569e4d3c1e25196ca0984a240988c1283a464736f6c634300081d0033608060405234801561001057600080fd5b5060405161014738038061014783398101604081905261002f916100a8565b60405163095ea7b360e01b815233600482015260001960248201526001600160a01b0382169063095ea7b3906044016020604051808303816000875af115801561007d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100a191906100d8565b50506100fa565b6000602082840312156100ba57600080fd5b81516001600160a01b03811681146100d157600080fd5b9392505050565b6000602082840312156100ea57600080fd5b815180151581146100d157600080fd5b603f806101086000396000f3fe6080604052600080fdfea26469706673582212203fe8bfc7a6de61434aee6639b2aa407dd50efc17c72dc1cbdf9319804494652564736f6c634300081d0033
Deployed Bytecode
0x6080604052600436106106865760003560e01c8063795947361161035f578063acb2ad6f116101d1578063d285e6ab11610102578063e5c2b0a6116100a0578063eb10b7411161007a578063eb10b741146112f8578063ef6e4f171461130e578063f2fde38b14611324578063fa3c49471461134457600080fd5b8063e5c2b0a614611298578063e82bef29146112b8578063ea10510e146112d857600080fd5b8063dac1dcfe116100dc578063dac1dcfe14611202578063dd62ed3e1461121c578063e32759cf14611262578063e5a6b10f1461127857600080fd5b8063d285e6ab146111ab578063d5986433146111c1578063d710569b146111e257600080fd5b8063bfac5ee01161016f578063c213d62d11610149578063c213d62d14611124578063c92d567e14611144578063ce0192f914611165578063ce4d9f151461117b57600080fd5b8063bfac5ee0146110ce578063bfc3137e146110ee578063c0aa931e1461110457600080fd5b8063b9fbc49d116101ab578063b9fbc49d14611052578063bba30f8f14611068578063bd25bf2914611088578063be4fe9a5146110b857600080fd5b8063acb2ad6f14611005578063adc7955d1461101b578063b02d757f1461103157600080fd5b80638e1e0838116102ab5780639cc0e3c711610249578063a842486111610223578063a842486114610f8f578063a9059cbb14610faf578063aa4bde2814610fcf578063aa582b4214610fe557600080fd5b80639cc0e3c714610f2e578063a1cea43d14610f4e578063a23270d714610f6e57600080fd5b8063948df71411610285578063948df71414610ecf57806395d89b4114610eee57806395e3667914610f03578063992db38f14610f1957600080fd5b80638e1e083814610e795780638f02bb5b14610e995780638f6cd17d14610eb957600080fd5b806385dc30041161031857806388e765ff116102f257806388e765ff14610e105780638c2fc7ad14610e265780638d84917514610e465780638da5cb5b14610e5b57600080fd5b806385dc300414610db55780638691752414610dd55780638718b24f14610deb57600080fd5b80637959473614610cfb57806379dc880c14610d1b5780637c5ee8e914610d3b5780637db1342c14610d5057806381d09def14610d705780638322fff214610d9057600080fd5b80632dab693f116104f85780634a9a77401161044457806363d27d99116103e2578063697cfc19116103bc578063697cfc1914610c9b5780636b61136814610cb057806370a0823114610cc6578063715018a614610ce657600080fd5b806363d27d9914610c415780636402511e14610c6157806369768b5014610c8157600080fd5b80635a7ba73c1161041e5780635a7ba73c14610bca578063605324f214610beb5780636108a3db14610c0b578063621823e614610c2b57600080fd5b80634a9a774014610b745780634d5ce03814610b94578063553193ca14610bb457600080fd5b80633c11100d116104b15780634188bf5a1161048b5780634188bf5a14610afe5780634482004e14610b1e5780634672f7c514610b3457806346c123b614610b5457600080fd5b80633c11100d14610a715780633ccfdbcd14610aa157806340aa81fe14610ace57600080fd5b80632dab693f146109e0578063313ce567146109f657806335c9608914610a0b5780633b1cd18714610a255780633bb82eb614610a3b5780633bfe62ca14610a5b57600080fd5b806314a432c9116105d257806318d128551161057057806320ae218a1161054a57806320ae218a146109745780632171dcc91461098a57806323b872dd146109aa578063255412d9146109ca57600080fd5b806318d12855146109075780631dbbaebd1461091c578063206c17bb1461093c57600080fd5b8063172246fc116105ac578063172246fc146108a357806317417bb8146108bd57806318160ddd146108d35780631846a5a4146108e857600080fd5b806314a432c914610849578063150e4c471461086957806315d07d821461088957600080fd5b8063060e304e1161063f57806307313d8d1161061957806307313d8d146107d057806307c3adf0146107f0578063095ea7b3146108145780630f890b861461083457600080fd5b8063060e304e14610779578063063be69e1461079957806306fdde03146107ae57600080fd5b806301339c211461069257806301873d8f146106a957806301986fad146106ee57806303da2b231461071e57806304c23ffe1461073f57806305833c2b1461075957600080fd5b3661068d57005b600080fd5b34801561069e57600080fd5b506106a7611364565b005b3480156106b557600080fd5b506106d96106c436600461488a565b60256020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b3480156106fa57600080fd5b506106d961070936600461488a565b600c6020526000908152604090205460ff1681565b34801561072a57600080fd5b506023546106d990600160c01b900460ff1681565b34801561074b57600080fd5b50602b546106d99060ff1681565b34801561076557600080fd5b506106a76107743660046148b5565b6113dc565b34801561078557600080fd5b506106a76107943660046148ee565b611431565b3480156107a557600080fd5b506106a76114a1565b3480156107ba57600080fd5b506107c36114da565b6040516106e59190614907565b3480156107dc57600080fd5b506106a76107eb366004614955565b61156c565b3480156107fc57600080fd5b5061080660175481565b6040519081526020016106e5565b34801561082057600080fd5b506106d961082f366004614972565b6115b0565b34801561084057600080fd5b506106a76115c7565b34801561085557600080fd5b506106a76108643660046148ee565b611600565b34801561087557600080fd5b506106a76108843660046149ea565b61162f565b34801561089557600080fd5b506021546106d99060ff1681565b3480156108af57600080fd5b50601f546106d99060ff1681565b3480156108c957600080fd5b5061080660205481565b3480156108df57600080fd5b50600f54610806565b3480156108f457600080fd5b506026546106d990610100900460ff1681565b34801561091357600080fd5b506106a76116c6565b34801561092857600080fd5b506106a7610937366004614a41565b6116f7565b34801561094857600080fd5b5060105461095c906001600160a01b031681565b6040516001600160a01b0390911681526020016106e5565b34801561098057600080fd5b50610806603a5481565b34801561099657600080fd5b506106a76109a53660046148b5565b611811565b3480156109b657600080fd5b506106d96109c5366004614a83565b611866565b3480156109d657600080fd5b5061080660185481565b3480156109ec57600080fd5b5061080660085481565b348015610a0257600080fd5b50600754610806565b348015610a1757600080fd5b506026546106d99060ff1681565b348015610a3157600080fd5b50610806602e5481565b348015610a4757600080fd5b506106a7610a563660046148ee565b6118fd565b348015610a6757600080fd5b5061080660195481565b348015610a7d57600080fd5b506106d9610a8c36600461488a565b60126020526000908152604090205460ff1681565b348015610aad57600080fd5b50610806610abc36600461488a565b601d6020526000908152604090205481565b348015610ada57600080fd5b506106d9610ae936600461488a565b600e6020526000908152604090205460ff1681565b348015610b0a57600080fd5b5060235461095c906001600160a01b031681565b348015610b2a57600080fd5b5061080660325481565b348015610b4057600080fd5b506106a7610b4f36600461488a565b61192c565b348015610b6057600080fd5b506106a7610b6f366004614955565b6119e5565b348015610b8057600080fd5b5060145461095c906001600160a01b031681565b348015610ba057600080fd5b50610806610baf36600461488a565b611a22565b348015610bc057600080fd5b5061080660225481565b348015610bd657600080fd5b506023546106d990600160a81b900460ff1681565b348015610bf757600080fd5b506106a7610c063660046148ee565b611a58565b348015610c1757600080fd5b506106a7610c263660046149ea565b611adf565b348015610c3757600080fd5b5061080660395481565b348015610c4d57600080fd5b506106a7610c5c3660046148ee565b611bbf565b348015610c6d57600080fd5b506106a7610c7c3660046148ee565b611c1d565b348015610c8d57600080fd5b50600b546106d99060ff1681565b348015610ca757600080fd5b506106a7611c4c565b348015610cbc57600080fd5b50610806601c5481565b348015610cd257600080fd5b50610806610ce136600461488a565b611c85565b348015610cf257600080fd5b506106a7611d2d565b348015610d0757600080fd5b506106a7610d16366004614955565b611da1565b348015610d2757600080fd5b506106a7610d363660046148ee565b611e0a565b348015610d4757600080fd5b506106a7611e7b565b348015610d5c57600080fd5b506106a7610d6b3660046148ee565b611eed565b348015610d7c57600080fd5b506106a7610d8b366004614a41565b611f1c565b348015610d9c57600080fd5b5060215461095c9061010090046001600160a01b031681565b348015610dc157600080fd5b506106a7610dd036600461488a565b61212a565b348015610de157600080fd5b50610806602a5481565b348015610df757600080fd5b5060135461095c9061010090046001600160a01b031681565b348015610e1c57600080fd5b5061080660095481565b348015610e3257600080fd5b506106a7610e413660046148b5565b6121e3565b348015610e5257600080fd5b506106a7612238565b348015610e6757600080fd5b506000546001600160a01b031661095c565b348015610e8557600080fd5b5060315461095c906001600160a01b031681565b348015610ea557600080fd5b506106a7610eb43660046148ee565b61226e565b348015610ec557600080fd5b5061080660295481565b348015610edb57600080fd5b506028546106d990610100900460ff1681565b348015610efa57600080fd5b506107c36122e1565b348015610f0f57600080fd5b50610806601e5481565b348015610f2557600080fd5b506106a76122f0565b348015610f3a57600080fd5b5061095c610f493660046148ee565b61235f565b348015610f5a57600080fd5b5060045461095c906001600160a01b031681565b348015610f7a57600080fd5b506023546106d990600160b81b900460ff1681565b348015610f9b57600080fd5b506106a7610faa3660046148b5565b612389565b348015610fbb57600080fd5b506106d9610fca366004614972565b6123de565b348015610fdb57600080fd5b50610806600a5481565b348015610ff157600080fd5b506106a7611000366004614a41565b6123eb565b34801561101157600080fd5b50610806602d5481565b34801561102757600080fd5b50610806601a5481565b34801561103d57600080fd5b506023546106d990600160b01b900460ff1681565b34801561105e57600080fd5b5061080660165481565b34801561107457600080fd5b506106a76110833660046148ee565b612560565b34801561109457600080fd5b506106d96110a336600461488a565b600d6020526000908152604090205460ff1681565b3480156110c457600080fd5b50610806601b5481565b3480156110da57600080fd5b506106a76110e9366004614ac4565b61258f565b3480156110fa57600080fd5b50610806602f5481565b34801561111057600080fd5b506106a761111f3660046148ee565b612691565b34801561113057600080fd5b506106a761113f3660046148ee565b6126c0565b34801561115057600080fd5b506023546106d990600160a01b900460ff1681565b34801561117157600080fd5b5061080660155481565b34801561118757600080fd5b506111906126ef565b604080519384526020840192909252908201526060016106e5565b3480156111b757600080fd5b50610806602c5481565b3480156111cd57600080fd5b506023546106d990600160c81b900460ff1681565b3480156111ee57600080fd5b506106a76111fd36600461488a565b612823565b34801561120e57600080fd5b506028546106d99060ff1681565b34801561122857600080fd5b50610806611237366004614afb565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561126e57600080fd5b5061080660275481565b34801561128457600080fd5b5060115461095c906001600160a01b031681565b3480156112a457600080fd5b506106a76112b33660046148ee565b61286f565b3480156112c457600080fd5b5060035461095c906001600160a01b031681565b3480156112e457600080fd5b506106a76112f3366004614955565b6128e4565b34801561130457600080fd5b5061080660375481565b34801561131a57600080fd5b5061080660305481565b34801561133057600080fd5b506106a761133f36600461488a565b612921565b34801561135057600080fd5b506028546106d99062010000900460ff1681565b6000546001600160a01b031633146113975760405162461bcd60e51b815260040161138e90614b29565b60405180910390fd5b602254156113d65760405162461bcd60e51b815260206004820152600c60248201526b30b63932b0b23c9037b832b760a11b604482015260640161138e565b43602255565b6000546001600160a01b031633146114065760405162461bcd60e51b815260040161138e90614b29565b6001600160a01b03919091166000908152603560205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461145b5760405162461bcd60e51b815260040161138e90614b29565b8060000361149c5760405162461bcd60e51b815260206004820152600e60248201526d067726561746572207468616e20360941b604482015260640161138e565b602955565b6000546001600160a01b031633146114cb5760405162461bcd60e51b815260040161138e90614b29565b6023805460ff60b81b19169055565b6060600580546114e990614b49565b80601f016020809104026020016040519081016040528092919081815260200182805461151590614b49565b80156115625780601f1061153757610100808354040283529160200191611562565b820191906000526020600020905b81548152906001019060200180831161154557829003601f168201915b5050505050905090565b6000546001600160a01b031633146115965760405162461bcd60e51b815260040161138e90614b29565b602680549115156101000261ff0019909216919091179055565b60006115bd3384846129e7565b5060015b92915050565b6000546001600160a01b031633146115f15760405162461bcd60e51b815260040161138e90614b29565b6023805460ff60c81b19169055565b6000546001600160a01b0316331461162a5760405162461bcd60e51b815260040161138e90614b29565b600855565b6000546001600160a01b031633146116595760405162461bcd60e51b815260040161138e90614b29565b60005b828110156116c05781600c600086868581811061167b5761167b614b7d565b9050602002016020810190611690919061488a565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905560010161165c565b50505050565b6000546001600160a01b031633146116f05760405162461bcd60e51b815260040161138e90614b29565b6000603255565b6000546001600160a01b031633146117215760405162461bcd60e51b815260040161138e90614b29565b60005b8181101561180c576023546000906001600160a01b03166370a0823185858581811061175257611752614b7d565b9050602002016020810190611767919061488a565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156117ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117cf9190614b93565b1115611804576118048383838181106117ea576117ea614b7d565b90506020020160208101906117ff919061488a565b612a49565b600101611724565b505050565b6000546001600160a01b0316331461183b5760405162461bcd60e51b815260040161138e90614b29565b6001600160a01b03919091166000908152602560205260409020805460ff1916911515919091179055565b6000611873848484612b1a565b6001600160a01b0384166000908152600260209081526040808320338452909152902054600019146118f3576001600160a01b03841660009081526002602090815260408083203384529091529020546118ce908390614bc2565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b5060019392505050565b6000546001600160a01b031633146119275760405162461bcd60e51b815260040161138e90614b29565b603955565b6000546001600160a01b031633146119565760405162461bcd60e51b815260040161138e90614b29565b803b63ffffffff16156119ab5760405162461bcd60e51b815260206004820152601a60248201527f66756e6461646472657373206973206120636f6e747261637420000000000000604482015260640161138e565b600480546001600160a01b039092166001600160a01b0319909216821790556000908152600c60205260409020805460ff19166001179055565b6000546001600160a01b03163314611a0f5760405162461bcd60e51b815260040161138e90614b29565b602b805460ff1916911515919091179055565b6001600160a01b0381166000908152600d602052604081205460ff1615611a4b57506001919050565b506000919050565b919050565b6000546001600160a01b03163314611a825760405162461bcd60e51b815260040161138e90614b29565b62030d408110158015611a985750621e84808111155b611ada5760405162461bcd60e51b8152602060048201526013602482015272746f6f2068696768206f7220746f6f206c6f7760681b604482015260640161138e565b602c55565b6000546001600160a01b03163314611b095760405162461bcd60e51b815260040161138e90614b29565b602354600160b01b900460ff16611b585760405162461bcd60e51b81526020600482015260136024820152721c995dd85c99131a5cdd08191a5cd8589b1959606a1b604482015260640161138e565b60005b828110156116c05781600d6000868685818110611b7a57611b7a614b7d565b9050602002016020810190611b8f919061488a565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055600101611b5b565b6003546001600160a01b0316331480611be257506000546001600160a01b031633145b611c185760405162461bcd60e51b815260206004820152600760248201526610a33ab73232b960c91b604482015260640161138e565b603a55565b6000546001600160a01b03163314611c475760405162461bcd60e51b815260040161138e90614b29565b602a55565b6000546001600160a01b03163314611c765760405162461bcd60e51b815260040161138e90614b29565b6023805460ff60c01b19169055565b6023546000906001600160a01b038381169116148015611caf57506023546001600160a01b031633145b8015611cbd575060265460ff165b15611d11576023546001600160a01b0316600090815260016020526040902054611d115760405162461bcd60e51b81526020600482015260056024820152642173796e6360d81b604482015260640161138e565b506001600160a01b031660009081526001602052604090205490565b6000546001600160a01b03163314611d575760405162461bcd60e51b815260040161138e90614b29565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314611dcb5760405162461bcd60e51b815260040161138e90614b29565b8015611e0157601c54601b54601a54601954611de79190614bd5565b611df19190614bd5565b611dfb9190614bd5565b602d5550565b6000602d555b50565b6000546001600160a01b03163314611e345760405162461bcd60e51b815260040161138e90614b29565b6109c4811115611e765760405162461bcd60e51b815260206004820152600d60248201526c616464204c70203e203235202160981b604482015260640161138e565b602e55565b6000546001600160a01b03163314611ea55760405162461bcd60e51b815260040161138e90614b29565b600060225411611ee65760405162461bcd60e51b815260206004820152600c60248201526b185b1c9958591e481dd85a5d60a21b604482015260640161138e565b6000602255565b6000546001600160a01b03163314611f175760405162461bcd60e51b815260040161138e90614b29565b600a55565b6000546001600160a01b03163314611f465760405162461bcd60e51b815260040161138e90614b29565b808067ffffffffffffffff811115611f6057611f60614be8565b604051908082528060200260200182016040528015611f89578160200160208202803683370190505b508051611f9e916024916020909101906147fb565b5060005b8181101561201557838382818110611fbc57611fbc614b7d565b9050602002016020810190611fd1919061488a565b60248281548110611fe457611fe4614b7d565b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055600101611fa2565b50601154602480546001600160a01b039092169160009061203857612038614b7d565b6000918252602090912001546001600160a01b03161461209a5760405162461bcd60e51b815260206004820152601860248201527f646f6e742073757070726f742074686973207061746820310000000000000000604482015260640161138e565b60215461010090046001600160a01b031660246120b8600184614bc2565b815481106120c8576120c8614b7d565b6000918252602090912001546001600160a01b03161461180c5760405162461bcd60e51b815260206004820152601860248201527f646f6e742073757070726f742074686973207061746820320000000000000000604482015260640161138e565b6000546001600160a01b031633146121545760405162461bcd60e51b815260040161138e90614b29565b803b63ffffffff16156121a95760405162461bcd60e51b815260206004820152601a60248201527f66756e6461646472657373206973206120636f6e747261637420000000000000604482015260640161138e565b600380546001600160a01b039092166001600160a01b0319909216821790556000908152600c60205260409020805460ff19166001179055565b6000546001600160a01b0316331461220d5760405162461bcd60e51b815260040161138e90614b29565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146122625760405162461bcd60e51b815260040161138e90614b29565b601f805460ff19169055565b6000546001600160a01b031633146122985760405162461bcd60e51b815260040161138e90614b29565b6109c48111156122dc5760405162461bcd60e51b815260206004820152600f60248201526e7472616e73666572203e203235202160881b604482015260640161138e565b602d55565b6060600680546114e990614b49565b6000546001600160a01b0316331461231a5760405162461bcd60e51b815260040161138e90614b29565b603254156123595760405162461bcd60e51b815260206004820152600c60248201526b0737461727465644164644c560a41b604482015260640161138e565b43603255565b6024818154811061236f57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b031633146123b35760405162461bcd60e51b815260040161138e90614b29565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b60006115bd338484612b1a565b6000546001600160a01b031633146124155760405162461bcd60e51b815260040161138e90614b29565b602354600160c81b900460ff166124645760405162461bcd60e51b81526020600482015260136024820152721d185e0818da185b99d948191a5cd8589b1959606a1b604482015260640161138e565b8181600081811061247757612477614b7d565b6020029190910135601555508181600181811061249657612496614b7d565b602002919091013560165550818160028181106124b5576124b5614b7d565b602002919091013560175550818160038181106124d4576124d4614b7d565b602002919091013560185550818160048181106124f3576124f3614b7d565b6020029190910135601955508181600581811061251257612512614b7d565b6020029190910135601a55508181600681811061253157612531614b7d565b6020029190910135601b55508181600781811061255057612550614b7d565b6020029190910135601c55505050565b6000546001600160a01b0316331461258a5760405162461bcd60e51b815260040161138e90614b29565b602f55565b6003546001600160a01b03163314806125b257506000546001600160a01b031633145b6125e85760405162461bcd60e51b815260206004820152600760248201526610a33ab73232b960c91b604482015260640161138e565b60405163a9059cbb60e01b81526001600160a01b0382811660048301526024820184905284169063a9059cbb906044016020604051808303816000875af1158015612637573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061265b9190614bfe565b506040516001600160a01b038216904780156108fc02916000818181858888f193505050501580156116c0573d6000803e3d6000fd5b6000546001600160a01b031633146126bb5760405162461bcd60e51b815260040161138e90614b29565b600955565b6000546001600160a01b031633146126ea5760405162461bcd60e51b815260040161138e90614b29565b603755565b600080600080602360009054906101000a90046001600160a01b03169050600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561274e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127729190614c32565b506011546001600160701b039283169450911691506001600160a01b0316308110156127a3578296508195506127aa565b8196508295505b6023546040516370a0823160e01b81526001600160a01b039182166004820152908216906370a0823190602401602060405180830381865afa1580156127f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128189190614b93565b945050505050909192565b6000546001600160a01b0316331461284d5760405162461bcd60e51b815260040161138e90614b29565b603180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146128995760405162461bcd60e51b815260040161138e90614b29565b60038111156128df5760405162461bcd60e51b81526020600482015260126024820152716e657756616c7565206d757374203c3d203360701b604482015260640161138e565b602755565b6000546001600160a01b0316331461290e5760405162461bcd60e51b815260040161138e90614b29565b6026805460ff1916911515919091179055565b6000546001600160a01b0316331461294b5760405162461bcd60e51b815260040161138e90614b29565b6001600160a01b03811661298c5760405162461bcd60e51b815260206004820152600860248201526706e657720697320360c41b604482015260640161138e565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b803b8015612a55575050565b6001600160a01b0382166000908152603460205260408120549003612b16576033541580612ab45750816001600160a01b03166033600081548110612a9c57612a9c614b7d565b6000918252602090912001546001600160a01b031614155b15612b1657603380546001600160a01b0384166000818152603460205260408120839055600183018455929092527f82a75bdeeae8604d839476ae9efd8b0e15aa447e21bfd7f41283bb54e22c9a820180546001600160a01b03191690911790555b5050565b6001600160a01b03831660009081526001602052604090205481811015612b765760405162461bcd60e51b815260206004820152601060248201526f0c4c2d8c2dcc6ca9cdee88adcdeeaced60831b604482015260640161138e565b6000612b8185611a22565b1115612bc05760405162461bcd60e51b815260206004820152600e60248201526d6973526577617264203e2030202160901b604482015260640161138e565b602354600090819081908190819081906001600160a01b038a81169116148015612bf957503360009081526025602052604090205460ff165b8015612c0d5750326001600160a01b038b16145b15612c4b57612c1b88613256565b9050600081118015612c32575063ffffffff8a3b16155b15612c4b576028805461ff001916610100179055600191505b6023546000906001600160a01b03908116908c1603612c8b57612c6d896132c1565b90508015612c8b576028805462ff0000191662010000179055600193505b6001600160a01b038b166000908152600c602052604090205460ff16158015612ccd57506001600160a01b038a166000908152600c602052604090205460ff16155b8015612ce05750602654610100900460ff165b8015612cee57506000602754115b8015612d3457506001600160a01b038b1660009081526012602052604090205460ff1680612d3457506001600160a01b038a1660009081526012602052604090205460ff165b15612dae576000805b602754811015612d915760408051602081018390529081018c90524260608201526080016040516020818303038152906040528051906020012060001c9150612d888d836001613390565b50600101612d3d565b50602754612da0906001614c77565b612daa908b614bc2565b9950505b602254158015612dc75750602354600160a01b900460ff165b15612ea6576001600160a01b038b166000908152600c602052604090205460ff16158015612e0e57506001600160a01b038a166000908152600c602052604090205460ff16155b8015612e3357506001600160a01b038b1660009081526012602052604090205460ff16155b8015612e5857506001600160a01b038a1660009081526012602052604090205460ff16155b15612ea657893b63ffffffff1615612ea65760405162461bcd60e51b8152602060048201526011602482015270063616e7420616464206f74686572206c7607c1b604482015260640161138e565b6001600160a01b038b1660009081526012602052604090205460ff1680612ee557506001600160a01b038a1660009081526012602052604090205460ff165b156131d0576001600160a01b038b166000908152600c602052604090205460ff16158015612f2c57506001600160a01b038a166000908152600c602052604090205460ff16155b156131aa57602354600160a01b900460ff1615612f965760225415158080612f5e57506032546000108015612f5e5750835b612f945760405162461bcd60e51b815260206004820152600760248201526670617573696e6760c81b604482015260640161138e565b505b602354600160a01b900460ff168015612fb85750602354600160a81b900460ff165b8015612fd25750600854602254612fcf9190614bd5565b43105b8015612ff757506001600160a01b038a1660009081526012602052604090205460ff16155b15613020576001600160a01b038a166000908152600d60205260409020805460ff191660011790555b601f5460ff16801561304a57506001600160a01b038b1660009081526012602052604090205460ff165b801561306457506020546022546130619190614bd5565b43105b156130c357326000908152601d6020526040902054431461309657326000908152601d602052604090204390556130c3565b601e80549060006130a683614c8e565b91905055506130b68b8b8b613445565b5050505050505050505050565b6001600160a01b038a1660009081526012602052604090205460ff16156131945760135460ff161580156130f5575082155b156131945730600090815260016020526040902054602a54811115613192576000601a54601b546019546016546017546015546131329190614bd5565b61313c9190614bd5565b6131469190614bd5565b6131509190614bd5565b61315a9190614bd5565b9050600060646029548d61316e9190614c77565b6131789190614ca7565b9050828111156131855750815b61318f81836134cb565b50505b505b821580156131a0575083155b156131aa57600196505b6001600160a01b038a1660009081526012602052604090205460ff16156131d057600195505b6001600160a01b038b1660009081526012602052604090205460ff1615801561321257506001600160a01b038a1660009081526012602052604090205460ff16155b1561321c57600194505b61322c8b8b8b8a8a8a898b613b4b565b6001600160a01b038b1630146130b657851561324b5761324b8b612a49565b6130b6602c54613f4f565b6000806000806132646126ef565b9250925092506000808411801561327b5750600083115b15613298578261328b8588614c77565b6132959190614ca7565b90505b6132a28185614bd5565b82106132b8576132b48287868661440c565b5094505b50505050919050565b60008060006132ce6126ef565b92505091508181116133895760235484906132f1906001600160a01b0316611c85565b6132fb9190614bc2565b602360009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561334e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133729190614b93565b61337c9086614c77565b6133869190614ca7565b92505b5050919050565b6001600160a01b0383166000908152600160205260408120805483919083906133ba908490614bc2565b90915550506001600160a01b038316600090815260016020526040812080548492906133e7908490614bd5565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161343391815260200190565b60405180910390a35060019392505050565b6001600160a01b038316600090815260016020526040902054613469908290614bc2565b6001600160a01b038416600090815260016020526040812091909155606461349283605a614c77565b61349c9190614ca7565b6003549091506134b79085906001600160a01b0316836146fc565b6116c084846134c68486614bc2565b6146fc565b6013805460ff191660011790558015806134e3575081155b613b3d576000601654601a546134f99190614bd5565b9050600082600261350a8487614c77565b6135149190614ca7565b61351e9190614ca7565b9050600061352d600284614ca7565b6135379085614bc2565b6011546040805160028082526060820183529394506001600160a01b039092169260009291602083019080368337019050509050308160008151811061357f5761357f614b7d565b6001600160a01b0392831660209182029290920101526011548251911690829060019081106135b0576135b0614b7d565b6001600160a01b03928316602091820292909201015260105416635c11d7956135d9868a614bc2565b60135460405160e084901b6001600160e01b03191681526136139291600091879161010090046001600160a01b0316904290600401614cc9565b600060405180830381600087803b15801561362d57600080fd5b505af192505050801561363e575060015b61367757604051600081527f6c37756e80daba6f4df0d5bfa6cddadfe23601acc1a27dc8d4aa427de91467889060200160405180910390a15b6013546040516370a0823160e01b81526001600160a01b03610100909204821660048201526000918416906370a0823190602401602060405180830381865afa1580156136c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136ec9190614b93565b90508015613778576013546040516323b872dd60e01b81526101009091046001600160a01b039081166004830152306024830152604482018390528416906323b872dd906064016020604051808303816000875af1158015613752573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137769190614bfe565b505b60008460026137878985614c77565b6137919190614ca7565b61379b9190614ca7565b90506000856019546015546137b09190614bd5565b6137ba9085614c77565b6137c49190614ca7565b905080156138fc5760006137d9600283614ca7565b60035460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925087169063a9059cbb906044016020604051808303816000875af115801561382e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138529190614bfe565b506004546001600160a01b038088169163a9059cbb91166138738486614bc2565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156138be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138e29190614bfe565b5081603060008282546138f59190614bd5565b9091555050505b60008711801561390c5750600082115b156139e45760105460115460315460405162e8e33760e81b81523060048201526001600160a01b039283166024820152604481018b90526064810186905260006084820181905260a482015290821660c48201524260e482015291169063e8e3370090610104016060604051808303816000875af19250505080156139ae575060408051601f3d908101601f191682019092526139ab91810190614d3b565b60015b6139e0576040517f0e944a8ae3ee1160b2678930fb103c5ceadb14ecbb4c16e311d7402f7011322c90600090a16139e4565b5050505b601b546017546139f49190614bd5565b600003613a08575050505050505050613b3d565b6011546021546001600160a01b0391821661010090910490911603613a34575050505050505050613b3d565b6010546040516370a0823160e01b81523060048201526001600160a01b0391821691635c11d79591908816906370a0823190602401602060405180830381865afa158015613a86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aaa9190614b93565b6000602430426040518663ffffffff1660e01b8152600401613ad0959493929190614d69565b600060405180830381600087803b158015613aea57600080fd5b505af1925050508015613afb575060015b613b3457604051600181527f6c37756e80daba6f4df0d5bfa6cddadfe23601acc1a27dc8d4aa427de91467889060200160405180910390a15b50505050505050505b50506013805460ff19169055565b6001600160a01b038816600090815260016020526040902054613b6f908790614bc2565b6001600160a01b0389166000908152600160205260408120919091558515613cd95760008515613bbd57601a54601b54601954613bac9190614bd5565b613bb69190614bd5565b9050613c37565b601754601654601554613bd09190614bd5565b613bda9190614bd5565b602354909150600160b81b900460ff1615613c3757600954881115613c375760405162461bcd60e51b81526020600482015260136024820152721bdd995c881b585e08189d5e48185b5bdd5b9d606a1b604482015260640161138e565b6000612710613c46838b614c77565b613c509190614ca7565b90508015613c6f57613c628184614bd5565b9250613c6f8b30836146fc565b600087613c98576127106018548b613c879190614c77565b613c919190614ca7565b9050613cb6565b612710601c548b613ca99190614c77565b613cb39190614ca7565b90505b8015613cd557613cc68185614bd5565b9350613cd58c61dead836146fc565b5050505b838015613cff57506001600160a01b0389166000908152600c602052604090205460ff16155b8015613d2457506001600160a01b0388166000908152600c602052604090205460ff16155b15613d67576000612710602d5489613d3c9190614c77565b613d469190614ca7565b90508015613d6557613d588183614bd5565b9150613d658a30836146fc565b505b828015613d8d57506001600160a01b0389166000908152600c602052604090205460ff16155b8015613db257506001600160a01b0388166000908152600c602052604090205460ff16155b15613df5576000612710602e5489613dca9190614c77565b613dd49190614ca7565b90508015613df357613de68183614bd5565b9150613df38a30836146fc565b505b818015613e1b57506001600160a01b0389166000908152600c602052604090205460ff16155b8015613e4057506001600160a01b0388166000908152600c602052604090205460ff16155b15613e85576000612710602f5489613e589190614c77565b613e629190614ca7565b90508015613e8357613e748183614bd5565b9150613e838a61dead836146fc565b505b6001600160a01b0388166000908152600e602052604090205460ff16158015613eb75750602354600160c01b900460ff165b15613f3557600a546001600160a01b0389166000908152600160205260409020548290613ee5908a90614bd5565b613eef9190614bc2565b1115613f355760405162461bcd60e51b81526020600482015260156024820152741bdd995c881b585e081dd85b1b195d081b1a5b5a5d605a1b604482015260640161138e565b613f4489896134c6848b614bc2565b505050505050505050565b43603954603854613f609190614bd5565b1115613f695750565b6021546040516370a0823160e01b81523060048201526101009091046001600160a01b03169060009082906370a0823190602401602060405180830381865afa158015613fba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fde9190614b93565b9050603754811015613fef57505050565b602354604080516318160ddd60e01b815290516001600160a01b039092169160009183916318160ddd916004808201926020929091908290030181865afa15801561403e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140629190614b93565b603354909150600090819081908180805a6040516370a0823160e01b81523060048201529091506001600160a01b038c16906370a0823190602401602060405180830381865afa1580156140ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140de9190614b93565b6011546023546040516370a0823160e01b81526001600160a01b039182166004820152929c506000929116906370a0823190602401602060405180830381865afa158015614130573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141549190614b93565b90505b8c8410801561416557508483105b156143f95784603654106141795760006036555b60336036548154811061418e5761418e614b7d565b6000918252602090912001546040516370a0823160e01b81526001600160a01b03918216600482018190529950908b16906370a0823190602401602060405180830381865afa1580156141e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142099190614b93565b965060008711801561423457506001600160a01b03881660009081526035602052604090205460ff16155b156143b75788614244888d614c77565b61424e9190614ca7565b955060008961425d8984614c77565b6142679190614ca7565b9050603a548110156142c457603a54604080516001600160a01b038c168152602081018490528082019290925251600098507f9d1c4d86117dec85bf2a2b3b7bc515e3cd3c677dcd1578b97f0831d5621d8b079181900360600190a15b60008711801561433b57506040516370a0823160e01b815230600482015287906001600160a01b038f16906370a0823190602401602060405180830381865afa158015614315573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143399190614b93565b115b156143b55760405163a9059cbb60e01b81526001600160a01b038a81166004830152602482018990528e169063a9059cbb906044016020604051808303816000875af115801561438f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143b39190614bfe565b505b505b5a6143c29083614bc2565b6143cc9085614bd5565b93505a6036805491935060006143e183614c8e565b919050555082806143f190614c8e565b935050614157565b5050436038555050505050505050505050565b6000806000602360009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015614464573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144889190614b93565b90506000601060009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156144df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145039190614dc0565b6001600160a01b031663017e7e586040518163ffffffff1660e01b8152600401602060405180830381865afa158015614540573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145649190614dc0565b60235460408051637464fc3d60e01b815290519293506001600160a01b0380851615159360009390911691637464fc3d9160048083019260209291908290030181865afa1580156145b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145dd9190614b93565b905081156146825780156146825760006145ff6145fa898b614c77565b614774565b9050600061460c83614774565b90508082111561467f5760006146228284614bc2565b61462c9088614c77565b614637906008614c77565b90506000614646836008614c77565b614651856011614c77565b61465b9190614bd5565b90506146678183614ca7565b9850881561467c576146798989614bd5565b97505b50505b50505b600061468e898c614bc2565b9050846000036146b9576103e86146a86145fa8c84614c77565b6146b29190614bc2565b96506146ee565b6146eb896146c78784614c77565b6146d19190614ca7565b896146dc888e614c77565b6146e69190614ca7565b6147e3565b96505b505050505094509492505050565b6001600160a01b038216600090815260016020526040902054614720908290614bd5565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612a3c9085815260200190565b600060038211156147d5575080600061478e600283614ca7565b614799906001614bd5565b90505b818110156147cf579050806002816147b48186614ca7565b6147be9190614bd5565b6147c89190614ca7565b905061479c565b50919050565b8115611a5357506001919050565b60008183106147f257816147f4565b825b9392505050565b828054828255906000526020600020908101928215614850579160200282015b8281111561485057825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019061481b565b5061485c929150614860565b5090565b5b8082111561485c5760008155600101614861565b6001600160a01b0381168114611e0757600080fd5b60006020828403121561489c57600080fd5b81356147f481614875565b8015158114611e0757600080fd5b600080604083850312156148c857600080fd5b82356148d381614875565b915060208301356148e3816148a7565b809150509250929050565b60006020828403121561490057600080fd5b5035919050565b602081526000825180602084015260005b818110156149355760208186018101516040868401015201614918565b506000604082850101526040601f19601f83011684010191505092915050565b60006020828403121561496757600080fd5b81356147f4816148a7565b6000806040838503121561498557600080fd5b823561499081614875565b946020939093013593505050565b60008083601f8401126149b057600080fd5b50813567ffffffffffffffff8111156149c857600080fd5b6020830191508360208260051b85010111156149e357600080fd5b9250929050565b6000806000604084860312156149ff57600080fd5b833567ffffffffffffffff811115614a1657600080fd5b614a228682870161499e565b9094509250506020840135614a36816148a7565b809150509250925092565b60008060208385031215614a5457600080fd5b823567ffffffffffffffff811115614a6b57600080fd5b614a778582860161499e565b90969095509350505050565b600080600060608486031215614a9857600080fd5b8335614aa381614875565b92506020840135614ab381614875565b929592945050506040919091013590565b600080600060608486031215614ad957600080fd5b8335614ae481614875565b9250602084013591506040840135614a3681614875565b60008060408385031215614b0e57600080fd5b8235614b1981614875565b915060208301356148e381614875565b60208082526006908201526510b7bbb732b960d11b604082015260600190565b600181811c90821680614b5d57607f821691505b6020821081036147cf57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600060208284031215614ba557600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156115c1576115c1614bac565b808201808211156115c1576115c1614bac565b634e487b7160e01b600052604160045260246000fd5b600060208284031215614c1057600080fd5b81516147f4816148a7565b80516001600160701b0381168114611a5357600080fd5b600080600060608486031215614c4757600080fd5b614c5084614c1b565b9250614c5e60208501614c1b565b9150604084015163ffffffff81168114614a3657600080fd5b80820281158282048414176115c1576115c1614bac565b600060018201614ca057614ca0614bac565b5060010190565b600082614cc457634e487b7160e01b600052601260045260246000fd5b500490565b600060a0820187835286602084015260a0604084015280865180835260c08501915060208801925060005b81811015614d1b5783516001600160a01b0316835260209384019390920191600101614cf4565b50506001600160a01b039590951660608401525050608001529392505050565b600080600060608486031215614d5057600080fd5b5050815160208301516040909301519094929350919050565b600060a0820187835286602084015260a0604084015280865480835260c085019150876000526020600020925060005b81811015614d1b5783546001600160a01b0316835260019384019360209093019201614d99565b600060208284031215614dd257600080fd5b81516147f48161487556fea26469706673582212209d40a2b1f42eae1dd13067f53cad4569e4d3c1e25196ca0984a240988c1283a464736f6c634300081d0033
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)