ETH Price: $3,438.53 (-3.96%)
 

Overview

Max Total Supply

1,000,000,000 BABYMIGGLES

Holders

56,932

Transfers

-
0

Market

Price

$0.00 @ 0.000000 ETH

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
BABYMIGGLES

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at basescan.org on 2024-07-19
*/

/*  
    The new hot kitty in town is turning heads! We're here to 
    give you a 2nd opportunity while earning Mr Miggles Reflections! 
    You buy Baby Miggles, HOLD! Your rewards will automatically be put in your wallet.


    RewardsBot : https://t.me/officialBabyMigglesBot
    Website    : https://officialbabymiggles.com/
    Telegram   : https://t.me/officialBabyMiggles
    Twitter    : https://x.com/OGBabyMiggles                         
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.23;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {return a + b;}
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {return a - b;}
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {return a * b;}
    function div(uint256 a, uint256 b) internal pure returns (uint256) {return a / b;}
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {return a % b;}
    
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {uint256 c = a + b; if(c < a) return(false, 0); return(true, c);}}

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if(b > a) return(false, 0); return(true, a - b);}}

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if (a == 0) return(true, 0); uint256 c = a * b;
        if(c / a != b) return(false, 0); return(true, c);}}

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if(b == 0) return(false, 0); return(true, a / b);}}

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if(b == 0) return(false, 0); return(true, a % b);}}

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked{require(b <= a, errorMessage); return a - b;}}

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked{require(b > 0, errorMessage); return a / b;}}

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked{require(b > 0, errorMessage); return a % b;}}}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function circulatingSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);}

abstract contract Ownable {
    address internal owner;
    constructor(address _owner) {owner = _owner;}
    modifier onlyOwner() {require(isOwner(msg.sender), "!OWNER"); _;}
    function isOwner(address account) public view returns (bool) {return account == owner;}
    function transferOwnership(address payable adr) public onlyOwner {owner = adr; emit OwnershipTransferred(adr);}
    event OwnershipTransferred(address owner);
}

interface IFactory{
        function createPair(address tokenA, address tokenB) external returns (address pair);
        function getPair(address tokenA, address tokenB) external view returns (address pair);
}

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline) external;
}

contract BABYMIGGLES is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = 'BABY MIGGLES';
    string private constant _symbol = 'BABYMIGGLES';
    uint8 private constant _decimals = 18;
    uint256 private _totalSupply = 1000000000 * (10 ** _decimals);
    uint256 private _maxTxAmount = ( _totalSupply * 10000 ) / 10000;
    uint256 private _maxSellAmount = ( _totalSupply * 10000 ) / 10000;
    uint256 private _maxWalletToken = ( _totalSupply * 50 ) / 10000;
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isDividendExempt;
    IRouter router;
    address public pair;
    bool private tradingAllowed = false;
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 900;
    uint256 private rewardsFee = 100;
    uint256 private developmentFee = 0;
    uint256 private burnFee = 0;
    uint256 private totalFee = 3500;
    uint256 private sellFee = 3500;
    uint256 private transferFee = 3500;
    uint256 private denominator = 10000;
    bool private swapEnabled = true;
    uint256 private swapTimes;
    bool private swapping;
    uint256 private swapThreshold = ( _totalSupply * 335 ) / 100000;
    uint256 private _minTokenAmount = ( _totalSupply * 10 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}
    
    // Migles CA for the rewards
    address public reward = 0xB1a03EdA10342529bBF8EB700a06C60441fEf25d; 
    
    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 internal dividendsPerShare;
    uint256 internal dividendsPerShareAccuracyFactor = 10 ** 36;
    address[] shareholders;
    mapping (address => uint256) shareholderIndexes;
    mapping (address => uint256) shareholderClaims;
    struct Share {uint256 amount; uint256 totalExcluded; uint256 totalRealised; }
    mapping (address => Share) public shares;
    uint256 internal currentIndex;
    uint256 public minPeriod = 30 minutes;
    uint256 public minDistribution = 1 * (10 ** 4);
    uint256 public distributorGas = 350000;
    function _claimDividend() external {distributeDividend(msg.sender);}

    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal constant development_receiver = 0x816AA757acd556C3b72cE7feA49fFcA45Fc92E0d;
    address internal constant marketing_receiver = 0x816AA757acd556C3b72cE7feA49fFcA45Fc92E0d;
    address internal constant liquidity_receiver = 0x816AA757acd556C3b72cE7feA49fFcA45Fc92E0d;

    constructor() Ownable(msg.sender) {
        IRouter _router = IRouter(0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
        router = _router;
        pair = _pair;
        isFeeExempt[address(this)] = true;
        isFeeExempt[liquidity_receiver] = true;
        isFeeExempt[marketing_receiver] = true;
        isFeeExempt[msg.sender] = true;
        isDividendExempt[address(pair)] = true;
        isDividendExempt[address(msg.sender)] = true;        
        isDividendExempt[address(this)] = true;
        isDividendExempt[address(DEAD)] = true;
        isDividendExempt[address(0)] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}
    function name() public pure returns (string memory) {return _name;}
    function symbol() public pure returns (string memory) {return _symbol;}
    function decimals() public pure returns (uint8) {return _decimals;}
    function startTrading() external onlyOwner {tradingAllowed = true;}
    function getOwner() external view override returns (address) { return owner; }
    function totalSupply() public view override returns (uint256) {return _totalSupply;}
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function isCont(address addr) internal view returns (bool) {uint size; assembly { size := extcodesize(addr) } return size > 0; }
    function setisExempt(address _address, bool _enabled) external onlyOwner {isFeeExempt[_address] = _enabled;}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    function circulatingSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}

    function preTxCheck(address sender, address recipient, uint256 amount) internal view {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > uint256(0), "Transfer amount must be greater than zero");
        require(amount <= balanceOf(sender),"You are trying to transfer more than your balance");
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        preTxCheck(sender, recipient, amount);
        checkTradingAllowed(sender, recipient);
        checkMaxWallet(sender, recipient, amount); 
        swapbackCounters(sender, recipient);
        checkTxLimit(sender, recipient, amount); 
        swapBack(sender, recipient, amount);
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
        if(!isDividendExempt[sender]){setShare(sender, balanceOf(sender));}
        if(!isDividendExempt[recipient]){setShare(recipient, balanceOf(recipient));}
        if(shares[recipient].amount > 0){distributeDividend(recipient);}
        process(distributorGas);
    }

    function setStructure(uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _rewards, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
        liquidityFee = _liquidity;
        marketingFee = _marketing;
        burnFee = _burn;
        rewardsFee = _rewards;
        developmentFee = _development;
        totalFee = _total;
        sellFee = _sell;
        transferFee = _trans;
        require(totalFee <= denominator.div(4) && sellFee <= denominator.div(4) && transferFee <= denominator.div(4), "totalFee and sellFee cannot be more than 25%");
    }

    function setParameters(uint256 _buy, uint256 _trans, uint256 _wallet) external onlyOwner {
        uint256 newTx = (totalSupply() * _buy) / 10000;
        uint256 newTransfer = (totalSupply() * _trans) / 10000;
        uint256 newWallet = (totalSupply() * _wallet) / 10000;
        _maxTxAmount = newTx;
        _maxSellAmount = newTransfer;
        _maxWalletToken = newWallet;
        uint256 limit = totalSupply().mul(5).div(1000);
        require(newTx >= limit && newTransfer >= limit && newWallet >= limit, "Max TXs and Max Wallet cannot be less than .5%");
    }

    function checkTradingAllowed(address sender, address recipient) internal view {
        if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingAllowed, "tradingAllowed");}
    }
    
    function checkMaxWallet(address sender, address recipient, uint256 amount) internal view {
        if(!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD)){
            require((_balances[recipient].add(amount)) <= _maxWalletToken, "Exceeds maximum wallet amount.");}
    }

    function swapbackCounters(address sender, address recipient) internal {
        if(recipient == pair && !isFeeExempt[sender]){swapTimes += uint256(1);}
    }

    function checkTxLimit(address sender, address recipient, uint256 amount) internal view {
        if(sender != pair){require(amount <= _maxSellAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");}
        require(amount <= _maxTxAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap {
        uint256 _denominator = (liquidityFee.add(1).add(marketingFee).add(developmentFee).add(rewardsFee)).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(_denominator);
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance= deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
        uint256 marketingAmount = unitBalance.mul(2).mul(marketingFee);
        if(marketingAmount > 0){payable(marketing_receiver).transfer(marketingAmount);}
        uint256 rewardsAmount = unitBalance.mul(2).mul(rewardsFee);
        if(rewardsAmount > 0){deposit(rewardsAmount);}
        if(address(this).balance > uint256(0)){payable(development_receiver).transfer(address(this).balance);}
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidity_receiver,
            block.timestamp);
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        _approve(address(this), address(router), tokenAmount);
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp);
    }

    function shouldSwapBack(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= _minTokenAmount;
        bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
        return !swapping && swapEnabled && tradingAllowed && aboveMin && !isFeeExempt[sender] && recipient == pair && swapTimes >= uint256(2) && aboveThreshold;
    }

    function swapBack(address sender, address recipient, uint256 amount) internal {
        if(shouldSwapBack(sender, recipient, amount)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);}
    }

    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !isFeeExempt[sender] && !isFeeExempt[recipient];
    }

    function getTotalFee(address sender, address recipient) internal view returns (uint256) {
        if(recipient == pair){return sellFee;}
        if(sender == pair){return totalFee;}
        return transferFee;
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if(getTotalFee(sender, recipient) > 0){
        uint256 feeAmount = amount.div(denominator).mul(getTotalFee(sender, recipient));
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        if(burnFee > uint256(0)){_transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFee));}
        return amount.sub(feeAmount);} return amount;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        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);
    }

    function setisDividendExempt(address holder, bool exempt) external onlyOwner {
        isDividendExempt[holder] = exempt;
        if(exempt){setShare(holder, 0);}
        else{setShare(holder, balanceOf(holder)); }
    }

    function setShare(address shareholder, uint256 amount) internal {
        if(amount > 0 && shares[shareholder].amount == 0){addShareholder(shareholder);}
        else if(amount == 0 && shares[shareholder].amount > 0){removeShareholder(shareholder); }
        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }

    function deposit(uint256 amountETH) internal {
        uint256 balanceBefore = IERC20(reward).balanceOf(address(this));
        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = address(reward);
        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amountETH}(
            0,
            path,
            address(this),
            block.timestamp);
        uint256 amount = IERC20(reward).balanceOf(address(this)).sub(balanceBefore);
        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }

    function process(uint256 gas) internal {
        uint256 shareholderCount = shareholders.length;
        if(shareholderCount == 0) { return; }
        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();
        uint256 iterations = 0;
        while(gasUsed < gas && iterations < shareholderCount) {
            if(currentIndex >= shareholderCount){currentIndex = 0;}
            if(shouldDistribute(shareholders[currentIndex])){
                distributeDividend(shareholders[currentIndex]);}
            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }

    function rescueERC20(address _address, uint256 _amount) external onlyOwner {
        IERC20(_address).transfer(msg.sender, _amount);
    }
    
    function shouldDistribute(address shareholder) internal view returns (bool) {
        return shareholderClaims[shareholder] + minPeriod < block.timestamp
                && getUnpaidEarnings(shareholder) > minDistribution;
    }

    function totalRewardsDistributed(address _wallet) external view returns (uint256) {
        address shareholder = _wallet;
        return uint256(shares[shareholder].totalRealised);
    }

    function distributeDividend(address shareholder) internal {
        if(shares[shareholder].amount == 0){ return; }
        uint256 amount = getUnpaidEarnings(shareholder);
        if(amount > 0){
            totalDistributed = totalDistributed.add(amount);
            IERC20(reward).transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);}
    }

    function getUnpaidEarnings(address shareholder) public view returns (uint256) {
        if(shares[shareholder].amount == 0){ return 0; }
        uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;
        if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; }
        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

    function getCumulativeDividends(uint256 share) internal view returns (uint256) {
        return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }

    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1];
        shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder];
        shareholders.pop();
    }

    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution, uint256 _distributorGas) external onlyOwner {
        minPeriod = _minPeriod;
        minDistribution = _minDistribution;
        distributorGas = _distributorGas;
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"distributorGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getUnpaidEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minDistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reward","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"},{"internalType":"uint256","name":"_distributorGas","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_rewards","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setisDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"shares","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"totalExcluded","type":"uint256"},{"internalType":"uint256","name":"totalRealised","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"totalRewardsDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126012600a62000552565b6200002290633b9aca0062000569565b6001556127106001546127106200003a919062000569565b62000046919062000583565b6002556127106001546127106200005e919062000569565b6200006a919062000583565b600355612710600154603262000081919062000569565b6200008d919062000583565b600455600a805460ff60a01b191690555f600b819055610384600c556064600d55600e819055600f55610dac601081905560118190556012556127106013556014805460ff1916600190811790915554620186a090620000f09061014f62000569565b620000fc919062000583565b601755620186a0600154600a62000114919062000569565b62000120919062000583565b601855601980546001600160a01b03191673b1a03eda10342529bbf8eb700a06c60441fef25d1790556ec097ce7bc90715b34b9f1000000000601e55610708602455612710602555620557306026553480156200017b575f80fd5b505f80546001600160a01b031916331781556040805163c45a015560e01b81529051734752ba5dbc23f44d87826276bf6fd6b1c372ad249291839163c45a0155916004808201926020929091908290030181865afa158015620001e0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002069190620005a3565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000252573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002789190620005a3565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620002c3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002e99190620005a3565b600980546001600160a01b038581166001600160a01b031992831617909255600a80548484169216919091178155305f818152600760209081526040808320805460ff1990811660019081179092557fd4452497ece9e5ab34f660628cc56b76a74ac1fa28ba44ec3d229ef1a147a8b7805482168317905533808652838620805483168417905596549097168452600883528184208054881682179055858452818420805488168217905593835280832080548716851790557f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd0933429980548716851790557f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c78054909616841790955591548382526005835284822081905593519384529394509092917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050620005cb565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200049757815f19048211156200047b576200047b62000443565b808516156200048957918102915b93841c93908002906200045c565b509250929050565b5f82620004af575060016200054c565b81620004bd57505f6200054c565b8160018114620004d65760028114620004e15762000501565b60019150506200054c565b60ff841115620004f557620004f562000443565b50506001821b6200054c565b5060208310610133831016604e8410600b841016171562000526575081810a6200054c565b62000532838362000457565b805f190482111562000548576200054862000443565b0290505b92915050565b5f6200056260ff8416836200049f565b9392505050565b80820281158282048414176200054c576200054c62000443565b5f826200059e57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215620005b4575f80fd5b81516001600160a01b038116811462000562575f80fd5b6125a380620005d95f395ff3fe6080604052600436106101f4575f3560e01c806370a0823111610108578063c942435d1161009d578063e2d6f94c1161006d578063e2d6f94c14610635578063ef43b02b14610654578063efca2eed14610673578063f2fde38b14610688578063ffd49c84146106a7575f80fd5b8063c942435d14610551578063ca89b89914610565578063ce7c2ac21461059c578063dd62ed3e146105f1575f80fd5b806395d89b41116100d857806395d89b41146104cb578063997664d7146104fe578063a8aa1b3114610513578063a9059cbb14610532575f80fd5b806370a082311461045d578063893d20e81461047c5780638cd4426d146104985780639358928b146104b7575f80fd5b80632f54bf6e116101895780633f4218e0116101595780633f4218e0146103b85780634355855a146103e657806348ff2b8b146104145780634fab0ae81461043357806360e7196214610448575f80fd5b80632f54bf6e1461033c578063313ce5671461036957806334c5d2ce146103845780633a98ef39146103a3575f80fd5b8063228cb733116101c4578063228cb733146102b357806323b872dd146102ea57806328fd319814610309578063293230b814610328575f80fd5b806306fdde03146101ff578063095ea7b3146102455780630ca61cb11461027457806318160ddd14610295575f80fd5b366101fb57005b5f80fd5b34801561020a575f80fd5b5060408051808201909152600c81526b42414259204d4947474c455360a01b60208201525b60405161023c919061217c565b60405180910390f35b348015610250575f80fd5b5061026461025f3660046121df565b6106bc565b604051901515815260200161023c565b34801561027f575f80fd5b5061029361028e366004612209565b6106d2565b005b3480156102a0575f80fd5b506001545b60405190815260200161023c565b3480156102be575f80fd5b506019546102d2906001600160a01b031681565b6040516001600160a01b03909116815260200161023c565b3480156102f5575f80fd5b50610264610304366004612232565b610712565b348015610314575f80fd5b506102a5610323366004612270565b61077a565b348015610333575f80fd5b50610293610800565b348015610347575f80fd5b50610264610356366004612270565b5f546001600160a01b0391821691161490565b348015610374575f80fd5b506040516012815260200161023c565b34801561038f575f80fd5b5061029361039e366004612209565b61083e565b3480156103ae575f80fd5b506102a5601a5481565b3480156103c3575f80fd5b506102646103d2366004612270565b60076020525f908152604090205460ff1681565b3480156103f1575f80fd5b50610264610400366004612270565b60086020525f908152604090205460ff1681565b34801561041f575f80fd5b5061029361042e366004612298565b61098d565b34801561043e575f80fd5b506102a560255481565b348015610453575f80fd5b506102a560265481565b348015610468575f80fd5b506102a5610477366004612270565b6109e0565b348015610487575f80fd5b505f546001600160a01b03166102d2565b3480156104a3575f80fd5b506102936104b23660046121df565b6109fa565b3480156104c2575f80fd5b506102a5610a96565b3480156104d6575f80fd5b5060408051808201909152600b81526a424142594d4947474c455360a81b602082015261022f565b348015610509575f80fd5b506102a5601b5481565b34801561051e575f80fd5b50600a546102d2906001600160a01b031681565b34801561053d575f80fd5b5061026461054c3660046121df565b610ac5565b34801561055c575f80fd5b50610293610ad1565b348015610570575f80fd5b506102a561057f366004612270565b6001600160a01b03165f9081526022602052604090206002015490565b3480156105a7575f80fd5b506105d66105b6366004612270565b60226020525f908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161023c565b3480156105fc575f80fd5b506102a561060b3660046122cf565b6001600160a01b039182165f90815260066020908152604080832093909416825291909152205490565b348015610640575f80fd5b5061029361064f3660046122fb565b610adc565b34801561065f575f80fd5b5061029361066e366004612298565b610be1565b34801561067e575f80fd5b506102a5601c5481565b348015610693575f80fd5b506102936106a2366004612270565b610c56565b3480156106b2575f80fd5b506102a560245481565b5f6106c8338484610cd2565b5060015b92915050565b5f546001600160a01b031633146107045760405162461bcd60e51b81526004016106fb9061234b565b60405180910390fd5b602492909255602555602655565b5f61071e848484610df5565b61076f843361076a85604051806060016040528060288152602001612546602891396001600160a01b038a165f9081526006602090815260408083203384529091529020549190610fa0565b610cd2565b5060015b9392505050565b6001600160a01b0381165f90815260226020526040812054810361079f57505f919050565b6001600160a01b0382165f908152602260205260408120546107c090610fcb565b6001600160a01b0384165f908152602260205260409020600101549091508082116107ee57505f9392505050565b6107f88282610fe7565b949350505050565b5f546001600160a01b031633146108295760405162461bcd60e51b81526004016106fb9061234b565b600a805460ff60a01b1916600160a01b179055565b5f546001600160a01b031633146108675760405162461bcd60e51b81526004016106fb9061234b565b5f6127108461087560015490565b61087f919061237f565b6108899190612396565b90505f6127108461089960015490565b6108a3919061237f565b6108ad9190612396565b90505f612710846108bd60015490565b6108c7919061237f565b6108d19190612396565b60028490556003839055600481905590505f6109036103e86108fd60056108f760015490565b90610ff2565b90610ffd565b90508084101580156109155750808310155b80156109215750808210155b6109845760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b60648201526084016106fb565b50505050505050565b5f546001600160a01b031633146109b65760405162461bcd60e51b81526004016106fb9061234b565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b6001600160a01b03165f9081526005602052604090205490565b5f546001600160a01b03163314610a235760405162461bcd60e51b81526004016106fb9061234b565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303815f875af1158015610a6d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a9191906123b5565b505050565b5f610ac0610aa35f6109e0565b610aba610ab161dead6109e0565b60015490610fe7565b90610fe7565b905090565b5f6106c8338484610df5565b610ada33611008565b565b5f546001600160a01b03163314610b055760405162461bcd60e51b81526004016106fb9061234b565b600b889055600c879055600f869055600d859055600e849055601083905560118290556012819055601354610b3b906004610ffd565b60105411158015610b5b5750601354610b55906004610ffd565b60115411155b8015610b765750601354610b70906004610ffd565b60125411155b610bd75760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032352560a01b60648201526084016106fb565b5050505050505050565b5f546001600160a01b03163314610c0a5760405162461bcd60e51b81526004016106fb9061234b565b6001600160a01b0382165f908152600860205260409020805460ff19168215801591909117909155610c4457610c40825f61113a565b5050565b610c4082610c51846109e0565b61113a565b5f546001600160a01b03163314610c7f5760405162461bcd60e51b81526004016106fb9061234b565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b038316610d345760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106fb565b6001600160a01b038216610d955760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106fb565b6001600160a01b038381165f8181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b610e0083838361124a565b610e0a83836113e3565b610e15838383611472565b610e1f838361155b565b610e2a8383836115b0565b610e358383836116d9565b6001600160a01b0383165f90815260056020526040902054610e579082610fe7565b6001600160a01b0384165f90815260056020526040812091909155610e7c84846116fd565b610e865781610e91565b610e91848484611741565b6001600160a01b0384165f90815260056020526040902054909150610eb6908261182b565b6001600160a01b038085165f8181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f099085815260200190565b60405180910390a36001600160a01b0384165f9081526008602052604090205460ff16610f3d57610f3d84610c51866109e0565b6001600160a01b0383165f9081526008602052604090205460ff16610f6957610f6983610c51856109e0565b6001600160a01b0383165f9081526022602052604090205415610f8f57610f8f83611008565b610f9a602654611836565b50505050565b5f8184841115610fc35760405162461bcd60e51b81526004016106fb919061217c565b505050900390565b5f6106cc601e546108fd601d5485610ff290919063ffffffff16565b5f61077382846123d0565b5f610773828461237f565b5f6107738284612396565b6001600160a01b0381165f9081526022602052604081205490036110295750565b5f6110338261077a565b90508015610c4057601c54611048908261182b565b601c5560195460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303815f875af115801561109b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110bf91906123b5565b506001600160a01b0382165f90815260216020908152604080832042905560229091529020600201546110f2908261182b565b6001600160a01b0383165f90815260226020526040902060028101919091555461111b90610fcb565b6001600160a01b0383165f908152602260205260409020600101555050565b5f8111801561115e57506001600160a01b0382165f90815260226020526040902054155b156111c257601f80546001600160a01b0384165f8181526020805260408120839055600183018455929092527fa03837a25210ee280c2113ff4b77ca23440b19d4866cca721c801278fd08d8070180546001600160a01b03191690911790556111f4565b801580156111e657506001600160a01b0382165f9081526022602052604090205415155b156111f4576111f48261191c565b6001600160a01b0382165f90815260226020526040902054601a5461122491839161121e91610fe7565b9061182b565b601a556001600160a01b0382165f90815260226020526040902081905561111b81610fcb565b6001600160a01b0383166112ae5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106fb565b6001600160a01b0382166113105760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106fb565b5f81116113715760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016106fb565b61137a836109e0565b811115610a915760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016106fb565b6001600160a01b0382165f9081526007602052604090205460ff1615801561142357506001600160a01b0381165f9081526007602052604090205460ff16155b15610c4057600a54600160a01b900460ff16610c405760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b60448201526064016106fb565b6001600160a01b0383165f9081526007602052604090205460ff161580156114b257506001600160a01b0382165f9081526007602052604090205460ff16155b80156114cc5750600a546001600160a01b03838116911614155b80156114e357506001600160a01b03821661dead14155b15610a91576004546001600160a01b0383165f9081526005602052604090205461150d908361182b565b1115610a915760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016106fb565b600a546001600160a01b03828116911614801561159057506001600160a01b0382165f9081526007602052604090205460ff16155b15610c4057600160155f8282546115a791906123e3565b90915550505050565b600a546001600160a01b0384811691161461164f57600354811115806115ed57506001600160a01b0383165f9081526007602052604090205460ff165b8061160f57506001600160a01b0382165f9081526007602052604090205460ff165b61164f5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016106fb565b6002548111158061167757506001600160a01b0383165f9081526007602052604090205460ff165b8061169957506001600160a01b0382165f9081526007602052604090205460ff165b610a915760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016106fb565b6116e4838383611a27565b15610a91576116f4601754611ad5565b5f601555505050565b6001600160a01b0382165f9081526007602052604081205460ff161580156107735750506001600160a01b03165f9081526007602052604090205460ff1615919050565b5f8061174d8585611c85565b1115611824575f61176f6117618686611c85565b6013546108f7908690610ffd565b305f9081526005602052604090205490915061178b908261182b565b305f81815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906117db9085815260200190565b60405180910390a3600f5415611812576118123061dead61180d600f546108f760135489610ffd90919063ffffffff16565b610df5565b61181c8382610fe7565b915050610773565b5092915050565b5f61077382846123e3565b601f545f819003611845575050565b5f805a90505f5b848310801561185a57508381105b1561191557836023541061186d575f6023555b61189e601f60235481548110611885576118856123f6565b5f918252602090912001546001600160a01b0316611ccf565b156118d4576118d4601f602354815481106118bb576118bb6123f6565b5f918252602090912001546001600160a01b0316611008565b6118e96118e25a8490610fe7565b849061182b565b92505a602380549193505f6118fd8361240a565b9190505550808061190d9061240a565b91505061184c565b5050505050565b601f805461192c906001906123d0565b8154811061193c5761193c6123f6565b5f9182526020808320909101546001600160a01b038481168452918052604090922054601f80549290931692918110611977576119776123f6565b5f91825260208083209190910180546001600160a01b0319166001600160a01b0394851617905591831681528180526040812054601f8054919392916119bf906001906123d0565b815481106119cf576119cf6123f6565b5f9182526020808320909101546001600160a01b03168352820192909252604001902055601f805480611a0457611a04612422565b5f8281526020902081015f1990810180546001600160a01b031916905501905550565b5f8060185483101590505f601754611a3e306109e0565b601654911115915060ff16158015611a58575060145460ff165b8015611a6d5750600a54600160a01b900460ff165b8015611a765750815b8015611a9a57506001600160a01b0386165f9081526007602052604090205460ff16155b8015611ab35750600a546001600160a01b038681169116145b8015611ac25750600260155410155b8015611acb5750805b9695505050505050565b600160165f6101000a81548160ff0219169083151502179055505f611b1d60026108f7600d5461121e600e5461121e600c5461121e6001600b5461182b90919063ffffffff16565b90505f611b39826108fd600b5486610ff290919063ffffffff16565b90505f611b468483610fe7565b905047611b5282611d13565b5f611b5d4783610fe7565b90505f611b7f611b78600b5488610fe790919063ffffffff16565b8390610ffd565b90505f611b97600b5483610ff290919063ffffffff16565b90508015611ba957611ba98682611e63565b600c545f90611bbd906108f7856002610ff2565b90508015611c055760405173816aa757acd556c3b72ce7fea49ffca45fc92e0d9082156108fc029083905f818181858888f19350505050158015611c03573d5f803e3d5ffd5b505b600d545f90611c19906108f7866002610ff2565b90508015611c2a57611c2a81611f1d565b4715611c6f5760405173816aa757acd556c3b72ce7fea49ffca45fc92e0d904780156108fc02915f818181858888f19350505050158015611c6d573d5f803e3d5ffd5b505b50506016805460ff191690555050505050505050565b600a545f906001600160a01b0390811690831603611ca657506011546106cc565b600a546001600160a01b0390811690841603611cc557506010546106cc565b5060125492915050565b6024546001600160a01b0382165f9081526021602052604081205490914291611cf891906123e3565b1080156106cc5750602554611d0c8361077a565b1192915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611d4657611d466123f6565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611d9d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dc19190612436565b81600181518110611dd457611dd46123f6565b6001600160a01b039283166020918202929092010152600954611dfa9130911684610cd2565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac94790611e329085905f90869030904290600401612494565b5f604051808303815f87803b158015611e49575f80fd5b505af1158015611e5b573d5f803e3d5ffd5b505050505050565b600954611e7b9030906001600160a01b031684610cd2565b60095460405163f305d71960e01b8152306004820152602481018490525f60448201819052606482015273816aa757acd556c3b72ce7fea49ffca45fc92e0d60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015611ef8573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061191591906124cf565b6019546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015611f63573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f8791906124fa565b6040805160028082526060820183529293505f9290916020830190803683375050600954604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015611ff3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120179190612436565b815f81518110612029576120296123f6565b6001600160a01b03928316602091820292909201015260195482519116908290600190811061205a5761205a6123f6565b6001600160a01b03928316602091820292909201015260095460405163b6f9de9560e01b815291169063b6f9de9590859061209f905f90869030904290600401612511565b5f604051808303818588803b1580156120b6575f80fd5b505af11580156120c8573d5f803e3d5ffd5b50506019546040516370a0823160e01b81523060048201525f945061213f93508692506001600160a01b03909116906370a0823190602401602060405180830381865afa15801561211b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aba91906124fa565b601b5490915061214f908261182b565b601b55601a54601e546121739161216a916108fd9085610ff2565b601d549061182b565b601d5550505050565b5f602080835283518060208501525f5b818110156121a85785810183015185820160400152820161218c565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146121dc575f80fd5b50565b5f80604083850312156121f0575f80fd5b82356121fb816121c8565b946020939093013593505050565b5f805f6060848603121561221b575f80fd5b505081359360208301359350604090920135919050565b5f805f60608486031215612244575f80fd5b833561224f816121c8565b9250602084013561225f816121c8565b929592945050506040919091013590565b5f60208284031215612280575f80fd5b8135610773816121c8565b80151581146121dc575f80fd5b5f80604083850312156122a9575f80fd5b82356122b4816121c8565b915060208301356122c48161228b565b809150509250929050565b5f80604083850312156122e0575f80fd5b82356122eb816121c8565b915060208301356122c4816121c8565b5f805f805f805f80610100898b031215612313575f80fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176106cc576106cc61236b565b5f826123b057634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156123c5575f80fd5b81516107738161228b565b818103818111156106cc576106cc61236b565b808201808211156106cc576106cc61236b565b634e487b7160e01b5f52603260045260245ffd5b5f6001820161241b5761241b61236b565b5060010190565b634e487b7160e01b5f52603160045260245ffd5b5f60208284031215612446575f80fd5b8151610773816121c8565b5f815180845260208085019450602084015f5b838110156124895781516001600160a01b031687529582019590820190600101612464565b509495945050505050565b85815284602082015260a060408201525f6124b260a0830186612451565b6001600160a01b0394909416606083015250608001529392505050565b5f805f606084860312156124e1575f80fd5b8351925060208401519150604084015190509250925092565b5f6020828403121561250a575f80fd5b5051919050565b848152608060208201525f6125296080830186612451565b6001600160a01b0394909416604083015250606001529291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202d217fa1a9dabf6c4d43aa398464fc607f8759c8c1815d4b55c4ef389ac29d1c64736f6c63430008170033

Deployed Bytecode

0x6080604052600436106101f4575f3560e01c806370a0823111610108578063c942435d1161009d578063e2d6f94c1161006d578063e2d6f94c14610635578063ef43b02b14610654578063efca2eed14610673578063f2fde38b14610688578063ffd49c84146106a7575f80fd5b8063c942435d14610551578063ca89b89914610565578063ce7c2ac21461059c578063dd62ed3e146105f1575f80fd5b806395d89b41116100d857806395d89b41146104cb578063997664d7146104fe578063a8aa1b3114610513578063a9059cbb14610532575f80fd5b806370a082311461045d578063893d20e81461047c5780638cd4426d146104985780639358928b146104b7575f80fd5b80632f54bf6e116101895780633f4218e0116101595780633f4218e0146103b85780634355855a146103e657806348ff2b8b146104145780634fab0ae81461043357806360e7196214610448575f80fd5b80632f54bf6e1461033c578063313ce5671461036957806334c5d2ce146103845780633a98ef39146103a3575f80fd5b8063228cb733116101c4578063228cb733146102b357806323b872dd146102ea57806328fd319814610309578063293230b814610328575f80fd5b806306fdde03146101ff578063095ea7b3146102455780630ca61cb11461027457806318160ddd14610295575f80fd5b366101fb57005b5f80fd5b34801561020a575f80fd5b5060408051808201909152600c81526b42414259204d4947474c455360a01b60208201525b60405161023c919061217c565b60405180910390f35b348015610250575f80fd5b5061026461025f3660046121df565b6106bc565b604051901515815260200161023c565b34801561027f575f80fd5b5061029361028e366004612209565b6106d2565b005b3480156102a0575f80fd5b506001545b60405190815260200161023c565b3480156102be575f80fd5b506019546102d2906001600160a01b031681565b6040516001600160a01b03909116815260200161023c565b3480156102f5575f80fd5b50610264610304366004612232565b610712565b348015610314575f80fd5b506102a5610323366004612270565b61077a565b348015610333575f80fd5b50610293610800565b348015610347575f80fd5b50610264610356366004612270565b5f546001600160a01b0391821691161490565b348015610374575f80fd5b506040516012815260200161023c565b34801561038f575f80fd5b5061029361039e366004612209565b61083e565b3480156103ae575f80fd5b506102a5601a5481565b3480156103c3575f80fd5b506102646103d2366004612270565b60076020525f908152604090205460ff1681565b3480156103f1575f80fd5b50610264610400366004612270565b60086020525f908152604090205460ff1681565b34801561041f575f80fd5b5061029361042e366004612298565b61098d565b34801561043e575f80fd5b506102a560255481565b348015610453575f80fd5b506102a560265481565b348015610468575f80fd5b506102a5610477366004612270565b6109e0565b348015610487575f80fd5b505f546001600160a01b03166102d2565b3480156104a3575f80fd5b506102936104b23660046121df565b6109fa565b3480156104c2575f80fd5b506102a5610a96565b3480156104d6575f80fd5b5060408051808201909152600b81526a424142594d4947474c455360a81b602082015261022f565b348015610509575f80fd5b506102a5601b5481565b34801561051e575f80fd5b50600a546102d2906001600160a01b031681565b34801561053d575f80fd5b5061026461054c3660046121df565b610ac5565b34801561055c575f80fd5b50610293610ad1565b348015610570575f80fd5b506102a561057f366004612270565b6001600160a01b03165f9081526022602052604090206002015490565b3480156105a7575f80fd5b506105d66105b6366004612270565b60226020525f908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161023c565b3480156105fc575f80fd5b506102a561060b3660046122cf565b6001600160a01b039182165f90815260066020908152604080832093909416825291909152205490565b348015610640575f80fd5b5061029361064f3660046122fb565b610adc565b34801561065f575f80fd5b5061029361066e366004612298565b610be1565b34801561067e575f80fd5b506102a5601c5481565b348015610693575f80fd5b506102936106a2366004612270565b610c56565b3480156106b2575f80fd5b506102a560245481565b5f6106c8338484610cd2565b5060015b92915050565b5f546001600160a01b031633146107045760405162461bcd60e51b81526004016106fb9061234b565b60405180910390fd5b602492909255602555602655565b5f61071e848484610df5565b61076f843361076a85604051806060016040528060288152602001612546602891396001600160a01b038a165f9081526006602090815260408083203384529091529020549190610fa0565b610cd2565b5060015b9392505050565b6001600160a01b0381165f90815260226020526040812054810361079f57505f919050565b6001600160a01b0382165f908152602260205260408120546107c090610fcb565b6001600160a01b0384165f908152602260205260409020600101549091508082116107ee57505f9392505050565b6107f88282610fe7565b949350505050565b5f546001600160a01b031633146108295760405162461bcd60e51b81526004016106fb9061234b565b600a805460ff60a01b1916600160a01b179055565b5f546001600160a01b031633146108675760405162461bcd60e51b81526004016106fb9061234b565b5f6127108461087560015490565b61087f919061237f565b6108899190612396565b90505f6127108461089960015490565b6108a3919061237f565b6108ad9190612396565b90505f612710846108bd60015490565b6108c7919061237f565b6108d19190612396565b60028490556003839055600481905590505f6109036103e86108fd60056108f760015490565b90610ff2565b90610ffd565b90508084101580156109155750808310155b80156109215750808210155b6109845760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b60648201526084016106fb565b50505050505050565b5f546001600160a01b031633146109b65760405162461bcd60e51b81526004016106fb9061234b565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b6001600160a01b03165f9081526005602052604090205490565b5f546001600160a01b03163314610a235760405162461bcd60e51b81526004016106fb9061234b565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303815f875af1158015610a6d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a9191906123b5565b505050565b5f610ac0610aa35f6109e0565b610aba610ab161dead6109e0565b60015490610fe7565b90610fe7565b905090565b5f6106c8338484610df5565b610ada33611008565b565b5f546001600160a01b03163314610b055760405162461bcd60e51b81526004016106fb9061234b565b600b889055600c879055600f869055600d859055600e849055601083905560118290556012819055601354610b3b906004610ffd565b60105411158015610b5b5750601354610b55906004610ffd565b60115411155b8015610b765750601354610b70906004610ffd565b60125411155b610bd75760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032352560a01b60648201526084016106fb565b5050505050505050565b5f546001600160a01b03163314610c0a5760405162461bcd60e51b81526004016106fb9061234b565b6001600160a01b0382165f908152600860205260409020805460ff19168215801591909117909155610c4457610c40825f61113a565b5050565b610c4082610c51846109e0565b61113a565b5f546001600160a01b03163314610c7f5760405162461bcd60e51b81526004016106fb9061234b565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b038316610d345760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106fb565b6001600160a01b038216610d955760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106fb565b6001600160a01b038381165f8181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b610e0083838361124a565b610e0a83836113e3565b610e15838383611472565b610e1f838361155b565b610e2a8383836115b0565b610e358383836116d9565b6001600160a01b0383165f90815260056020526040902054610e579082610fe7565b6001600160a01b0384165f90815260056020526040812091909155610e7c84846116fd565b610e865781610e91565b610e91848484611741565b6001600160a01b0384165f90815260056020526040902054909150610eb6908261182b565b6001600160a01b038085165f8181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f099085815260200190565b60405180910390a36001600160a01b0384165f9081526008602052604090205460ff16610f3d57610f3d84610c51866109e0565b6001600160a01b0383165f9081526008602052604090205460ff16610f6957610f6983610c51856109e0565b6001600160a01b0383165f9081526022602052604090205415610f8f57610f8f83611008565b610f9a602654611836565b50505050565b5f8184841115610fc35760405162461bcd60e51b81526004016106fb919061217c565b505050900390565b5f6106cc601e546108fd601d5485610ff290919063ffffffff16565b5f61077382846123d0565b5f610773828461237f565b5f6107738284612396565b6001600160a01b0381165f9081526022602052604081205490036110295750565b5f6110338261077a565b90508015610c4057601c54611048908261182b565b601c5560195460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303815f875af115801561109b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110bf91906123b5565b506001600160a01b0382165f90815260216020908152604080832042905560229091529020600201546110f2908261182b565b6001600160a01b0383165f90815260226020526040902060028101919091555461111b90610fcb565b6001600160a01b0383165f908152602260205260409020600101555050565b5f8111801561115e57506001600160a01b0382165f90815260226020526040902054155b156111c257601f80546001600160a01b0384165f8181526020805260408120839055600183018455929092527fa03837a25210ee280c2113ff4b77ca23440b19d4866cca721c801278fd08d8070180546001600160a01b03191690911790556111f4565b801580156111e657506001600160a01b0382165f9081526022602052604090205415155b156111f4576111f48261191c565b6001600160a01b0382165f90815260226020526040902054601a5461122491839161121e91610fe7565b9061182b565b601a556001600160a01b0382165f90815260226020526040902081905561111b81610fcb565b6001600160a01b0383166112ae5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106fb565b6001600160a01b0382166113105760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106fb565b5f81116113715760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016106fb565b61137a836109e0565b811115610a915760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016106fb565b6001600160a01b0382165f9081526007602052604090205460ff1615801561142357506001600160a01b0381165f9081526007602052604090205460ff16155b15610c4057600a54600160a01b900460ff16610c405760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b60448201526064016106fb565b6001600160a01b0383165f9081526007602052604090205460ff161580156114b257506001600160a01b0382165f9081526007602052604090205460ff16155b80156114cc5750600a546001600160a01b03838116911614155b80156114e357506001600160a01b03821661dead14155b15610a91576004546001600160a01b0383165f9081526005602052604090205461150d908361182b565b1115610a915760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016106fb565b600a546001600160a01b03828116911614801561159057506001600160a01b0382165f9081526007602052604090205460ff16155b15610c4057600160155f8282546115a791906123e3565b90915550505050565b600a546001600160a01b0384811691161461164f57600354811115806115ed57506001600160a01b0383165f9081526007602052604090205460ff165b8061160f57506001600160a01b0382165f9081526007602052604090205460ff165b61164f5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016106fb565b6002548111158061167757506001600160a01b0383165f9081526007602052604090205460ff165b8061169957506001600160a01b0382165f9081526007602052604090205460ff165b610a915760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016106fb565b6116e4838383611a27565b15610a91576116f4601754611ad5565b5f601555505050565b6001600160a01b0382165f9081526007602052604081205460ff161580156107735750506001600160a01b03165f9081526007602052604090205460ff1615919050565b5f8061174d8585611c85565b1115611824575f61176f6117618686611c85565b6013546108f7908690610ffd565b305f9081526005602052604090205490915061178b908261182b565b305f81815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906117db9085815260200190565b60405180910390a3600f5415611812576118123061dead61180d600f546108f760135489610ffd90919063ffffffff16565b610df5565b61181c8382610fe7565b915050610773565b5092915050565b5f61077382846123e3565b601f545f819003611845575050565b5f805a90505f5b848310801561185a57508381105b1561191557836023541061186d575f6023555b61189e601f60235481548110611885576118856123f6565b5f918252602090912001546001600160a01b0316611ccf565b156118d4576118d4601f602354815481106118bb576118bb6123f6565b5f918252602090912001546001600160a01b0316611008565b6118e96118e25a8490610fe7565b849061182b565b92505a602380549193505f6118fd8361240a565b9190505550808061190d9061240a565b91505061184c565b5050505050565b601f805461192c906001906123d0565b8154811061193c5761193c6123f6565b5f9182526020808320909101546001600160a01b038481168452918052604090922054601f80549290931692918110611977576119776123f6565b5f91825260208083209190910180546001600160a01b0319166001600160a01b0394851617905591831681528180526040812054601f8054919392916119bf906001906123d0565b815481106119cf576119cf6123f6565b5f9182526020808320909101546001600160a01b03168352820192909252604001902055601f805480611a0457611a04612422565b5f8281526020902081015f1990810180546001600160a01b031916905501905550565b5f8060185483101590505f601754611a3e306109e0565b601654911115915060ff16158015611a58575060145460ff165b8015611a6d5750600a54600160a01b900460ff165b8015611a765750815b8015611a9a57506001600160a01b0386165f9081526007602052604090205460ff16155b8015611ab35750600a546001600160a01b038681169116145b8015611ac25750600260155410155b8015611acb5750805b9695505050505050565b600160165f6101000a81548160ff0219169083151502179055505f611b1d60026108f7600d5461121e600e5461121e600c5461121e6001600b5461182b90919063ffffffff16565b90505f611b39826108fd600b5486610ff290919063ffffffff16565b90505f611b468483610fe7565b905047611b5282611d13565b5f611b5d4783610fe7565b90505f611b7f611b78600b5488610fe790919063ffffffff16565b8390610ffd565b90505f611b97600b5483610ff290919063ffffffff16565b90508015611ba957611ba98682611e63565b600c545f90611bbd906108f7856002610ff2565b90508015611c055760405173816aa757acd556c3b72ce7fea49ffca45fc92e0d9082156108fc029083905f818181858888f19350505050158015611c03573d5f803e3d5ffd5b505b600d545f90611c19906108f7866002610ff2565b90508015611c2a57611c2a81611f1d565b4715611c6f5760405173816aa757acd556c3b72ce7fea49ffca45fc92e0d904780156108fc02915f818181858888f19350505050158015611c6d573d5f803e3d5ffd5b505b50506016805460ff191690555050505050505050565b600a545f906001600160a01b0390811690831603611ca657506011546106cc565b600a546001600160a01b0390811690841603611cc557506010546106cc565b5060125492915050565b6024546001600160a01b0382165f9081526021602052604081205490914291611cf891906123e3565b1080156106cc5750602554611d0c8361077a565b1192915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611d4657611d466123f6565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611d9d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dc19190612436565b81600181518110611dd457611dd46123f6565b6001600160a01b039283166020918202929092010152600954611dfa9130911684610cd2565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac94790611e329085905f90869030904290600401612494565b5f604051808303815f87803b158015611e49575f80fd5b505af1158015611e5b573d5f803e3d5ffd5b505050505050565b600954611e7b9030906001600160a01b031684610cd2565b60095460405163f305d71960e01b8152306004820152602481018490525f60448201819052606482015273816aa757acd556c3b72ce7fea49ffca45fc92e0d60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015611ef8573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061191591906124cf565b6019546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015611f63573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f8791906124fa565b6040805160028082526060820183529293505f9290916020830190803683375050600954604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015611ff3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120179190612436565b815f81518110612029576120296123f6565b6001600160a01b03928316602091820292909201015260195482519116908290600190811061205a5761205a6123f6565b6001600160a01b03928316602091820292909201015260095460405163b6f9de9560e01b815291169063b6f9de9590859061209f905f90869030904290600401612511565b5f604051808303818588803b1580156120b6575f80fd5b505af11580156120c8573d5f803e3d5ffd5b50506019546040516370a0823160e01b81523060048201525f945061213f93508692506001600160a01b03909116906370a0823190602401602060405180830381865afa15801561211b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aba91906124fa565b601b5490915061214f908261182b565b601b55601a54601e546121739161216a916108fd9085610ff2565b601d549061182b565b601d5550505050565b5f602080835283518060208501525f5b818110156121a85785810183015185820160400152820161218c565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146121dc575f80fd5b50565b5f80604083850312156121f0575f80fd5b82356121fb816121c8565b946020939093013593505050565b5f805f6060848603121561221b575f80fd5b505081359360208301359350604090920135919050565b5f805f60608486031215612244575f80fd5b833561224f816121c8565b9250602084013561225f816121c8565b929592945050506040919091013590565b5f60208284031215612280575f80fd5b8135610773816121c8565b80151581146121dc575f80fd5b5f80604083850312156122a9575f80fd5b82356122b4816121c8565b915060208301356122c48161228b565b809150509250929050565b5f80604083850312156122e0575f80fd5b82356122eb816121c8565b915060208301356122c4816121c8565b5f805f805f805f80610100898b031215612313575f80fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176106cc576106cc61236b565b5f826123b057634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156123c5575f80fd5b81516107738161228b565b818103818111156106cc576106cc61236b565b808201808211156106cc576106cc61236b565b634e487b7160e01b5f52603260045260245ffd5b5f6001820161241b5761241b61236b565b5060010190565b634e487b7160e01b5f52603160045260245ffd5b5f60208284031215612446575f80fd5b8151610773816121c8565b5f815180845260208085019450602084015f5b838110156124895781516001600160a01b031687529582019590820190600101612464565b509495945050505050565b85815284602082015260a060408201525f6124b260a0830186612451565b6001600160a01b0394909416606083015250608001529392505050565b5f805f606084860312156124e1575f80fd5b8351925060208401519150604084015190509250925092565b5f6020828403121561250a575f80fd5b5051919050565b848152608060208201525f6125296080830186612451565b6001600160a01b0394909416604083015250606001529291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202d217fa1a9dabf6c4d43aa398464fc607f8759c8c1815d4b55c4ef389ac29d1c64736f6c63430008170033

Deployed Bytecode Sourcemap

5141:17495:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8713:67;;;;;;;;;;-1:-1:-1;8773:5:0;;;;;;;;;;;;-1:-1:-1;;;8773:5:0;;;;8713:67;;;;;;;:::i;:::-;;;;;;;;9818:133;;;;;;;;;;-1:-1:-1;9818:133:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;9818:133:0;1023:187:1;22381:252:0;;;;;;;;;;-1:-1:-1;22381:252:0;;;;;:::i;:::-;;:::i;:::-;;9093:84;;;;;;;;;;-1:-1:-1;9163:12:0;;9093:84;;;1682:25:1;;;1670:2;1655:18;9093:84:0;1536:177:1;6666:66:0;;;;;;;;;;-1:-1:-1;6666:66:0;;;;-1:-1:-1;;;;;6666:66:0;;;;;;-1:-1:-1;;;;;1882:32:1;;;1864:51;;1852:2;1837:18;6666:66:0;1718:203:1;17311:309:0;;;;;;;;;;-1:-1:-1;17311:309:0;;;;;:::i;:::-;;:::i;21251:473::-;;;;;;;;;;-1:-1:-1;21251:473:0;;;;;:::i;:::-;;:::i;8936:67::-;;;;;;;;;;;;;:::i;3521:87::-;;;;;;;;;;-1:-1:-1;3521:87:0;;;;;:::i;:::-;3576:4;3601:5;-1:-1:-1;;;;;3590:16:0;;;3601:5;;3590:16;;3521:87;8863:67;;;;;;;;;;-1:-1:-1;8863:67:0;;5363:2;2781:36:1;;2769:2;2754:18;8863:67:0;2639:184:1;12137:578:0;;;;;;;;;;-1:-1:-1;12137:578:0;;;;;:::i;:::-;;:::i;6746:26::-;;;;;;;;;;;;;;;;5773:44;;;;;;;;;;-1:-1:-1;5773:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5824:49;;;;;;;;;;-1:-1:-1;5824:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9704:108;;;;;;;;;;-1:-1:-1;9704:108:0;;;;;:::i;:::-;;:::i;7306:46::-;;;;;;;;;;;;;;;;7359:38;;;;;;;;;;;;;;;;9183:103;;;;;;;;;;-1:-1:-1;9183:103:0;;;;;:::i;:::-;;:::i;9009:78::-;;;;;;;;;;-1:-1:-1;9061:7:0;9079:5;-1:-1:-1;;;;;9079:5:0;9009:78;;20067:140;;;;;;;;;;-1:-1:-1;20067:140:0;;;;;:::i;:::-;;:::i;9957:138::-;;;;;;;;;;;;;:::i;8786:71::-;;;;;;;;;;-1:-1:-1;8848:7:0;;;;;;;;;;;;-1:-1:-1;;;8848:7:0;;;;8786:71;;6779:29;;;;;;;;;;;;;;;;5901:19;;;;;;;;;;-1:-1:-1;5901:19:0;;;;-1:-1:-1;;;;;5901:19:0;;;9292:139;;;;;;;;;;-1:-1:-1;9292:139:0;;;;;:::i;:::-;;:::i;7404:68::-;;;;;;;;;;;;;:::i;20458:190::-;;;;;;;;;;-1:-1:-1;20458:190:0;;;;;:::i;:::-;-1:-1:-1;;;;;20606:19:0;20531:7;20606:19;;;:6;:19;;;;;:33;;;;20458:190;7179:40;;;;;;;;;;-1:-1:-1;7179:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3540:25:1;;;3596:2;3581:18;;3574:34;;;;3624:18;;;3617:34;3528:2;3513:18;7179:40:0;3338:319:1;9437:127:0;;;;;;;;;;-1:-1:-1;9437:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;9535:18:0;;;9518:7;9535:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;9437:127;11515:614;;;;;;;;;;-1:-1:-1;11515:614:0;;;;;:::i;:::-;;:::i;17971:224::-;;;;;;;;;;-1:-1:-1;17971:224:0;;;;;:::i;:::-;;:::i;6815:31::-;;;;;;;;;;;;;;;;3614:111;;;;;;;;;;-1:-1:-1;3614:111:0;;;;;:::i;:::-;;:::i;7262:37::-;;;;;;;;;;;;;;;;9818:133;9893:4;9900:37;9909:10;9921:7;9930:6;9900:8;:37::i;:::-;-1:-1:-1;9945:4:0;9818:133;;;;;:::o;22381:252::-;3576:4;3601:5;-1:-1:-1;;;;;3601:5:0;3488:10;3590:16;3472:38;;;;-1:-1:-1;;;3472:38:0;;;;;;;:::i;:::-;;;;;;;;;22515:9:::1;:22:::0;;;;22548:15:::1;:34:::0;22593:14:::1;:32:::0;22381:252::o;17311:309::-;17409:4;17426:36;17436:6;17444:9;17455:6;17426:9;:36::i;:::-;17473:117;17482:6;17490:10;17502:87;17538:6;17502:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17502:19:0;;;;;;:11;:19;;;;;;;;17522:10;17502:31;;;;;;;;;:87;:35;:87::i;:::-;17473:8;:117::i;:::-;-1:-1:-1;17608:4:0;17311:309;;;;;;:::o;21251:473::-;-1:-1:-1;;;;;21343:19:0;;21320:7;21343:19;;;:6;:19;;;;;:26;:31;;21340:48;;-1:-1:-1;21384:1:0;;21251:473;-1:-1:-1;21251:473:0:o;21340:48::-;-1:-1:-1;;;;;21457:19:0;;21398:33;21457:19;;;:6;:19;;;;;:26;21434:50;;:22;:50::i;:::-;-1:-1:-1;;;;;21530:19:0;;21495:32;21530:19;;;:6;:19;;;;;:33;;;21398:86;;-1:-1:-1;21577:53:0;;;21574:70;;-1:-1:-1;21640:1:0;;21251:473;-1:-1:-1;;;21251:473:0:o;21574:70::-;21661:55;:25;21691:24;21661:29;:55::i;:::-;21654:62;21251:473;-1:-1:-1;;;;21251:473:0:o;8936:67::-;3576:4;3601:5;-1:-1:-1;;;;;3601:5:0;3488:10;3590:16;3472:38;;;;-1:-1:-1;;;3472:38:0;;;;;;;:::i;:::-;8980:14:::1;:21:::0;;-1:-1:-1;;;;8980:21:0::1;-1:-1:-1::0;;;8980:21:0::1;::::0;;8936:67::o;12137:578::-;3576:4;3601:5;-1:-1:-1;;;;;3601:5:0;3488:10;3590:16;3472:38;;;;-1:-1:-1;;;3472:38:0;;;;;;;:::i;:::-;12237:13:::1;12278:5;12270:4;12254:13;9163:12:::0;;;9093:84;12254:13:::1;:20;;;;:::i;:::-;12253:30;;;;:::i;:::-;12237:46;;12294:19;12343:5;12333:6;12317:13;9163:12:::0;;;9093:84;12317:13:::1;:22;;;;:::i;:::-;12316:32;;;;:::i;:::-;12294:54;;12359:17;12407:5;12396:7;12380:13;9163:12:::0;;;9093:84;12380:13:::1;:23;;;;:::i;:::-;12379:33;;;;:::i;:::-;12423:12;:20:::0;;;12454:14:::1;:28:::0;;;12493:15:::1;:27:::0;;;12359:53;-1:-1:-1;;12547:30:0::1;12572:4;12547:20;12565:1;12547:13;9163:12:::0;;;9093:84;12547:13:::1;:17:::0;::::1;:20::i;:::-;:24:::0;::::1;:30::i;:::-;12531:46;;12605:5;12596;:14;;:38;;;;;12629:5;12614:11;:20;;12596:38;:60;;;;;12651:5;12638:9;:18;;12596:60;12588:119;;;::::0;-1:-1:-1;;;12588:119:0;;6044:2:1;12588:119:0::1;::::0;::::1;6026:21:1::0;6083:2;6063:18;;;6056:30;6122:34;6102:18;;;6095:62;-1:-1:-1;;;6173:18:1;;;6166:44;6227:19;;12588:119:0::1;5842:410:1::0;12588:119:0::1;12226:489;;;;12137:578:::0;;;:::o;9704:108::-;3576:4;3601:5;-1:-1:-1;;;;;3601:5:0;3488:10;3590:16;3472:38;;;;-1:-1:-1;;;3472:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9778:21:0;;;::::1;;::::0;;;:11:::1;:21;::::0;;;;:32;;-1:-1:-1;;9778:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;9704:108::o;9183:103::-;-1:-1:-1;;;;;9266:18:0;9249:7;9266:18;;;:9;:18;;;;;;;9183:103::o;20067:140::-;3576:4;3601:5;-1:-1:-1;;;;;3601:5:0;3488:10;3590:16;3472:38;;;;-1:-1:-1;;;3472:38:0;;;;;;;:::i;:::-;20153:46:::1;::::0;-1:-1:-1;;;20153:46:0;;20179:10:::1;20153:46;::::0;::::1;6431:51:1::0;6498:18;;;6491:34;;;-1:-1:-1;;;;;20153:25:0;::::1;::::0;::::1;::::0;6404:18:1;;20153:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20067:140:::0;;:::o;9957:138::-;10016:7;10033:60;10071:21;10089:1;10071:9;:21::i;:::-;10033:33;10050:15;7513:42;10050:9;:15::i;:::-;10033:12;;;:16;:33::i;:::-;:37;;:60::i;:::-;10026:67;;9957:138;:::o;9292:139::-;9370:4;9377:40;9387:10;9399:9;9410:6;9377:9;:40::i;7404:68::-;7440:30;7459:10;7440:18;:30::i;:::-;7404:68::o;11515:614::-;3576:4;3601:5;-1:-1:-1;;;;;3601:5:0;3488:10;3590:16;3472:38;;;;-1:-1:-1;;;3472:38:0;;;;;;;:::i;:::-;11709:12:::1;:25:::0;;;11745:12:::1;:25:::0;;;11781:7:::1;:15:::0;;;11807:10:::1;:21:::0;;;11839:14:::1;:29:::0;;;11879:8:::1;:17:::0;;;11907:7:::1;:15:::0;;;11933:11:::1;:20:::0;;;11984:11:::1;::::0;:18:::1;::::0;12000:1:::1;11984:15;:18::i;:::-;11972:8;;:30;;:63;;;;-1:-1:-1::0;12017:11:0::1;::::0;:18:::1;::::0;12033:1:::1;12017:15;:18::i;:::-;12006:7;;:29;;11972:63;:100;;;;-1:-1:-1::0;12054:11:0::1;::::0;:18:::1;::::0;12070:1:::1;12054:15;:18::i;:::-;12039:11;;:33;;11972:100;11964:157;;;::::0;-1:-1:-1;;;11964:157:0;;6988:2:1;11964:157:0::1;::::0;::::1;6970:21:1::0;7027:2;7007:18;;;7000:30;7066:34;7046:18;;;7039:62;-1:-1:-1;;;7117:18:1;;;7110:42;7169:19;;11964:157:0::1;6786:408:1::0;11964:157:0::1;11515:614:::0;;;;;;;;:::o;17971:224::-;3576:4;3601:5;-1:-1:-1;;;;;3601:5:0;3488:10;3590:16;3472:38;;;;-1:-1:-1;;;3472:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18059:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;18059:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;18103:85:::1;;18114:19;18123:6;18131:1;18114:8;:19::i;:::-;17971:224:::0;;:::o;18103:85::-:1;18150:35;18159:6;18167:17;18177:6;18167:9;:17::i;:::-;18150:8;:35::i;3614:111::-:0;3576:4;3601:5;-1:-1:-1;;;;;3601:5:0;3488:10;3590:16;3472:38;;;;-1:-1:-1;;;3472:38:0;;;;;;;:::i;:::-;3680:5:::1;:11:::0;;-1:-1:-1;;;;;;3680:11:0::1;-1:-1:-1::0;;;;;3680:11:0;::::1;::::0;;::::1;::::0;;;3698:25:::1;::::0;1864:51:1;;;3698:25:0::1;::::0;1852:2:1;1837:18;3698:25:0::1;;;;;;;3614:111:::0;:::o;17628:335::-;-1:-1:-1;;;;;17721:19:0;;17713:68;;;;-1:-1:-1;;;17713:68:0;;7617:2:1;17713:68:0;;;7599:21:1;7656:2;7636:18;;;7629:30;7695:34;7675:18;;;7668:62;-1:-1:-1;;;7746:18:1;;;7739:34;7790:19;;17713:68:0;7415:400:1;17713:68:0;-1:-1:-1;;;;;17800:21:0;;17792:68;;;;-1:-1:-1;;;17792:68:0;;8022:2:1;17792:68:0;;;8004:21:1;8061:2;8041:18;;;8034:30;8100:34;8080:18;;;8073:62;-1:-1:-1;;;8151:18:1;;;8144:32;8193:19;;17792:68:0;7820:398:1;17792:68:0;-1:-1:-1;;;;;17871:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;17923:32;;1682:25:1;;;17923:32:0;;1655:18:1;17923:32:0;;;;;;;17628:335;;;:::o;10550:957::-;10639:37;10650:6;10658:9;10669:6;10639:10;:37::i;:::-;10687:38;10707:6;10715:9;10687:19;:38::i;:::-;10736:41;10751:6;10759:9;10770:6;10736:14;:41::i;:::-;10789:35;10806:6;10814:9;10789:16;:35::i;:::-;10835:39;10848:6;10856:9;10867:6;10835:12;:39::i;:::-;10886:35;10895:6;10903:9;10914:6;10886:8;:35::i;:::-;-1:-1:-1;;;;;10952:17:0;;;;;;:9;:17;;;;;;:29;;10974:6;10952:21;:29::i;:::-;-1:-1:-1;;;;;10932:17:0;;;;;;:9;:17;;;;;:49;;;;11017:32;10942:6;11039:9;11017:13;:32::i;:::-;:78;;11089:6;11017:78;;;11052:34;11060:6;11068:9;11079:6;11052:7;:34::i;:::-;-1:-1:-1;;;;;11129:20:0;;;;;;:9;:20;;;;;;10992:103;;-1:-1:-1;11129:40:0;;10992:103;11129:24;:40::i;:::-;-1:-1:-1;;;;;11106:20:0;;;;;;;:9;:20;;;;;;;:63;;;;11185:43;;;;;;;;;;11213:14;1682:25:1;;1670:2;1655:18;;1536:177;11185:43:0;;;;;;;;-1:-1:-1;;;;;11243:24:0;;;;;;:16;:24;;;;;;;;11239:67;;11269:35;11278:6;11286:17;11296:6;11286:9;:17::i;11269:35::-;-1:-1:-1;;;;;11320:27:0;;;;;;:16;:27;;;;;;;;11316:76;;11349:41;11358:9;11369:20;11379:9;11369;:20::i;11349:41::-;-1:-1:-1;;;;;11405:17:0;;11432:1;11405:17;;;:6;:17;;;;;:24;:28;11402:64;;11435:29;11454:9;11435:18;:29::i;:::-;11476:23;11484:14;;11476:7;:23::i;:::-;10628:879;10550:957;;;:::o;1853:162::-;1939:7;1985:12;1977:6;;;;1969:29;;;;-1:-1:-1;;;1969:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2007:5:0;;;1853:162::o;21732:170::-;21802:7;21829:65;21862:31;;21829:28;21839:17;;21829:5;:9;;:28;;;;:::i;640:82::-;698:7;715:5;719:1;715;:5;:::i;728:82::-;786:7;803:5;807:1;803;:5;:::i;816:82::-;874:7;891:5;895:1;891;:5;:::i;20656:587::-;-1:-1:-1;;;;;20728:19:0;;;;;;:6;:19;;;;;:26;:31;;20725:46;;20656:587;:::o;20725:46::-;20781:14;20798:30;20816:11;20798:17;:30::i;:::-;20781:47;-1:-1:-1;20842:10:0;;20839:397;;20887:16;;:28;;20908:6;20887:20;:28::i;:::-;20868:16;:47;20937:6;;20930:44;;-1:-1:-1;;;20930:44:0;;-1:-1:-1;;;;;6449:32:1;;;20930:44:0;;;6431:51:1;6498:18;;;6491:34;;;20937:6:0;;;;20930:23;;6404:18:1;;20930:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;20989:30:0;;;;;;:17;:30;;;;;;;;21022:15;20989:48;;21088:6;:19;;;;;:33;;;:45;;21126:6;21088:37;:45::i;:::-;-1:-1:-1;;;;;21052:19:0;;;;;;:6;:19;;;;;:33;;;:81;;;;21207:26;21184:50;;:22;:50::i;:::-;-1:-1:-1;;;;;21148:19:0;;;;;;:6;:19;;;;;:33;;:86;20714:529;20656:587;:::o;18203:482::-;18290:1;18281:6;:10;:45;;;;-1:-1:-1;;;;;;18295:19:0;;;;;;:6;:19;;;;;:26;:31;18281:45;18278:177;;;22009:12;:19;;-1:-1:-1;;;;;21975:31:0;;;;;;:18;:31;;;;;:53;;;22039:30;;;;;;;;;;;;;-1:-1:-1;;;;;;22039:30:0;;;;;;18278:177;;;18375:11;;:45;;;;-1:-1:-1;;;;;;18390:19:0;;18419:1;18390:19;;;:6;:19;;;;;:26;:30;;18375:45;18372:83;;;18422:30;18440:11;18422:17;:30::i;:::-;-1:-1:-1;;;;;18495:19:0;;;;;;:6;:19;;;;;:26;18479:11;;:55;;18527:6;;18479:43;;:15;:43::i;:::-;:47;;:55::i;:::-;18465:11;:69;-1:-1:-1;;;;;18545:19:0;;;;;;:6;:19;;;;;:35;;;18627:50;18574:6;18627:22;:50::i;10103:439::-;-1:-1:-1;;;;;10207:20:0;;10199:70;;;;-1:-1:-1;;;10199:70:0;;8558:2:1;10199:70:0;;;8540:21:1;8597:2;8577:18;;;8570:30;8636:34;8616:18;;;8609:62;-1:-1:-1;;;8687:18:1;;;8680:35;8732:19;;10199:70:0;8356:401:1;10199:70:0;-1:-1:-1;;;;;10288:23:0;;10280:71;;;;-1:-1:-1;;;10280:71:0;;8964:2:1;10280:71:0;;;8946:21:1;9003:2;8983:18;;;8976:30;9042:34;9022:18;;;9015:62;-1:-1:-1;;;9093:18:1;;;9086:33;9136:19;;10280:71:0;8762:399:1;10280:71:0;10387:1;10370:6;:19;10362:73;;;;-1:-1:-1;;;10362:73:0;;9368:2:1;10362:73:0;;;9350:21:1;9407:2;9387:18;;;9380:30;9446:34;9426:18;;;9419:62;-1:-1:-1;;;9497:18:1;;;9490:39;9546:19;;10362:73:0;9166:405:1;10362:73:0;10464:17;10474:6;10464:9;:17::i;:::-;10454:6;:27;;10446:88;;;;-1:-1:-1;;;10446:88:0;;9778:2:1;10446:88:0;;;9760:21:1;9817:2;9797:18;;;9790:30;9856:34;9836:18;;;9829:62;-1:-1:-1;;;9907:18:1;;;9900:47;9964:19;;10446:88:0;9576:413:1;12723:191:0;-1:-1:-1;;;;;12816:19:0;;;;;;:11;:19;;;;;;;;12815:20;:47;;;;-1:-1:-1;;;;;;12840:22:0;;;;;;:11;:22;;;;;;;;12839:23;12815:47;12812:95;;;12872:14;;-1:-1:-1;;;12872:14:0;;;;12864:41;;;;-1:-1:-1;;;12864:41:0;;10196:2:1;12864:41:0;;;10178:21:1;10235:2;10215:18;;;10208:30;-1:-1:-1;;;10254:18:1;;;10247:44;10308:18;;12864:41:0;9994:338:1;12926:331:0;-1:-1:-1;;;;;13030:19:0;;;;;;:11;:19;;;;;;;;13029:20;:47;;;;-1:-1:-1;;;;;;13054:22:0;;;;;;:11;:22;;;;;;;;13053:23;13029:47;:77;;;;-1:-1:-1;13101:4:0;;-1:-1:-1;;;;;13080:26:0;;;13101:4;;13080:26;;13029:77;:107;;;;-1:-1:-1;;;;;;13110:26:0;;7513:42;13110:26;;13029:107;13026:224;;;13198:15;;-1:-1:-1;;;;;13161:20:0;;;;;;:9;:20;;;;;;:32;;13186:6;13161:24;:32::i;:::-;13160:53;;13152:96;;;;-1:-1:-1;;;13152:96:0;;10539:2:1;13152:96:0;;;10521:21:1;10578:2;10558:18;;;10551:30;10617:32;10597:18;;;10590:60;10667:18;;13152:96:0;10337:354:1;13265:159:0;13362:4;;-1:-1:-1;;;;;13349:17:0;;;13362:4;;13349:17;:41;;;;-1:-1:-1;;;;;;13371:19:0;;;;;;:11;:19;;;;;;;;13370:20;13349:41;13346:71;;;13413:1;13392:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;13265:159:0;;:::o;13432:341::-;13543:4;;-1:-1:-1;;;;;13533:14:0;;;13543:4;;13533:14;13530:124;;13567:14;;13557:6;:24;;:47;;;-1:-1:-1;;;;;;13585:19:0;;;;;;:11;:19;;;;;;;;13557:47;:73;;;-1:-1:-1;;;;;;13608:22:0;;;;;;:11;:22;;;;;;;;13557:73;13549:103;;;;-1:-1:-1;;;13549:103:0;;11028:2:1;13549:103:0;;;11010:21:1;11067:2;11047:18;;;11040:30;-1:-1:-1;;;11086:18:1;;;11079:47;11143:18;;13549:103:0;10826:341:1;13549:103:0;13682:12;;13672:6;:22;;:45;;;-1:-1:-1;;;;;;13698:19:0;;;;;;:11;:19;;;;;;;;13672:45;:71;;;-1:-1:-1;;;;;;13721:22:0;;;;;;:11;:22;;;;;;;;13672:71;13664:101;;;;-1:-1:-1;;;13664:101:0;;11028:2:1;13664:101:0;;;11010:21:1;11067:2;11047:18;;;11040:30;-1:-1:-1;;;11086:18:1;;;11079:47;11143:18;;13664:101:0;10826:341:1;16157:197:0;16249:41;16264:6;16272:9;16283:6;16249:14;:41::i;:::-;16246:101;;;16292:29;16307:13;;16292:14;:29::i;:::-;16343:1;16323:9;:22;16157:197;;;:::o;16362:160::-;-1:-1:-1;;;;;16468:19:0;;16443:4;16468:19;;;:11;:19;;;;;;;;16467:20;:47;;;;-1:-1:-1;;;;;;;16492:22:0;;;;;:11;:22;;;;;;;;16491:23;;16362:160;-1:-1:-1;16362:160:0:o;16757:546::-;16843:7;16899:1;16866:30;16878:6;16886:9;16866:11;:30::i;:::-;:34;16863:418;;;16912:17;16932:59;16960:30;16972:6;16980:9;16960:11;:30::i;:::-;16943:11;;16932:23;;:6;;:10;:23::i;:59::-;17047:4;17029:24;;;;:9;:24;;;;;;16912:79;;-1:-1:-1;17029:39:0;;16912:79;17029:28;:39::i;:::-;17020:4;17002:24;;;;:9;:24;;;;;;;:66;;;;17084:42;;-1:-1:-1;;;;;17084:42:0;;;;;;;17116:9;1682:25:1;;1670:2;1655:18;;1536:177;17084:42:0;;;;;;;;17140:7;;:20;17137:104;;17162:77;17180:4;7513:42;17202:36;17230:7;;17202:23;17213:11;;17202:6;:10;;:23;;;;:::i;:36::-;17162:9;:77::i;:::-;17258:21;:6;17269:9;17258:10;:21::i;:::-;17251:28;;;;;16863:418;-1:-1:-1;17289:6:0;16757:546;-1:-1:-1;;16757:546:0:o;552:82::-;610:7;627:5;631:1;627;:5;:::i;19383:676::-;19460:12;:19;19433:24;19493:21;;;19490:37;;19518:7;19383:676;:::o;19490:37::-;19537:15;19567;19585:9;19567:27;;19605:18;19638:414;19654:3;19644:7;:13;:46;;;;;19674:16;19661:10;:29;19644:46;19638:414;;;19726:16;19710:12;;:32;19707:55;;19759:1;19744:12;:16;19707:55;19779:44;19796:12;19809;;19796:26;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;19796:26:0;19779:16;:44::i;:::-;19776:115;;;19843:46;19862:12;19875;;19862:26;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;19862:26:0;19843:18;:46::i;:::-;19915:35;19927:22;19939:9;19927:7;;:11;:22::i;:::-;19915:7;;:11;:35::i;:::-;19905:45;;19975:9;19999:12;:14;;19965:19;;-1:-1:-1;19999:12:0;:14;;;:::i;:::-;;;;;;20028:12;;;;;:::i;:::-;;;;19638:414;;;19422:637;;;;19383:676;:::o;22085:288::-;22201:12;22214:19;;:21;;22234:1;;22214:21;:::i;:::-;22201:35;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;22166:31:0;;;;;;;;;;;;;22153:12;:45;;22201:35;;;;;22153:12;:45;;;;;;:::i;:::-;;;;;;;;;;;;;:83;;-1:-1:-1;;;;;;22153:83:0;-1:-1:-1;;;;;22153:83:0;;;;;;22305:31;;;;;;;;;;;;22266:12;22279:19;;22305:31;;22153:45;;22279:21;;-1:-1:-1;;22279:21:0;:::i;:::-;22266:35;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;22266:35:0;22247:55;;;;;;;;;;;;:89;22347:12;:18;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;22347:18:0;;;;;-1:-1:-1;;;;;;22347:18:0;;;;;;-1:-1:-1;22085:288:0:o;15749:400::-;15847:4;15864:13;15890:15;;15880:6;:25;;15864:41;;15916:19;15966:13;;15938:24;15956:4;15938:9;:24::i;:::-;15998:8;;15938:41;-1:-1:-1;15938:41:0;;-1:-1:-1;15998:8:0;;15997:9;:24;;;;-1:-1:-1;16010:11:0;;;;15997:24;:42;;;;-1:-1:-1;16025:14:0;;-1:-1:-1;;;16025:14:0;;;;15997:42;:54;;;;;16043:8;15997:54;:78;;;;-1:-1:-1;;;;;;16056:19:0;;;;;;:11;:19;;;;;;;;16055:20;15997:78;:99;;;;-1:-1:-1;16092:4:0;;-1:-1:-1;;;;;16079:17:0;;;16092:4;;16079:17;15997:99;:126;;;;;16121:1;16100:9;;:23;;15997:126;:144;;;;;16127:14;15997:144;15990:151;15749:400;-1:-1:-1;;;;;;15749:400:0:o;13781:1167::-;6593:4;6582:8;;:15;;;;;;;;;;;;;;;;;;13852:20:::1;13875:82;13955:1;13876:73;13938:10;;13876:57;13918:14;;13876:37;13900:12;;13876:19;13893:1;13876:12;;:16;;:19;;;;:::i;13875:82::-;13852:105;;13968:32;14003:42;14032:12;14003:24;14014:12;;14003:6;:10;;:24;;;;:::i;:42::-;13968:77:::0;-1:-1:-1;14056:14:0::1;14073:36;:6:::0;13968:77;14073:10:::1;:36::i;:::-;14056:53:::0;-1:-1:-1;14145:21:0::1;14177:24;14056:53:::0;14177:16:::1;:24::i;:::-;14212:20;14235:41;:21;14261:14:::0;14235:25:::1;:41::i;:::-;14212:64;;14287:19;14308:48;14325:30;14342:12;;14325;:16;;:30;;;;:::i;:::-;14308:12:::0;;:16:::1;:48::i;:::-;14287:69;;14367:29;14399;14415:12;;14399:11;:15;;:29;;;;:::i;:::-;14367:61:::0;-1:-1:-1;14442:34:0;;14439:103:::1;;14478:61;14491:24;14517:21;14478:12;:61::i;:::-;14601:12;::::0;14552:23:::1;::::0;14578:36:::1;::::0;:18:::1;:11:::0;14594:1:::1;14578:15;:18::i;:36::-;14552:62:::0;-1:-1:-1;14628:19:0;;14625:79:::1;;14649:53;::::0;7707:42:::1;::::0;14649:53;::::1;;;::::0;14686:15;;14649:53:::1;::::0;;;14686:15;7707:42;14649:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;14625:79;14761:10;::::0;14714:21:::1;::::0;14738:34:::1;::::0;:18:::1;:11:::0;14754:1:::1;14738:15;:18::i;:34::-;14714:58:::0;-1:-1:-1;14786:17:0;;14783:46:::1;;14805:22;14813:13;14805:7;:22::i;:::-;14842:21;:34:::0;14839:102:::1;;14878:61;::::0;7611:42:::1;::::0;14917:21:::1;14878:61:::0;::::1;;;::::0;::::1;::::0;;;14917:21;7611:42;14878:61;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;14839:102;-1:-1:-1::0;;6602:8:0;:16;;-1:-1:-1;;6602:16:0;;;-1:-1:-1;;;;;;;;13781:1167:0:o;16530:219::-;16645:4;;16609:7;;-1:-1:-1;;;;;16645:4:0;;;16632:17;;;;16629:38;;-1:-1:-1;16658:7:0;;16651:14;;16629:38;16690:4;;-1:-1:-1;;;;;16690:4:0;;;16680:14;;;;16677:36;;-1:-1:-1;16703:8:0;;16696:15;;16677:36;-1:-1:-1;16730:11:0;;16530:219;;;;:::o;20219:231::-;20346:9;;-1:-1:-1;;;;;20313:30:0;;20289:4;20313:30;;;:17;:30;;;;;;20289:4;;20358:15;;20313:42;;20346:9;20313:42;:::i;:::-;:60;:129;;;;;20427:15;;20394:30;20412:11;20394:17;:30::i;:::-;:48;20306:136;20219:231;-1:-1:-1;;20219:231:0:o;15307:434::-;15397:16;;;15411:1;15397:16;;;;;;;;15373:21;;15397:16;;;;;;;;;;-1:-1:-1;15397:16:0;15373:40;;15442:4;15424;15429:1;15424:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15424:23:0;;;:7;;;;;;;;;;:23;;;;15468:6;;:13;;;-1:-1:-1;;;15468:13:0;;;;:6;;;;;:11;;:13;;;;;15424:7;;15468:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15458:4;15463:1;15458:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15458:23:0;;;:7;;;;;;;;;:23;15524:6;;15492:53;;15509:4;;15524:6;15533:11;15492:8;:53::i;:::-;15556:6;;:177;;-1:-1:-1;;;15556:177:0;;-1:-1:-1;;;;;15556:6:0;;;;:57;;:177;;15628:11;;15556:6;;15670:4;;15697;;15717:15;;15556:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15362:379;15307:434;:::o;14956:343::-;15069:6;;15037:53;;15054:4;;-1:-1:-1;;;;;15069:6:0;15078:11;15037:8;:53::i;:::-;15101:6;;:190;;-1:-1:-1;;;15101:190:0;;15164:4;15101:190;;;13362:34:1;13412:18;;;13405:34;;;15101:6:0;13455:18:1;;;13448:34;;;13498:18;;;13491:34;7803:42:0;13541:19:1;;;13534:44;15275:15:0;13594:19:1;;;13587:35;-1:-1:-1;;;;;15101:6:0;;;;:22;;15131:9;;13296:19:1;;15101:190:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;18693:682::-;18780:6;;18773:39;;-1:-1:-1;;;18773:39:0;;18806:4;18773:39;;;1864:51:1;18749:21:0;;-1:-1:-1;;;;;18780:6:0;;18773:24;;1837:18:1;;18773:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18847:16;;;18861:1;18847:16;;;;;;;;18749:63;;-1:-1:-1;18823:21:0;;18847:16;;;;;;;;;;-1:-1:-1;;18884:6:0;;:13;;;-1:-1:-1;;;18884:13:0;;;;18823:40;;-1:-1:-1;;;;;;18884:6:0;;;;:11;;-1:-1:-1;18884:13:0;;;;;;;;;;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18874:4;18879:1;18874:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18874:23:0;;;:7;;;;;;;;;:23;18926:6;;18908:7;;18926:6;;;18908:4;;18926:6;;18908:7;;;;;;:::i;:::-;-1:-1:-1;;;;;18908:25:0;;;:7;;;;;;;;;:25;18944:6;;:169;;-1:-1:-1;;;18944:169:0;;:6;;;:57;;19009:9;;18944:169;;:6;;19050:4;;19077;;19097:15;;18944:169;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19148:6:0;;19141:39;;-1:-1:-1;;;19141:39:0;;19174:4;19141:39;;;1864:51:1;19124:14:0;;-1:-1:-1;19141:58:0;;-1:-1:-1;19185:13:0;;-1:-1:-1;;;;;;19148:6:0;;;;19141:24;;1837:18:1;;19141:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:58::-;19227:14;;19124:75;;-1:-1:-1;19227:26:0;;19124:75;19227:18;:26::i;:::-;19210:14;:43;19354:11;;19306:31;;19284:83;;19306:60;;:43;;19342:6;19306:35;:43::i;:60::-;19284:17;;;:21;:83::i;:::-;19264:17;:103;-1:-1:-1;;;;18693:682:0:o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:316::-;1292:6;1300;1308;1361:2;1349:9;1340:7;1336:23;1332:32;1329:52;;;1377:1;1374;1367:12;1329:52;-1:-1:-1;;1400:23:1;;;1470:2;1455:18;;1442:32;;-1:-1:-1;1521:2:1;1506:18;;;1493:32;;1215:316;-1:-1:-1;1215:316:1:o;1926:456::-;2003:6;2011;2019;2072:2;2060:9;2051:7;2047:23;2043:32;2040:52;;;2088:1;2085;2078:12;2040:52;2127:9;2114:23;2146:31;2171:5;2146:31;:::i;:::-;2196:5;-1:-1:-1;2253:2:1;2238:18;;2225:32;2266:33;2225:32;2266:33;:::i;:::-;1926:456;;2318:7;;-1:-1:-1;;;2372:2:1;2357:18;;;;2344:32;;1926:456::o;2387:247::-;2446:6;2499:2;2487:9;2478:7;2474:23;2470:32;2467:52;;;2515:1;2512;2505:12;2467:52;2554:9;2541:23;2573:31;2598:5;2573:31;:::i;2828:118::-;2914:5;2907:13;2900:21;2893:5;2890:32;2880:60;;2936:1;2933;2926:12;2951:382;3016:6;3024;3077:2;3065:9;3056:7;3052:23;3048:32;3045:52;;;3093:1;3090;3083:12;3045:52;3132:9;3119:23;3151:31;3176:5;3151:31;:::i;:::-;3201:5;-1:-1:-1;3258:2:1;3243:18;;3230:32;3271:30;3230:32;3271:30;:::i;:::-;3320:7;3310:17;;;2951:382;;;;;:::o;3662:388::-;3730:6;3738;3791:2;3779:9;3770:7;3766:23;3762:32;3759:52;;;3807:1;3804;3797:12;3759:52;3846:9;3833:23;3865:31;3890:5;3865:31;:::i;:::-;3915:5;-1:-1:-1;3972:2:1;3957:18;;3944:32;3985:33;3944:32;3985:33;:::i;4055:661::-;4177:6;4185;4193;4201;4209;4217;4225;4233;4286:3;4274:9;4265:7;4261:23;4257:33;4254:53;;;4303:1;4300;4293:12;4254:53;-1:-1:-1;;4326:23:1;;;4396:2;4381:18;;4368:32;;-1:-1:-1;4447:2:1;4432:18;;4419:32;;4498:2;4483:18;;4470:32;;-1:-1:-1;4549:3:1;4534:19;;4521:33;;-1:-1:-1;4601:3:1;4586:19;;4573:33;;-1:-1:-1;4653:3:1;4638:19;;4625:33;;-1:-1:-1;4705:3:1;4690:19;4677:33;;-1:-1:-1;4055:661:1;-1:-1:-1;4055:661:1:o;4981:329::-;5183:2;5165:21;;;5222:1;5202:18;;;5195:29;-1:-1:-1;;;5255:2:1;5240:18;;5233:36;5301:2;5286:18;;4981:329::o;5315:127::-;5376:10;5371:3;5367:20;5364:1;5357:31;5407:4;5404:1;5397:15;5431:4;5428:1;5421:15;5447:168;5520:9;;;5551;;5568:15;;;5562:22;;5548:37;5538:71;;5589:18;;:::i;5620:217::-;5660:1;5686;5676:132;;5730:10;5725:3;5721:20;5718:1;5711:31;5765:4;5762:1;5755:15;5793:4;5790:1;5783:15;5676:132;-1:-1:-1;5822:9:1;;5620:217::o;6536:245::-;6603:6;6656:2;6644:9;6635:7;6631:23;6627:32;6624:52;;;6672:1;6669;6662:12;6624:52;6704:9;6698:16;6723:28;6745:5;6723:28;:::i;8223:128::-;8290:9;;;8311:11;;;8308:37;;;8325:18;;:::i;10696:125::-;10761:9;;;10782:10;;;10779:36;;;10795:18;;:::i;11172:127::-;11233:10;11228:3;11224:20;11221:1;11214:31;11264:4;11261:1;11254:15;11288:4;11285:1;11278:15;11304:135;11343:3;11364:17;;;11361:43;;11384:18;;:::i;:::-;-1:-1:-1;11431:1:1;11420:13;;11304:135::o;11444:127::-;11505:10;11500:3;11496:20;11493:1;11486:31;11536:4;11533:1;11526:15;11560:4;11557:1;11550:15;11708:251;11778:6;11831:2;11819:9;11810:7;11806:23;11802:32;11799:52;;;11847:1;11844;11837:12;11799:52;11879:9;11873:16;11898:31;11923:5;11898:31;:::i;11964:465::-;12017:3;12055:5;12049:12;12082:6;12077:3;12070:19;12108:4;12137;12132:3;12128:14;12121:21;;12176:4;12169:5;12165:16;12199:1;12209:195;12223:6;12220:1;12217:13;12209:195;;;12288:13;;-1:-1:-1;;;;;12284:39:1;12272:52;;12344:12;;;;12379:15;;;;12320:1;12238:9;12209:195;;;-1:-1:-1;12420:3:1;;11964:465;-1:-1:-1;;;;;11964:465:1:o;12434:582::-;12733:6;12722:9;12715:25;12776:6;12771:2;12760:9;12756:18;12749:34;12819:3;12814:2;12803:9;12799:18;12792:31;12696:4;12840:57;12892:3;12881:9;12877:19;12869:6;12840:57;:::i;:::-;-1:-1:-1;;;;;12933:32:1;;;;12928:2;12913:18;;12906:60;-1:-1:-1;12997:3:1;12982:19;12975:35;12832:65;12434:582;-1:-1:-1;;;12434:582:1:o;13633:306::-;13721:6;13729;13737;13790:2;13778:9;13769:7;13765:23;13761:32;13758:52;;;13806:1;13803;13796:12;13758:52;13835:9;13829:16;13819:26;;13885:2;13874:9;13870:18;13864:25;13854:35;;13929:2;13918:9;13914:18;13908:25;13898:35;;13633:306;;;;;:::o;13944:184::-;14014:6;14067:2;14055:9;14046:7;14042:23;14038:32;14035:52;;;14083:1;14080;14073:12;14035:52;-1:-1:-1;14106:16:1;;13944:184;-1:-1:-1;13944:184:1:o;14133:510::-;14404:6;14393:9;14386:25;14447:3;14442:2;14431:9;14427:18;14420:31;14367:4;14468:57;14520:3;14509:9;14505:19;14497:6;14468:57;:::i;:::-;-1:-1:-1;;;;;14561:32:1;;;;14556:2;14541:18;;14534:60;-1:-1:-1;14625:2:1;14610:18;14603:34;14460:65;14133:510;-1:-1:-1;;14133:510:1:o

Swarm Source

ipfs://2d217fa1a9dabf6c4d43aa398464fc607f8759c8c1815d4b55c4ef389ac29d1c
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.