BscScan - Sponsored slots available. Book your slot here!
BEP-20
Source Code
Overview
Max Total Supply
95,959,595,700,000,000NPL
Holders
77,573
Market
Price
$0.00 @ 0.000000 BNB
Onchain Market Cap
-
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
NPLTokenV2
Compiler Version
v0.8.28+commit.7893614a
Optimization Enabled:
Yes with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
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 NPLTokenV2 is IERC20, Ownable {
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
string private _name;
string private _symbol;
uint256 private _decimals;
mapping(address => bool) public _feeWhiteList;
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;
uint256 public _buyRewardFee;
uint256 public buy_burnFee;
uint256 public _sellRewardFee;
uint256 public sell_burnFee;
address public feeReceiverA;
address public feeReceiverB;
uint256 public feePercentA;
uint256 public feePercentB;
function setFeeReceiverA(address addr) external onlyOwner {
require(addr != address(0), "zero address");
feeReceiverA = addr;
}
function setFeeReceiverB(address addr) external onlyOwner {
require(addr != address(0), "zero address");
feeReceiverB = addr;
}
function completeCustoms(uint256[] calldata customs) external onlyOwner {
require(enableChangeTax, "tax change disabled");
_buyRewardFee = customs[1];
buy_burnFee = customs[2];
_sellRewardFee = customs[3];
sell_burnFee = customs[4];
feePercentA = customs[5];
feePercentB = customs[6];
require(
_buyRewardFee + buy_burnFee + feePercentA + feePercentB < 4900,
"fee too high"
);
require(
_sellRewardFee + sell_burnFee + feePercentA + feePercentB < 4900,
"fee too high"
);
}
mapping(address => uint256) public user2blocks;
uint256 public batchBots;
bool public currencyIsEth;
address public ETH;
uint256 public startTradeBlock;
uint256 public lpTokenMinAmount;
address public _mainPair;
modifier lockTheSwap() {
inSwap = true;
_;
inSwap = false;
}
bool public enableOffTrade;
bool public enableChangeTax;
address[] public rewardPath;
mapping(address => bool) public preSaleWhiteList;
mapping(address => uint256) public preSaleQuota;
bool public preSaleActive = true;
function setPreSaleWhiteList(address[] calldata addrs, bool status) external onlyOwner {
for (uint256 i = 0; i < addrs.length; i++) {
preSaleWhiteList[addrs[i]] = status;
}
}
function setPreSaleQuota(address addr, uint256 quota) external onlyOwner {
preSaleQuota[addr] = quota;
}
function setPreSaleQuotaBatch(address[] calldata addrs, uint256[] calldata quotas) external onlyOwner {
require(addrs.length == quotas.length, "length mismatch");
for (uint256 i = 0; i < addrs.length; i++) {
preSaleQuota[addrs[i]] = quotas[i];
}
}
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(
string[] memory stringParams,
address[] memory addressParams,
uint256[] memory numberParams,
bool[] memory boolParams
) {
_name = stringParams[0];
_symbol = stringParams[1];
_decimals = numberParams[0];
uint256 total = numberParams[1] * 10 ** _decimals;
_tTotal = total;
currency = addressParams[0];
ISwapRouter swapRouter = ISwapRouter(addressParams[1]);
address ReceiveAddress = addressParams[2];
ETH = addressParams[3];
feeReceiverA = addressParams[4];
feeReceiverB = addressParams[5];
require(IERC20(ETH).totalSupply() > 0, "not token supply");
enableOffTrade = boolParams[0];
enableChangeTax = boolParams[1];
currencyIsEth = boolParams[2];
if (currencyIsEth) {
currency = swapRouter.WETH();
}
rewardPath = [currency];
if (ETH != currency) {
rewardPath.push(ETH);
}
_swapRouter = swapRouter;
_allowances[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;
_buyRewardFee = numberParams[2];
buy_burnFee = numberParams[3];
_sellRewardFee = numberParams[4];
sell_burnFee = numberParams[5];
feePercentA = numberParams[6];
feePercentB = numberParams[7];
require(
_buyRewardFee + buy_burnFee + feePercentA + feePercentB < 4900,
"fee too high"
);
require(
_sellRewardFee + sell_burnFee + feePercentA + feePercentB < 4900,
"fee too high"
);
// Distribute tokens: 95% locked in contract as reserve, 5% to deployer for LP
uint256 lpAmount = (total * 5) / 100; // 5% for liquidity pool
uint256 reserveAmount = total - lpAmount; // 95% locked as reserve
_balances[address(this)] = reserveAmount; // 95% locked in contract
emit Transfer(address(0), address(this), reserveAmount);
_balances[msg.sender] = lpAmount; // 5% to deployer for LP
emit Transfer(address(0), msg.sender, lpAmount);
_allowances[msg.sender][address(swapRouter)] = MAX;
//require(currency < address(this),"??");
_feeWhiteList[address(this)] = true;
// _feeWhiteList[address(swapRouter)] = true;
_feeWhiteList[msg.sender] = true;
// Initialize daily release: 1/1000 of contract reserve per day
dailyReleaseReceiver = ReceiveAddress; // Default to receive address
lastReleaseTime = block.timestamp; // Initialize to deployment time
excludeHolder[address(0)] = true;
excludeHolder[
address(0x000000000000000000000000000000000000dEaD)
] = true;
holderRewardCondition = 100 * (10 ** IERC20(ETH).decimals());
lpTokenMinAmount = 10 * (10 ** IERC20(ETH).decimals());
_tokenDistributor = new TokenDistributor(currency);
}
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;
}
function balanceOf(address account) public view override returns (uint256) {
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 setLpTokenMinAmount(uint256 lpTokenMin) public onlyOwner {
lpTokenMinAmount = lpTokenMin;
}
function _basicTransfer(
address sender,
address recipient,
uint256 amount
) internal returns (bool) {
_balances[sender] -= amount;
_balances[recipient] += amount;
emit Transfer(sender, recipient, amount);
return true;
}
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 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 (startTradeBlock == 0 && preSaleActive) {
if (!_feeWhiteList[from] && !_feeWhiteList[to]) {
if (_swapPairList[from]) {
require(preSaleWhiteList[to], "not in presale whitelist");
require(preSaleQuota[to] >= amount, "exceed presale quota");
preSaleQuota[to] -= amount;
}
}
}
bool takeFee;
bool isSell;
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;
}
}
uint256 removeLPLiquidity;
if (from == _mainPair) {
removeLPLiquidity = _isRemoveLiquidity(amount);
if (removeLPLiquidity > 0) {
isRemove = true;
}
}
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 && !preSaleWhiteList[to] && !preSaleWhiteList[from]) {
bool star = startTradeBlock > 0;
require(
star || (0 < startLPBlock && isAdd), // _swapPairList[to]
"pausing"
);
}
if (_swapPairList[to]) {
if (!inSwap && !isAdd) {
uint256 contractTokenBalance = _balances[address(this)];
if (contractTokenBalance > swapAtAmount) {
swapTokenForFund(contractTokenBalance);
}
}
}
if (!isAdd && !isRemove) takeFee = true; // just swap fee
}
if (_swapPairList[to]) {
isSell = true;
}
}
_tokenTransfer(
from,
to,
amount,
takeFee,
isSell
);
if (from != address(this)) {
if (isSell) {
addHolder(from);
}
processReward(lpRewardGas);
}
}
function swapTokenForFund(
uint256 tokenAmount
) private lockTheSwap {
if (tokenAmount == 0) {
return;
}
IERC20 _c = IERC20(currency);
address[] memory toCurrencyPath = new address[](2);
toCurrencyPath[0] = address(this);
toCurrencyPath[1] = currency;
try
_swapRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens(
tokenAmount,
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 public lpRewardGas = 350000;
function setLpRewardGas(uint256 newValue) public onlyOwner {
require(
newValue >= 200000 && newValue <= 2000000,
"too high or too low"
);
lpRewardGas = newValue;
}
function _tokenTransfer(
address sender,
address recipient,
uint256 tAmount,
bool takeFee,
bool isSell
) private {
_balances[sender] = _balances[sender] - tAmount;
uint256 feeAmount;
if (takeFee) {
uint256 swapFee;
if (isSell) {
swapFee = _sellRewardFee;
} else {
swapFee = _buyRewardFee;
}
uint256 swapAmount = (tAmount * swapFee) / 10000;
if (swapAmount > 0) {
feeAmount += swapAmount;
_takeTransfer(sender, address(this), swapAmount);
}
uint256 burnAmount;
if (!isSell) {
burnAmount = (tAmount * buy_burnFee) / 10000;
} else {
burnAmount = (tAmount * sell_burnFee) / 10000;
}
if (burnAmount > 0) {
feeAmount += burnAmount;
_takeTransfer(sender, address(0xdead), burnAmount);
}
if (feePercentA > 0) {
require(feeReceiverA != address(0), "feeReceiverA not set");
uint256 feeA = (tAmount * feePercentA) / 10000;
feeAmount += feeA;
_takeTransfer(sender, feeReceiverA, feeA);
}
if (feePercentB > 0) {
require(feeReceiverB != address(0), "feeReceiverB not set");
uint256 feeB = (tAmount * feePercentB) / 10000;
feeAmount += feeB;
_takeTransfer(sender, feeReceiverB, feeB);
}
}
_takeTransfer(sender, recipient, tAmount - feeAmount);
}
event Failed_swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint256 value
);
address public generateLpReceiverAddr;
function setGenerateLpReceiverAddr(address newAddr) public onlyOwner {
generateLpReceiverAddr = newAddr;
}
// Daily release feature (from contract reserve)
uint256 public lastReleaseTime; // Last time release was executed
uint256 public constant RELEASE_INTERVAL = 24 hours; // 24 hours interval
address public dailyReleaseReceiver; // Address to receive daily released tokens
// Set the daily release receiver address (only owner can modify before renouncing ownership)
function setDailyReleaseReceiver(address newReceiver) external onlyOwner {
require(newReceiver != address(0), "zero address");
dailyReleaseReceiver = newReceiver;
}
// Anyone can call this function to release daily tokens, but only once every 24 hours
// Releases 1/1000 of contract's current reserve balance
function releaseDaily() external {
require(dailyReleaseReceiver != address(0), "receiver not set");
require(block.timestamp >= lastReleaseTime + RELEASE_INTERVAL, "too soon");
uint256 contractBalance = _balances[address(this)];
require(contractBalance > 0, "no reserve balance");
// Calculate 1/1000 of contract's current balance
uint256 releaseAmount = contractBalance / 1000;
require(releaseAmount > 0, "release amount too small");
lastReleaseTime = block.timestamp;
// Transfer from contract to receiver (not minting, total supply stays same)
_balances[address(this)] -= releaseAmount;
_balances[dailyReleaseReceiver] += releaseAmount;
emit Transfer(address(this), dailyReleaseReceiver, releaseAmount);
emit DailyRelease(dailyReleaseReceiver, releaseAmount, contractBalance, block.timestamp);
}
// Event for daily release
event DailyRelease(address indexed receiver, uint256 releaseAmount, uint256 reserveBalance, uint256 timestamp);
function _takeTransfer(
address sender,
address to,
uint256 tAmount
) private {
_balances[to] = _balances[to] + tAmount;
emit Transfer(sender, to, tAmount);
}
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;
preSaleActive = false;
}
function setFeeWhiteList(
address[] calldata addr,
bool enable
) public onlyOwner {
for (uint256 i = 0; i < addr.length; i++) {
_feeWhiteList[addr[i]] = enable;
}
}
function disableChangeTax() public onlyOwner {
enableChangeTax = false;
}
function setSwapPairList(address addr, bool enable) external onlyOwner {
_swapPairList[addr] = enable;
}
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;
}
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;
}
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));
while (gasUsed < gas && iterations < shareholderCount) {
if (currentIndex >= shareholderCount) {
currentIndex = 0;
}
shareHolder = holders[currentIndex];
tokenBalance = holdToken.balanceOf(shareHolder);
if (tokenBalance > 0 && !excludeHolder[shareHolder] && tokenBalance >= lpTokenMinAmount) {
amount = (balance * tokenBalance) / holdTokenTotal;
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
},
"viaIR": true,
"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":[{"internalType":"string[]","name":"stringParams","type":"string[]"},{"internalType":"address[]","name":"addressParams","type":"address[]"},{"internalType":"uint256[]","name":"numberParams","type":"uint256[]"},{"internalType":"bool[]","name":"boolParams","type":"bool[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"releaseAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"reserveBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"DailyRelease","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"},{"inputs":[],"name":"ETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RELEASE_INTERVAL","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":[],"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":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"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":"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":"dailyReleaseReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"enableChangeTax","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":"feePercentA","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feePercentB","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeReceiverA","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeReceiverB","outputs":[{"internalType":"address","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":"lastReleaseTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpRewardGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpTokenMinAmount","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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"preSaleQuota","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"preSaleWhiteList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"processRewardWaitBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"releaseDaily","outputs":[],"stateMutability":"nonpayable","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":"address","name":"newReceiver","type":"address"}],"name":"setDailyReleaseReceiver","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"}],"name":"setFeeReceiverA","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setFeeReceiverB","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","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":"lpTokenMin","type":"uint256"}],"name":"setLpTokenMinAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"quota","type":"uint256"}],"name":"setPreSaleQuota","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addrs","type":"address[]"},{"internalType":"uint256[]","name":"quotas","type":"uint256[]"}],"name":"setPreSaleQuotaBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addrs","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setPreSaleWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setProcessRewardWaitBlock","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":[],"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":"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":[{"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"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
6080806040523461097c5761452f803803809161001c8285610ea0565b8339810160808282031261097c5781516001600160401b03811161097c57820181601f8201121561097c57805161005281610ec3565b916100606040519384610ea0565b81835260208084019260051b8201019084821161097c5760208101925b828410610e0e575050505060208301516001600160401b03811161097c5783019082601f8301121561097c578151916100b583610ec3565b926100c36040519485610ea0565b80845260208085019160051b8301019185831161097c57602001905b828210610df65750505060408401516001600160401b03811161097c5784019383601f8601121561097c5784519461011686610ec3565b956101246040519788610ea0565b80875260208088019160051b8301019186831161097c57602001905b828210610de6575050506060810151906001600160401b03821161097c57019280601f8501121561097c57835161017681610ec3565b946101846040519687610ea0565b81865260208087019260051b82010192831161097c57602001905b828210610dce575050600080546001600160a01b03191633908117825591507f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a3600160ff19601d541617601d556000601f55600160ff196020541617602055620557306021556001602c5561021681610efb565b518051906001600160401b03821161092457600354600181811c91168015610dc4575b6020821014610cdd57601f8111610d75575b50602090601f8311600114610d085761028393929160009183610cfd575b50508160011b916000199060031b1c191617600355610f08565b5180519093906001600160401b03811161092457600454600181811c91168015610cf3575b6020821014610cdd57601f8111610c83575b50602094601f8211600114610c1c57948192939495600092610c11575b50508160011b916000199060031b1c1916176004555b6102f681610efb565b51908160055561030f61030882610f08565b5192610f6f565b9182810292818404149015171561093a5760078290556001600160a01b0361033684610efb565b51600980546001600160a01b03191692909116821790556001600160a01b0361035e85610f08565b5116936001600160a01b0361037282610f18565b51169561037e82610f28565b5160168054610100600160a81b0319811660089390931b610100600160a81b03169283179182905591939192916004916020916001600160a01b036103c282610f38565b51601080546001600160a01b031916929091169190911790556001600160a01b03906103ed90610f48565b51601180546001600160a01b031916929091169190911790556040516318160ddd60e01b8152928391829060081c6001600160a01b03165afa90811561091857600091610bdf575b5015610ba7576104818161044a60ff93610efb565b5115156019548460a81b61045d84610f08565b51151560a81b16918560a01b9060a01b169061ffff60a01b19161717601955610f18565b5115151691829160018060a81b0319161717601655610b34575b50604051602081016001600160401b038111828210176109245760405260018060a01b03600954168152601a546001601a5580600110610aef575b50601a60005260206000209060005b60018110610ad25750506016546009546001600160a01b0360089290921c82169250168103610a83575b50600880546001600160a01b031916841790553060009081526002602090815260408083206001600160a01b03808816855290835281842060001990819055600954925163095ea7b360e01b8152600481018990526024810191909152938492604492849291165af1801561091857610a4c575b5082600052601e6020526040600020600160ff1982541617905560405163c45a015560e01b8152602081600481875afa90811561091857600091610a0d575b506009546040516364e329cb60e11b81523060048201526001600160a01b0391821660248201529160209183916044918391600091165af1908115610918576000916109d3575b50601980546001600160a01b0319166001600160a01b039290921691821790556000908152600a60205260409020805460ff1916600117905561064b81610f18565b519081600c5561065a81610f28565b5180600d5561066882610f38565b519081600e5561067783610f48565b519283600f558051600610156109bd5760e0810151806012558151600710156109bd576106cc611324956106d1956106cc886106d16106d79b6106cc886106cc6101006106cc9c01519c8d9485601355610f7d565b610f7d565b10610f8a565b600581028181046005148215171561093a57606490049081810390811161093a5730600052600160205280604060002055604051908152600060008051602061450f83398151915260203093a333600052600160205280604060002055604051908152600060008051602061450f83398151915260203393a33360008181526002602090815260408083206001600160a01b03958616845282528083206000199055308352600682528083208054600160ff1991821681179092559484528184208054861682179055602480546001600160a01b0319169790971790965542602355602882527f363f266dc0e266c1e93609619fd0d0d198ad468f99870b4dab43223b5a640e1a805485168717905561dead9092527fbbe88529b5ffa7b624cff06f0ef07c7e870a9b23b5b38a8a3fc35e04dc498bd18054909316909417909155601654905163313ce56760e01b815260089190911c9091169181600481855afa801561091857600090610989575b6108509150610f6f565b8060640290606482040361093a57602a5560405163313ce56760e01b815290602090829060049082905afa801561091857600090610950575b6108939150610f6f565b80600a0290600a82040361093a57601855600954604051906001600160a01b031661012a8083016001600160401b038111848210176109245760209284926143c5843981520301906000f0801561091857600b8054610100600160a81b03191660089290921b610100600160a81b03169190911790556040516133ff9081610fc68239f35b6040513d6000823e3d90fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b506020813d602011610981575b8161096a60209383610ea0565b8101031261097c576108939051610889565b600080fd5b3d915061095d565b506020813d6020116109b5575b816109a360209383610ea0565b8101031261097c576108509051610846565b3d9150610996565b634e487b7160e01b600052603260045260246000fd5b90506020813d602011610a05575b816109ee60209383610ea0565b8101031261097c576109ff90610eda565b38610609565b3d91506109e1565b90506020813d602011610a44575b81610a2860209383610ea0565b8101031261097c576020610a3d600092610eda565b91506105c2565b3d9150610a1b565b6020813d602011610a7b575b81610a6560209383610ea0565b8101031261097c57610a7690610eee565b610583565b3d9150610a58565b601a5468010000000000000000811015610924576001810180601a558110156109bd57601a6000526000805160206144ef8339815191520180546001600160a01b03191690911790553861050f565b81516001600160a01b0316818401556020909101906001016104e5565b601a600052610b2e906000805160206144ef833981519152017f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63f610f58565b386104d6565b6040516315ab88c960e31b8152602081600481885afa90811561091857600091610b6d575b506001600160a01b0316176009553861049b565b90506020813d602011610b9f575b81610b8860209383610ea0565b8101031261097c57610b9990610eda565b38610b59565b3d9150610b7b565b60405162461bcd60e51b815260206004820152601060248201526f6e6f7420746f6b656e20737570706c7960801b6044820152606490fd5b90506020813d602011610c09575b81610bfa60209383610ea0565b8101031261097c575138610435565b3d9150610bed565b0151905038806102d7565b601f198216956004600052806000209160005b888110610c6b57508360019596979810610c52575b505050811b016004556102ed565b015160001960f88460031b161c19169055388080610c44565b91926020600181928685015181550194019201610c2f565b6004600052610ccd907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f840160051c81019160208510610cd3575b601f0160051c0190610f58565b386102ba565b9091508190610cc0565b634e487b7160e01b600052602260045260246000fd5b90607f16906102a8565b015190503880610269565b90601f198316916003600052816000209260005b818110610d5d575091600193918561028397969410610d44575b505050811b01600355610f08565b015160001960f88460031b161c19169055388080610d36565b92936020600181928786015181550195019301610d1c565b6003600052610dbe907fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f850160051c81019160208610610cd357601f0160051c0190610f58565b3861024b565b90607f1690610239565b60208091610ddb84610eee565b81520191019061019f565b8151815260209182019101610140565b60208091610e0384610eda565b8152019101906100df565b83516001600160401b03811161097c57820186603f8201121561097c5760208101516001600160401b0381116109245760405191610e56601f8301601f191660200184610ea0565b818352604081830101891061097c5760005b828110610e895750509181600060208095819501015281520193019261007d565b806020808093850101015182828701015201610e68565b601f909101601f19168101906001600160401b0382119082101761092457604052565b6001600160401b0381116109245760051b60200190565b51906001600160a01b038216820361097c57565b5190811515820361097c57565b8051156109bd5760200190565b8051600110156109bd5760400190565b8051600210156109bd5760600190565b8051600310156109bd5760800190565b8051600410156109bd5760a00190565b8051600510156109bd5760c00190565b818110610f63575050565b60008155600101610f58565b604d811161093a57600a0a90565b9190820180921161093a57565b15610f9157565b60405162461bcd60e51b815260206004820152600c60248201526b0cccaca40e8dede40d0d2ced60a31b6044820152606490fdfe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c806301339c2114611c5557806301873d8f14611c1657806301986fad14611bd757806304c23ffe14611bb557806305833c2b14611b5557806306fdde0314611a9657806307c3adf014611a78578063095ea7b3146119fe5780630f890b86146119c9578063150e4c471461195757806315d07d821461193457806318160ddd1461191657806318d12855146118e95780631930381c146118cb5780631dbbaebd146117ba578063206c17bb146117915780632171dcc91461173157806323b872dd14611683578063255412d914611665578063313ce567146116475780633b9f1912146115fb5780633bb82eb6146115cd5780633c11100d1461158e5780633ccfdbcd146115545780634188bf5a1461152b57806341c50d1a1461150d5780634482004e146114ef57806346c123b6146114a95780634e11769f1461146a578063553193ca1461144c578063605324f2146113c4578063621823e6146113a65780636402511e146113785780636b6113681461135a578063704c7ec0146112e857806370a08231146112a7578063715018a614611249578063771f74481461121b57806381d09def14610f8e5780638322fff214610f615780638449470814610f3e5780638691752414610f205780638718b24f14610ef35780638da5cb5b14610eca5780638e1e083814610ea157806395d89b4114610d9d57806395e3667914610d7f57806397d6e6eb14610b71578063992db38f14610b0a5780639cc0e3c714610ac8578063a26df02514610a6e578063a842486114610a0e578063a9059cbb146109dd578063aa582b4214610896578063ab47a2911461085c578063b494690314610833578063bc0457391461080a578063be4fe9a5146107ec578063c14505d5146107ce578063c213d62d146107a0578063c5870ee7146106af578063c92d567e14610689578063cde5f58f1461066b578063ce4d9f151461062e578063d285e6ab14610610578063d5986433146105ea578063d710569b1461059a578063dd62ed3e14610549578063ddca92d414610520578063dfaf734a14610502578063e5a6b10f146104d9578063eb10b741146104bb578063ebababe314610461578063ed8d9bda146104075763f2fde38b0361000e573461040257602036600319011261040257610372611cc6565b6000546001600160a01b0381169161038b338414611ded565b6001600160a01b03169182156103d25782907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03191617600055005b60405162461bcd60e51b815260206004820152600860248201526706e657720697320360c41b6044820152606490fd5b600080fd5b3461040257602036600319011261040257610420611cc6565b61043560018060a01b03600054163314611ded565b6001600160a01b0316610449811515611ecd565b6001600160601b0360a01b6011541617601155600080f35b346104025760203660031901126104025761047a611cc6565b61048f60018060a01b03600054163314611ded565b6001600160a01b03166104a3811515611ecd565b6001600160601b0360a01b6010541617601055600080f35b34610402576000366003190112610402576020602a54604051908152f35b34610402576000366003190112610402576009546040516001600160a01b039091168152602090f35b34610402576000366003190112610402576020602354604051908152f35b34610402576000366003190112610402576024546040516001600160a01b039091168152602090f35b3461040257604036600319011261040257610562611cc6565b61056a611cdc565b6001600160a01b039182166000908152600260209081526040808320949093168252928352819020549051908152f35b34610402576020366003190112610402576105b3611cc6565b6105c860018060a01b03600054163314611ded565b602280546001600160a01b0319166001600160a01b0392909216919091179055005b3461040257600036600319011261040257602060ff60195460a81c166040519015158152f35b34610402576000366003190112610402576020602154604051908152f35b346104025760003660031901126104025761066761064a611f57565b604080519384526020840192909252908201529081906060820190565b0390f35b34610402576000366003190112610402576020604051620151808152f35b3461040257600036600319011261040257602060ff60195460a01c166040519015158152f35b346104025760403660031901126104025760043567ffffffffffffffff8111610402576106e0903690600401611d4a565b9060243567ffffffffffffffff811161040257610701903690600401611d4a565b92909161071960018060a01b03600054163314611ded565b8382036107695760005b82811061072c57005b8061073a6001928787611e44565b35828060a01b0361075461074f848888611e44565b611e54565b16600052601c60205260406000205501610723565b60405162461bcd60e51b815260206004820152600f60248201526e0d8cadccee8d040dad2e6dac2e8c6d608b1b6044820152606490fd5b34610402576020366003190112610402576107c660018060a01b03600054163314611ded565b600435602a55005b34610402576000366003190112610402576020601354604051908152f35b34610402576000366003190112610402576020600e54604051908152f35b34610402576000366003190112610402576010546040516001600160a01b039091168152602090f35b34610402576000366003190112610402576011546040516001600160a01b039091168152602090f35b34610402576020366003190112610402576001600160a01b0361087d611cc6565b16600052601c6020526020604060002054604051908152f35b346104025760203660031901126104025760043567ffffffffffffffff8111610402576108c7903690600401611d4a565b6108dc60018060a01b03600054163314611ded565b60ff60195460a81c16156109a257806001101561098c5760208201359182600c55816002101561098c57604081013580600d55826003101561098c5760608201359182600e55836004101561098c5760808101359384600f55806005101561098c5760a082013590816012556006101561098c576109816113249561098695610981886109866100199b6109818861098160c06109819c01359c8d9485601355611ea0565b611ea0565b10611f08565b634e487b7160e01b600052603260045260246000fd5b60405162461bcd60e51b81526020600482015260136024820152721d185e0818da185b99d948191a5cd8589b1959606a1b6044820152606490fd5b3461040257604036600319011261040257610a036109f9611cc6565b6024359033612133565b602060405160018152f35b3461040257604036600319011261040257610019610a2a611cc6565b610a32611cf2565b90610a4860018060a01b03600054163314611ded565b60018060a01b0316600052600a60205260406000209060ff801983541691151516179055565b3461040257602036600319011261040257610a87611cc6565b610a9c60018060a01b03600054163314611ded565b6001600160a01b0316610ab0811515611ecd565b6001600160601b0360a01b6024541617602455600080f35b3461040257602036600319011261040257600435601a5481101561040257610af1602091611db7565b905460405160039290921b1c6001600160a01b03168152f35b3461040257600036600319011261040257610b3060018060a01b03600054163314611ded565b602554610b3d5743602555005b60405162461bcd60e51b815260206004820152600c60248201526b0737461727465644164644c560a41b6044820152606490fd5b34610402576000366003190112610402576024546001600160a01b031615610d4757602354620151808101809111610d31574210610d01573060005260016020526040600020548015610cc7576103e881048015610c82577ff7980a2481c9873c50cbedccb43b1d25feb36e3752edbcfc2403292e19afee9d90426023553060005260016020526040600020610c08828254611e68565b905560018060a01b036024541660005260016020526040600020610c2d828254611ea0565b905560018060a01b036024541692836040518381527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203092a36040805192835260208301919091524290820152606090a2005b60405162461bcd60e51b815260206004820152601860248201527f72656c6561736520616d6f756e7420746f6f20736d616c6c00000000000000006044820152606490fd5b60405162461bcd60e51b81526020600482015260126024820152716e6f20726573657276652062616c616e636560701b6044820152606490fd5b60405162461bcd60e51b81526020600482015260086024820152673a37b79039b7b7b760c11b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601060248201526f1c9958d95a5d995c881b9bdd081cd95d60821b6044820152606490fd5b34610402576000366003190112610402576020601554604051908152f35b346104025760003660031901126104025760405160006004548060011c90600181168015610e97575b602083108114610e8357828552908115610e5f5750600114610dff575b61066783610df381850382611e22565b60405191829182611d01565b91905060046000527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b916000905b808210610e4557509091508101602001610df3610de3565b919260018160209254838588010152019101909291610e2d565b60ff191660208086019190915291151560051b84019091019150610df39050610de3565b634e487b7160e01b84526022600452602484fd5b91607f1691610dc6565b34610402576000366003190112610402576022546040516001600160a01b039091168152602090f35b34610402576000366003190112610402576000546040516001600160a01b039091168152602090f35b3461040257600036600319011261040257600b5460405160089190911c6001600160a01b03168152602090f35b34610402576000366003190112610402576020601f54604051908152f35b3461040257600036600319011261040257602060ff601d54166040519015158152f35b346104025760003660031901126104025760165460405160089190911c6001600160a01b03168152602090f35b346104025760203660031901126104025760043567ffffffffffffffff811161040257610fbf903690600401611d4a565b90610fd560018060a01b03600054163314611ded565b610fde82611e75565b610feb6040519182611e22565b828152610ff783611e75565b602082019190601f1901368337519067ffffffffffffffff821161120557600160401b821161120557601a5482601a558083106111ca575b50601a60005260005b82811061119f5750505060005b82811061115857826000601a541561114457601a90526000805160206133aa833981519152546009546001600160a01b039182169116036110ff576000198101908111610d315761109590611db7565b905460165460039290921b1c6001600160a01b0390811660089290921c16036110ba57005b60405162461bcd60e51b815260206004820152601860248201527f646f6e742073757070726f7420746869732070617468203200000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527f646f6e742073757070726f7420746869732070617468203100000000000000006044820152606490fd5b634e487b7160e01b81526032600452602490fd5b8061119961116c61074f6001948787611e44565b61117583611db7565b81546001600160a01b0393841660039290921b91821b9390911b1916919091179055565b01611045565b81516001600160a01b03166000805160206133aa833981519152820155602090910190600101611038565b6000805160206133aa83398151915201826000805160206133aa833981519152015b8181106111f9575061102f565b600081556001016111ec565b634e487b7160e01b600052604160045260246000fd5b346104025760203660031901126104025761124160018060a01b03600054163314611ded565b600435601855005b346104025760003660031901126104025760008054906001600160a01b038216611274338214611ded565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a36001600160a01b031916600055005b346104025760203660031901126104025760206112e06112c5611cc6565b6001600160a01b031660009081526001602052604090205490565b604051908152f35b34610402576112f636611d7b565b9061130c60018060a01b03600054163314611ded565b60005b81811061131857005b6001906001600160a01b0361133161074f838689611e44565b16600052601b6020526113548460406000209060ff801983541691151516179055565b0161130f565b34610402576000366003190112610402576020600f54604051908152f35b346104025760203660031901126104025761139e60018060a01b03600054163314611ded565b600435601f55005b34610402576000366003190112610402576020602c54604051908152f35b34610402576020366003190112610402576004356113ed60018060a01b03600054163314611ded565b62030d408110158061143f575b1561140457602155005b60405162461bcd60e51b8152602060048201526013602482015272746f6f2068696768206f7220746f6f206c6f7760681b6044820152606490fd5b50621e84808111156113fa565b34610402576000366003190112610402576020601754604051908152f35b34610402576020366003190112610402576001600160a01b0361148b611cc6565b16600052601b602052602060ff604060002054166040519015158152f35b3461040257602036600319011261040257600435801515809103610402576114dc60018060a01b03600054163314611ded565b60ff801960205416911617602055600080f35b34610402576000366003190112610402576020602554604051908152f35b34610402576000366003190112610402576020601854604051908152f35b34610402576000366003190112610402576019546040516001600160a01b039091168152602090f35b34610402576020366003190112610402576001600160a01b03611575611cc6565b1660005260146020526020604060002054604051908152f35b34610402576020366003190112610402576001600160a01b036115af611cc6565b16600052600a602052602060ff604060002054166040519015158152f35b34610402576020366003190112610402576115f360018060a01b03600054163314611ded565b600435602c55005b3461040257604036600319011261040257611614611cc6565b61162960018060a01b03600054163314611ded565b6001600160a01b03166000908152601c602052604090206024359055005b34610402576000366003190112610402576020600554604051908152f35b34610402576000366003190112610402576020600d54604051908152f35b346104025760603660031901126104025761169c611cc6565b6116a4611cdc565b906116b3604435809383612133565b6001600160a01b031660008181526002602090815260408083203384529091529020549091906001016116eb57602060405160018152f35b600082815260026020908152604080832033845290915290205461170f9190611e68565b6000918252600260209081526040808420338552909152909120558080610a03565b346104025760403660031901126104025761001961174d611cc6565b611755611cf2565b9061176b60018060a01b03600054163314611ded565b60018060a01b0316600052601e60205260406000209060ff801983541691151516179055565b34610402576000366003190112610402576008546040516001600160a01b039091168152602090f35b346104025760203660031901126104025760043567ffffffffffffffff8111610402576117eb903690600401611d4a565b9061180160018060a01b03600054163314611ded565b60005b82811061180d57005b6019546001600160a01b0316602061182961074f848787611e44565b6040516370a0823160e01b81526001600160a01b03909116600482015291829060249082905afa9081156118bf5760009161188a575b509060019161186f575b01611804565b61188561188061074f838787611e44565b61207d565b611869565b906020823d82116118b7575b816118a360209383611e22565b810103126118b4575051600161185f565b80fd5b3d9150611896565b6040513d6000823e3d90fd5b34610402576000366003190112610402576020601254604051908152f35b346104025760003660031901126104025761190f60018060a01b03600054163314611ded565b6000602555005b34610402576000366003190112610402576020600754604051908152f35b3461040257600036600319011261040257602060ff601654166040519015158152f35b346104025761196536611d7b565b9061197b60018060a01b03600054163314611ded565b60005b81811061198757005b6001906001600160a01b036119a061074f838689611e44565b1660005260066020526119c38460406000209060ff801983541691151516179055565b0161197e565b34610402576000366003190112610402576119ef60018060a01b03600054163314611ded565b6019805460ff60a81b19169055005b3461040257604036600319011261040257611a17611cc6565b3360008181526002602090815260408083206001600160a01b03909516808452948252918290206024359081905591519182527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a3602060405160018152f35b34610402576000366003190112610402576020600c54604051908152f35b346104025760003660031901126104025760405160006003548060011c90600181168015611b4b575b602083108114610e8357828552908115610e5f5750600114611aeb5761066783610df381850382611e22565b91905060036000527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b916000905b808210611b3157509091508101602001610df3610de3565b919260018160209254838588010152019101909291611b19565b91607f1691611abf565b3461040257604036600319011261040257610019611b71611cc6565b611b79611cf2565b90611b8f60018060a01b03600054163314611ded565b60018060a01b0316600052602860205260406000209060ff801983541691151516179055565b3461040257600036600319011261040257602060ff8154166040519015158152f35b34610402576020366003190112610402576001600160a01b03611bf8611cc6565b166000526006602052602060ff604060002054166040519015158152f35b34610402576020366003190112610402576001600160a01b03611c37611cc6565b16600052601e602052602060ff604060002054166040519015158152f35b3461040257600036600319011261040257611c7b60018060a01b03600054163314611ded565b601754611c925743601755601d805460ff19169055005b60405162461bcd60e51b815260206004820152600c60248201526b30b63932b0b23c9037b832b760a11b6044820152606490fd5b600435906001600160a01b038216820361040257565b602435906001600160a01b038216820361040257565b60243590811515820361040257565b91909160208152825180602083015260005b818110611d34575060409293506000838284010152601f8019910116010190565b8060208092870101516040828601015201611d13565b9181601f840112156104025782359167ffffffffffffffff8311610402576020808501948460051b01011161040257565b6040600319820112610402576004359067ffffffffffffffff821161040257611da691600401611d4a565b909160243580151581036104025790565b601a5481101561098c57601a60005260206000200190600090565b60265481101561098c57602660005260206000200190600090565b15611df457565b60405162461bcd60e51b815260206004820152600660248201526510b7bbb732b960d11b6044820152606490fd5b90601f8019910116810190811067ffffffffffffffff82111761120557604052565b919081101561098c5760051b0190565b356001600160a01b03811681036104025790565b91908203918211610d3157565b67ffffffffffffffff81116112055760051b60200190565b81810292918115918404141715610d3157565b91908201809211610d3157565b8115611eb7570490565b634e487b7160e01b600052601260045260246000fd5b15611ed457565b60405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b6044820152606490fd5b15611f0f57565b60405162461bcd60e51b815260206004820152600c60248201526b0cccaca40e8dede40d0d2ced60a31b6044820152606490fd5b51906001600160701b038216820361040257565b601954604051630240bc6b60e21b8152916001600160a01b0390911690606083600481855afa9283156118bf57600090819461201d575b506009546001600160701b03948516946001600160a01b039091169116308210156120145760209094935b6024604051809481936370a0823160e01b835260048301525afa9081156118bf57600091611fe5575090565b90506020813d60201161200c575b8161200060209383611e22565b81010312610402575190565b3d9150611ff3565b92602090611fb9565b93506060843d606011612075575b8161203860609383611e22565b810103126118b45761204984611f43565b90604061205860208701611f43565b95015163ffffffff8116036118b457506001600160701b03611f8e565b3d915061202b565b803b612130576001600160a01b038116600081815260276020526040902054909190156120a8575050565b60265491821580156120ee575b6120be57505050565b600052602760205281604060002055600160401b821015611205576111758260016120ec9401602655611dd2565b565b5060006026541561114457602690527f744a2cf8fd7008e3d53b67916e73460df9fa5214e3ef23dd4259ca09493a3594546001600160a01b03168114156120b5565b50565b9160018060a01b038316908160005260016020528060406000205410612ca3576017541580612c97575b612b69575b601954600093908490819081906001600160a01b038086169082161480612b51575b80612b48575b6127ad575b6001600160a01b03811687146126ec575b601754159081806126df575b612610575b87600052600a60205260ff6040600020541680156125ee575b612420575b505050508360005260016020526121eb83604060002054611e68565b846000526001602052604060002055600090612240575b61220f9061221693611e68565b90856132f2565b3003612220575050565b612231575b506120ec602154612f47565b61223a9061207d565b38612225565b841561241257612710612256600e545b85611e8d565b04806123ff575b50846123ea57612710612272600d5485611e8d565b045b8481612385575b505060125480612316575b5060135480612296575b50612202565b9260018060a01b03601154169081156122da576122d261220f936122cb6127106122c36122169986611e8d565b048092611ea0565b938a6132f2565b935090612290565b60405162461bcd60e51b8152602060048201526014602482015273199959549958d95a5d995c90881b9bdd081cd95d60621b6044820152606490fd5b6010546001600160a01b03169182156123495761233c6127106122c36123439488611e8d565b92886132f2565b38612286565b60405162461bcd60e51b8152602060048201526014602482015273199959549958d95a5d995c90481b9bdd081cd95d60621b6044820152606490fd5b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60206123b68461dead9596611ea0565b9484600052600182526123ce81604060002054611ea0565b8560005260018352604060002055604051908152a3388461227b565b6127106123f9600f5485611e8d565b04612274565b905061240c8130886132f2565b3861225d565b612710612256600c54612250565b87600052600660205260ff6040600020541615806125cb575b612475575b505050506001600160a01b0382166000908152600a602052604090205460ff1661246c575b388080806121cf565b60019450612463565b60a01c60ff16806125a8575b8061258f575b61253a575b506001600160a01b0384166000908152600a602052604090205460ff166124d6575b1590816124cd575b506124c5575b3880808061243e565b5060016124bc565b905015386124b6565b600b5460ff81161580612532575b6124ef575b506124ae565b306000526001602052604060002054601f54811161250e575b506124e9565b60016125219260ff191617600b55612cf3565b60ff19600b5416600b553880612508565b5081156124e4565b80159061257c575b1561254d573861248c565b60405162461bcd60e51b815260206004820152600760248201526670617573696e6760c81b6044820152606490fd5b5060255415158015612542575080612542565b5086600052601b60205260ff6040600020541615612487565b506001600160a01b0385166000908152601b602052604090205460ff1615612481565b506001600160a01b03861660009081526006602052604090205460ff1615612439565b506001600160a01b0386166000908152600a602052604090205460ff166121ca565b87600052600660205260ff6040600020541615806126bc575b806126a3575b80612680575b156121b15763ffffffff863b16156121b15760405162461bcd60e51b8152602060048201526011602482015270063616e7420616464206f74686572206c7607c1b6044820152606490fd5b506001600160a01b0386166000908152600a602052604090205460ff1615612635565b5087600052600a60205260ff604060002054161561262f565b506001600160a01b03861660009081526006602052604090205460ff1615612629565b5060ff8160a01c166121ac565b60006126f6611f57565b9050111561270d575b156121a057600192506121a0565b506040516318160ddd60e01b81526020816004816001600160a01b0386165afa9081156118bf57600091612779575b5061274a6127749188611e8d565b6001600160a01b03831660009081526001602052604090205461276e908990611e68565b90611ead565b6126ff565b90506020813d6020116127a5575b8161279460209383611e22565b81010312610402575161274a61273c565b3d9150612787565b60006127b7611f57565b906127d6600082858d81151580612b3f575b612b28575b509050611ea0565b821015612806575b5050501515806127f7575b1561218f576001915061218f565b5063ffffffff893b16156127e9565b6040516318160ddd60e01b81529293506000916020846004816001600160a01b038a165afa938415612b1d578394612ae5575b5060085460405163c45a015560e01b81528591602090829060049082906001600160a01b03165afa908115612abd576004916020918791612ac8575b50604051622fcfcb60e31b815292839182906001600160a01b03165afa908115612abd578591612a8e575b50604051637464fc3d60e01b8152906020826004816001600160a01b038d165afa918215612a8357908695949392918f99989792612a3d575b50879291906001600160a01b0316612965575b50506128f791611e68565b938361292957505050506129139161290e91611e8d565b613358565b6103e7198101908111610d31575b3880806127de565b8395506129479061294261294e95612942949597611e8d565b611ead565b948b611e8d565b90508082101561295e5750612921565b9050612921565b80156128ec57909161297d61290e8661298393611e8d565b91613358565b808211612993575b8792506128ec565b9091929394959697506129af6129a98284611e68565b84611e8d565b918260031b9280840460081490151715612a2957601181029080820460111490151715612a29578160031b9180830460081490151715612a29578897969594928f99949261276e90612a0093611ea0565b9081612a0f575b82935061298b565b6128f79392965090612a2091611ea0565b94909138612a07565b634e487b7160e01b87526011600452602487fd5b915091929394959697506020813d602011612a7b575b81612a6060209383611e22565b81010312612a7757518d97969594939291876128d9565b8580fd5b3d9150612a53565b6040513d88823e3d90fd5b612ab0915060203d602011612ab6575b612aa88183611e22565b8101906132d3565b386128a0565b503d612a9e565b6040513d87823e3d90fd5b612adf9150823d8411612ab657612aa88183611e22565b38612875565b9093506020813d602011612b15575b81612b0160209383611e22565b81010312612b1157519238612839565b8280fd5b3d9150612af4565b6040513d85823e3d90fd5b612b3793509061294291611e8d565b82858d6127ce565b508215156127c9565b5086321461218a565b5033600052601e60205260ff60406000205416612184565b81600052600660205260ff604060002054161580612c74575b156121625781600052600a60205260ff6040600020541615612162576001600160a01b0383166000818152601b602052604090205460ff1615612c2f5780600052601c6020528160406000205410612bf357600052601c6020526040600020612bec828254611e68565b9055612162565b60405162461bcd60e51b81526020600482015260146024820152736578636565642070726573616c652071756f746160601b6044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527f6e6f7420696e2070726573616c652077686974656c69737400000000000000006044820152606490fd5b506001600160a01b03831660009081526006602052604090205460ff1615612b82565b5060ff601d541661215d565b60405162461bcd60e51b815260206004820152601060248201526f0c4c2d8c2dcc6ca9cdee88adcdeeaced60831b6044820152606490fd5b90816020910312610402575180151581036104025790565b6000908015612f345760018060a01b03600954169160405191612d17606084611e22565b60028352602083016040368237835115612f2057308152835160011015612f20576040840185905260088054600b546001600160a01b0391821694921c1690833b15612f1c579491849391604051968794635c11d79560e01b865260a4860191600487015286602487015260a060448701525180915260c485019290865b818110612ef7575050508380928692606483015242608483015203925af19182612ee7575b5090612ee2577f6c37756e80daba6f4df0d5bfa6cddadfe23601acc1a27dc8d4aa427de91467886020604051838152a15b600b546040516370a0823160e01b815260089190911c6001600160a01b03166004820181905290602081602481875afa908115612b1d578391612eb0575b5080612e36575b50505050565b60646020928460405196879485936323b872dd60e01b8552600485015230602485015260448401525af1908115612ea45750612e75575b808080612e30565b612e969060203d602011612e9d575b612e8e8183611e22565b810190612cdb565b5038612e6d565b503d612e84565b604051903d90823e3d90fd5b90506020813d602011612eda575b81612ecb60209383611e22565b81010312610402575138612e29565b3d9150612ebe565b612deb565b81612ef191611e22565b38612dba565b82516001600160a01b0316855288975089965060209485019490920191600101612d95565b8480fd5b634e487b7160e01b83526032600452602483fd5b5050565b6000198114610d315760010190565b612f56602b54602c5490611ea0565b4310612130576016546040516370a0823160e01b815230600482015260089190911c6001600160a01b03169190602081602481865afa9081156118bf576000916132a1575b50602a5411612f34576019546040516318160ddd60e01b815292906001600160a01b0316602084600481845afa9384156118bf5760009461326d575b506026549360009384955a97604051926370a0823160e01b84523060048501526020846024818a5afa93841561326257889461322a575b50979890965b88811080613221575b1561321157826029541015613207575b613038602954611dd2565b90546040516370a0823160e01b815260039290921b1c6001600160a01b03166004820181905292906020816024818b5afa80156118bf5787916000916131d3575b50801515806131ba575b806131ae575b6130c7575b50506130a692506130a0905a90611e68565b90611ea0565b956130bf5a996130b7602954612f38565b602955612f38565b989096613014565b906129426130d59288611e8d565b80151580613146575b6130ea575b869061308e565b6040519363a9059cbb60e01b85526004850152602484015260208360448160008c5af19081156118bf576130a6936130a092613128575b50906130e3565b61313f9060203d8111612e9d57612e8e8183611e22565b5038613121565b506040516370a0823160e01b81523060048201526020816024818d5afa80156118bf57829160009161317a575b50116130de565b91506020823d82116131a6575b8161319460209383611e22565b810103126118b4575081905138613173565b3d9150613187565b50601854811015613089565b5084600052602860205260ff6040600020541615613083565b91506020823d82116131ff575b816131ed60209383611e22565b810103126118b4575086905138613079565b3d91506131e0565b600060295561302d565b5050505050505091505043602b55565b50828a1061301d565b9093506020813d60201161325a575b8161324660209383611e22565b810103126132565751923861300e565b8780fd5b3d9150613239565b6040513d8a823e3d90fd5b9093506020813d602011613299575b8161328960209383611e22565b8101031261040257519238612fd7565b3d915061327c565b90506020813d6020116132cb575b816132bc60209383611e22565b81010312610402575138612f9b565b3d91506132af565b9081602091031261040257516001600160a01b03811681036104025790565b919060207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9160018060a01b031693846000526001825261333884604060002054611ea0565b856000526001835260406000205560405193845260018060a01b031692a3565b906000600383111561339c5750818060011c60018101809111610d3157905b838210613382575050565b909250613393836109818184611ead565b60011c90613377565b916133a357565b6001915056fe057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63ea264697066735822122073fd7b97222992f62e18860a2c40dfeb54fa6ff71a35d64fbb3ca7b8b6aba45664736f6c634300081c003360808060405234609f5760208161012a8038038091601c828560b7565b833981010312609f57516001600160a01b03811690819003609f57602060009160446040518094819363095ea7b360e01b8352336004840152811960248401525af1801560ab576075575b604051603a90816100f08239f35b6020813d60201160a4575b81608b6020938360b7565b81010312609f575180151503609f57386067565b600080fd5b3d91506080565b6040513d6000823e3d90fd5b601f909101601f19168101906001600160401b0382119082101760d957604052565b634e487b7160e01b600052604160045260246000fdfe600080fdfea264697066735822122029983e591b7e2821fd9c333549538746b90a36f539ae050f9e761db5d31bc60464736f6c634300081c0033057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63eddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000036000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000114e61706f6c656f6e20546f6b656e20563200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034e504c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000055d398326f99059ff775485246999027b319795500000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e0000000000000000000000006c9d807361740d4519ce857dc051b333930be5c100000000000000000000000055d398326f99059ff775485246999027b3197955000000000000000000000000ced4f510170e37d7fd93cfef0798060b59b266990000000000000000000000002543d7a49ef0b89456d402121fe3f89754143445000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000154eabe6e7d150000000000000000000000000000000000000000000000000000000000000000c800000000000000000000000000000000000000000000000000000000000000c800000000000000000000000000000000000000000000000000000000000000c800000000000000000000000000000000000000000000000000000000000000c8000000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c806301339c2114611c5557806301873d8f14611c1657806301986fad14611bd757806304c23ffe14611bb557806305833c2b14611b5557806306fdde0314611a9657806307c3adf014611a78578063095ea7b3146119fe5780630f890b86146119c9578063150e4c471461195757806315d07d821461193457806318160ddd1461191657806318d12855146118e95780631930381c146118cb5780631dbbaebd146117ba578063206c17bb146117915780632171dcc91461173157806323b872dd14611683578063255412d914611665578063313ce567146116475780633b9f1912146115fb5780633bb82eb6146115cd5780633c11100d1461158e5780633ccfdbcd146115545780634188bf5a1461152b57806341c50d1a1461150d5780634482004e146114ef57806346c123b6146114a95780634e11769f1461146a578063553193ca1461144c578063605324f2146113c4578063621823e6146113a65780636402511e146113785780636b6113681461135a578063704c7ec0146112e857806370a08231146112a7578063715018a614611249578063771f74481461121b57806381d09def14610f8e5780638322fff214610f615780638449470814610f3e5780638691752414610f205780638718b24f14610ef35780638da5cb5b14610eca5780638e1e083814610ea157806395d89b4114610d9d57806395e3667914610d7f57806397d6e6eb14610b71578063992db38f14610b0a5780639cc0e3c714610ac8578063a26df02514610a6e578063a842486114610a0e578063a9059cbb146109dd578063aa582b4214610896578063ab47a2911461085c578063b494690314610833578063bc0457391461080a578063be4fe9a5146107ec578063c14505d5146107ce578063c213d62d146107a0578063c5870ee7146106af578063c92d567e14610689578063cde5f58f1461066b578063ce4d9f151461062e578063d285e6ab14610610578063d5986433146105ea578063d710569b1461059a578063dd62ed3e14610549578063ddca92d414610520578063dfaf734a14610502578063e5a6b10f146104d9578063eb10b741146104bb578063ebababe314610461578063ed8d9bda146104075763f2fde38b0361000e573461040257602036600319011261040257610372611cc6565b6000546001600160a01b0381169161038b338414611ded565b6001600160a01b03169182156103d25782907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03191617600055005b60405162461bcd60e51b815260206004820152600860248201526706e657720697320360c41b6044820152606490fd5b600080fd5b3461040257602036600319011261040257610420611cc6565b61043560018060a01b03600054163314611ded565b6001600160a01b0316610449811515611ecd565b6001600160601b0360a01b6011541617601155600080f35b346104025760203660031901126104025761047a611cc6565b61048f60018060a01b03600054163314611ded565b6001600160a01b03166104a3811515611ecd565b6001600160601b0360a01b6010541617601055600080f35b34610402576000366003190112610402576020602a54604051908152f35b34610402576000366003190112610402576009546040516001600160a01b039091168152602090f35b34610402576000366003190112610402576020602354604051908152f35b34610402576000366003190112610402576024546040516001600160a01b039091168152602090f35b3461040257604036600319011261040257610562611cc6565b61056a611cdc565b6001600160a01b039182166000908152600260209081526040808320949093168252928352819020549051908152f35b34610402576020366003190112610402576105b3611cc6565b6105c860018060a01b03600054163314611ded565b602280546001600160a01b0319166001600160a01b0392909216919091179055005b3461040257600036600319011261040257602060ff60195460a81c166040519015158152f35b34610402576000366003190112610402576020602154604051908152f35b346104025760003660031901126104025761066761064a611f57565b604080519384526020840192909252908201529081906060820190565b0390f35b34610402576000366003190112610402576020604051620151808152f35b3461040257600036600319011261040257602060ff60195460a01c166040519015158152f35b346104025760403660031901126104025760043567ffffffffffffffff8111610402576106e0903690600401611d4a565b9060243567ffffffffffffffff811161040257610701903690600401611d4a565b92909161071960018060a01b03600054163314611ded565b8382036107695760005b82811061072c57005b8061073a6001928787611e44565b35828060a01b0361075461074f848888611e44565b611e54565b16600052601c60205260406000205501610723565b60405162461bcd60e51b815260206004820152600f60248201526e0d8cadccee8d040dad2e6dac2e8c6d608b1b6044820152606490fd5b34610402576020366003190112610402576107c660018060a01b03600054163314611ded565b600435602a55005b34610402576000366003190112610402576020601354604051908152f35b34610402576000366003190112610402576020600e54604051908152f35b34610402576000366003190112610402576010546040516001600160a01b039091168152602090f35b34610402576000366003190112610402576011546040516001600160a01b039091168152602090f35b34610402576020366003190112610402576001600160a01b0361087d611cc6565b16600052601c6020526020604060002054604051908152f35b346104025760203660031901126104025760043567ffffffffffffffff8111610402576108c7903690600401611d4a565b6108dc60018060a01b03600054163314611ded565b60ff60195460a81c16156109a257806001101561098c5760208201359182600c55816002101561098c57604081013580600d55826003101561098c5760608201359182600e55836004101561098c5760808101359384600f55806005101561098c5760a082013590816012556006101561098c576109816113249561098695610981886109866100199b6109818861098160c06109819c01359c8d9485601355611ea0565b611ea0565b10611f08565b634e487b7160e01b600052603260045260246000fd5b60405162461bcd60e51b81526020600482015260136024820152721d185e0818da185b99d948191a5cd8589b1959606a1b6044820152606490fd5b3461040257604036600319011261040257610a036109f9611cc6565b6024359033612133565b602060405160018152f35b3461040257604036600319011261040257610019610a2a611cc6565b610a32611cf2565b90610a4860018060a01b03600054163314611ded565b60018060a01b0316600052600a60205260406000209060ff801983541691151516179055565b3461040257602036600319011261040257610a87611cc6565b610a9c60018060a01b03600054163314611ded565b6001600160a01b0316610ab0811515611ecd565b6001600160601b0360a01b6024541617602455600080f35b3461040257602036600319011261040257600435601a5481101561040257610af1602091611db7565b905460405160039290921b1c6001600160a01b03168152f35b3461040257600036600319011261040257610b3060018060a01b03600054163314611ded565b602554610b3d5743602555005b60405162461bcd60e51b815260206004820152600c60248201526b0737461727465644164644c560a41b6044820152606490fd5b34610402576000366003190112610402576024546001600160a01b031615610d4757602354620151808101809111610d31574210610d01573060005260016020526040600020548015610cc7576103e881048015610c82577ff7980a2481c9873c50cbedccb43b1d25feb36e3752edbcfc2403292e19afee9d90426023553060005260016020526040600020610c08828254611e68565b905560018060a01b036024541660005260016020526040600020610c2d828254611ea0565b905560018060a01b036024541692836040518381527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203092a36040805192835260208301919091524290820152606090a2005b60405162461bcd60e51b815260206004820152601860248201527f72656c6561736520616d6f756e7420746f6f20736d616c6c00000000000000006044820152606490fd5b60405162461bcd60e51b81526020600482015260126024820152716e6f20726573657276652062616c616e636560701b6044820152606490fd5b60405162461bcd60e51b81526020600482015260086024820152673a37b79039b7b7b760c11b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601060248201526f1c9958d95a5d995c881b9bdd081cd95d60821b6044820152606490fd5b34610402576000366003190112610402576020601554604051908152f35b346104025760003660031901126104025760405160006004548060011c90600181168015610e97575b602083108114610e8357828552908115610e5f5750600114610dff575b61066783610df381850382611e22565b60405191829182611d01565b91905060046000527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b916000905b808210610e4557509091508101602001610df3610de3565b919260018160209254838588010152019101909291610e2d565b60ff191660208086019190915291151560051b84019091019150610df39050610de3565b634e487b7160e01b84526022600452602484fd5b91607f1691610dc6565b34610402576000366003190112610402576022546040516001600160a01b039091168152602090f35b34610402576000366003190112610402576000546040516001600160a01b039091168152602090f35b3461040257600036600319011261040257600b5460405160089190911c6001600160a01b03168152602090f35b34610402576000366003190112610402576020601f54604051908152f35b3461040257600036600319011261040257602060ff601d54166040519015158152f35b346104025760003660031901126104025760165460405160089190911c6001600160a01b03168152602090f35b346104025760203660031901126104025760043567ffffffffffffffff811161040257610fbf903690600401611d4a565b90610fd560018060a01b03600054163314611ded565b610fde82611e75565b610feb6040519182611e22565b828152610ff783611e75565b602082019190601f1901368337519067ffffffffffffffff821161120557600160401b821161120557601a5482601a558083106111ca575b50601a60005260005b82811061119f5750505060005b82811061115857826000601a541561114457601a90526000805160206133aa833981519152546009546001600160a01b039182169116036110ff576000198101908111610d315761109590611db7565b905460165460039290921b1c6001600160a01b0390811660089290921c16036110ba57005b60405162461bcd60e51b815260206004820152601860248201527f646f6e742073757070726f7420746869732070617468203200000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527f646f6e742073757070726f7420746869732070617468203100000000000000006044820152606490fd5b634e487b7160e01b81526032600452602490fd5b8061119961116c61074f6001948787611e44565b61117583611db7565b81546001600160a01b0393841660039290921b91821b9390911b1916919091179055565b01611045565b81516001600160a01b03166000805160206133aa833981519152820155602090910190600101611038565b6000805160206133aa83398151915201826000805160206133aa833981519152015b8181106111f9575061102f565b600081556001016111ec565b634e487b7160e01b600052604160045260246000fd5b346104025760203660031901126104025761124160018060a01b03600054163314611ded565b600435601855005b346104025760003660031901126104025760008054906001600160a01b038216611274338214611ded565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a36001600160a01b031916600055005b346104025760203660031901126104025760206112e06112c5611cc6565b6001600160a01b031660009081526001602052604090205490565b604051908152f35b34610402576112f636611d7b565b9061130c60018060a01b03600054163314611ded565b60005b81811061131857005b6001906001600160a01b0361133161074f838689611e44565b16600052601b6020526113548460406000209060ff801983541691151516179055565b0161130f565b34610402576000366003190112610402576020600f54604051908152f35b346104025760203660031901126104025761139e60018060a01b03600054163314611ded565b600435601f55005b34610402576000366003190112610402576020602c54604051908152f35b34610402576020366003190112610402576004356113ed60018060a01b03600054163314611ded565b62030d408110158061143f575b1561140457602155005b60405162461bcd60e51b8152602060048201526013602482015272746f6f2068696768206f7220746f6f206c6f7760681b6044820152606490fd5b50621e84808111156113fa565b34610402576000366003190112610402576020601754604051908152f35b34610402576020366003190112610402576001600160a01b0361148b611cc6565b16600052601b602052602060ff604060002054166040519015158152f35b3461040257602036600319011261040257600435801515809103610402576114dc60018060a01b03600054163314611ded565b60ff801960205416911617602055600080f35b34610402576000366003190112610402576020602554604051908152f35b34610402576000366003190112610402576020601854604051908152f35b34610402576000366003190112610402576019546040516001600160a01b039091168152602090f35b34610402576020366003190112610402576001600160a01b03611575611cc6565b1660005260146020526020604060002054604051908152f35b34610402576020366003190112610402576001600160a01b036115af611cc6565b16600052600a602052602060ff604060002054166040519015158152f35b34610402576020366003190112610402576115f360018060a01b03600054163314611ded565b600435602c55005b3461040257604036600319011261040257611614611cc6565b61162960018060a01b03600054163314611ded565b6001600160a01b03166000908152601c602052604090206024359055005b34610402576000366003190112610402576020600554604051908152f35b34610402576000366003190112610402576020600d54604051908152f35b346104025760603660031901126104025761169c611cc6565b6116a4611cdc565b906116b3604435809383612133565b6001600160a01b031660008181526002602090815260408083203384529091529020549091906001016116eb57602060405160018152f35b600082815260026020908152604080832033845290915290205461170f9190611e68565b6000918252600260209081526040808420338552909152909120558080610a03565b346104025760403660031901126104025761001961174d611cc6565b611755611cf2565b9061176b60018060a01b03600054163314611ded565b60018060a01b0316600052601e60205260406000209060ff801983541691151516179055565b34610402576000366003190112610402576008546040516001600160a01b039091168152602090f35b346104025760203660031901126104025760043567ffffffffffffffff8111610402576117eb903690600401611d4a565b9061180160018060a01b03600054163314611ded565b60005b82811061180d57005b6019546001600160a01b0316602061182961074f848787611e44565b6040516370a0823160e01b81526001600160a01b03909116600482015291829060249082905afa9081156118bf5760009161188a575b509060019161186f575b01611804565b61188561188061074f838787611e44565b61207d565b611869565b906020823d82116118b7575b816118a360209383611e22565b810103126118b4575051600161185f565b80fd5b3d9150611896565b6040513d6000823e3d90fd5b34610402576000366003190112610402576020601254604051908152f35b346104025760003660031901126104025761190f60018060a01b03600054163314611ded565b6000602555005b34610402576000366003190112610402576020600754604051908152f35b3461040257600036600319011261040257602060ff601654166040519015158152f35b346104025761196536611d7b565b9061197b60018060a01b03600054163314611ded565b60005b81811061198757005b6001906001600160a01b036119a061074f838689611e44565b1660005260066020526119c38460406000209060ff801983541691151516179055565b0161197e565b34610402576000366003190112610402576119ef60018060a01b03600054163314611ded565b6019805460ff60a81b19169055005b3461040257604036600319011261040257611a17611cc6565b3360008181526002602090815260408083206001600160a01b03909516808452948252918290206024359081905591519182527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a3602060405160018152f35b34610402576000366003190112610402576020600c54604051908152f35b346104025760003660031901126104025760405160006003548060011c90600181168015611b4b575b602083108114610e8357828552908115610e5f5750600114611aeb5761066783610df381850382611e22565b91905060036000527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b916000905b808210611b3157509091508101602001610df3610de3565b919260018160209254838588010152019101909291611b19565b91607f1691611abf565b3461040257604036600319011261040257610019611b71611cc6565b611b79611cf2565b90611b8f60018060a01b03600054163314611ded565b60018060a01b0316600052602860205260406000209060ff801983541691151516179055565b3461040257600036600319011261040257602060ff8154166040519015158152f35b34610402576020366003190112610402576001600160a01b03611bf8611cc6565b166000526006602052602060ff604060002054166040519015158152f35b34610402576020366003190112610402576001600160a01b03611c37611cc6565b16600052601e602052602060ff604060002054166040519015158152f35b3461040257600036600319011261040257611c7b60018060a01b03600054163314611ded565b601754611c925743601755601d805460ff19169055005b60405162461bcd60e51b815260206004820152600c60248201526b30b63932b0b23c9037b832b760a11b6044820152606490fd5b600435906001600160a01b038216820361040257565b602435906001600160a01b038216820361040257565b60243590811515820361040257565b91909160208152825180602083015260005b818110611d34575060409293506000838284010152601f8019910116010190565b8060208092870101516040828601015201611d13565b9181601f840112156104025782359167ffffffffffffffff8311610402576020808501948460051b01011161040257565b6040600319820112610402576004359067ffffffffffffffff821161040257611da691600401611d4a565b909160243580151581036104025790565b601a5481101561098c57601a60005260206000200190600090565b60265481101561098c57602660005260206000200190600090565b15611df457565b60405162461bcd60e51b815260206004820152600660248201526510b7bbb732b960d11b6044820152606490fd5b90601f8019910116810190811067ffffffffffffffff82111761120557604052565b919081101561098c5760051b0190565b356001600160a01b03811681036104025790565b91908203918211610d3157565b67ffffffffffffffff81116112055760051b60200190565b81810292918115918404141715610d3157565b91908201809211610d3157565b8115611eb7570490565b634e487b7160e01b600052601260045260246000fd5b15611ed457565b60405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b6044820152606490fd5b15611f0f57565b60405162461bcd60e51b815260206004820152600c60248201526b0cccaca40e8dede40d0d2ced60a31b6044820152606490fd5b51906001600160701b038216820361040257565b601954604051630240bc6b60e21b8152916001600160a01b0390911690606083600481855afa9283156118bf57600090819461201d575b506009546001600160701b03948516946001600160a01b039091169116308210156120145760209094935b6024604051809481936370a0823160e01b835260048301525afa9081156118bf57600091611fe5575090565b90506020813d60201161200c575b8161200060209383611e22565b81010312610402575190565b3d9150611ff3565b92602090611fb9565b93506060843d606011612075575b8161203860609383611e22565b810103126118b45761204984611f43565b90604061205860208701611f43565b95015163ffffffff8116036118b457506001600160701b03611f8e565b3d915061202b565b803b612130576001600160a01b038116600081815260276020526040902054909190156120a8575050565b60265491821580156120ee575b6120be57505050565b600052602760205281604060002055600160401b821015611205576111758260016120ec9401602655611dd2565b565b5060006026541561114457602690527f744a2cf8fd7008e3d53b67916e73460df9fa5214e3ef23dd4259ca09493a3594546001600160a01b03168114156120b5565b50565b9160018060a01b038316908160005260016020528060406000205410612ca3576017541580612c97575b612b69575b601954600093908490819081906001600160a01b038086169082161480612b51575b80612b48575b6127ad575b6001600160a01b03811687146126ec575b601754159081806126df575b612610575b87600052600a60205260ff6040600020541680156125ee575b612420575b505050508360005260016020526121eb83604060002054611e68565b846000526001602052604060002055600090612240575b61220f9061221693611e68565b90856132f2565b3003612220575050565b612231575b506120ec602154612f47565b61223a9061207d565b38612225565b841561241257612710612256600e545b85611e8d565b04806123ff575b50846123ea57612710612272600d5485611e8d565b045b8481612385575b505060125480612316575b5060135480612296575b50612202565b9260018060a01b03601154169081156122da576122d261220f936122cb6127106122c36122169986611e8d565b048092611ea0565b938a6132f2565b935090612290565b60405162461bcd60e51b8152602060048201526014602482015273199959549958d95a5d995c90881b9bdd081cd95d60621b6044820152606490fd5b6010546001600160a01b03169182156123495761233c6127106122c36123439488611e8d565b92886132f2565b38612286565b60405162461bcd60e51b8152602060048201526014602482015273199959549958d95a5d995c90481b9bdd081cd95d60621b6044820152606490fd5b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60206123b68461dead9596611ea0565b9484600052600182526123ce81604060002054611ea0565b8560005260018352604060002055604051908152a3388461227b565b6127106123f9600f5485611e8d565b04612274565b905061240c8130886132f2565b3861225d565b612710612256600c54612250565b87600052600660205260ff6040600020541615806125cb575b612475575b505050506001600160a01b0382166000908152600a602052604090205460ff1661246c575b388080806121cf565b60019450612463565b60a01c60ff16806125a8575b8061258f575b61253a575b506001600160a01b0384166000908152600a602052604090205460ff166124d6575b1590816124cd575b506124c5575b3880808061243e565b5060016124bc565b905015386124b6565b600b5460ff81161580612532575b6124ef575b506124ae565b306000526001602052604060002054601f54811161250e575b506124e9565b60016125219260ff191617600b55612cf3565b60ff19600b5416600b553880612508565b5081156124e4565b80159061257c575b1561254d573861248c565b60405162461bcd60e51b815260206004820152600760248201526670617573696e6760c81b6044820152606490fd5b5060255415158015612542575080612542565b5086600052601b60205260ff6040600020541615612487565b506001600160a01b0385166000908152601b602052604090205460ff1615612481565b506001600160a01b03861660009081526006602052604090205460ff1615612439565b506001600160a01b0386166000908152600a602052604090205460ff166121ca565b87600052600660205260ff6040600020541615806126bc575b806126a3575b80612680575b156121b15763ffffffff863b16156121b15760405162461bcd60e51b8152602060048201526011602482015270063616e7420616464206f74686572206c7607c1b6044820152606490fd5b506001600160a01b0386166000908152600a602052604090205460ff1615612635565b5087600052600a60205260ff604060002054161561262f565b506001600160a01b03861660009081526006602052604090205460ff1615612629565b5060ff8160a01c166121ac565b60006126f6611f57565b9050111561270d575b156121a057600192506121a0565b506040516318160ddd60e01b81526020816004816001600160a01b0386165afa9081156118bf57600091612779575b5061274a6127749188611e8d565b6001600160a01b03831660009081526001602052604090205461276e908990611e68565b90611ead565b6126ff565b90506020813d6020116127a5575b8161279460209383611e22565b81010312610402575161274a61273c565b3d9150612787565b60006127b7611f57565b906127d6600082858d81151580612b3f575b612b28575b509050611ea0565b821015612806575b5050501515806127f7575b1561218f576001915061218f565b5063ffffffff893b16156127e9565b6040516318160ddd60e01b81529293506000916020846004816001600160a01b038a165afa938415612b1d578394612ae5575b5060085460405163c45a015560e01b81528591602090829060049082906001600160a01b03165afa908115612abd576004916020918791612ac8575b50604051622fcfcb60e31b815292839182906001600160a01b03165afa908115612abd578591612a8e575b50604051637464fc3d60e01b8152906020826004816001600160a01b038d165afa918215612a8357908695949392918f99989792612a3d575b50879291906001600160a01b0316612965575b50506128f791611e68565b938361292957505050506129139161290e91611e8d565b613358565b6103e7198101908111610d31575b3880806127de565b8395506129479061294261294e95612942949597611e8d565b611ead565b948b611e8d565b90508082101561295e5750612921565b9050612921565b80156128ec57909161297d61290e8661298393611e8d565b91613358565b808211612993575b8792506128ec565b9091929394959697506129af6129a98284611e68565b84611e8d565b918260031b9280840460081490151715612a2957601181029080820460111490151715612a29578160031b9180830460081490151715612a29578897969594928f99949261276e90612a0093611ea0565b9081612a0f575b82935061298b565b6128f79392965090612a2091611ea0565b94909138612a07565b634e487b7160e01b87526011600452602487fd5b915091929394959697506020813d602011612a7b575b81612a6060209383611e22565b81010312612a7757518d97969594939291876128d9565b8580fd5b3d9150612a53565b6040513d88823e3d90fd5b612ab0915060203d602011612ab6575b612aa88183611e22565b8101906132d3565b386128a0565b503d612a9e565b6040513d87823e3d90fd5b612adf9150823d8411612ab657612aa88183611e22565b38612875565b9093506020813d602011612b15575b81612b0160209383611e22565b81010312612b1157519238612839565b8280fd5b3d9150612af4565b6040513d85823e3d90fd5b612b3793509061294291611e8d565b82858d6127ce565b508215156127c9565b5086321461218a565b5033600052601e60205260ff60406000205416612184565b81600052600660205260ff604060002054161580612c74575b156121625781600052600a60205260ff6040600020541615612162576001600160a01b0383166000818152601b602052604090205460ff1615612c2f5780600052601c6020528160406000205410612bf357600052601c6020526040600020612bec828254611e68565b9055612162565b60405162461bcd60e51b81526020600482015260146024820152736578636565642070726573616c652071756f746160601b6044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527f6e6f7420696e2070726573616c652077686974656c69737400000000000000006044820152606490fd5b506001600160a01b03831660009081526006602052604090205460ff1615612b82565b5060ff601d541661215d565b60405162461bcd60e51b815260206004820152601060248201526f0c4c2d8c2dcc6ca9cdee88adcdeeaced60831b6044820152606490fd5b90816020910312610402575180151581036104025790565b6000908015612f345760018060a01b03600954169160405191612d17606084611e22565b60028352602083016040368237835115612f2057308152835160011015612f20576040840185905260088054600b546001600160a01b0391821694921c1690833b15612f1c579491849391604051968794635c11d79560e01b865260a4860191600487015286602487015260a060448701525180915260c485019290865b818110612ef7575050508380928692606483015242608483015203925af19182612ee7575b5090612ee2577f6c37756e80daba6f4df0d5bfa6cddadfe23601acc1a27dc8d4aa427de91467886020604051838152a15b600b546040516370a0823160e01b815260089190911c6001600160a01b03166004820181905290602081602481875afa908115612b1d578391612eb0575b5080612e36575b50505050565b60646020928460405196879485936323b872dd60e01b8552600485015230602485015260448401525af1908115612ea45750612e75575b808080612e30565b612e969060203d602011612e9d575b612e8e8183611e22565b810190612cdb565b5038612e6d565b503d612e84565b604051903d90823e3d90fd5b90506020813d602011612eda575b81612ecb60209383611e22565b81010312610402575138612e29565b3d9150612ebe565b612deb565b81612ef191611e22565b38612dba565b82516001600160a01b0316855288975089965060209485019490920191600101612d95565b8480fd5b634e487b7160e01b83526032600452602483fd5b5050565b6000198114610d315760010190565b612f56602b54602c5490611ea0565b4310612130576016546040516370a0823160e01b815230600482015260089190911c6001600160a01b03169190602081602481865afa9081156118bf576000916132a1575b50602a5411612f34576019546040516318160ddd60e01b815292906001600160a01b0316602084600481845afa9384156118bf5760009461326d575b506026549360009384955a97604051926370a0823160e01b84523060048501526020846024818a5afa93841561326257889461322a575b50979890965b88811080613221575b1561321157826029541015613207575b613038602954611dd2565b90546040516370a0823160e01b815260039290921b1c6001600160a01b03166004820181905292906020816024818b5afa80156118bf5787916000916131d3575b50801515806131ba575b806131ae575b6130c7575b50506130a692506130a0905a90611e68565b90611ea0565b956130bf5a996130b7602954612f38565b602955612f38565b989096613014565b906129426130d59288611e8d565b80151580613146575b6130ea575b869061308e565b6040519363a9059cbb60e01b85526004850152602484015260208360448160008c5af19081156118bf576130a6936130a092613128575b50906130e3565b61313f9060203d8111612e9d57612e8e8183611e22565b5038613121565b506040516370a0823160e01b81523060048201526020816024818d5afa80156118bf57829160009161317a575b50116130de565b91506020823d82116131a6575b8161319460209383611e22565b810103126118b4575081905138613173565b3d9150613187565b50601854811015613089565b5084600052602860205260ff6040600020541615613083565b91506020823d82116131ff575b816131ed60209383611e22565b810103126118b4575086905138613079565b3d91506131e0565b600060295561302d565b5050505050505091505043602b55565b50828a1061301d565b9093506020813d60201161325a575b8161324660209383611e22565b810103126132565751923861300e565b8780fd5b3d9150613239565b6040513d8a823e3d90fd5b9093506020813d602011613299575b8161328960209383611e22565b8101031261040257519238612fd7565b3d915061327c565b90506020813d6020116132cb575b816132bc60209383611e22565b81010312610402575138612f9b565b3d91506132af565b9081602091031261040257516001600160a01b03811681036104025790565b919060207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9160018060a01b031693846000526001825261333884604060002054611ea0565b856000526001835260406000205560405193845260018060a01b031692a3565b906000600383111561339c5750818060011c60018101809111610d3157905b838210613382575050565b909250613393836109818184611ead565b60011c90613377565b916133a357565b6001915056fe057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63ea264697066735822122073fd7b97222992f62e18860a2c40dfeb54fa6ff71a35d64fbb3ca7b8b6aba45664736f6c634300081c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000036000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000114e61706f6c656f6e20546f6b656e20563200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034e504c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000055d398326f99059ff775485246999027b319795500000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e0000000000000000000000006c9d807361740d4519ce857dc051b333930be5c100000000000000000000000055d398326f99059ff775485246999027b3197955000000000000000000000000ced4f510170e37d7fd93cfef0798060b59b266990000000000000000000000002543d7a49ef0b89456d402121fe3f89754143445000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000154eabe6e7d150000000000000000000000000000000000000000000000000000000000000000c800000000000000000000000000000000000000000000000000000000000000c800000000000000000000000000000000000000000000000000000000000000c800000000000000000000000000000000000000000000000000000000000000c8000000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : stringParams (string[]): Napoleon Token V2,NPL
Arg [1] : addressParams (address[]): 0x55d398326f99059fF775485246999027B3197955,0x10ED43C718714eb63d5aA57B78B54704E256024E,0x6c9d807361740d4519Ce857dC051B333930bE5C1,0x55d398326f99059fF775485246999027B3197955,0xCEd4F510170E37D7fd93Cfef0798060B59B26699,0x2543D7A49eF0b89456d402121FE3f89754143445
Arg [2] : numberParams (uint256[]): 18,95959595700000000,200,200,200,200,50,50
Arg [3] : boolParams (bool[]): True,True,False
-----Encoded View---------------
31 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000160
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000240
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000360
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000011
Arg [8] : 4e61706f6c656f6e20546f6b656e205632000000000000000000000000000000
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [10] : 4e504c0000000000000000000000000000000000000000000000000000000000
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [12] : 00000000000000000000000055d398326f99059ff775485246999027b3197955
Arg [13] : 00000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e
Arg [14] : 0000000000000000000000006c9d807361740d4519ce857dc051b333930be5c1
Arg [15] : 00000000000000000000000055d398326f99059ff775485246999027b3197955
Arg [16] : 000000000000000000000000ced4f510170e37d7fd93cfef0798060b59b26699
Arg [17] : 0000000000000000000000002543d7a49ef0b89456d402121fe3f89754143445
Arg [18] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [19] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [20] : 0000000000000000000000000000000000000000000000000154eabe6e7d1500
Arg [21] : 00000000000000000000000000000000000000000000000000000000000000c8
Arg [22] : 00000000000000000000000000000000000000000000000000000000000000c8
Arg [23] : 00000000000000000000000000000000000000000000000000000000000000c8
Arg [24] : 00000000000000000000000000000000000000000000000000000000000000c8
Arg [25] : 0000000000000000000000000000000000000000000000000000000000000032
Arg [26] : 0000000000000000000000000000000000000000000000000000000000000032
Arg [27] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [28] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [29] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [30] : 0000000000000000000000000000000000000000000000000000000000000000
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)