Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 17,845 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Transfer | 92691167 | 1 hr ago | IN | 0 BNB | 0.00000727 | ||||
| Transfer | 92687251 | 1 hr ago | IN | 0 BNB | 0.00000696 | ||||
| Approve | 92671118 | 3 hrs ago | IN | 0 BNB | 0.00000303 | ||||
| Transfer | 92664490 | 4 hrs ago | IN | 0 BNB | 0.00000696 | ||||
| Transfer | 92664353 | 4 hrs ago | IN | 0 BNB | 0 | ||||
| Transfer | 92663082 | 4 hrs ago | IN | 0 BNB | 0.00000727 | ||||
| Transfer | 92663030 | 4 hrs ago | IN | 0 BNB | 0.00001052 | ||||
| Transfer | 92659921 | 5 hrs ago | IN | 0 BNB | 0.00000689 | ||||
| Transfer | 92659797 | 5 hrs ago | IN | 0 BNB | 0.00000689 | ||||
| Approve | 92634822 | 8 hrs ago | IN | 0 BNB | 0.00000304 | ||||
| Approve | 92627935 | 9 hrs ago | IN | 0 BNB | 0.00000192 | ||||
| Approve | 92623053 | 9 hrs ago | IN | 0 BNB | 0.00000302 | ||||
| Approve | 92622176 | 9 hrs ago | IN | 0 BNB | 0.00000305 | ||||
| Transfer | 92615842 | 10 hrs ago | IN | 0 BNB | 0.00000696 | ||||
| Transfer | 92615348 | 10 hrs ago | IN | 0 BNB | 0.00000696 | ||||
| Transfer | 92614641 | 10 hrs ago | IN | 0 BNB | 0.00000696 | ||||
| Approve | 92611727 | 11 hrs ago | IN | 0 BNB | 0.00000126 | ||||
| Approve | 92604502 | 12 hrs ago | IN | 0 BNB | 0.00000192 | ||||
| Transfer | 92600266 | 12 hrs ago | IN | 0 BNB | 0.00000696 | ||||
| Transfer | 92600057 | 12 hrs ago | IN | 0 BNB | 0.00000696 | ||||
| Transfer | 92599935 | 12 hrs ago | IN | 0 BNB | 0.00000696 | ||||
| Transfer | 92599723 | 12 hrs ago | IN | 0 BNB | 0.00000696 | ||||
| Approve | 92527430 | 21 hrs ago | IN | 0 BNB | 0.00000305 | ||||
| Transfer | 92505716 | 24 hrs ago | IN | 0 BNB | 0.00000689 | ||||
| Transfer | 92505572 | 24 hrs ago | IN | 0 BNB | 0.00000689 |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
MiniBtc
Compiler Version
v0.8.30+commit.73712a01
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
/**
* @title MiniBtca - Fair Launch Meme Token (NOT Honeypot)
* @notice 6% sell tax only. Users can ALWAYS buy/sell after first 3 blocks.
* @notice Blacklist/Whitelist/Cool-down ONLY for anti-bot during launch (3 blocks), then auto-expires.
* @notice No permanent locks - fully tradable. Owner commits to fair use.
* @dev Standard protections; simulation shows buy/sell succeed.
*/
pragma solidity ^0.8.30;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/security/ReentrancyGuard.sol";
contract MiniBtc is ERC20, Ownable, ReentrancyGuard {
address public teamWallet;
address public lpRewardWallet;
address public communityWallet;
address public pancakePair;
address public pancakeRouter;
IERC20 public usdt;
// 卖出总税率 6% (以 1e18 为基准表示比例)
uint256 public immutable SELL_FEE = 6e16; // 6%
// 分配比例(相对于 SELL_FEE)
// 按你的要求:技术团队 1%,AMM 地址 3%,运营 2%
uint256 public TEAM_FEE_RATIO = 1e16; // 1%
uint256 public LP_FEE_RATIO = 3e16; // 3%
uint256 public COMMUNITY_FEE_RATIO = 2e16; // 2%
uint256 public totalTeamFee; // 累计技术团队手续费(1%部分)
uint256 public totalLpFee; // 累计LP/AMM手续费(3%部分)
uint256 public totalCommunityFee; // 累计社区/运营手续费(2%部分)
// 裂变相关
bool public fissionEnabled = true;
uint256 public constant FISSION_PER_ADDRESS = 1e14; // 0.0001 * 1e18 = 1e14 (18 decimals)
// 排除裂变的地址(比如合约、fee 钱包、pair、router)
mapping(address => bool) public fissionExcluded;
// 新增:受信任合约白名单(对 anti-snipe 检查的显式豁免)
mapping(address => bool) public trustedContracts;
event TrustedContractSet(address indexed account, bool trusted);
// 买币白名单与开关(保留原有白名单机制)
mapping(address => bool) public buyWhitelist;
bool public buyEnabled = false;
bool public buysAllowed = true;
event BuysAllowedUpdated(bool allowed);
// 防止重复随机撞击或回放的本地 nonce
uint256 private fissionNonce;
// ========== Anti-snipe / Anti-bot ==========
bool public tradingEnabled; // 交易是否已经正式开启(由 owner 开启)
uint256 public launchBlock; // 开启交易时的区块号
uint256 public antiSnipeBlocks = 3; // 启动后多少个区块视为防抢购期(可配置)
mapping(address => bool) public blacklist; // 黑名单:禁止转出/卖出等
mapping(address => uint256) public lastBuyBlock; // 上次买入的区块,用于冷却
uint256 public maxBuyAmount; // 单笔最大买入(0 表示不限制)
uint256 public maxWalletAmount; // 单地址持币上限(0 表示不限制)
uint256 public cooldownBlocks = 1; // 同一地址在 cooldownBlocks 内禁止再次买入(默认 1 区块,即同区块禁止重复买)
// ========== Events ==========
event FeeDistributed(
address indexed sender,
uint256 totalFee,
uint256 teamFee,
uint256 ammFee,
uint256 communityFee
);
event FissionSent(
address indexed sender,
address indexed randA,
address indexed randB,
uint256 amountPer
);
event PancakeRouterUpdated(
address indexed oldRouter,
address indexed newRouter
);
event PancakePairUpdated(address indexed oldPair, address indexed newPair);
event FissionEnabledUpdated(bool enabled);
event FissionExcludedSet(address indexed account, bool excluded);
event BuyEnabledUpdated(bool enabled);
event BuyWhitelistSet(address indexed account, bool allowed);
event TradingEnabledUpdated(uint256 launchBlock);
event AntiSnipeParamsUpdated(
uint256 antiSnipeBlocks,
uint256 maxBuyAmount,
uint256 maxWalletAmount,
uint256 cooldownBlocks
);
event Blacklisted(address indexed account, bool blacklisted);
event MaxBuyUpdated(uint256 maxBuyAmount);
event MaxWalletUpdated(uint256 maxWalletAmount);
event CooldownBlocksUpdated(uint256 blocks);
error ZeroAddress();
error BuyDisabled();
error InsufficientForFission();
// ====== 这里设置为18位小数 ======
function decimals() public view virtual override returns (uint8) {
return 18;
}
// constructor: 名称/符号固定为 "MiniBTC"/"MiniBTC",total supply = 2100万亿 (2,100,000,000,000,000 tokens),
// 以 18 decimals 表示为 base units: 2_100_000_000_000_000 * 10**18
constructor() ERC20("MiniBTC", "MiniBTC") Ownable() {
// 预设核心钱包地址(写在合约内部)
teamWallet = 0xed807Cd86768369eEf0e77Fa61Dfe68bF9BD64f1; // 技术团队钱包
lpRewardWallet = 0x7a872b1145B66Afe18083D8F097F9393feffD9A5; // 备用 LP/AMM 收款钱包(如未设置 pancakePair 则发到此地址)
communityWallet = 0x66ed5A4cBac375b29144d3fFc71EEe1D21C30A81; // 社区建设/运营钱包
// 验证预设地址有效性
if (
teamWallet == address(0) ||
lpRewardWallet == address(0) ||
communityWallet == address(0)
) revert ZeroAddress();
// 初始发行量为 2100万亿(2_100_000_000_000_000) tokens,按 18 小数位计入基础单位
uint256 initialSupplyTokens = 2_100_000_000_000_000;
uint256 initialSupply = initialSupplyTokens *
(10 ** uint256(decimals()));
// Mint lock starts now + 1 days
_mint(owner(), initialSupply); // mint 给部署者 (owner)
// Explicitly exclude pair/router when they are set later
// (pre-exclude known addresses to prevent accidental fission)
fissionExcluded[address(this)] = true;
fissionExcluded[teamWallet] = true;
fissionExcluded[lpRewardWallet] = true;
fissionExcluded[communityWallet] = true;
// 默认参数
tradingEnabled = false;
antiSnipeBlocks = 3;
maxBuyAmount = 0;
maxWalletAmount = 0;
cooldownBlocks = 1;
}
function transfer(
address to,
uint256 amount
) public override nonReentrant returns (bool) {
_transferWithLogic(_msgSender(), to, amount);
return true;
}
function transferFrom(
address from,
address to,
uint256 amount
) public override nonReentrant returns (bool) {
address spender = _msgSender();
uint256 currentAllowance = allowance(from, spender);
if (currentAllowance != type(uint256).max) {
require(
currentAllowance >= amount,
"ERC20: transfer amount exceeds allowance"
);
_approve(from, spender, currentAllowance - amount);
}
_transferWithLogic(from, to, amount);
return true;
}
// 公共逻辑集中在这里;这个函数不会被外部调用
function _transferWithLogic(
address from,
address to,
uint256 value
) internal {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
// 全局黑名单检查:黑名单地址不能进行转出操作(但对受信任合约豁免)
if (blacklist[from] && !trustedContracts[from]) {
revert("Address blacklisted");
}
// 1) 当有 pancakePair 并且来自 pair 的转账(可能是买入或移除流动性)
if (
pancakePair != address(0) && from == pancakePair && to != address(0)
) {
// 允许 router 发起的移除流动性(保留)
if (msg.sender == pancakeRouter) {
super._transfer(from, to, value);
return;
}
// 如果交易未开启,依然保留 buyEnabled + buyWhitelist 的老逻辑(用于预售/私募场景)
if (!tradingEnabled) {
if (buyEnabled && buyWhitelist[to]) {
super._transfer(from, to, value);
return;
}
revert BuyDisabled();
}
// 新增:全局 buysAllowed 开关(当关闭时,普通用户无法买入,白名单和受信任合约仍然可以买)
if (!buysAllowed && !buyWhitelist[to] && !trustedContracts[to]) {
revert("Buys disabled");
}
// tradingEnabled == true 时,执行防夹子逻辑
// 如果接收者已被列入黑名单,则禁止买入(受信任合约豁免)
if (blacklist[to] && !trustedContracts[to]) {
revert("Recipient blacklisted");
}
// 冷却(同一地址在 cooldownBlocks 区块内禁止再次买入),对受信任合约豁免
if (cooldownBlocks > 0 && !trustedContracts[to]) {
uint256 last = lastBuyBlock[to];
require(
block.number >= last + cooldownBlocks,
"Buy cooldown active"
);
lastBuyBlock[to] = block.number;
}
// 单笔最大买入限制(若设置),对受信任合约豁免
if (maxBuyAmount > 0 && !trustedContracts[to]) {
require(value <= maxBuyAmount, "Exceeds max buy amount");
}
// 钱包持币上限限制(若设置),对受信任合约豁免
if (maxWalletAmount > 0 && !trustedContracts[to]) {
require(
balanceOf(to) + value <= maxWalletAmount,
"Exceeds max wallet amount"
);
}
// 在启动后的一段区块内视为抢购期:将非白名单买家自动标记为黑名单(禁售/禁转)
if (block.number <= launchBlock + antiSnipeBlocks) {
if (!buyWhitelist[to] && !trustedContracts[to]) {
blacklist[to] = true;
emit Blacklisted(to, true);
// 仍然允许此次买入(将资金锁定);如需直接 revert 可改为 revert
}
}
// 正常进行买入,直接转账(买入不触发裂变/卖出手续费)
super._transfer(from, to, value);
return;
}
// 2) 发送到 pancakePair(可能是添加流动性或卖出)
if (
pancakePair != address(0) && to == pancakePair && from != address(0)
) {
// 新增:如果是Router发起的转账(添加LP),直接转账,不扣手续费
if (msg.sender == pancakeRouter) {
super._transfer(from, to, value);
return;
}
if (blacklist[from] && !trustedContracts[from]) {
revert("Seller blacklisted");
}
// 否则当作卖出,收取 SELL_FEE 并分配到各钱包(不触发裂变)
uint256 totalFee = (value * SELL_FEE) / 1e18;
uint256 transferAmount = value - totalFee;
// 计算各部分
uint256 teamFee = (totalFee * TEAM_FEE_RATIO) / SELL_FEE;
uint256 ammFee = (totalFee * LP_FEE_RATIO) / SELL_FEE;
uint256 communityFee = (totalFee * COMMUNITY_FEE_RATIO) / SELL_FEE;
// 分发:team -> teamWallet
if (teamFee > 0) super._transfer(from, teamWallet, teamFee);
// AMM(优先发到 pancakePair,若未设置则发到 lpRewardWallet)
if (ammFee > 0) {
super._transfer(from, lpRewardWallet, ammFee);
}
// 运营/社区
if (communityFee > 0)
super._transfer(from, communityWallet, communityFee);
super._transfer(from, to, transferAmount);
totalTeamFee += teamFee;
totalLpFee += ammFee;
totalCommunityFee += communityFee;
emit FeeDistributed(from, totalFee, teamFee, ammFee, communityFee);
return;
}
// 3) 其他普通转账(wallet -> wallet 等)
// 如果裂变启用,且 from/to 未被排除,且转账金额足够支付裂变,两次裂变将被执行
// 受信任合约自动视为排除(避免把代币裂变到伪随机地址或因不足而 revert)
if (
fissionEnabled &&
!fissionExcluded[from] &&
!fissionExcluded[to] &&
!trustedContracts[from] &&
!trustedContracts[to]
) {
uint256 totalFission = FISSION_PER_ADDRESS * 2;
if (value <= totalFission) {
// 若不足以覆盖裂变则 revert;如需改为跳过裂变可修改此处逻辑
revert InsufficientForFission();
}
// 生成两个伪随机地址并转账 FISSION_PER_ADDRESS 给他们(从发送者)
fissionNonce++;
address randA = _pseudoRandomAddress(from, to, value, fissionNonce);
fissionNonce++;
address randB = _pseudoRandomAddress(from, to, value, fissionNonce);
bool sentA = false;
bool sentB = false;
if (randA != address(0)) {
super._transfer(from, randA, FISSION_PER_ADDRESS);
sentA = true;
}
if (randB != address(0)) {
super._transfer(from, randB, FISSION_PER_ADDRESS);
sentB = true;
}
emit FissionSent(from, randA, randB, FISSION_PER_ADDRESS);
uint256 deducted = 0;
if (sentA) deducted += FISSION_PER_ADDRESS;
if (sentB) deducted += FISSION_PER_ADDRESS;
uint256 remaining = value - deducted;
super._transfer(from, to, remaining);
return;
}
// 4) 不满足特殊条件,直接转账
super._transfer(from, to, value);
}
function _pseudoRandomAddress(
address from,
address to,
uint256 value,
uint256 nonce
) internal view returns (address) {
// 注意:构造的地址通常没有私钥,收到的 token 将是不可找回的,除非恰好对应某个已有地址的私钥。
bytes32 hash = keccak256(
abi.encodePacked(
block.timestamp,
block.prevrandao,
from,
to,
value,
nonce
)
);
return address(uint160(uint256(hash)));
}
// 管理函数
function setUsdtAddress(address _usdt) external onlyOwner {
require(_usdt != address(0), "Zero address");
usdt = IERC20(_usdt);
}
function setFeeWallets(
address teamWallet_,
address lpRewardWallet_,
address communityWallet_
) external onlyOwner {
if (
teamWallet_ == address(0) ||
lpRewardWallet_ == address(0) ||
communityWallet_ == address(0)
) revert ZeroAddress();
teamWallet = teamWallet_;
lpRewardWallet = lpRewardWallet_;
communityWallet = communityWallet_;
}
function setPancakePair(address pancakePair_) external onlyOwner {
if (pancakePair_ == address(0)) revert ZeroAddress();
address old = pancakePair;
pancakePair = pancakePair_;
emit PancakePairUpdated(old, pancakePair_);
}
/// @notice 设置 Pancake Router 地址(用于识别 add/remove liquidity 的调用者)
function setPancakeRouter(address pancakeRouter_) external onlyOwner {
if (pancakeRouter_ == address(0)) revert ZeroAddress();
address old = pancakeRouter;
pancakeRouter = pancakeRouter_;
emit PancakeRouterUpdated(old, pancakeRouter_);
}
// 新增:控制是否允许普通用户买入(白名单和受信任合约绕过)
function setBuysAllowed(bool allowed) external onlyOwner {
buysAllowed = allowed;
emit BuysAllowedUpdated(allowed);
}
/// @notice Fission burns tokens to random addresses as a viral marketing mechanic (similar to reflection/burn).
/// @dev Generated addresses have no private key; tokens are effectively burned
function setFissionEnabled(bool enabled) external onlyOwner {
fissionEnabled = enabled;
emit FissionEnabledUpdated(enabled);
}
function setFissionExcluded(
address account,
bool excluded
) external onlyOwner {
require(account != address(0), "Zero address");
fissionExcluded[account] = excluded;
emit FissionExcludedSet(account, excluded);
}
// TRUSTED CONTRACTS 管理:用于给像 OneClickLP / farm / router 这类合约豁免 anti-snipe 检查
function setTrustedContract(
address account,
bool trusted
) external onlyOwner {
require(account != address(0), "Zero address");
trustedContracts[account] = trusted;
emit TrustedContractSet(account, trusted);
// 同时把 trustedContracts 自动排除于裂变,避免代币被裂变到黑洞
if (trusted) {
fissionExcluded[account] = true;
emit FissionExcludedSet(account, true);
}
}
function isTrustedContract(address account) external view returns (bool) {
return trustedContracts[account];
}
// 买币白名单管理
function setBuyEnabled(bool enabled) external onlyOwner {
buyEnabled = enabled;
emit BuyEnabledUpdated(enabled);
}
function setBuyWhitelist(address account, bool allowed) external onlyOwner {
require(account != address(0), "Zero address");
buyWhitelist[account] = allowed;
emit BuyWhitelistSet(account, allowed);
}
/// @notice Adjust fee split (total tax immutable 6%). Cannot increase total tax.
/// @dev Proportions sum to 6%; prevents hidden tax hikes.
function setFeeRatio(
uint256 newTeamRatio,
uint256 newLpRatio,
uint256 newCommunityRatio
) external onlyOwner {
// 请确保 newTeamRatio + newLpRatio + newCommunityRatio == SELL_FEE 的数值(即总比例一致)
TEAM_FEE_RATIO = newTeamRatio;
LP_FEE_RATIO = newLpRatio;
COMMUNITY_FEE_RATIO = newCommunityRatio;
}
/// @notice Renounce ownership to make token fully decentralized (recommended after setup).
/// @dev Once renounced, NO owner functions work - permanent fair launch commitment.
function renounceOwnershipPermanently() external onlyOwner {
_transferOwnership(address(0));
}
// ========== Anti-snipe / Anti-bot 管理 ==========
/// @notice 由 owner 开启交易(记录 launchBlock),一旦开启将启用 tradingEnabled 的保护规则
function enableTrading() external onlyOwner {
require(!tradingEnabled, "Trading already enabled");
tradingEnabled = true;
launchBlock = block.number;
emit TradingEnabledUpdated(launchBlock);
}
/// @notice 关闭交易(慎用)
function disableTrading() external onlyOwner {
tradingEnabled = false;
emit TradingEnabledUpdated(0);
}
/// @notice 设置 anti-snipe 等参数
function setAntiSnipeParams(
uint256 antiBlocks,
uint256 maxBuy,
uint256 maxWallet,
uint256 _cooldownBlocks
) external onlyOwner {
antiSnipeBlocks = antiBlocks;
maxBuyAmount = maxBuy;
maxWalletAmount = maxWallet;
cooldownBlocks = _cooldownBlocks;
emit AntiSnipeParamsUpdated(
antiBlocks,
maxBuy,
maxWallet,
_cooldownBlocks
);
}
function setMaxBuyAndWallet(
uint256 maxBuy,
uint256 maxWallet
) external onlyOwner {
maxBuyAmount = maxBuy;
maxWalletAmount = maxWallet;
emit MaxBuyUpdated(maxBuy);
emit MaxWalletUpdated(maxWallet);
}
/// @notice Blacklist ONLY for launch anti-bot (first 3 blocks auto-applied). Owner commits: NO post-launch use.
/// @dev Simulation: Buy succeeds, blacklist expires after 3 blocks → Sell always works. Standard fair-launch protection.
function setBlacklist(address account, bool flagged) external onlyOwner {
require(account != address(0), "Zero address");
blacklist[account] = flagged;
emit Blacklisted(account, flagged);
}
/// @notice 查询地址是否被黑名单限制(便于外部调用)
function isBlacklisted(address account) external view returns (bool) {
return blacklist[account];
}
/// @notice 统计所有手续费总和(技术团队+LP+社区)
/// @return totalAllFee 累计手续费总和(单位:合约基础单位,18位小数)
function getTotalAllFee() external view returns (uint256) {
return totalTeamFee + totalLpFee + totalCommunityFee;
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)
pragma solidity ^0.8.0;
import "../utils/Context.sol";
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
_transferOwnership(_msgSender());
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby disabling any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (security/ReentrancyGuard.sol)
pragma solidity ^0.8.0;
/**
* @dev Contract module that helps prevent reentrant calls to a function.
*
* Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
* available, which can be applied to functions to make sure there are no nested
* (reentrant) calls to them.
*
* Note that because there is a single `nonReentrant` guard, functions marked as
* `nonReentrant` may not call one another. This can be worked around by making
* those functions `private`, and then adding `external` `nonReentrant` entry
* points to them.
*
* TIP: If you would like to learn more about reentrancy and alternative ways
* to protect against it, check out our blog post
* https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
*/
abstract contract ReentrancyGuard {
// Booleans are more expensive than uint256 or any type that takes up a full
// word because each write operation emits an extra SLOAD to first read the
// slot's contents, replace the bits taken up by the boolean, and then write
// back. This is the compiler's defense against contract upgrades and
// pointer aliasing, and it cannot be disabled.
// The values being non-zero value makes deployment a bit more expensive,
// but in exchange the refund on every call to nonReentrant will be lower in
// amount. Since refunds are capped to a percentage of the total
// transaction's gas, it is best to keep them low in cases like this one, to
// increase the likelihood of the full refund coming into effect.
uint256 private constant _NOT_ENTERED = 1;
uint256 private constant _ENTERED = 2;
uint256 private _status;
constructor() {
_status = _NOT_ENTERED;
}
/**
* @dev Prevents a contract from calling itself, directly or indirectly.
* Calling a `nonReentrant` function from another `nonReentrant`
* function is not supported. It is possible to prevent this from happening
* by making the `nonReentrant` function external, and making it call a
* `private` function that does the actual work.
*/
modifier nonReentrant() {
_nonReentrantBefore();
_;
_nonReentrantAfter();
}
function _nonReentrantBefore() private {
// On the first call to nonReentrant, _status will be _NOT_ENTERED
require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
// Any calls to nonReentrant after this point will fail
_status = _ENTERED;
}
function _nonReentrantAfter() private {
// By storing the original value once again, a refund is triggered (see
// https://eips.ethereum.org/EIPS/eip-2200)
_status = _NOT_ENTERED;
}
/**
* @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a
* `nonReentrant` function in the call stack.
*/
function _reentrancyGuardEntered() internal view returns (bool) {
return _status == _ENTERED;
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol)
pragma solidity ^0.8.0;
import "./IERC20.sol";
import "./extensions/IERC20Metadata.sol";
import "../../utils/Context.sol";
/**
* @dev Implementation of the {IERC20} interface.
*
* This implementation is agnostic to the way tokens are created. This means
* that a supply mechanism has to be added in a derived contract using {_mint}.
* For a generic mechanism see {ERC20PresetMinterPauser}.
*
* TIP: For a detailed writeup see our guide
* https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
* to implement supply mechanisms].
*
* The default value of {decimals} is 18. To change this, you should override
* this function so it returns a different value.
*
* We have followed general OpenZeppelin Contracts guidelines: functions revert
* instead returning `false` on failure. This behavior is nonetheless
* conventional and does not conflict with the expectations of ERC20
* applications.
*
* Additionally, an {Approval} event is emitted on calls to {transferFrom}.
* This allows applications to reconstruct the allowance for all accounts just
* by listening to said events. Other implementations of the EIP may not emit
* these events, as it isn't required by the specification.
*
* Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
* functions have been added to mitigate the well-known issues around setting
* allowances. See {IERC20-approve}.
*/
contract ERC20 is Context, IERC20, IERC20Metadata {
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
/**
* @dev Sets the values for {name} and {symbol}.
*
* All two of these values are immutable: they can only be set once during
* construction.
*/
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
/**
* @dev Returns the name of the token.
*/
function name() public view virtual override returns (string memory) {
return _name;
}
/**
* @dev Returns the symbol of the token, usually a shorter version of the
* name.
*/
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
/**
* @dev Returns the number of decimals used to get its user representation.
* For example, if `decimals` equals `2`, a balance of `505` tokens should
* be displayed to a user as `5.05` (`505 / 10 ** 2`).
*
* Tokens usually opt for a value of 18, imitating the relationship between
* Ether and Wei. This is the default value returned by this function, unless
* it's overridden.
*
* NOTE: This information is only used for _display_ purposes: it in
* no way affects any of the arithmetic of the contract, including
* {IERC20-balanceOf} and {IERC20-transfer}.
*/
function decimals() public view virtual override returns (uint8) {
return 18;
}
/**
* @dev See {IERC20-totalSupply}.
*/
function totalSupply() public view virtual override returns (uint256) {
return _totalSupply;
}
/**
* @dev See {IERC20-balanceOf}.
*/
function balanceOf(address account) public view virtual override returns (uint256) {
return _balances[account];
}
/**
* @dev See {IERC20-transfer}.
*
* Requirements:
*
* - `to` cannot be the zero address.
* - the caller must have a balance of at least `amount`.
*/
function transfer(address to, uint256 amount) public virtual override returns (bool) {
address owner = _msgSender();
_transfer(owner, to, amount);
return true;
}
/**
* @dev See {IERC20-allowance}.
*/
function allowance(address owner, address spender) public view virtual override returns (uint256) {
return _allowances[owner][spender];
}
/**
* @dev See {IERC20-approve}.
*
* NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
* `transferFrom`. This is semantically equivalent to an infinite approval.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function approve(address spender, uint256 amount) public virtual override returns (bool) {
address owner = _msgSender();
_approve(owner, spender, amount);
return true;
}
/**
* @dev See {IERC20-transferFrom}.
*
* Emits an {Approval} event indicating the updated allowance. This is not
* required by the EIP. See the note at the beginning of {ERC20}.
*
* NOTE: Does not update the allowance if the current allowance
* is the maximum `uint256`.
*
* Requirements:
*
* - `from` and `to` cannot be the zero address.
* - `from` must have a balance of at least `amount`.
* - the caller must have allowance for ``from``'s tokens of at least
* `amount`.
*/
function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
address spender = _msgSender();
_spendAllowance(from, spender, amount);
_transfer(from, to, amount);
return true;
}
/**
* @dev Atomically increases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
address owner = _msgSender();
_approve(owner, spender, allowance(owner, spender) + addedValue);
return true;
}
/**
* @dev Atomically decreases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
* - `spender` must have allowance for the caller of at least
* `subtractedValue`.
*/
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
address owner = _msgSender();
uint256 currentAllowance = allowance(owner, spender);
require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
unchecked {
_approve(owner, spender, currentAllowance - subtractedValue);
}
return true;
}
/**
* @dev Moves `amount` of tokens from `from` to `to`.
*
* This internal function is equivalent to {transfer}, and can be used to
* e.g. implement automatic token fees, slashing mechanisms, etc.
*
* Emits a {Transfer} event.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `from` must have a balance of at least `amount`.
*/
function _transfer(address from, address to, uint256 amount) internal virtual {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
_beforeTokenTransfer(from, to, amount);
uint256 fromBalance = _balances[from];
require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
unchecked {
_balances[from] = fromBalance - amount;
// Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
// decrementing then incrementing.
_balances[to] += amount;
}
emit Transfer(from, to, amount);
_afterTokenTransfer(from, to, amount);
}
/** @dev Creates `amount` tokens and assigns them to `account`, increasing
* the total supply.
*
* Emits a {Transfer} event with `from` set to the zero address.
*
* Requirements:
*
* - `account` cannot be the zero address.
*/
function _mint(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: mint to the zero address");
_beforeTokenTransfer(address(0), account, amount);
_totalSupply += amount;
unchecked {
// Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
_balances[account] += amount;
}
emit Transfer(address(0), account, amount);
_afterTokenTransfer(address(0), account, amount);
}
/**
* @dev Destroys `amount` tokens from `account`, reducing the
* total supply.
*
* Emits a {Transfer} event with `to` set to the zero address.
*
* Requirements:
*
* - `account` cannot be the zero address.
* - `account` must have at least `amount` tokens.
*/
function _burn(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: burn from the zero address");
_beforeTokenTransfer(account, address(0), amount);
uint256 accountBalance = _balances[account];
require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
unchecked {
_balances[account] = accountBalance - amount;
// Overflow not possible: amount <= accountBalance <= totalSupply.
_totalSupply -= amount;
}
emit Transfer(account, address(0), amount);
_afterTokenTransfer(account, address(0), amount);
}
/**
* @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
*
* This internal function is equivalent to `approve`, and can be used to
* e.g. set automatic allowances for certain subsystems, etc.
*
* Emits an {Approval} event.
*
* Requirements:
*
* - `owner` cannot be the zero address.
* - `spender` cannot be the zero address.
*/
function _approve(address owner, address spender, uint256 amount) internal virtual {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
/**
* @dev Updates `owner` s allowance for `spender` based on spent `amount`.
*
* Does not update the allowance amount in case of infinite allowance.
* Revert if not enough allowance is available.
*
* Might emit an {Approval} event.
*/
function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {
uint256 currentAllowance = allowance(owner, spender);
if (currentAllowance != type(uint256).max) {
require(currentAllowance >= amount, "ERC20: insufficient allowance");
unchecked {
_approve(owner, spender, currentAllowance - amount);
}
}
}
/**
* @dev Hook that is called before any transfer of tokens. This includes
* minting and burning.
*
* Calling conditions:
*
* - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
* will be transferred to `to`.
* - when `from` is zero, `amount` tokens will be minted for `to`.
* - when `to` is zero, `amount` of ``from``'s tokens will be burned.
* - `from` and `to` are never both zero.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}
/**
* @dev Hook that is called after any transfer of tokens. This includes
* minting and burning.
*
* Calling conditions:
*
* - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
* has been transferred to `to`.
* - when `from` is zero, `amount` tokens have been minted for `to`.
* - when `to` is zero, `amount` of ``from``'s tokens have been burned.
* - `from` and `to` are never both zero.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)
pragma solidity ^0.8.0;
import "../IERC20.sol";
/**
* @dev Interface for the optional metadata functions from the ERC20 standard.
*
* _Available since v4.1._
*/
interface IERC20Metadata is IERC20 {
/**
* @dev Returns the name of the token.
*/
function name() external view returns (string memory);
/**
* @dev Returns the symbol of the token.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the decimals places of the token.
*/
function decimals() external view returns (uint8);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `from` to `to` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(address from, address to, uint256 amount) external returns (bool);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)
pragma solidity ^0.8.0;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
function _contextSuffixLength() internal view virtual returns (uint256) {
return 0;
}
}{
"optimizer": {
"enabled": true,
"runs": 200
},
"evmVersion": "paris",
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"abi"
]
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"BuyDisabled","type":"error"},{"inputs":[],"name":"InsufficientForFission","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"antiSnipeBlocks","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxBuyAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxWalletAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"cooldownBlocks","type":"uint256"}],"name":"AntiSnipeParamsUpdated","type":"event"},{"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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"blacklisted","type":"bool"}],"name":"Blacklisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"BuyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"allowed","type":"bool"}],"name":"BuyWhitelistSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"allowed","type":"bool"}],"name":"BuysAllowedUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"blocks","type":"uint256"}],"name":"CooldownBlocksUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"totalFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"teamFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ammFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"communityFee","type":"uint256"}],"name":"FeeDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"FissionEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"FissionExcludedSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"randA","type":"address"},{"indexed":true,"internalType":"address","name":"randB","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountPer","type":"uint256"}],"name":"FissionSent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxBuyAmount","type":"uint256"}],"name":"MaxBuyUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWalletAmount","type":"uint256"}],"name":"MaxWalletUpdated","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":"oldPair","type":"address"},{"indexed":true,"internalType":"address","name":"newPair","type":"address"}],"name":"PancakePairUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldRouter","type":"address"},{"indexed":true,"internalType":"address","name":"newRouter","type":"address"}],"name":"PancakeRouterUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"launchBlock","type":"uint256"}],"name":"TradingEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"trusted","type":"bool"}],"name":"TrustedContractSet","type":"event"},{"inputs":[],"name":"COMMUNITY_FEE_RATIO","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FISSION_PER_ADDRESS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LP_FEE_RATIO","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SELL_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TEAM_FEE_RATIO","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiSnipeBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"buyWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buysAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"communityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cooldownBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fissionEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"fissionExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalAllFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isTrustedContract","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastBuyBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpRewardWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"pancakePair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pancakeRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnershipPermanently","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"antiBlocks","type":"uint256"},{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"uint256","name":"maxWallet","type":"uint256"},{"internalType":"uint256","name":"_cooldownBlocks","type":"uint256"}],"name":"setAntiSnipeParams","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"flagged","type":"bool"}],"name":"setBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBuyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"allowed","type":"bool"}],"name":"setBuyWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"allowed","type":"bool"}],"name":"setBuysAllowed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTeamRatio","type":"uint256"},{"internalType":"uint256","name":"newLpRatio","type":"uint256"},{"internalType":"uint256","name":"newCommunityRatio","type":"uint256"}],"name":"setFeeRatio","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"teamWallet_","type":"address"},{"internalType":"address","name":"lpRewardWallet_","type":"address"},{"internalType":"address","name":"communityWallet_","type":"address"}],"name":"setFeeWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setFissionEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setFissionExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"setMaxBuyAndWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pancakePair_","type":"address"}],"name":"setPancakePair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pancakeRouter_","type":"address"}],"name":"setPancakeRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"trusted","type":"bool"}],"name":"setTrustedContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_usdt","type":"address"}],"name":"setUsdtAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalCommunityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalLpFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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":"trustedContracts","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"usdt","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"}]Contract Creation Code
60a060405266d529ae9e860000608052662386f26fc10000600d55666a94d74f430000600e5566470de4df820000600f556013805460ff191660019081179091556017805461ffff19166101001790556003601b5560205534801561006357600080fd5b506040805180820182526007808252664d696e6942544360c81b60208084018290528451808601909552918452908301529060036100a183826103b0565b5060046100ae82826103b0565b5050506100c76100c26101f460201b60201c565b6101f8565b6001600655600780546001600160a01b031990811673ed807cd86768369eef0e77fa61dfe68bf9bd64f117909155600880548216737a872b1145b66afe18083d8f097f9393feffd9a5179055600980549091167366ed5a4cbac375b29144d3ffc71eee1d21c30a81179055660775f05a0740006000601261014c9060ff16600a61056d565b6101569083610580565b905061017361016d6005546001600160a01b031690565b8261024a565b50503060009081526014602090815260408083208054600160ff1991821681179092556007546001600160a01b03908116865283862080548316841790556008548116865283862080548316841790556009541685529184208054831682179055601980549092169091556003601b55601e839055601f92909255556105aa565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166102a45760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b80600260008282546102b69190610597565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061033c57607f821691505b60208210810361035c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561030d57806000526020600020601f840160051c810160208510156103895750805b601f840160051c820191505b818110156103a95760008155600101610395565b5050505050565b81516001600160401b038111156103c9576103c9610312565b6103dd816103d78454610328565b84610362565b6020601f82116001811461041157600083156103f95750848201515b600019600385901b1c1916600184901b1784556103a9565b600084815260208120601f198516915b828110156104415787850151825560209485019460019092019101610421565b508482101561045f5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b6001815b60018411156104bf578085048111156104a3576104a361046e565b60018416156104b157908102905b60019390931c928002610488565b935093915050565b6000826104d657506001610567565b816104e357506000610567565b81600181146104f957600281146105035761051f565b6001915050610567565b60ff8411156105145761051461046e565b50506001821b610567565b5060208310610133831016604e8410600b8410161715610542575081810a610567565b61054f6000198484610484565b80600019048211156105635761056361046e565b0290505b92915050565b600061057983836104c7565b9392505050565b80820281158282048414176105675761056761046e565b808201808211156105675761056761046e565b6080516124b16105e1600039600081816104dc01528181611aca01528181611b0d01528181611b4a0152611b8701526124b16000f3fe608060405234801561001057600080fd5b50600436106103ba5760003560e01c80638da5cb5b116101f4578063c77c70e01161011a578063e1817a8b116100ad578063f582d2931161007c578063f582d293146107f4578063f8316c9014610801578063f9f92be414610814578063fe575a871461083757600080fd5b8063e1817a8b146107a3578063e5919a4f146107b5578063eb241b2e146107d8578063f2fde38b146107e157600080fd5b8063d6f15469116100e9578063d6f1546914610761578063d93ddcef14610774578063dd62ed3e1461077d578063de84665d1461079057600080fd5b8063c77c70e01461072f578063c8900c1b1461073c578063cd38e99c1461074f578063d00efb2f1461075857600080fd5b8063a9059cbb11610192578063b8c9d25c11610161578063b8c9d25c146106e3578063b90fb5a9146106f6578063c21ebd0714610709578063c75748391461071c57600080fd5b8063a9059cbb146106ab578063aa4bde28146106be578063b498cecf146106c7578063b6fb0d64146106d057600080fd5b806396daf89f116101ce57806396daf89f146106745780639f4df0b51461067d578063a457c2d714610685578063a5b601be1461069857600080fd5b80638da5cb5b1461064857806391f837a81461065957806395d89b411461066c57600080fd5b80634ada218b116102e45780636d3c832f1161027757806376482e9c1161024657806376482e9c1461061157806386a156371461062457806388e765ff146106375780638a8c523c1461064057600080fd5b80636d3c832f146105d657806370a08231146105df578063715018a61461049c57806375bc50431461060857600080fd5b80635a86d2e3116102b35780635a86d2e3146105675780635be4d442146105745780635bf3a3151461058757806363bb7076146105b357600080fd5b80634ada218b1461051157806353d173dd1461051e57806355fc945314610531578063599270441461055457600080fd5b806323b872dd1161035c57806337b28bfd1161032b57806337b28bfd146104a457806339509351146104c45780634773a6a9146104d757806348d462b1146104fe57600080fd5b806323b872dd1461044f5780632f48ab7d14610462578063313ce5671461048d57806334d2c0a31461049c57600080fd5b80630cb46b75116103985780630cb46b7514610417578063153b0d1e1461042c57806317700f011461043f57806318160ddd1461044757600080fd5b806306fdde03146103bf578063095ea7b3146103dd5780630baa9ed614610400575b600080fd5b6103c7610863565b6040516103d491906120ce565b60405180910390f35b6103f06103eb366004612138565b6108f5565b60405190151581526020016103d4565b61040960205481565b6040519081526020016103d4565b61042a610425366004612162565b61090f565b005b61042a61043a36600461218d565b610968565b61042a6109f6565b600254610409565b6103f061045d3660046121c0565b610a3f565b600c54610475906001600160a01b031681565b6040516001600160a01b0390911681526020016103d4565b604051601281526020016103d4565b61042a610af8565b6104096104b2366004612162565b601d6020526000908152604090205481565b6103f06104d2366004612138565b610b0c565b6104097f000000000000000000000000000000000000000000000000000000000000000081565b61042a61050c3660046121fd565b610b29565b6019546103f09060ff1681565b61042a61052c366004612240565b610bbd565b6103f061053f366004612162565b60146020526000908152604090205460ff1681565b600754610475906001600160a01b031681565b6013546103f09060ff1681565b61042a61058236600461218d565b610c0d565b6103f0610595366004612162565b6001600160a01b031660009081526015602052604090205460ff1690565b6103f06105c1366004612162565b60166020526000908152604090205460ff1681565b61040960115481565b6104096105ed366004612162565b6001600160a01b031660009081526020819052604090205490565b610409600d5481565b61042a61061f36600461218d565b610cf7565b61042a610632366004612240565b610d7d565b610409601e5481565b61042a610dce565b6005546001600160a01b0316610475565b61042a61066736600461225b565b610e6e565b6103c7610ed6565b610409600e5481565b610409610ee5565b6103f0610693366004612138565b610f09565b61042a6106a6366004612162565b610f8f565b6103f06106b9366004612138565b611010565b610409601f5481565b61040960125481565b61042a6106de36600461218d565b611032565b600a54610475906001600160a01b031681565b61042a61070436600461228d565b6110b8565b600b54610475906001600160a01b031681565b600954610475906001600160a01b031681565b610409655af3107a400081565b61042a61074a3660046122b9565b6110ce565b61040960105481565b610409601a5481565b61042a61076f366004612240565b61114a565b610409600f5481565b61040961078b3660046122db565b611193565b600854610475906001600160a01b031681565b6017546103f090610100900460ff1681565b6103f06107c3366004612162565b60156020526000908152604090205460ff1681565b610409601b5481565b61042a6107ef366004612162565b6111be565b6017546103f09060ff1681565b61042a61080f366004612162565b611237565b6103f0610822366004612162565b601c6020526000908152604090205460ff1681565b6103f0610845366004612162565b6001600160a01b03166000908152601c602052604090205460ff1690565b60606003805461087290612305565b80601f016020809104026020016040519081016040528092919081815260200182805461089e90612305565b80156108eb5780601f106108c0576101008083540402835291602001916108eb565b820191906000526020600020905b8154815290600101906020018083116108ce57829003601f168201915b5050505050905090565b6000336109038185856112b8565b60019150505b92915050565b6109176113dc565b6001600160a01b0381166109465760405162461bcd60e51b815260040161093d9061233f565b60405180910390fd5b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6109706113dc565b6001600160a01b0382166109965760405162461bcd60e51b815260040161093d9061233f565b6001600160a01b0382166000818152601c6020908152604091829020805460ff191685151590811790915591519182527fcf3473b85df1594d47b6958f29a32bea0abff9dd68296f7bf33443646793cfd891015b60405180910390a25050565b6109fe6113dc565b6019805460ff19169055604051600081527f6d3472356b1ec46412b1ca10e0785ccf97029f8fbd60bb4c1c4ab1a66d639e06906020015b60405180910390a1565b6000610a49611436565b336000610a568683611193565b90506000198114610ad65783811015610ac25760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161093d565b610ad68683610ad1878561237b565b6112b8565b610ae186868661148f565b600192505050610af16001600655565b9392505050565b610b006113dc565b610b0a6000611eef565b565b600033610903818585610b1f8383611193565b610ad1919061238e565b610b316113dc565b6001600160a01b0383161580610b4e57506001600160a01b038216155b80610b6057506001600160a01b038116155b15610b7e5760405163d92e233d60e01b815260040160405180910390fd5b600780546001600160a01b039485166001600160a01b031991821617909155600880549385169382169390931790925560098054919093169116179055565b610bc56113dc565b6013805460ff19168215159081179091556040519081527fe4deb9738ba3354ca53d9ea8c1eae37e672ac2fade2468b4b1f4da12853c466a906020015b60405180910390a150565b610c156113dc565b6001600160a01b038216610c3b5760405162461bcd60e51b815260040161093d9061233f565b6001600160a01b038216600081815260156020908152604091829020805460ff191685151590811790915591519182527fae9d0d04c9df66dd8db6150ec2206a0c5d02775a9633894adf7cdea765e18226910160405180910390a28015610cf3576001600160a01b038216600081815260146020908152604091829020805460ff1916600190811790915591519182527f1d29b450e3ee9a9b08ae53f201d60bc74c300cfc0502c01cf4c134ada368426391016109ea565b5050565b610cff6113dc565b6001600160a01b038216610d255760405162461bcd60e51b815260040161093d9061233f565b6001600160a01b038216600081815260146020908152604091829020805460ff191685151590811790915591519182527f1d29b450e3ee9a9b08ae53f201d60bc74c300cfc0502c01cf4c134ada368426391016109ea565b610d856113dc565b601780548215156101000261ff00199091161790556040517f0dd902887071a125360a70694a967b3d2a6805e6ceccde8427f18492ff60102b90610c0290831515815260200190565b610dd66113dc565b60195460ff1615610e295760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c726561647920656e61626c6564000000000000000000604482015260640161093d565b6019805460ff1916600117905543601a8190556040517f6d3472356b1ec46412b1ca10e0785ccf97029f8fbd60bb4c1c4ab1a66d639e0691610a359190815260200190565b610e766113dc565b601b849055601e839055601f8290556020818155604080518681529182018590528101839052606081018290527ff09302f358dada5dab4c8ec58514ae23ebf5e041627913b282d72fc524140b839060800160405180910390a150505050565b60606004805461087290612305565b6000601254601154601054610efa919061238e565b610f04919061238e565b905090565b60003381610f178286611193565b905083811015610f775760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161093d565b610f8482868684036112b8565b506001949350505050565b610f976113dc565b6001600160a01b038116610fbe5760405163d92e233d60e01b815260040160405180910390fd5b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f9b0c3048787c13539ec50c0a007c2ddfc64fbbb685c0b18abb8c250cbfa5440190600090a35050565b600061101a611436565b61102533848461148f565b5060016109096001600655565b61103a6113dc565b6001600160a01b0382166110605760405162461bcd60e51b815260040161093d9061233f565b6001600160a01b038216600081815260166020908152604091829020805460ff191685151590811790915591519182527fa0f24332c7d141c86c4d5e8803389f673e06b885f82a63bd29732d224ec6657991016109ea565b6110c06113dc565b600d92909255600e55600f55565b6110d66113dc565b601e829055601f8190556040518281527ffb72e27d53f87822df1c737cbe3061c70cf0f271ec9c9b993d6f4cb3da276d469060200160405180910390a16040518181527f12528a3c61e0f3b2d6fc707a9fc58b1af86e252cad0d7f4c154ebeabb162dace9060200160405180910390a15050565b6111526113dc565b6017805460ff19168215159081179091556040519081527f942be7435635e527bb73176697ed306a26e641a0520639b694d8d46c9a3270d190602001610c02565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6111c66113dc565b6001600160a01b03811661122b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161093d565b61123481611eef565b50565b61123f6113dc565b6001600160a01b0381166112665760405163d92e233d60e01b815260040160405180910390fd5b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f77eba40e44e9cdab153d4b12298db3378cf32be998a70ae85986c7f2e2df0fcc90600090a35050565b6001600160a01b03831661131a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161093d565b6001600160a01b03821661137b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161093d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b03163314610b0a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161093d565b6002600654036114885760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161093d565b6002600655565b6001600160a01b0383166114b55760405162461bcd60e51b815260040161093d906123a1565b6001600160a01b0382166114db5760405162461bcd60e51b815260040161093d906123e6565b6001600160a01b0383166000908152601c602052604090205460ff16801561151c57506001600160a01b03831660009081526015602052604090205460ff16155b1561155f5760405162461bcd60e51b81526020600482015260136024820152721059191c995cdcc8189b1858dadb1a5cdd1959606a1b604482015260640161093d565b600a546001600160a01b0316158015906115865750600a546001600160a01b038481169116145b801561159a57506001600160a01b03821615155b156119da57600b546001600160a01b031633036115c1576115bc838383611f41565b505050565b60195460ff1661161e5760175460ff1680156115f557506001600160a01b03821660009081526016602052604090205460ff165b15611605576115bc838383611f41565b604051639d7da54560e01b815260040160405180910390fd5b601754610100900460ff1615801561164f57506001600160a01b03821660009081526016602052604090205460ff16155b801561167457506001600160a01b03821660009081526015602052604090205460ff16155b156116b15760405162461bcd60e51b815260206004820152600d60248201526c109d5e5cc8191a5cd8589b1959609a1b604482015260640161093d565b6001600160a01b0382166000908152601c602052604090205460ff1680156116f257506001600160a01b03821660009081526015602052604090205460ff16155b156117375760405162461bcd60e51b8152602060048201526015602482015274149958da5c1a595b9d08189b1858dadb1a5cdd1959605a1b604482015260640161093d565b600060205411801561176257506001600160a01b03821660009081526015602052604090205460ff16155b156117f1576001600160a01b0382166000908152601d6020908152604090912054905461178f908261238e565b4310156117d45760405162461bcd60e51b815260206004820152601360248201527242757920636f6f6c646f776e2061637469766560681b604482015260640161093d565b506001600160a01b0382166000908152601d602052604090204390555b6000601e5411801561181c57506001600160a01b03821660009081526015602052604090205460ff16155b1561186c57601e5481111561186c5760405162461bcd60e51b8152602060048201526016602482015275115e18d959591cc81b585e08189d5e48185b5bdd5b9d60521b604482015260640161093d565b6000601f5411801561189757506001600160a01b03821660009081526015602052604090205460ff16155b1561191757601f54816118bf846001600160a01b031660009081526020819052604090205490565b6118c9919061238e565b11156119175760405162461bcd60e51b815260206004820152601960248201527f45786365656473206d61782077616c6c657420616d6f756e7400000000000000604482015260640161093d565b601b54601a54611927919061238e565b43116119cf576001600160a01b03821660009081526016602052604090205460ff1615801561196f57506001600160a01b03821660009081526015602052604090205460ff16155b156119cf576001600160a01b0382166000818152601c6020908152604091829020805460ff1916600190811790915591519182527fcf3473b85df1594d47b6958f29a32bea0abff9dd68296f7bf33443646793cfd8910160405180910390a25b6115bc838383611f41565b600a546001600160a01b031615801590611a015750600a546001600160a01b038381169116145b8015611a1557506001600160a01b03831615155b15611ccb57600b546001600160a01b03163303611a37576115bc838383611f41565b6001600160a01b0383166000908152601c602052604090205460ff168015611a7857506001600160a01b03831660009081526015602052604090205460ff16155b15611aba5760405162461bcd60e51b815260206004820152601260248201527114d95b1b195c88189b1858dadb1a5cdd195960721b604482015260640161093d565b6000670de0b6b3a7640000611aef7f000000000000000000000000000000000000000000000000000000000000000084612429565b611af99190612440565b90506000611b07828461237b565b905060007f0000000000000000000000000000000000000000000000000000000000000000600d5484611b3a9190612429565b611b449190612440565b905060007f0000000000000000000000000000000000000000000000000000000000000000600e5485611b779190612429565b611b819190612440565b905060007f0000000000000000000000000000000000000000000000000000000000000000600f5486611bb49190612429565b611bbe9190612440565b90508215611bde57600754611bde9089906001600160a01b031685611f41565b8115611bfc57600854611bfc9089906001600160a01b031684611f41565b8015611c1a57600954611c1a9089906001600160a01b031683611f41565b611c25888886611f41565b8260106000828254611c37919061238e565b925050819055508160116000828254611c50919061238e565b925050819055508060126000828254611c69919061238e565b90915550506040805186815260208101859052908101839052606081018290526001600160a01b038916907fe29b466abf22e244968b38f750c90f5e685ce810800dbd3af88752f8a210fae29060800160405180910390a25050505050505050565b60135460ff168015611cf657506001600160a01b03831660009081526014602052604090205460ff16155b8015611d1b57506001600160a01b03821660009081526014602052604090205460ff16155b8015611d4057506001600160a01b03831660009081526015602052604090205460ff16155b8015611d6557506001600160a01b03821660009081526015602052604090205460ff16155b156119cf576000611d7d655af3107a40006002612429565b9050808211611d9f576040516356436b0f60e01b815260040160405180910390fd5b60188054906000611daf83612462565b91905055506000611dc485858560185461206c565b601880549192506000611dd683612462565b91905055506000611deb86868660185461206c565b90506000806001600160a01b03841615611e1557611e108885655af3107a4000611f41565b600191505b6001600160a01b03831615611e3957611e358884655af3107a4000611f41565b5060015b826001600160a01b0316846001600160a01b0316896001600160a01b03167f87791a4bca6e415fb436e543c1490c59caf14fa8a8dba46e5d44252c435406f8655af3107a4000604051611e8e91815260200190565b60405180910390a460008215611eb157611eae655af3107a40008261238e565b90505b8115611eca57611ec7655af3107a40008261238e565b90505b6000611ed6828961237b565b9050611ee38a8a83611f41565b50505050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038316611f675760405162461bcd60e51b815260040161093d906123a1565b6001600160a01b038216611f8d5760405162461bcd60e51b815260040161093d906123e6565b6001600160a01b038316600090815260208190526040902054818110156120055760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161093d565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b604080514260208083019190915244828401526bffffffffffffffffffffffff19606097881b8116888401529590961b9094166074850152608884019290925260a8808401919091528151808403909101815260c89092019052805191012090565b602081526000825180602084015260005b818110156120fc57602081860181015160408684010152016120df565b506000604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b038116811461213357600080fd5b919050565b6000806040838503121561214b57600080fd5b6121548361211c565b946020939093013593505050565b60006020828403121561217457600080fd5b610af18261211c565b8035801515811461213357600080fd5b600080604083850312156121a057600080fd5b6121a98361211c565b91506121b76020840161217d565b90509250929050565b6000806000606084860312156121d557600080fd5b6121de8461211c565b92506121ec6020850161211c565b929592945050506040919091013590565b60008060006060848603121561221257600080fd5b61221b8461211c565b92506122296020850161211c565b91506122376040850161211c565b90509250925092565b60006020828403121561225257600080fd5b610af18261217d565b6000806000806080858703121561227157600080fd5b5050823594602084013594506040840135936060013592509050565b6000806000606084860312156122a257600080fd5b505081359360208301359350604090920135919050565b600080604083850312156122cc57600080fd5b50508035926020909101359150565b600080604083850312156122ee57600080fd5b6122f78361211c565b91506121b76020840161211c565b600181811c9082168061231957607f821691505b60208210810361233957634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600c908201526b5a65726f206164647265737360a01b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561090957610909612365565b8082018082111561090957610909612365565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b808202811582820484141761090957610909612365565b60008261245d57634e487b7160e01b600052601260045260246000fd5b500490565b60006001820161247457612474612365565b506001019056fea2646970667358221220ca2772235716dcd5856a9f893a78fb644088e569bb62bf1d9b63c856b662f13164736f6c634300081e0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106103ba5760003560e01c80638da5cb5b116101f4578063c77c70e01161011a578063e1817a8b116100ad578063f582d2931161007c578063f582d293146107f4578063f8316c9014610801578063f9f92be414610814578063fe575a871461083757600080fd5b8063e1817a8b146107a3578063e5919a4f146107b5578063eb241b2e146107d8578063f2fde38b146107e157600080fd5b8063d6f15469116100e9578063d6f1546914610761578063d93ddcef14610774578063dd62ed3e1461077d578063de84665d1461079057600080fd5b8063c77c70e01461072f578063c8900c1b1461073c578063cd38e99c1461074f578063d00efb2f1461075857600080fd5b8063a9059cbb11610192578063b8c9d25c11610161578063b8c9d25c146106e3578063b90fb5a9146106f6578063c21ebd0714610709578063c75748391461071c57600080fd5b8063a9059cbb146106ab578063aa4bde28146106be578063b498cecf146106c7578063b6fb0d64146106d057600080fd5b806396daf89f116101ce57806396daf89f146106745780639f4df0b51461067d578063a457c2d714610685578063a5b601be1461069857600080fd5b80638da5cb5b1461064857806391f837a81461065957806395d89b411461066c57600080fd5b80634ada218b116102e45780636d3c832f1161027757806376482e9c1161024657806376482e9c1461061157806386a156371461062457806388e765ff146106375780638a8c523c1461064057600080fd5b80636d3c832f146105d657806370a08231146105df578063715018a61461049c57806375bc50431461060857600080fd5b80635a86d2e3116102b35780635a86d2e3146105675780635be4d442146105745780635bf3a3151461058757806363bb7076146105b357600080fd5b80634ada218b1461051157806353d173dd1461051e57806355fc945314610531578063599270441461055457600080fd5b806323b872dd1161035c57806337b28bfd1161032b57806337b28bfd146104a457806339509351146104c45780634773a6a9146104d757806348d462b1146104fe57600080fd5b806323b872dd1461044f5780632f48ab7d14610462578063313ce5671461048d57806334d2c0a31461049c57600080fd5b80630cb46b75116103985780630cb46b7514610417578063153b0d1e1461042c57806317700f011461043f57806318160ddd1461044757600080fd5b806306fdde03146103bf578063095ea7b3146103dd5780630baa9ed614610400575b600080fd5b6103c7610863565b6040516103d491906120ce565b60405180910390f35b6103f06103eb366004612138565b6108f5565b60405190151581526020016103d4565b61040960205481565b6040519081526020016103d4565b61042a610425366004612162565b61090f565b005b61042a61043a36600461218d565b610968565b61042a6109f6565b600254610409565b6103f061045d3660046121c0565b610a3f565b600c54610475906001600160a01b031681565b6040516001600160a01b0390911681526020016103d4565b604051601281526020016103d4565b61042a610af8565b6104096104b2366004612162565b601d6020526000908152604090205481565b6103f06104d2366004612138565b610b0c565b6104097f00000000000000000000000000000000000000000000000000d529ae9e86000081565b61042a61050c3660046121fd565b610b29565b6019546103f09060ff1681565b61042a61052c366004612240565b610bbd565b6103f061053f366004612162565b60146020526000908152604090205460ff1681565b600754610475906001600160a01b031681565b6013546103f09060ff1681565b61042a61058236600461218d565b610c0d565b6103f0610595366004612162565b6001600160a01b031660009081526015602052604090205460ff1690565b6103f06105c1366004612162565b60166020526000908152604090205460ff1681565b61040960115481565b6104096105ed366004612162565b6001600160a01b031660009081526020819052604090205490565b610409600d5481565b61042a61061f36600461218d565b610cf7565b61042a610632366004612240565b610d7d565b610409601e5481565b61042a610dce565b6005546001600160a01b0316610475565b61042a61066736600461225b565b610e6e565b6103c7610ed6565b610409600e5481565b610409610ee5565b6103f0610693366004612138565b610f09565b61042a6106a6366004612162565b610f8f565b6103f06106b9366004612138565b611010565b610409601f5481565b61040960125481565b61042a6106de36600461218d565b611032565b600a54610475906001600160a01b031681565b61042a61070436600461228d565b6110b8565b600b54610475906001600160a01b031681565b600954610475906001600160a01b031681565b610409655af3107a400081565b61042a61074a3660046122b9565b6110ce565b61040960105481565b610409601a5481565b61042a61076f366004612240565b61114a565b610409600f5481565b61040961078b3660046122db565b611193565b600854610475906001600160a01b031681565b6017546103f090610100900460ff1681565b6103f06107c3366004612162565b60156020526000908152604090205460ff1681565b610409601b5481565b61042a6107ef366004612162565b6111be565b6017546103f09060ff1681565b61042a61080f366004612162565b611237565b6103f0610822366004612162565b601c6020526000908152604090205460ff1681565b6103f0610845366004612162565b6001600160a01b03166000908152601c602052604090205460ff1690565b60606003805461087290612305565b80601f016020809104026020016040519081016040528092919081815260200182805461089e90612305565b80156108eb5780601f106108c0576101008083540402835291602001916108eb565b820191906000526020600020905b8154815290600101906020018083116108ce57829003601f168201915b5050505050905090565b6000336109038185856112b8565b60019150505b92915050565b6109176113dc565b6001600160a01b0381166109465760405162461bcd60e51b815260040161093d9061233f565b60405180910390fd5b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6109706113dc565b6001600160a01b0382166109965760405162461bcd60e51b815260040161093d9061233f565b6001600160a01b0382166000818152601c6020908152604091829020805460ff191685151590811790915591519182527fcf3473b85df1594d47b6958f29a32bea0abff9dd68296f7bf33443646793cfd891015b60405180910390a25050565b6109fe6113dc565b6019805460ff19169055604051600081527f6d3472356b1ec46412b1ca10e0785ccf97029f8fbd60bb4c1c4ab1a66d639e06906020015b60405180910390a1565b6000610a49611436565b336000610a568683611193565b90506000198114610ad65783811015610ac25760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161093d565b610ad68683610ad1878561237b565b6112b8565b610ae186868661148f565b600192505050610af16001600655565b9392505050565b610b006113dc565b610b0a6000611eef565b565b600033610903818585610b1f8383611193565b610ad1919061238e565b610b316113dc565b6001600160a01b0383161580610b4e57506001600160a01b038216155b80610b6057506001600160a01b038116155b15610b7e5760405163d92e233d60e01b815260040160405180910390fd5b600780546001600160a01b039485166001600160a01b031991821617909155600880549385169382169390931790925560098054919093169116179055565b610bc56113dc565b6013805460ff19168215159081179091556040519081527fe4deb9738ba3354ca53d9ea8c1eae37e672ac2fade2468b4b1f4da12853c466a906020015b60405180910390a150565b610c156113dc565b6001600160a01b038216610c3b5760405162461bcd60e51b815260040161093d9061233f565b6001600160a01b038216600081815260156020908152604091829020805460ff191685151590811790915591519182527fae9d0d04c9df66dd8db6150ec2206a0c5d02775a9633894adf7cdea765e18226910160405180910390a28015610cf3576001600160a01b038216600081815260146020908152604091829020805460ff1916600190811790915591519182527f1d29b450e3ee9a9b08ae53f201d60bc74c300cfc0502c01cf4c134ada368426391016109ea565b5050565b610cff6113dc565b6001600160a01b038216610d255760405162461bcd60e51b815260040161093d9061233f565b6001600160a01b038216600081815260146020908152604091829020805460ff191685151590811790915591519182527f1d29b450e3ee9a9b08ae53f201d60bc74c300cfc0502c01cf4c134ada368426391016109ea565b610d856113dc565b601780548215156101000261ff00199091161790556040517f0dd902887071a125360a70694a967b3d2a6805e6ceccde8427f18492ff60102b90610c0290831515815260200190565b610dd66113dc565b60195460ff1615610e295760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c726561647920656e61626c6564000000000000000000604482015260640161093d565b6019805460ff1916600117905543601a8190556040517f6d3472356b1ec46412b1ca10e0785ccf97029f8fbd60bb4c1c4ab1a66d639e0691610a359190815260200190565b610e766113dc565b601b849055601e839055601f8290556020818155604080518681529182018590528101839052606081018290527ff09302f358dada5dab4c8ec58514ae23ebf5e041627913b282d72fc524140b839060800160405180910390a150505050565b60606004805461087290612305565b6000601254601154601054610efa919061238e565b610f04919061238e565b905090565b60003381610f178286611193565b905083811015610f775760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161093d565b610f8482868684036112b8565b506001949350505050565b610f976113dc565b6001600160a01b038116610fbe5760405163d92e233d60e01b815260040160405180910390fd5b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f9b0c3048787c13539ec50c0a007c2ddfc64fbbb685c0b18abb8c250cbfa5440190600090a35050565b600061101a611436565b61102533848461148f565b5060016109096001600655565b61103a6113dc565b6001600160a01b0382166110605760405162461bcd60e51b815260040161093d9061233f565b6001600160a01b038216600081815260166020908152604091829020805460ff191685151590811790915591519182527fa0f24332c7d141c86c4d5e8803389f673e06b885f82a63bd29732d224ec6657991016109ea565b6110c06113dc565b600d92909255600e55600f55565b6110d66113dc565b601e829055601f8190556040518281527ffb72e27d53f87822df1c737cbe3061c70cf0f271ec9c9b993d6f4cb3da276d469060200160405180910390a16040518181527f12528a3c61e0f3b2d6fc707a9fc58b1af86e252cad0d7f4c154ebeabb162dace9060200160405180910390a15050565b6111526113dc565b6017805460ff19168215159081179091556040519081527f942be7435635e527bb73176697ed306a26e641a0520639b694d8d46c9a3270d190602001610c02565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6111c66113dc565b6001600160a01b03811661122b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161093d565b61123481611eef565b50565b61123f6113dc565b6001600160a01b0381166112665760405163d92e233d60e01b815260040160405180910390fd5b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f77eba40e44e9cdab153d4b12298db3378cf32be998a70ae85986c7f2e2df0fcc90600090a35050565b6001600160a01b03831661131a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161093d565b6001600160a01b03821661137b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161093d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b03163314610b0a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161093d565b6002600654036114885760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161093d565b6002600655565b6001600160a01b0383166114b55760405162461bcd60e51b815260040161093d906123a1565b6001600160a01b0382166114db5760405162461bcd60e51b815260040161093d906123e6565b6001600160a01b0383166000908152601c602052604090205460ff16801561151c57506001600160a01b03831660009081526015602052604090205460ff16155b1561155f5760405162461bcd60e51b81526020600482015260136024820152721059191c995cdcc8189b1858dadb1a5cdd1959606a1b604482015260640161093d565b600a546001600160a01b0316158015906115865750600a546001600160a01b038481169116145b801561159a57506001600160a01b03821615155b156119da57600b546001600160a01b031633036115c1576115bc838383611f41565b505050565b60195460ff1661161e5760175460ff1680156115f557506001600160a01b03821660009081526016602052604090205460ff165b15611605576115bc838383611f41565b604051639d7da54560e01b815260040160405180910390fd5b601754610100900460ff1615801561164f57506001600160a01b03821660009081526016602052604090205460ff16155b801561167457506001600160a01b03821660009081526015602052604090205460ff16155b156116b15760405162461bcd60e51b815260206004820152600d60248201526c109d5e5cc8191a5cd8589b1959609a1b604482015260640161093d565b6001600160a01b0382166000908152601c602052604090205460ff1680156116f257506001600160a01b03821660009081526015602052604090205460ff16155b156117375760405162461bcd60e51b8152602060048201526015602482015274149958da5c1a595b9d08189b1858dadb1a5cdd1959605a1b604482015260640161093d565b600060205411801561176257506001600160a01b03821660009081526015602052604090205460ff16155b156117f1576001600160a01b0382166000908152601d6020908152604090912054905461178f908261238e565b4310156117d45760405162461bcd60e51b815260206004820152601360248201527242757920636f6f6c646f776e2061637469766560681b604482015260640161093d565b506001600160a01b0382166000908152601d602052604090204390555b6000601e5411801561181c57506001600160a01b03821660009081526015602052604090205460ff16155b1561186c57601e5481111561186c5760405162461bcd60e51b8152602060048201526016602482015275115e18d959591cc81b585e08189d5e48185b5bdd5b9d60521b604482015260640161093d565b6000601f5411801561189757506001600160a01b03821660009081526015602052604090205460ff16155b1561191757601f54816118bf846001600160a01b031660009081526020819052604090205490565b6118c9919061238e565b11156119175760405162461bcd60e51b815260206004820152601960248201527f45786365656473206d61782077616c6c657420616d6f756e7400000000000000604482015260640161093d565b601b54601a54611927919061238e565b43116119cf576001600160a01b03821660009081526016602052604090205460ff1615801561196f57506001600160a01b03821660009081526015602052604090205460ff16155b156119cf576001600160a01b0382166000818152601c6020908152604091829020805460ff1916600190811790915591519182527fcf3473b85df1594d47b6958f29a32bea0abff9dd68296f7bf33443646793cfd8910160405180910390a25b6115bc838383611f41565b600a546001600160a01b031615801590611a015750600a546001600160a01b038381169116145b8015611a1557506001600160a01b03831615155b15611ccb57600b546001600160a01b03163303611a37576115bc838383611f41565b6001600160a01b0383166000908152601c602052604090205460ff168015611a7857506001600160a01b03831660009081526015602052604090205460ff16155b15611aba5760405162461bcd60e51b815260206004820152601260248201527114d95b1b195c88189b1858dadb1a5cdd195960721b604482015260640161093d565b6000670de0b6b3a7640000611aef7f00000000000000000000000000000000000000000000000000d529ae9e86000084612429565b611af99190612440565b90506000611b07828461237b565b905060007f00000000000000000000000000000000000000000000000000d529ae9e860000600d5484611b3a9190612429565b611b449190612440565b905060007f00000000000000000000000000000000000000000000000000d529ae9e860000600e5485611b779190612429565b611b819190612440565b905060007f00000000000000000000000000000000000000000000000000d529ae9e860000600f5486611bb49190612429565b611bbe9190612440565b90508215611bde57600754611bde9089906001600160a01b031685611f41565b8115611bfc57600854611bfc9089906001600160a01b031684611f41565b8015611c1a57600954611c1a9089906001600160a01b031683611f41565b611c25888886611f41565b8260106000828254611c37919061238e565b925050819055508160116000828254611c50919061238e565b925050819055508060126000828254611c69919061238e565b90915550506040805186815260208101859052908101839052606081018290526001600160a01b038916907fe29b466abf22e244968b38f750c90f5e685ce810800dbd3af88752f8a210fae29060800160405180910390a25050505050505050565b60135460ff168015611cf657506001600160a01b03831660009081526014602052604090205460ff16155b8015611d1b57506001600160a01b03821660009081526014602052604090205460ff16155b8015611d4057506001600160a01b03831660009081526015602052604090205460ff16155b8015611d6557506001600160a01b03821660009081526015602052604090205460ff16155b156119cf576000611d7d655af3107a40006002612429565b9050808211611d9f576040516356436b0f60e01b815260040160405180910390fd5b60188054906000611daf83612462565b91905055506000611dc485858560185461206c565b601880549192506000611dd683612462565b91905055506000611deb86868660185461206c565b90506000806001600160a01b03841615611e1557611e108885655af3107a4000611f41565b600191505b6001600160a01b03831615611e3957611e358884655af3107a4000611f41565b5060015b826001600160a01b0316846001600160a01b0316896001600160a01b03167f87791a4bca6e415fb436e543c1490c59caf14fa8a8dba46e5d44252c435406f8655af3107a4000604051611e8e91815260200190565b60405180910390a460008215611eb157611eae655af3107a40008261238e565b90505b8115611eca57611ec7655af3107a40008261238e565b90505b6000611ed6828961237b565b9050611ee38a8a83611f41565b50505050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038316611f675760405162461bcd60e51b815260040161093d906123a1565b6001600160a01b038216611f8d5760405162461bcd60e51b815260040161093d906123e6565b6001600160a01b038316600090815260208190526040902054818110156120055760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161093d565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b604080514260208083019190915244828401526bffffffffffffffffffffffff19606097881b8116888401529590961b9094166074850152608884019290925260a8808401919091528151808403909101815260c89092019052805191012090565b602081526000825180602084015260005b818110156120fc57602081860181015160408684010152016120df565b506000604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b038116811461213357600080fd5b919050565b6000806040838503121561214b57600080fd5b6121548361211c565b946020939093013593505050565b60006020828403121561217457600080fd5b610af18261211c565b8035801515811461213357600080fd5b600080604083850312156121a057600080fd5b6121a98361211c565b91506121b76020840161217d565b90509250929050565b6000806000606084860312156121d557600080fd5b6121de8461211c565b92506121ec6020850161211c565b929592945050506040919091013590565b60008060006060848603121561221257600080fd5b61221b8461211c565b92506122296020850161211c565b91506122376040850161211c565b90509250925092565b60006020828403121561225257600080fd5b610af18261217d565b6000806000806080858703121561227157600080fd5b5050823594602084013594506040840135936060013592509050565b6000806000606084860312156122a257600080fd5b505081359360208301359350604090920135919050565b600080604083850312156122cc57600080fd5b50508035926020909101359150565b600080604083850312156122ee57600080fd5b6122f78361211c565b91506121b76020840161211c565b600181811c9082168061231957607f821691505b60208210810361233957634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600c908201526b5a65726f206164647265737360a01b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561090957610909612365565b8082018082111561090957610909612365565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b808202811582820484141761090957610909612365565b60008261245d57634e487b7160e01b600052601260045260246000fd5b500490565b60006001820161247457612474612365565b506001019056fea2646970667358221220ca2772235716dcd5856a9f893a78fb644088e569bb62bf1d9b63c856b662f13164736f6c634300081e0033
Deployed Bytecode Sourcemap
676:20580:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2158:98:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4444:197;;;;;;:::i;:::-;;:::i;:::-;;;1194:14:7;;1187:22;1169:41;;1157:2;1142:18;4444:197:2;1029:187:7;2989:33:6;;;;;;;;;1367:25:7;;;1355:2;1340:18;2989:33:6;1221:177:7;14878:149:6;;;;;;:::i;:::-;;:::i;:::-;;20542:217;;;;;;:::i;:::-;;:::i;19392:123::-;;;:::i;3255:106:2:-;3342:12;;3255:106;;6518:579:6;;;;;;:::i;:::-;;:::i;902:18::-;;;;;-1:-1:-1;;;;;902:18:6;;;;;;-1:-1:-1;;;;;2575:32:7;;;2557:51;;2545:2;2530:18;902::6;2397:217:7;4479:91:6;;;4561:2;2761:36:7;;2749:2;2734:18;4479:91:6;2619:184:7;18829:106:6;;;:::i;2733:47::-;;;;;;:::i;:::-;;;;;;;;;;;;;;5854:234:2;;;;;;:::i;:::-;;:::i;986:40:6:-;;;;;15033:445;;;;;;:::i;:::-;;:::i;2395:26::-;;;;;;;;;16559:146;;;;;;:::i;:::-;;:::i;1759:47::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;734:25;;;;;-1:-1:-1;;;;;734:25:6;;;1550:33;;;;;;;;;17089:482;;;;;;:::i;:::-;;:::i;17577:122::-;;;;;;:::i;:::-;-1:-1:-1;;;;;17667:25:6;17644:4;17667:25;;;:16;:25;;;;;;;;;17577:122;2085:44;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1376:25;;;;;;3419:125:2;;;;;;:::i;:::-;-1:-1:-1;;;;;3519:18:2;3493:7;3519:18;;;;;;;;;;;;3419:125;1151:36:6;;;;;;16711:261;;;;;;:::i;:::-;;:::i;16215:137::-;;;;;;:::i;:::-;;:::i;2827:27::-;;;;;;19117:228;;;:::i;1201:85:0:-;1273:6;;-1:-1:-1;;;;;1273:6:0;1201:85;;19565:463:6;;;;;;:::i;:::-;;:::i;2369:102:2:-;;;:::i;1199:34:6:-;;;;;;21127:127;;;:::i;6575:427:2:-;;;;;;:::i;:::-;;:::i;15484:257:6:-;;;;;;:::i;:::-;;:::i;6318:194::-;;;;;;:::i;:::-;;:::i;2905:30::-;;;;;;1446:32;;;;;;17874:227;;;;;;:::i;:::-;;:::i;836:26::-;;;;;-1:-1:-1;;;;;836:26:6;;;18256:382;;;;;;:::i;:::-;;:::i;868:28::-;;;;;-1:-1:-1;;;;;868:28:6;;;800:30;;;;;-1:-1:-1;;;;;800:30:6;;;1589:50;;1635:4;1589:50;;20034:257;;;;;;:::i;:::-;;:::i;1298:27::-;;;;;;2483:26;;;;;;17734:134;;;;;;:::i;:::-;;:::i;1245:41::-;;;;;;3987:149:2;;;;;;:::i;:::-;;:::i;765:29:6:-;;;;;-1:-1:-1;;;;;765:29:6;;;2172:30;;;;;;;;;;;;1896:48;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2546:34;;;;;;2074:198:0;;;;;;:::i;:::-;;:::i;2135:30:6:-;;;;;;;;;15844:273;;;;;;:::i;:::-;;:::i;2648:41::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;20842:111;;;;;;:::i;:::-;-1:-1:-1;;;;;20928:18:6;20905:4;20928:18;;;:9;:18;;;;;;;;;20842:111;2158:98:2;2212:13;2244:5;2237:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2158:98;:::o;4444:197::-;4527:4;734:10:5;4581:32:2;734:10:5;4597:7:2;4606:6;4581:8;:32::i;:::-;4630:4;4623:11;;;4444:197;;;;;:::o;14878:149:6:-;1094:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;14954:19:6;::::1;14946:44;;;;-1:-1:-1::0;;;14946:44:6::1;;;;;;;:::i;:::-;;;;;;;;;15000:4;:20:::0;;-1:-1:-1;;;;;;15000:20:6::1;-1:-1:-1::0;;;;;15000:20:6;;;::::1;::::0;;;::::1;::::0;;14878:149::o;20542:217::-;1094:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;20632:21:6;::::1;20624:46;;;;-1:-1:-1::0;;;20624:46:6::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20680:18:6;::::1;;::::0;;;:9:::1;:18;::::0;;;;;;;;:28;;-1:-1:-1;;20680:28:6::1;::::0;::::1;;::::0;;::::1;::::0;;;20723:29;;1169:41:7;;;20723:29:6::1;::::0;1142:18:7;20723:29:6::1;;;;;;;;20542:217:::0;;:::o;19392:123::-;1094:13:0;:11;:13::i;:::-;19447:14:6::1;:22:::0;;-1:-1:-1;;19447:22:6::1;::::0;;19484:24:::1;::::0;-1:-1:-1;1367:25:7;;19484:24:6::1;::::0;1355:2:7;1340:18;19484:24:6::1;;;;;;;;19392:123::o:0;6518:579::-;6650:4;2261:21:1;:19;:21::i;:::-;734:10:5;6666:15:6::1;6733:24;6743:4:::0;734:10:5;6733:9:6::1;:24::i;:::-;6706:51;;-1:-1:-1::0;;6771:16:6::1;:37;6767:257;;6869:6;6849:16;:26;;6824:125;;;::::0;-1:-1:-1;;;6824:125:6;;6337:2:7;6824:125:6::1;::::0;::::1;6319:21:7::0;6376:2;6356:18;;;6349:30;6415:34;6395:18;;;6388:62;-1:-1:-1;;;6466:18:7;;;6459:38;6514:19;;6824:125:6::1;6135:404:7::0;6824:125:6::1;6963:50;6972:4:::0;6978:7;6987:25:::1;7006:6:::0;6987:16;:25:::1;:::i;:::-;6963:8;:50::i;:::-;7033:36;7052:4;7058:2;7062:6;7033:18;:36::i;:::-;7086:4;7079:11;;;;2303:20:1::0;1716:1;2809:7;:22;2629:209;2303:20;6518:579:6;;;;;:::o;18829:106::-;1094:13:0;:11;:13::i;:::-;18898:30:6::1;18925:1;18898:18;:30::i;:::-;18829:106::o:0;5854:234:2:-;5942:4;734:10:5;5996:64:2;734:10:5;6012:7:2;6049:10;6021:25;734:10:5;6012:7:2;6021:9;:25::i;:::-;:38;;;;:::i;15033:445:6:-;1094:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;15204:25:6;::::1;::::0;;:70:::1;;-1:-1:-1::0;;;;;;15245:29:6;::::1;::::0;15204:70:::1;:116;;;-1:-1:-1::0;;;;;;15290:30:6;::::1;::::0;15204:116:::1;15187:164;;;15338:13;;-1:-1:-1::0;;;15338:13:6::1;;;;;;;;;;;15187:164;15361:10;:24:::0;;-1:-1:-1;;;;;15361:24:6;;::::1;-1:-1:-1::0;;;;;;15361:24:6;;::::1;;::::0;;;15395:14:::1;:32:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;15437:15:::1;:34:::0;;;;;::::1;::::0;::::1;;::::0;;15033:445::o;16559:146::-;1094:13:0;:11;:13::i;:::-;16629:14:6::1;:24:::0;;-1:-1:-1;;16629:24:6::1;::::0;::::1;;::::0;;::::1;::::0;;;16668:30:::1;::::0;1169:41:7;;;16668:30:6::1;::::0;1157:2:7;1142:18;16668:30:6::1;;;;;;;;16559:146:::0;:::o;17089:482::-;1094:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;17207:21:6;::::1;17199:46;;;;-1:-1:-1::0;;;17199:46:6::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17255:25:6;::::1;;::::0;;;:16:::1;:25;::::0;;;;;;;;:35;;-1:-1:-1;;17255:35:6::1;::::0;::::1;;::::0;;::::1;::::0;;;17305:36;;1169:41:7;;;17305:36:6::1;::::0;1142:18:7;17305:36:6::1;;;;;;;17448:7;17444:121;;;-1:-1:-1::0;;;;;17471:24:6;::::1;;::::0;;;:15:::1;:24;::::0;;;;;;;;:31;;-1:-1:-1;;17471:31:6::1;17498:4;17471:31:::0;;::::1;::::0;;;17521:33;;1169:41:7;;;17521:33:6::1;::::0;1142:18:7;17521:33:6::1;1029:187:7::0;17444:121:6::1;17089:482:::0;;:::o;16711:261::-;1094:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;16830:21:6;::::1;16822:46;;;;-1:-1:-1::0;;;16822:46:6::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16878:24:6;::::1;;::::0;;;:15:::1;:24;::::0;;;;;;;;:35;;-1:-1:-1;;16878:35:6::1;::::0;::::1;;::::0;;::::1;::::0;;;16928:37;;1169:41:7;;;16928:37:6::1;::::0;1142:18:7;16928:37:6::1;1029:187:7::0;16215:137:6;1094:13:0;:11;:13::i;:::-;16282:11:6::1;:21:::0;;;::::1;;;;-1:-1:-1::0;;16282:21:6;;::::1;;::::0;;16318:27:::1;::::0;::::1;::::0;::::1;::::0;16296:7;1194:14:7;1187:22;1169:41;;1157:2;1142:18;;1029:187;19117:228:6;1094:13:0;:11;:13::i;:::-;19180:14:6::1;::::0;::::1;;19179:15;19171:51;;;::::0;-1:-1:-1;;;19171:51:6;;7141:2:7;19171:51:6::1;::::0;::::1;7123:21:7::0;7180:2;7160:18;;;7153:30;7219:25;7199:18;;;7192:53;7262:18;;19171:51:6::1;6939:347:7::0;19171:51:6::1;19232:14;:21:::0;;-1:-1:-1;;19232:21:6::1;19249:4;19232:21;::::0;;19277:12:::1;19263:11;:26:::0;;;19304:34:::1;::::0;::::1;::::0;::::1;::::0;1367:25:7;;;1355:2;1340:18;;1221:177;19565:463:6;1094:13:0;:11;:13::i;:::-;19740:15:6::1;:28:::0;;;19778:12:::1;:21:::0;;;19809:15:::1;:27:::0;;;19846:14:::1;:32:::0;;;19893:128:::1;::::0;;7522:25:7;;;7563:18;;;7556:34;;;7606:18;;7599:34;;;7664:2;7649:18;;7642:34;;;19893:128:6::1;::::0;7509:3:7;7494:19;19893:128:6::1;;;;;;;19565:463:::0;;;;:::o;2369:102:2:-;2425:13;2457:7;2450:14;;;;;:::i;21127:127:6:-;21176:7;21230:17;;21217:10;;21202:12;;:25;;;;:::i;:::-;:45;;;;:::i;:::-;21195:52;;21127:127;:::o;6575:427:2:-;6668:4;734:10:5;6668:4:2;6749:25;734:10:5;6766:7:2;6749:9;:25::i;:::-;6722:52;;6812:15;6792:16;:35;;6784:85;;;;-1:-1:-1;;;6784:85:2;;7889:2:7;6784:85:2;;;7871:21:7;7928:2;7908:18;;;7901:30;7967:34;7947:18;;;7940:62;-1:-1:-1;;;8018:18:7;;;8011:35;8063:19;;6784:85:2;7687:401:7;6784:85:2;6903:60;6912:5;6919:7;6947:15;6928:16;:34;6903:8;:60::i;:::-;-1:-1:-1;6991:4:2;;6575:427;-1:-1:-1;;;;6575:427:2:o;15484:257:6:-;1094:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;15563:26:6;::::1;15559:52;;15598:13;;-1:-1:-1::0;;;15598:13:6::1;;;;;;;;;;;15559:52;15635:11;::::0;;-1:-1:-1;;;;;15656:26:6;;::::1;-1:-1:-1::0;;;;;;15656:26:6;::::1;::::0;::::1;::::0;;;15697:37:::1;::::0;15635:11;::::1;::::0;15656:26;15635:11;;15697:37:::1;::::0;15621:11:::1;::::0;15697:37:::1;15549:192;15484:257:::0;:::o;6318:194::-;6424:4;2261:21:1;:19;:21::i;:::-;6440:44:6::1;734:10:5::0;6473:2:6::1;6477:6;6440:18;:44::i;:::-;-1:-1:-1::0;6501:4:6::1;2303:20:1::0;1716:1;2809:7;:22;2629:209;17874:227:6;1094:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;17967:21:6;::::1;17959:46;;;;-1:-1:-1::0;;;17959:46:6::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18015:21:6;::::1;;::::0;;;:12:::1;:21;::::0;;;;;;;;:31;;-1:-1:-1;;18015:31:6::1;::::0;::::1;;::::0;;::::1;::::0;;;18061:33;;1169:41:7;;;18061:33:6::1;::::0;1142:18:7;18061:33:6::1;1029:187:7::0;18256:382:6;1094:13:0;:11;:13::i;:::-;18518:14:6::1;:29:::0;;;;18557:12:::1;:25:::0;18592:19:::1;:39:::0;18256:382::o;20034:257::-;1094:13:0;:11;:13::i;:::-;20148:12:6::1;:21:::0;;;20179:15:::1;:27:::0;;;20221:21:::1;::::0;1367:25:7;;;20221:21:6::1;::::0;1355:2:7;1340:18;20221:21:6::1;;;;;;;20257:27;::::0;1367:25:7;;;20257:27:6::1;::::0;1355:2:7;1340:18;20257:27:6::1;;;;;;;20034:257:::0;;:::o;17734:134::-;1094:13:0;:11;:13::i;:::-;17800:10:6::1;:20:::0;;-1:-1:-1;;17800:20:6::1;::::0;::::1;;::::0;;::::1;::::0;;;17835:26:::1;::::0;1169:41:7;;;17835:26:6::1;::::0;1157:2:7;1142:18;17835:26:6::1;1029:187:7::0;3987:149:2;-1:-1:-1;;;;;4102:18:2;;;4076:7;4102:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3987:149::o;2074:198:0:-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2162:22:0;::::1;2154:73;;;::::0;-1:-1:-1;;;2154:73:0;;8295:2:7;2154:73:0::1;::::0;::::1;8277:21:7::0;8334:2;8314:18;;;8307:30;8373:34;8353:18;;;8346:62;-1:-1:-1;;;8424:18:7;;;8417:36;8470:19;;2154:73:0::1;8093:402:7::0;2154:73:0::1;2237:28;2256:8;2237:18;:28::i;:::-;2074:198:::0;:::o;15844:273:6:-;1094:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;15927:28:6;::::1;15923:54;;15964:13;;-1:-1:-1::0;;;15964:13:6::1;;;;;;;;;;;15923:54;16001:13;::::0;;-1:-1:-1;;;;;16024:30:6;;::::1;-1:-1:-1::0;;;;;;16024:30:6;::::1;::::0;::::1;::::0;;;16069:41:::1;::::0;16001:13;::::1;::::0;16024:30;16001:13;;16069:41:::1;::::0;15987:11:::1;::::0;16069:41:::1;15913:204;15844:273:::0;:::o;10457:340:2:-;-1:-1:-1;;;;;10558:19:2;;10550:68;;;;-1:-1:-1;;;10550:68:2;;8702:2:7;10550:68:2;;;8684:21:7;8741:2;8721:18;;;8714:30;8780:34;8760:18;;;8753:62;-1:-1:-1;;;8831:18:7;;;8824:34;8875:19;;10550:68:2;8500:400:7;10550:68:2;-1:-1:-1;;;;;10636:21:2;;10628:68;;;;-1:-1:-1;;;10628:68:2;;9107:2:7;10628:68:2;;;9089:21:7;9146:2;9126:18;;;9119:30;9185:34;9165:18;;;9158:62;-1:-1:-1;;;9236:18:7;;;9229:32;9278:19;;10628:68:2;8905:398:7;10628:68:2;-1:-1:-1;;;;;10707:18:2;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10758:32;;1367:25:7;;;10758:32:2;;1340:18:7;10758:32:2;;;;;;;10457:340;;;:::o;1359:130:0:-;1273:6;;-1:-1:-1;;;;;1273:6:0;734:10:5;1422:23:0;1414:68;;;;-1:-1:-1;;;1414:68:0;;9510:2:7;1414:68:0;;;9492:21:7;;;9529:18;;;9522:30;9588:34;9568:18;;;9561:62;9640:18;;1414:68:0;9308:356:7;2336:287:1;1759:1;2468:7;;:19;2460:63;;;;-1:-1:-1;;;2460:63:1;;9871:2:7;2460:63:1;;;9853:21:7;9910:2;9890:18;;;9883:30;9949:33;9929:18;;;9922:61;10000:18;;2460:63:1;9669:355:7;2460:63:1;1759:1;2598:7;:18;2336:287::o;7174:7073:6:-;-1:-1:-1;;;;;7300:18:6;;7292:68;;;;-1:-1:-1;;;7292:68:6;;;;;;;:::i;:::-;-1:-1:-1;;;;;7378:16:6;;7370:64;;;;-1:-1:-1;;;7370:64:6;;;;;;;:::i;:::-;-1:-1:-1;;;;;7557:15:6;;;;;;:9;:15;;;;;;;;:42;;;;-1:-1:-1;;;;;;7577:22:6;;;;;;:16;:22;;;;;;;;7576:23;7557:42;7553:102;;;7615:29;;-1:-1:-1;;;7615:29:6;;11041:2:7;7615:29:6;;;11023:21:7;11080:2;11060:18;;;11053:30;-1:-1:-1;;;11099:18:7;;;11092:49;11158:18;;7615:29:6;10839:343:7;7553:102:6;7782:11;;-1:-1:-1;;;;;7782:11:6;:25;;;;:48;;-1:-1:-1;7819:11:6;;-1:-1:-1;;;;;7811:19:6;;;7819:11;;7811:19;7782:48;:68;;;;-1:-1:-1;;;;;;7834:16:6;;;;7782:68;7765:2859;;;7959:13;;-1:-1:-1;;;;;7959:13:6;7945:10;:27;7941:122;;7992:32;8008:4;8014:2;8018:5;7992:15;:32::i;:::-;7174:7073;;;:::o;7941:122::-;8204:14;;;;8199:228;;8242:10;;;;:30;;;;-1:-1:-1;;;;;;8256:16:6;;;;;;:12;:16;;;;;;;;8242:30;8238:137;;;8296:32;8312:4;8318:2;8322:5;8296:15;:32::i;8238:137::-;8399:13;;-1:-1:-1;;;8399:13:6;;;;;;;;;;;8199:228;8586:11;;;;;;;8585:12;:33;;;;-1:-1:-1;;;;;;8602:16:6;;;;;;:12;:16;;;;;;;;8601:17;8585:33;:58;;;;-1:-1:-1;;;;;;8623:20:6;;;;;;:16;:20;;;;;;;;8622:21;8585:58;8581:120;;;8663:23;;-1:-1:-1;;;8663:23:6;;11389:2:7;8663:23:6;;;11371:21:7;11428:2;11408:18;;;11401:30;-1:-1:-1;;;11447:18:7;;;11440:43;11500:18;;8663:23:6;11187:337:7;8581:120:6;-1:-1:-1;;;;;8882:13:6;;;;;;:9;:13;;;;;;;;:38;;;;-1:-1:-1;;;;;;8900:20:6;;;;;;:16;:20;;;;;;;;8899:21;8882:38;8878:108;;;8940:31;;-1:-1:-1;;;8940:31:6;;11731:2:7;8940:31:6;;;11713:21:7;11770:2;11750:18;;;11743:30;-1:-1:-1;;;11789:18:7;;;11782:51;11850:18;;8940:31:6;11529:345:7;8878:108:6;9134:1;9117:14;;:18;:43;;;;-1:-1:-1;;;;;;9140:20:6;;;;;;:16;:20;;;;;;;;9139:21;9117:43;9113:307;;;-1:-1:-1;;;;;9195:16:6;;9180:12;9195:16;;;:12;:16;;;;;;;;;9281:14;;9274:21;;9195:16;9274:21;:::i;:::-;9258:12;:37;;9229:127;;;;-1:-1:-1;;;9229:127:6;;12081:2:7;9229:127:6;;;12063:21:7;12120:2;12100:18;;;12093:30;-1:-1:-1;;;12139:18:7;;;12132:49;12198:18;;9229:127:6;11879:343:7;9229:127:6;-1:-1:-1;;;;;;9374:16:6;;;;;;:12;:16;;;;;9393:12;9374:31;;9113:307;9535:1;9520:12;;:16;:41;;;;-1:-1:-1;;;;;;9541:20:6;;;;;;:16;:20;;;;;;;;9540:21;9520:41;9516:136;;;9598:12;;9589:5;:21;;9581:56;;;;-1:-1:-1;;;9581:56:6;;12429:2:7;9581:56:6;;;12411:21:7;12468:2;12448:18;;;12441:30;-1:-1:-1;;;12487:18:7;;;12480:52;12549:18;;9581:56:6;12227:346:7;9581:56:6;9770:1;9752:15;;:19;:44;;;;-1:-1:-1;;;;;;9776:20:6;;;;;;:16;:20;;;;;;;;9775:21;9752:44;9748:219;;;9870:15;;9861:5;9845:13;9855:2;-1:-1:-1;;;;;3519:18:2;3493:7;3519:18;;;;;;;;;;;;3419:125;9845:13:6;:21;;;;:::i;:::-;:40;;9816:136;;;;-1:-1:-1;;;9816:136:6;;12780:2:7;9816:136:6;;;12762:21:7;12819:2;12799:18;;;12792:30;12858:27;12838:18;;;12831:55;12903:18;;9816:136:6;12578:349:7;9816:136:6;10142:15;;10128:11;;:29;;;;:::i;:::-;10112:12;:45;10108:348;;-1:-1:-1;;;;;10182:16:6;;;;;;:12;:16;;;;;;;;10181:17;:42;;;;-1:-1:-1;;;;;;10203:20:6;;;;;;:16;:20;;;;;;;;10202:21;10181:42;10177:265;;;-1:-1:-1;;;;;10247:13:6;;;;;;:9;:13;;;;;;;;;:20;;-1:-1:-1;;10247:20:6;10263:4;10247:20;;;;;;10294:21;;1169:41:7;;;10294:21:6;;1142:18:7;10294:21:6;;;;;;;10177:265;10561:32;10577:4;10583:2;10587:5;10561:15;:32::i;7765:2859::-;10726:11;;-1:-1:-1;;;;;10726:11:6;:25;;;;:46;;-1:-1:-1;10761:11:6;;-1:-1:-1;;;;;10755:17:6;;;10761:11;;10755:17;10726:46;:68;;;;-1:-1:-1;;;;;;10776:18:6;;;;10726:68;10709:1643;;;10939:13;;-1:-1:-1;;;;;10939:13:6;10925:10;:27;10921:122;;10972:32;10988:4;10994:2;10998:5;10972:15;:32::i;10921:122::-;-1:-1:-1;;;;;11060:15:6;;;;;;:9;:15;;;;;;;;:42;;;;-1:-1:-1;;;;;;11080:22:6;;;;;;:16;:22;;;;;;;;11079:23;11060:42;11056:109;;;11122:28;;-1:-1:-1;;;11122:28:6;;13134:2:7;11122:28:6;;;13116:21:7;13173:2;13153:18;;;13146:30;-1:-1:-1;;;13192:18:7;;;13185:48;13250:18;;11122:28:6;12932:342:7;11056:109:6;11274:16;11314:4;11294:16;11302:8;11294:5;:16;:::i;:::-;11293:25;;;;:::i;:::-;11274:44;-1:-1:-1;11332:22:6;11357:16;11274:44;11357:5;:16;:::i;:::-;11332:41;;11419:15;11467:8;11449:14;;11438:8;:25;;;;:::i;:::-;11437:38;;;;:::i;:::-;11419:56;;11489:14;11534:8;11518:12;;11507:8;:23;;;;:::i;:::-;11506:36;;;;:::i;:::-;11489:53;;11556:20;11614:8;11591:19;;11580:8;:30;;;;:::i;:::-;11579:43;;;;:::i;:::-;11556:66;-1:-1:-1;11684:11:6;;11680:59;;11719:10;;11697:42;;11713:4;;-1:-1:-1;;;;;11719:10:6;11731:7;11697:15;:42::i;:::-;11845:10;;11841:94;;11897:14;;11875:45;;11891:4;;-1:-1:-1;;;;;11897:14:6;11913:6;11875:15;:45::i;:::-;11981:16;;11977:90;;12037:15;;12015:52;;12031:4;;-1:-1:-1;;;;;12037:15:6;12054:12;12015:15;:52::i;:::-;12082:41;12098:4;12104:2;12108:14;12082:15;:41::i;:::-;12153:7;12137:12;;:23;;;;;;;:::i;:::-;;;;;;;;12188:6;12174:10;;:20;;;;;;;:::i;:::-;;;;;;;;12229:12;12208:17;;:33;;;;;;;:::i;:::-;;;;-1:-1:-1;;12260:61:6;;;7522:25:7;;;7578:2;7563:18;;7556:34;;;7606:18;;;7599:34;;;7664:2;7649:18;;7642:34;;;-1:-1:-1;;;;;12260:61:6;;;;;7509:3:7;7494:19;12260:61:6;;;;;;;12335:7;;;;;7174:7073;;;:::o;10709:1643::-;12670:14;;;;:52;;;;-1:-1:-1;;;;;;12701:21:6;;;;;;:15;:21;;;;;;;;12700:22;12670:52;:88;;;;-1:-1:-1;;;;;;12739:19:6;;;;;;:15;:19;;;;;;;;12738:20;12670:88;:127;;;;-1:-1:-1;;;;;;12775:22:6;;;;;;:16;:22;;;;;;;;12774:23;12670:127;:164;;;;-1:-1:-1;;;;;;12814:20:6;;;;;;:16;:20;;;;;;;;12813:21;12670:164;12653:1494;;;12859:20;12882:23;1635:4;12904:1;12882:23;:::i;:::-;12859:46;;12932:12;12923:5;:21;12919:193;;13073:24;;-1:-1:-1;;;13073:24:6;;;;;;;;;;;12919:193;13226:12;:14;;;:12;:14;;;:::i;:::-;;;;;;13254:13;13270:51;13291:4;13297:2;13301:5;13308:12;;13270:20;:51::i;:::-;13335:12;:14;;13254:67;;-1:-1:-1;13335:12:6;:14;;;:::i;:::-;;;;;;13363:13;13379:51;13400:4;13406:2;13410:5;13417:12;;13379:20;:51::i;:::-;13363:67;-1:-1:-1;13445:10:6;;-1:-1:-1;;;;;13514:19:6;;;13510:137;;13553:49;13569:4;13575:5;1635:4;13553:15;:49::i;:::-;13628:4;13620:12;;13510:137;-1:-1:-1;;;;;13664:19:6;;;13660:137;;13703:49;13719:4;13725:5;1635:4;13703:15;:49::i;:::-;-1:-1:-1;13778:4:6;13660:137;13841:5;-1:-1:-1;;;;;13816:52:6;13834:5;-1:-1:-1;;;;;13816:52:6;13828:4;-1:-1:-1;;;;;13816:52:6;;1635:4;13816:52;;;;1367:25:7;;1355:2;1340:18;;1221:177;13816:52:6;;;;;;;;13883:16;13921:5;13917:42;;;13928:31;1635:4;13928:31;;:::i;:::-;;;13917:42;13977:5;13973:42;;;13984:31;1635:4;13984:31;;:::i;:::-;;;13973:42;14030:17;14050:16;14058:8;14050:5;:16;:::i;:::-;14030:36;;14080;14096:4;14102:2;14106:9;14080:15;:36::i;:::-;14130:7;;;;;;;7174:7073;;;:::o;2426:187:0:-;2518:6;;;-1:-1:-1;;;;;2534:17:0;;;-1:-1:-1;;;;;;2534:17:0;;;;;;;2566:40;;2518:6;;;2534:17;2518:6;;2566:40;;2499:16;;2566:40;2489:124;2426:187;:::o;7456:788:2:-;-1:-1:-1;;;;;7552:18:2;;7544:68;;;;-1:-1:-1;;;7544:68:2;;;;;;;:::i;:::-;-1:-1:-1;;;;;7630:16:2;;7622:64;;;;-1:-1:-1;;;7622:64:2;;;;;;;:::i;:::-;-1:-1:-1;;;;;7768:15:2;;7746:19;7768:15;;;;;;;;;;;7801:21;;;;7793:72;;;;-1:-1:-1;;;7793:72:2;;14016:2:7;7793:72:2;;;13998:21:7;14055:2;14035:18;;;14028:30;14094:34;14074:18;;;14067:62;-1:-1:-1;;;14145:18:7;;;14138:36;14191:19;;7793:72:2;13814:402:7;7793:72:2;-1:-1:-1;;;;;7899:15:2;;;:9;:15;;;;;;;;;;;7917:20;;;7899:38;;8114:13;;;;;;;;;;:23;;;;;;8163:26;;1367:25:7;;;8114:13:2;;8163:26;;1340:18:7;8163:26:2;;;;;;;7534:710;7456:788;;;:::o;14253:599:6:-;14602:185;;;14636:15;14602:185;;;;14490:19:7;;;;14669:16:6;14525:12:7;;;14518:28;-1:-1:-1;;14584:2:7;14580:15;;;14576:53;;14562:12;;;14555:75;14664:15;;;;14660:53;;;14646:12;;;14639:75;14730:13;;;14723:29;;;;14768:13;;;;14761:29;;;;14602:185:6;;;;;;;;;;14806:13:7;;;;14602:185:6;;14579:218;;;;;;14253:599::o;14:527:7:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;263:1;273:140;287:6;284:1;281:13;273:140;;;398:2;382:14;;;378:23;;372:30;367:2;348:17;;;344:26;337:66;302:10;273:140;;;277:3;462:1;457:2;448:6;437:9;433:22;429:31;422:42;532:2;525;521:7;516:2;508:6;504:15;500:29;489:9;485:45;481:54;473:62;;;14:527;;;;:::o;546:173::-;614:20;;-1:-1:-1;;;;;663:31:7;;653:42;;643:70;;709:1;706;699:12;643:70;546:173;;;:::o;724:300::-;792:6;800;853:2;841:9;832:7;828:23;824:32;821:52;;;869:1;866;859:12;821:52;892:29;911:9;892:29;:::i;:::-;882:39;990:2;975:18;;;;962:32;;-1:-1:-1;;;724:300:7:o;1403:186::-;1462:6;1515:2;1503:9;1494:7;1490:23;1486:32;1483:52;;;1531:1;1528;1521:12;1483:52;1554:29;1573:9;1554:29;:::i;1594:160::-;1659:20;;1715:13;;1708:21;1698:32;;1688:60;;1744:1;1741;1734:12;1759:254;1824:6;1832;1885:2;1873:9;1864:7;1860:23;1856:32;1853:52;;;1901:1;1898;1891:12;1853:52;1924:29;1943:9;1924:29;:::i;:::-;1914:39;;1972:35;2003:2;1992:9;1988:18;1972:35;:::i;:::-;1962:45;;1759:254;;;;;:::o;2018:374::-;2095:6;2103;2111;2164:2;2152:9;2143:7;2139:23;2135:32;2132:52;;;2180:1;2177;2170:12;2132:52;2203:29;2222:9;2203:29;:::i;:::-;2193:39;;2251:38;2285:2;2274:9;2270:18;2251:38;:::i;:::-;2018:374;;2241:48;;-1:-1:-1;;;2358:2:7;2343:18;;;;2330:32;;2018:374::o;2808:334::-;2885:6;2893;2901;2954:2;2942:9;2933:7;2929:23;2925:32;2922:52;;;2970:1;2967;2960:12;2922:52;2993:29;3012:9;2993:29;:::i;:::-;2983:39;;3041:38;3075:2;3064:9;3060:18;3041:38;:::i;:::-;3031:48;;3098:38;3132:2;3121:9;3117:18;3098:38;:::i;:::-;3088:48;;2808:334;;;;;:::o;3147:180::-;3203:6;3256:2;3244:9;3235:7;3231:23;3227:32;3224:52;;;3272:1;3269;3262:12;3224:52;3295:26;3311:9;3295:26;:::i;3540:587::-;3626:6;3634;3642;3650;3703:3;3691:9;3682:7;3678:23;3674:33;3671:53;;;3720:1;3717;3710:12;3671:53;-1:-1:-1;;3765:23:7;;;3885:2;3870:18;;3857:32;;-1:-1:-1;3988:2:7;3973:18;;3960:32;;4091:2;4076:18;4063:32;;-1:-1:-1;3540:587:7;-1:-1:-1;3540:587:7:o;4132:466::-;4209:6;4217;4225;4278:2;4266:9;4257:7;4253:23;4249:32;4246:52;;;4294:1;4291;4284:12;4246:52;-1:-1:-1;;4339:23:7;;;4459:2;4444:18;;4431:32;;-1:-1:-1;4562:2:7;4547:18;;;4534:32;;4132:466;-1:-1:-1;4132:466:7:o;4603:346::-;4671:6;4679;4732:2;4720:9;4711:7;4707:23;4703:32;4700:52;;;4748:1;4745;4738:12;4700:52;-1:-1:-1;;4793:23:7;;;4913:2;4898:18;;;4885:32;;-1:-1:-1;4603:346:7:o;4954:260::-;5022:6;5030;5083:2;5071:9;5062:7;5058:23;5054:32;5051:52;;;5099:1;5096;5089:12;5051:52;5122:29;5141:9;5122:29;:::i;:::-;5112:39;;5170:38;5204:2;5193:9;5189:18;5170:38;:::i;5219:380::-;5298:1;5294:12;;;;5341;;;5362:61;;5416:4;5408:6;5404:17;5394:27;;5362:61;5469:2;5461:6;5458:14;5438:18;5435:38;5432:161;;5515:10;5510:3;5506:20;5503:1;5496:31;5550:4;5547:1;5540:15;5578:4;5575:1;5568:15;5432:161;;5219:380;;;:::o;5604:336::-;5806:2;5788:21;;;5845:2;5825:18;;;5818:30;-1:-1:-1;;;5879:2:7;5864:18;;5857:42;5931:2;5916:18;;5604:336::o;6544:127::-;6605:10;6600:3;6596:20;6593:1;6586:31;6636:4;6633:1;6626:15;6660:4;6657:1;6650:15;6676:128;6743:9;;;6764:11;;;6761:37;;;6778:18;;:::i;6809:125::-;6874:9;;;6895:10;;;6892:36;;;6908:18;;:::i;10029:401::-;10231:2;10213:21;;;10270:2;10250:18;;;10243:30;10309:34;10304:2;10289:18;;10282:62;-1:-1:-1;;;10375:2:7;10360:18;;10353:35;10420:3;10405:19;;10029:401::o;10435:399::-;10637:2;10619:21;;;10676:2;10656:18;;;10649:30;10715:34;10710:2;10695:18;;10688:62;-1:-1:-1;;;10781:2:7;10766:18;;10759:33;10824:3;10809:19;;10435:399::o;13279:168::-;13352:9;;;13383;;13400:15;;;13394:22;;13380:37;13370:71;;13421:18;;:::i;13452:217::-;13492:1;13518;13508:132;;13562:10;13557:3;13553:20;13550:1;13543:31;13597:4;13594:1;13587:15;13625:4;13622:1;13615:15;13508:132;-1:-1:-1;13654:9:7;;13452:217::o;13674:135::-;13713:3;13734:17;;;13731:43;;13754:18;;:::i;:::-;-1:-1:-1;13801:1:7;13790:13;;13674:135::o
Swarm Source
ipfs://ca2772235716dcd5856a9f893a78fb644088e569bb62bf1d9b63c856b662f131
Loading...
Loading
Loading...
Loading
Net Worth in USD
$5.00
Net Worth in BNB
Token Allocations
BSC-USD
100.00%
Multichain Portfolio | 32 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| BSC | 100.00% | $1 | 5 | $5 |
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.