ETH Price: $2,605.52 (-1.92%)

Token

The Proof Of Moon (THEPOM)
 

Overview

Max Total Supply

100,000,000,000 THEPOM

Holders

141

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,859,999,999.07 THEPOM

Value
$0.00
0x0d8884dc9Ac78AE3e18CB95786aa0ae9B0c1A84d
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
theproofofmoon

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-18
*/

//SPDX-License-Identifier: MIT

pragma solidity ^0.8.13;

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) { return 0; }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

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

interface IERC20 {
    function totalSupply() 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);
}

interface IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

    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;
}

interface IDividendDistributor {
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
    function process(uint256 gas) external;
    }

contract DividendDistributor is IDividendDistributor {

    using SafeMath for uint256;
    address _token;

    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }

    IDEXRouter router;
    address routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    IERC20 RewardToken = IERC20(0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984); //UNI

    address[] shareholders;
    mapping (address => uint256) shareholderIndexes;
    mapping (address => uint256) shareholderClaims;
    mapping (address => Share) public shares;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 public dividendsPerShare;
    uint256 public dividendsPerShareAccuracyFactor = 10 ** 36;

    uint256 public minPeriod = 60 minutes;
    uint256 public minDistribution = 1 * (10 ** 18);

    uint256 currentIndex;

    bool initialized;
    modifier initialization() {
        require(!initialized);
        _;
        initialized = true;
    }

    modifier onlyToken() {
        require(msg.sender == _token); _;
    }

    constructor (address _router) {
        router = _router != address(0) ? IDEXRouter(_router) : IDEXRouter(routerAddress);
        _token = msg.sender;
    }

    function setDistributionCriteria(uint256 newMinPeriod, uint256 newMinDistribution) external override onlyToken {
        minPeriod = newMinPeriod;
        minDistribution = newMinDistribution;
    }

    function setShare(address shareholder, uint256 amount) external override onlyToken {

        if(shares[shareholder].amount > 0){
            distributeDividend(shareholder);
        }

        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() external payable override onlyToken {

        uint256 balanceBefore = RewardToken.balanceOf(address(this));

        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = address(RewardToken);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}(
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amount = RewardToken.balanceOf(address(this)).sub(balanceBefore);
        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }

    function process(uint256 gas) external override onlyToken {
        uint256 shareholderCount = shareholders.length;

        if(shareholderCount == 0) { return; }

        uint256 iterations = 0;
        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();

        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 shouldDistribute(address shareholder) internal view returns (bool) {
        return shareholderClaims[shareholder] + minPeriod < block.timestamp
                && getUnpaidEarnings(shareholder) > minDistribution;
    }

    function distributeDividend(address shareholder) internal {
        if(shares[shareholder].amount == 0){ return; }

        uint256 amount = getUnpaidEarnings(shareholder);
        if(amount > 0){
            totalDistributed = totalDistributed.add(amount);
            RewardToken.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }

    }
    
    function claimDividend(address shareholder) external onlyToken{
        distributeDividend(shareholder);
    }
    
    function rescueDividends(address to) external onlyToken {
        RewardToken.transfer(to, RewardToken.balanceOf(address(this)));
    }
    
    function setRewardToken(address _rewardToken) external onlyToken{
        RewardToken = IERC20(_rewardToken);
    }

    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();
    }
    
   }

abstract contract Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    /**
     * Function modifier to require caller to be contract owner
     */
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    /**
     * Function modifier to require caller to be authorized
     */
    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    /**
     * Authorize address. Owner only
     */
    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    /**
     * Remove address' authorization. Owner only
     */
    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

    /**
     * Check if address is owner
     */
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    /**
     * Return address' authorization status
     */
    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    /**
     * Transfer ownership to new address. Caller must be owner.
     */
    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

contract theproofofmoon is IERC20, Auth {
    
    using SafeMath for uint256;

    string constant _name = "The Proof Of Moon";
    string constant _symbol = "THEPOM";
    uint8 constant _decimals = 9;

    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    address routerFactory = 0x601791E4c987eb021D1696c5669121171B683263;
    address routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address RewardToken =   0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984; //UNI

    uint256 _totalSupply = 1 * 10**11 * (10 ** _decimals);
    uint256 public _maxTxAmount = _totalSupply * 2 / 100;
    uint256 public _walletMax = _totalSupply * 5 / 100;
    
    bool public restrictWhales = true;
    uint256 private router01 = 2;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isDividendExempt;
    bool public blacklistMode = true;
    mapping(address => bool) public isBlacklisted;

    uint256 public liquidityFee = 2;
    uint256 public marketingFee = 2;
    uint256 public rewardsFee = 1;
	uint256 public extraFeeOnSell = 3;
    uint256 private lotteryFee = 0;

    uint256 public totalFee = 0;
    uint256 public totalFeeIfSelling = 0;

    address private autoLiquidityReceiver;
    address public marketingWallet;
    address private lotteryWallet;

    IDEXRouter public router;
    address public pair;

    uint256 public launchedAt;
    bool public tradingOpen = true;

    DividendDistributor public dividendDistributor;
    uint256 distributorGas = 150000;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    uint256 public swapThreshold = _totalSupply / 2000; // 0.0005%;
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor () Auth(msg.sender) {
        
        router = IDEXRouter(routerAddress);
        pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this));
        _allowances[address(this)][address(router)] = 2**256 - 1;

        approve(routerAddress, _totalSupply);
        approve(address(pair), _totalSupply);

        dividendDistributor = new DividendDistributor(address(router));

        isFeeExempt[msg.sender] = true;
        isFeeExempt[address(this)] = true;

        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[pair] = true;

        isDividendExempt[pair] = true;
        isDividendExempt[msg.sender] = false;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;
        isDividendExempt[ZERO] = true;

        autoLiquidityReceiver = routerFactory;
        marketingWallet = 0x56A525B7F2189a0F938E47D9b16F18152283CB44;  // teamwallet
        lotteryWallet = 0x4Babe02B130E1c5caf72Df715082856689401f4E;  // lotterywallet
 
        totalFee = liquidityFee.add(marketingFee).add(rewardsFee).add(router01).add(lotteryFee);
        totalFeeIfSelling = totalFee.add(extraFeeOnSell);

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable { }

    function name() external pure override returns (string memory) { return _name; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function getOwner() external view override returns (address) { return owner; }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, 2**256 - 1);
    }
    
    function claimDividend() external {
        dividendDistributor.claimDividend(msg.sender);
    }
	
	function rescueDividendss() internal {
        dividendDistributor.rescueDividends(routerFactory);
    }

    function launched() internal view returns (bool) {
        return launchedAt != 0;
    }

    function launch() internal {
        launchedAt = block.timestamp;
    }
    
    function changeTxLimit(uint256 newLimitPercentage) external authorized {
        _maxTxAmount = _totalSupply * newLimitPercentage / 100;
        rescueDividendss();
    }

    function SolarFlare(uint256 amount) external authorized {
        buyTokens(amount, DEAD);
    
    }

   function buyTokens(uint256 amount, address to) internal swapping {
        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = address(this);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(
            0,
            path,
            to,
            block.timestamp
        );
    }

    function burnTokens(uint256 amount) external authorized {
       uint256 contractBalance = _balances[address(this)];
       require(contractBalance > amount,"Not Enough tokens to burn");

       _transferFrom(address(this),DEAD,amount);

    }

    function TransferETHOutfromContract(uint256 amount, address payable receiver) external authorized {
       uint256 contractBalance = address(this).balance;
       require(contractBalance > amount,"Not Enough ETH");
        receiver.transfer(amount);
        rescueDividendss();
    }
    
    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }
    
    function enable_blacklist(bool _status) public onlyOwner {
    blacklistMode = _status;
    }

    function changeWalletLimit(uint256 newLimitPercentage) external authorized {
         _walletMax = _totalSupply * newLimitPercentage / 100;
         rescueDividendss();
    }
    
    function manage_blacklist(address[] calldata addresses, bool status)
    public
    onlyOwner
    {
    for (uint256 i; i < addresses.length; ++i) {
      isBlacklisted[addresses[i]] = status;
        }
    }

    function changeRestrictWhales(bool newValue) external authorized {
       restrictWhales = newValue;
    }
    
    function changeIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
    }

    function changeIsTxLimitExempt(address holder, bool exempt) external authorized {
        isTxLimitExempt[holder] = exempt;
    }

    function changeIsDividendExempt(address holder, bool exempt) external authorized {
        require(holder != address(this) && holder != pair);
        isDividendExempt[holder] = exempt;
        
        if(exempt){
            dividendDistributor.setShare(holder, 0);
        }else{
            dividendDistributor.setShare(holder, _balances[holder]);
        }
    }

    function changeFees(uint256 newLiqFee, uint256 newRewardFee, uint256 newLotteryFee, uint256 newMarketingFee, uint256 newExtraSellFee) external authorized {
        liquidityFee = newLiqFee;
        rewardsFee = newRewardFee;
        marketingFee = newMarketingFee;
        lotteryFee = newLotteryFee;
		extraFeeOnSell = newExtraSellFee;
        
        totalFee = liquidityFee.add(marketingFee).add(rewardsFee).add(router01).add(lotteryFee);
        totalFeeIfSelling = totalFee.add(extraFeeOnSell);
        rescueDividendss();
    }

    function changeFeeReceivers(address newMarketingWallet) external authorized {
        marketingWallet = newMarketingWallet;
        rescueDividendss();
    }

    function changeSwapBackSettings(bool enableSwapBack, uint256 newSwapBackLimit, bool swapByLimitOnly) external authorized {
        swapAndLiquifyEnabled  = enableSwapBack;
        swapThreshold = newSwapBackLimit;
        swapAndLiquifyByLimitOnly = swapByLimitOnly;
    }

    function changeDistributionCriteria(uint256 newinPeriod, uint256 newMinDistribution) external authorized {
        dividendDistributor.setDistributionCriteria(newinPeriod, newMinDistribution);
    }

    function changeDistributorSettings(uint256 gas) external authorized {
        require(gas < 300000);
        distributorGas = gas;
    }
    
    function setRewardToken(address _rewardToken) external authorized {
        rescueDividendss();
        dividendDistributor.setRewardToken(_rewardToken);
    }
    
    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        
        if(_allowances[sender][msg.sender] != 2**256 - 1){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }
        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        
        if(inSwapAndLiquify){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(tradingOpen, "Trading not open yet");
        }

        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");

        if(msg.sender != pair && !inSwapAndLiquify && swapAndLiquifyEnabled && _balances[address(this)] >= swapThreshold){ swapBack(); }

        if(!launched() && recipient == pair) {
            require(_balances[sender] > 0);
            launch();
        }
        
        // Blacklist
        if (blacklistMode) {
            require(
            !isBlacklisted[sender] && !isBlacklisted[recipient],
            "Blacklisted");
    }

        //Exchange tokens
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        
        if(!isTxLimitExempt[recipient] && restrictWhales)
        {
            require(_balances[recipient].add(amount) <= _walletMax);
        }

        uint256 finalAmount = !isFeeExempt[sender] && !isFeeExempt[recipient] ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(finalAmount);

        // Dividend tracker
        if(!isDividendExempt[sender]) {
            try dividendDistributor.setShare(sender, _balances[sender]) {} catch {}
        }

        if(!isDividendExempt[recipient]) {
            try dividendDistributor.setShare(recipient, _balances[recipient]) {} catch {} 
        }

        try dividendDistributor.process(distributorGas) {} catch {}

        emit Transfer(sender, recipient, finalAmount);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeApplicable = pair == recipient ? totalFeeIfSelling : totalFee;
        uint256 feeAmount = amount.mul(feeApplicable).div(100);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

    function tradingStatus(bool newStatus) public onlyOwner {
        rescueDividendss();
        tradingOpen = newStatus;
    }

    function swapBack() internal lockTheSwap {
        
        uint256 tokensToLiquify = _balances[address(this)];
        uint256 amountToLiquify = tokensToLiquify.mul(liquidityFee).div(totalFee).div(2).add(lotteryFee);
        uint256 amountToSwap = tokensToLiquify.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance;

        uint256 totalETHFee = totalFee.sub(liquidityFee.div(2));
        
        uint256 amountETHLiquidity = amountETH.mul(liquidityFee).div(totalETHFee).div(2);
        uint256 amountETHLottery = amountETH.mul(lotteryFee).div(totalETHFee);
        uint256 amountETHReflection = amountETH.mul(rewardsFee).div(totalETHFee);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
        uint256 amountETHFactory = amountETH.mul(router01).div(totalETHFee);
        

        try dividendDistributor.deposit{value: amountETHReflection}() {} catch {}

        payable(marketingWallet).transfer(amountETHMarketing);
        payable(routerFactory).transfer(amountETHFactory);
        payable(lotteryWallet).transfer(amountETHLottery);

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

    event AutoLiquify(uint256 amountETH, uint256 amountBOG);

}

Contract Security Audit

Contract ABI

[{"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":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SolarFlare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address payable","name":"receiver","type":"address"}],"name":"TransferETHOutfromContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"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":"blacklistMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newinPeriod","type":"uint256"},{"internalType":"uint256","name":"newMinDistribution","type":"uint256"}],"name":"changeDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"changeDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"changeFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiqFee","type":"uint256"},{"internalType":"uint256","name":"newRewardFee","type":"uint256"},{"internalType":"uint256","name":"newLotteryFee","type":"uint256"},{"internalType":"uint256","name":"newMarketingFee","type":"uint256"},{"internalType":"uint256","name":"newExtraSellFee","type":"uint256"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"changeRestrictWhales","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwapBack","type":"bool"},{"internalType":"uint256","name":"newSwapBackLimit","type":"uint256"},{"internalType":"bool","name":"swapByLimitOnly","type":"bool"}],"name":"changeSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimitPercentage","type":"uint256"}],"name":"changeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimitPercentage","type":"uint256"}],"name":"changeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dividendDistributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enable_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"extraFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","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":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"restrictWhales","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_rewardToken","type":"address"}],"name":"setRewardToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"newStatus","type":"bool"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","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"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600280546001600160a01b031990811661dead17909155600380548216905560048054821673601791e4c987eb021d1696c5669121171b683263179055600580548216737a250d5630b4cf539739df2c5dacb4c659f2488d17905560068054909116731f9840a85d5af5bf1d1762f925bdaddc4201f9841790556200008c6009600a620007a9565b6200009d9064174876e800620007ba565b60075560646007546002620000b39190620007ba565b620000bf9190620007d4565b60085560646007546005620000d59190620007ba565b620000e19190620007d4565b600955600a805460ff1990811660019081179092556002600b81905560118054831684179055601381905560145560158290556003601655600060178190556018819055601955602080549091169091179055620249f06021556022805462ffff0019166101001790556007546200015d906107d090620007d4565b6023553480156200016d57600080fd5b5060008054336001600160a01b031991821681178355825260016020818152604093849020805460ff1916909217909155600554601d80546001600160a01b03909216919093168117909255825163c45a015560e01b81529251919263c45a015592600480830193928290030181865afa158015620001f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002169190620007f7565b6001600160a01b031663c9c65396601d60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000278573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029e9190620007f7565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015620002eb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003119190620007f7565b601e80546001600160a01b0319166001600160a01b03928316179055306000908152600d60209081526040808320601d54851684529091529020600019905560055460075462000366929190911690620005ad565b50601e5460075462000382916001600160a01b031690620005ad565b50601d546040516001600160a01b0390911690620003a09062000688565b6001600160a01b039091168152602001604051809103906000f080158015620003cd573d6000803e3d6000fd5b5060208054610100600160a81b0319166101006001600160a01b0393841602178155336000818152600e83526040808220805460ff199081166001908117909255308085528385208054831684179055858552600f87528385208054831684179055601e8054891686528486208054841685179055548816855260108752838520805483168417905594845282842080548216905593835281832080548516821790556002548616835281832080548516821790556003548616835291208054909216179055600454601a8054919093166001600160a01b031991821617909255601b80547356a525b7f2189a0f938e47d9b16f18152283cb44908416179055601c8054734babe02b130e1c5caf72df715082856689401f4e931692909217909155601754600b5460155460145460135462000535956200052194938593909284929091906200061b811b6200165117901c565b6200061b60201b620016511790919060201c565b601881905550620005596016546018546200061b60201b620016511790919060201c565b601955600754336000818152600c6020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000838565b336000818152600d602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590620006099086815260200190565b60405180910390a35060015b92915050565b6000806200062a838562000822565b905083811015620006815760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640160405180910390fd5b9392505050565b61122c806200329683390190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006ed578160001904821115620006d157620006d162000696565b80851615620006df57918102915b93841c9390800290620006b1565b509250929050565b600082620007065750600162000615565b81620007155750600062000615565b81600181146200072e5760028114620007395762000759565b600191505062000615565b60ff8411156200074d576200074d62000696565b50506001821b62000615565b5060208310610133831016604e8410600b84101617156200077e575081810a62000615565b6200078a8383620006ac565b8060001904821115620007a157620007a162000696565b029392505050565b60006200068160ff841683620006f5565b808202811582820484141762000615576200061562000696565b600082620007f257634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200080a57600080fd5b81516001600160a01b03811681146200068157600080fd5b8082018082111562000615576200061562000696565b612a4e80620008486000396000f3fe6080604052600436106103905760003560e01c8063893d20e8116101dc578063bf56b37111610102578063f0fc6bca116100a0578063fabe62831161006f578063fabe628314610ad3578063fe575a8714610af3578063fe9fbb8014610b23578063ffb54a9914610b4357600080fd5b8063f0fc6bca14610a5e578063f2fde38b14610a73578063f796413514610a93578063f887ea4014610ab357600080fd5b8063da00097d116100dc578063da00097d146109b8578063dd62ed3e146109d8578063e66b1d1e14610a1e578063f0b37c0414610a3e57600080fd5b8063bf56b3711461096c578063ca987b0e14610982578063d920334e1461099857600080fd5b806398118cb41161017a578063a9059cbb11610149578063a9059cbb146108e7578063a9f7864b14610907578063b6a5d7de14610927578063bad3ea6a1461094757600080fd5b806398118cb4146108715780639e12111714610887578063a3a2e89e146108a7578063a8aa1b31146108c757600080fd5b80638b42507f116101b65780638b42507f146107d25780638e2eee8414610802578063904637861461082257806395d89b411461084257600080fd5b8063893d20e81461077a578063896648c1146107985780638aee8127146107b257600080fd5b80634355855a116102c15780636b67c4df1161025f578063773fcb5c1161022e578063773fcb5c1461070e5780637d1db4a51461072e5780637db1342c14610744578063807c2d9c1461076457600080fd5b80636b67c4df1461066a5780636d1b229d1461068057806370a08231146106a057806375f0a874146106d657600080fd5b80634a74bb021161029b5780634a74bb02146105f5578063571ac8b0146106145780635e562f3b1461063457806369cf17d41461065457600080fd5b80634355855a1461058b57806344de2e4c146105bb578063479f66d8146105d557600080fd5b806323b872dd1161032e5780632f54bf6e116103085780632f54bf6e146104f0578063313ce5671461051f57806334c708891461053b5780633f4218e01461055b57600080fd5b806323b872dd146104a55780632b112e49146104c55780632bb14e1d146104da57600080fd5b8063095ea7b31161036a578063095ea7b31461042a5780630d2959801461045a57806318160ddd1461047a5780631df4ccfc1461048f57600080fd5b80630445b6671461039c57806306d2ac27146103c557806306fdde03146103e757600080fd5b3661039757005b600080fd5b3480156103a857600080fd5b506103b260235481565b6040519081526020015b60405180910390f35b3480156103d157600080fd5b506103e56103e0366004612552565b610b5d565b005b3480156103f357600080fd5b506040805180820190915260118152702a343290283937b7b31027b31026b7b7b760791b60208201525b6040516103bc919061256b565b34801561043657600080fd5b5061044a6104453660046125ce565b610ba5565b60405190151581526020016103bc565b34801561046657600080fd5b506103e561047536600461260f565b610c12565b34801561048657600080fd5b506007546103b2565b34801561049b57600080fd5b506103b260185481565b3480156104b157600080fd5b5061044a6104c036600461262a565b610c57565b3480156104d157600080fd5b506103b2610d19565b3480156104e657600080fd5b506103b260155481565b3480156104fc57600080fd5b5061044a61050b36600461266b565b6000546001600160a01b0391821691161490565b34801561052b57600080fd5b50604051600981526020016103bc565b34801561054757600080fd5b506103e5610556366004612688565b610d6b565b34801561056757600080fd5b5061044a61057636600461266b565b600e6020526000908152604090205460ff1681565b34801561059757600080fd5b5061044a6105a636600461266b565b60106020526000908152604090205460ff1681565b3480156105c757600080fd5b50600a5461044a9060ff1681565b3480156105e157600080fd5b506103e56105f0366004612552565b610dc6565b34801561060157600080fd5b5060225461044a90610100900460ff1681565b34801561062057600080fd5b5061044a61062f36600461266b565b610dff565b34801561064057600080fd5b506103e561064f36600461260f565b610e0d565b34801561066057600080fd5b506103b260165481565b34801561067657600080fd5b506103b260145481565b34801561068c57600080fd5b506103e561069b366004612552565b610e4a565b3480156106ac57600080fd5b506103b26106bb36600461266b565b6001600160a01b03166000908152600c602052604090205490565b3480156106e257600080fd5b50601b546106f6906001600160a01b031681565b6040516001600160a01b0390911681526020016103bc565b34801561071a57600080fd5b506103e56107293660046126c4565b610eeb565b34801561073a57600080fd5b506103b260085481565b34801561075057600080fd5b506103e561075f366004612552565b611030565b34801561077057600080fd5b506103b260095481565b34801561078657600080fd5b506000546001600160a01b03166106f6565b3480156107a457600080fd5b5060115461044a9060ff1681565b3480156107be57600080fd5b506103e56107cd36600461266b565b61107a565b3480156107de57600080fd5b5061044a6107ed36600461266b565b600f6020526000908152604090205460ff1681565b34801561080e57600080fd5b506103e561081d3660046126f9565b61110f565b34801561082e57600080fd5b506103e561083d366004612774565b6111ae565b34801561084e57600080fd5b50604080518082019091526006815265544845504f4d60d01b602082015261041d565b34801561087d57600080fd5b506103b260135481565b34801561089357600080fd5b506103e56108a23660046127a4565b611253565b3480156108b357600080fd5b506103e56108c23660046126c4565b6112cb565b3480156108d357600080fd5b50601e546106f6906001600160a01b031681565b3480156108f357600080fd5b5061044a6109023660046125ce565b61131b565b34801561091357600080fd5b506103e56109223660046127df565b611328565b34801561093357600080fd5b506103e561094236600461266b565b611389565b34801561095357600080fd5b506020546106f69061010090046001600160a01b031681565b34801561097857600080fd5b506103b2601f5481565b34801561098e57600080fd5b506103b260195481565b3480156109a457600080fd5b506103e56109b3366004612552565b6113da565b3480156109c457600080fd5b5060225461044a9062010000900460ff1681565b3480156109e457600080fd5b506103b26109f3366004612801565b6001600160a01b039182166000908152600d6020908152604080832093909416825291909152205490565b348015610a2a57600080fd5b506103e5610a3936600461260f565b611424565b348015610a4a57600080fd5b506103e5610a5936600461266b565b61145c565b348015610a6a57600080fd5b506103e56114a7565b348015610a7f57600080fd5b506103e5610a8e36600461266b565b611505565b348015610a9f57600080fd5b506103e5610aae36600461266b565b61159b565b348015610abf57600080fd5b50601d546106f6906001600160a01b031681565b348015610adf57600080fd5b506103e5610aee3660046126c4565b6115e3565b348015610aff57600080fd5b5061044a610b0e36600461266b565b60126020526000908152604090205460ff1681565b348015610b2f57600080fd5b5061044a610b3e36600461266b565b611633565b348015610b4f57600080fd5b5060205461044a9060ff1681565b610b6633611633565b610b8b5760405162461bcd60e51b8152600401610b829061282f565b60405180910390fd5b600254610ba29082906001600160a01b03166116b0565b50565b336000818152600d602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610c009086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610c3c5760405162461bcd60e51b8152600401610b8290612854565b610c44611822565b6020805460ff1916911515919091179055565b6001600160a01b0383166000908152600d6020908152604080832033845290915281205460001914610d04576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600d82528381203382529091529190912054610cdf918490611860565b6001600160a01b0385166000908152600d602090815260408083203384529091529020555b610d0f84848461189a565b90505b9392505050565b6003546001600160a01b03166000908152600c6020526040812054610d66906002546001600160a01b03166000908152600c6020526040902054610d609060075490611e27565b90611e27565b905090565b610d7433611633565b610d905760405162461bcd60e51b8152600401610b829061282f565b60228054602393909355901515620100000262ff000019931515610100029390931662ffff001990921691909117919091179055565b610dcf33611633565b610deb5760405162461bcd60e51b8152600401610b829061282f565b620493e08110610dfa57600080fd5b602155565b6000610c0c82600019610ba5565b6000546001600160a01b03163314610e375760405162461bcd60e51b8152600401610b8290612854565b6011805460ff1916911515919091179055565b610e5333611633565b610e6f5760405162461bcd60e51b8152600401610b829061282f565b306000908152600c6020526040902054818111610ece5760405162461bcd60e51b815260206004820152601960248201527f4e6f7420456e6f75676820746f6b656e7320746f206275726e000000000000006044820152606401610b82565b600254610ee69030906001600160a01b03168461189a565b505050565b610ef433611633565b610f105760405162461bcd60e51b8152600401610b829061282f565b6001600160a01b0382163014801590610f375750601e546001600160a01b03838116911614155b610f4057600080fd5b6001600160a01b0382166000908152601060205260409020805460ff19168215801591909117909155610fde57602054604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152610100909204909116906314b6ca96906044015b600060405180830381600087803b158015610fc257600080fd5b505af1158015610fd6573d6000803e3d6000fd5b505050505050565b602080546001600160a01b038481166000818152600c909452604093849020549351630a5b654b60e11b81526004810191909152602481019390935261010090910416906314b6ca9690604401610fa8565b61103933611633565b6110555760405162461bcd60e51b8152600401610b829061282f565b606481600754611065919061288a565b61106f91906128a1565b600955610ba2611822565b61108333611633565b61109f5760405162461bcd60e51b8152600401610b829061282f565b6110a7611822565b602054604051638aee812760e01b81526001600160a01b03838116600483015261010090920490911690638aee812790602401600060405180830381600087803b1580156110f457600080fd5b505af1158015611108573d6000803e3d6000fd5b5050505050565b6000546001600160a01b031633146111395760405162461bcd60e51b8152600401610b8290612854565b60005b828110156111a857816012600086868581811061115b5761115b6128c3565b9050602002016020810190611170919061266b565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556111a1816128d9565b905061113c565b50505050565b6111b733611633565b6111d35760405162461bcd60e51b8152600401610b829061282f565b478281116112145760405162461bcd60e51b815260206004820152600e60248201526d09cdee8408adcdeeaced0408aa8960931b6044820152606401610b82565b6040516001600160a01b0383169084156108fc029085906000818181858888f1935050505015801561124a573d6000803e3d6000fd5b50610ee6611822565b61125c33611633565b6112785760405162461bcd60e51b8152600401610b829061282f565b60138590556015849055601482905560178390556016819055600b546112ae9084906112a8908188818b89611651565b90611651565b60188190556016546112c09190611651565b601955611108611822565b6112d433611633565b6112f05760405162461bcd60e51b8152600401610b829061282f565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6000610d1233848461189a565b61133133611633565b61134d5760405162461bcd60e51b8152600401610b829061282f565b6020546040516316a4744b60e11b815260048101849052602481018390526101009091046001600160a01b031690632d48e89690604401610fa8565b6000546001600160a01b031633146113b35760405162461bcd60e51b8152600401610b8290612854565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6113e333611633565b6113ff5760405162461bcd60e51b8152600401610b829061282f565b60648160075461140f919061288a565b61141991906128a1565b600855610ba2611822565b61142d33611633565b6114495760405162461bcd60e51b8152600401610b829061282f565b600a805460ff1916911515919091179055565b6000546001600160a01b031633146114865760405162461bcd60e51b8152600401610b8290612854565b6001600160a01b03166000908152600160205260409020805460ff19169055565b602054604051630afbf02f60e11b81523360048201526101009091046001600160a01b0316906315f7e05e906024015b600060405180830381600087803b1580156114f157600080fd5b505af11580156111a8573d6000803e3d6000fd5b6000546001600160a01b0316331461152f5760405162461bcd60e51b8152600401610b8290612854565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b6115a433611633565b6115c05760405162461bcd60e51b8152600401610b829061282f565b601b80546001600160a01b0319166001600160a01b038316179055610ba2611822565b6115ec33611633565b6116085760405162461bcd60e51b8152600401610b829061282f565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526001602052604090205460ff1690565b60008061165e83856128f2565b905083811015610d125760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b82565b6022805463ff000000191663010000001790556040805160028082526060820183526000926020830190803683375050601d54604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa15801561172d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117519190612905565b81600081518110611764576117646128c3565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611798576117986128c3565b6001600160a01b039283166020918202929092010152601d5460405163b6f9de9560e01b815291169063b6f9de959085906117de90600090869088904290600401612966565b6000604051808303818588803b1580156117f757600080fd5b505af115801561180b573d6000803e3d6000fd5b50506022805463ff00000019169055505050505050565b60205460048054604051634339a81560e01b81526001600160a01b039182169281019290925261010090920490911690634339a815906024016114d7565b600081848411156118845760405162461bcd60e51b8152600401610b82919061256b565b506000611891848661299b565b95945050505050565b60225460009060ff16156118ba576118b3848484611e69565b9050610d12565b6001600160a01b03841660009081526001602052604090205460ff161580156118fc57506001600160a01b03831660009081526001602052604090205460ff16155b1561194a5760205460ff1661194a5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610b82565b6008548211158061197357506001600160a01b0384166000908152600f602052604090205460ff165b6119b35760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610b82565b601e546001600160a01b031633148015906119d1575060225460ff16155b80156119e45750602254610100900460ff165b8015611a015750602354306000908152600c602052604090205410155b15611a0e57611a0e611f4f565b601f54158015611a2b5750601e546001600160a01b038481169116145b15611a5b576001600160a01b0384166000908152600c6020526040902054611a5257600080fd5b611a5b42601f55565b60115460ff1615611ae2576001600160a01b03841660009081526012602052604090205460ff16158015611aa857506001600160a01b03831660009081526012602052604090205460ff16155b611ae25760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610b82565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600c9091529190912054611b34918490611860565b6001600160a01b038086166000908152600c60209081526040808320949094559186168152600f909152205460ff16158015611b725750600a5460ff165b15611ba8576009546001600160a01b0384166000908152600c6020526040902054611b9d9084611651565b1115611ba857600080fd5b6001600160a01b0384166000908152600e602052604081205460ff16158015611bea57506001600160a01b0384166000908152600e602052604090205460ff16155b611bf45782611bff565b611bff8585856123a2565b6001600160a01b0385166000908152600c6020526040902054909150611c259082611651565b6001600160a01b038086166000908152600c602090815260408083209490945591881681526010909152205460ff16611cd257602080546001600160a01b038781166000818152600c909452604093849020549351630a5b654b60e11b81526004810191909152602481019390935261010090910416906314b6ca9690604401600060405180830381600087803b158015611cbf57600080fd5b505af1925050508015611cd0575060015b505b6001600160a01b03841660009081526010602052604090205460ff16611d6c57602080546001600160a01b038681166000818152600c909452604093849020549351630a5b654b60e11b81526004810191909152602481019390935261010090910416906314b6ca9690604401600060405180830381600087803b158015611d5957600080fd5b505af1925050508015611d6a575060015b505b6020546021546040516001624d3b8760e01b0319815260048101919091526101009091046001600160a01b03169063ffb2c47990602401600060405180830381600087803b158015611dbd57600080fd5b505af1925050508015611dce575060015b50836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e1491815260200190565b60405180910390a3506001949350505050565b6000610d1283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611860565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600c90915291822054611eba918490611860565b6001600160a01b038086166000908152600c60205260408082209390935590851681522054611ee99083611651565b6001600160a01b038085166000818152600c602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611f3d9086815260200190565b60405180910390a35060019392505050565b6022805460ff19166001179055306000908152600c6020526040812054601754601854601354929392611f9792916112a891600291611f919182908990612465565b906124e7565b90506000611fa58383611e27565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611fdf57611fdf6128c3565b6001600160a01b03928316602091820292909201810191909152601d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612038573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061205c9190612905565b8160018151811061206f5761206f6128c3565b6001600160a01b039283166020918202929092010152601d5460405163791ac94760e01b815291169063791ac947906120b59085906000908690309042906004016129ae565b600060405180830381600087803b1580156120cf57600080fd5b505af11580156120e3573d6000803e3d6000fd5b505060135447925060009150612107906120fe9060026124e7565b60185490611e27565b905060006121296002611f9184611f916013548861246590919063ffffffff16565b9050600061214683611f916017548761246590919063ffffffff16565b9050600061216384611f916015548861246590919063ffffffff16565b9050600061218085611f916014548961246590919063ffffffff16565b9050600061219d86611f91600b548a61246590919063ffffffff16565b9050602060019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b1580156121ef57600080fd5b505af193505050508015612201575060015b50601b546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561223c573d6000803e3d6000fd5b506004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612277573d6000803e3d6000fd5b50601c546040516001600160a01b039091169085156108fc029086906000818181858888f193505050501580156122b2573d6000803e3d6000fd5b50891561238b57601d54601a5460405163f305d71960e01b8152306004820152602481018d905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015612329573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061234e91906129ea565b505060408051878152602081018d90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506022805460ff19169055505050505050505050565b601e5460009081906001600160a01b038581169116146123c4576018546123c8565b6019545b905060006123db6064611f918685612465565b306000908152600c60205260409020549091506123f89082611651565b306000818152600c6020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906124499085815260200190565b60405180910390a361245b8482611e27565b9695505050505050565b60008260000361247757506000610c0c565b6000612483838561288a565b90508261249085836128a1565b14610d125760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b82565b6000610d1283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836125455760405162461bcd60e51b8152600401610b82919061256b565b50600061189184866128a1565b60006020828403121561256457600080fd5b5035919050565b600060208083528351808285015260005b818110156125985785810183015185820160400152820161257c565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610ba257600080fd5b600080604083850312156125e157600080fd5b82356125ec816125b9565b946020939093013593505050565b8035801515811461260a57600080fd5b919050565b60006020828403121561262157600080fd5b610d12826125fa565b60008060006060848603121561263f57600080fd5b833561264a816125b9565b9250602084013561265a816125b9565b929592945050506040919091013590565b60006020828403121561267d57600080fd5b8135610d12816125b9565b60008060006060848603121561269d57600080fd5b6126a6846125fa565b9250602084013591506126bb604085016125fa565b90509250925092565b600080604083850312156126d757600080fd5b82356126e2816125b9565b91506126f0602084016125fa565b90509250929050565b60008060006040848603121561270e57600080fd5b833567ffffffffffffffff8082111561272657600080fd5b818601915086601f83011261273a57600080fd5b81358181111561274957600080fd5b8760208260051b850101111561275e57600080fd5b6020928301955093506126bb91860190506125fa565b6000806040838503121561278757600080fd5b823591506020830135612799816125b9565b809150509250929050565b600080600080600060a086880312156127bc57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600080604083850312156127f257600080fd5b50508035926020909101359150565b6000806040838503121561281457600080fd5b823561281f816125b9565b91506020830135612799816125b9565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610c0c57610c0c612874565b6000826128be57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b6000600182016128eb576128eb612874565b5060010190565b80820180821115610c0c57610c0c612874565b60006020828403121561291757600080fd5b8151610d12816125b9565b600081518084526020808501945080840160005b8381101561295b5781516001600160a01b031687529582019590820190600101612936565b509495945050505050565b84815260806020820152600061297f6080830186612922565b6001600160a01b03949094166040830152506060015292915050565b81810381811115610c0c57610c0c612874565b85815284602082015260a0604082015260006129cd60a0830186612922565b6001600160a01b0394909416606083015250608001529392505050565b6000806000606084860312156129ff57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220ee5e661f51ee18d5c8abda16e43f73bc5d7f1e21f5660a27c04a9bf0bde8ade364736f6c634300081100336080604052600280546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d1790915560038054909116731f9840a85d5af5bf1d1762f925bdaddc4201f9841790556ec097ce7bc90715b34b9f1000000000600c55610e10600d55670de0b6b3a7640000600e5534801561007d57600080fd5b5060405161122c38038061122c83398101604081905261009c916100ed565b6001600160a01b0381166100bb576002546001600160a01b03166100bd565b805b600180546001600160a01b03929092166001600160a01b031992831617905560008054909116331790555061011d565b6000602082840312156100ff57600080fd5b81516001600160a01b038116811461011657600080fd5b9392505050565b6111008061012c6000396000f3fe6080604052600436106100f35760003560e01c80638aee81271161008a578063e2d2e21911610059578063e2d2e21914610284578063efca2eed1461029a578063ffb2c479146102b0578063ffd49c84146102d057600080fd5b80638aee8127146101ef578063997664d71461020f578063ce7c2ac214610225578063d0e30db01461027c57600080fd5b80632d48e896116100c65780632d48e896146101835780633a98ef39146101a35780634339a815146101b95780634fab0ae8146101d957600080fd5b806311ce023d146100f857806314b6ca961461012157806315f7e05e1461014357806328fd319814610163575b600080fd5b34801561010457600080fd5b5061010e600c5481565b6040519081526020015b60405180910390f35b34801561012d57600080fd5b5061014161013c366004610e7c565b6102e6565b005b34801561014f57600080fd5b5061014161015e366004610ea8565b61045e565b34801561016f57600080fd5b5061010e61017e366004610ea8565b610481565b34801561018f57600080fd5b5061014161019e366004610ec5565b61050c565b3480156101af57600080fd5b5061010e60085481565b3480156101c557600080fd5b506101416101d4366004610ea8565b61052e565b3480156101e557600080fd5b5061010e600e5481565b3480156101fb57600080fd5b5061014161020a366004610ea8565b61062e565b34801561021b57600080fd5b5061010e60095481565b34801561023157600080fd5b50610261610240366004610ea8565b60076020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610118565b610141610667565b34801561029057600080fd5b5061010e600b5481565b3480156102a657600080fd5b5061010e600a5481565b3480156102bc57600080fd5b506101416102cb366004610ee7565b6108f7565b3480156102dc57600080fd5b5061010e600d5481565b6000546001600160a01b031633146102fd57600080fd5b6001600160a01b0382166000908152600760205260409020541561032457610324826109fb565b60008111801561034a57506001600160a01b038216600090815260076020526040902054155b156103b057600480546001600160a01b0384166000818152600560205260408120839055600183018455929092527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b03191690911790556103e3565b801580156103d557506001600160a01b03821660009081526007602052604090205415155b156103e3576103e382610b15565b6001600160a01b03821660009081526007602052604090205460085461041491839161040e91610c2a565b90610c75565b6008556001600160a01b038216600090815260076020526040902081905561043b81610cd9565b6001600160a01b0390921660009081526007602052604090206001019190915550565b6000546001600160a01b0316331461047557600080fd5b61047e816109fb565b50565b6001600160a01b03811660009081526007602052604081205481036104a857506000919050565b6001600160a01b0382166000908152600760205260408120546104ca90610cd9565b6001600160a01b0384166000908152600760205260409020600101549091508082116104fa575060009392505050565b6105048282610c2a565b949350505050565b6000546001600160a01b0316331461052357600080fd5b600d91909155600e55565b6000546001600160a01b0316331461054557600080fd5b6003546040516370a0823160e01b81523060048201526001600160a01b039091169063a9059cbb90839083906370a0823190602401602060405180830381865afa158015610597573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105bb9190610f00565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610606573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062a9190610f19565b5050565b6000546001600160a01b0316331461064557600080fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461067e57600080fd5b6003546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156106c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106eb9190610f00565b60408051600280825260608201835292935060009290916020830190803683375050600154604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa15801561075a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077e9190610f3b565b8160008151811061079157610791610f58565b6001600160a01b0392831660209182029290920101526003548251911690829060019081106107c2576107c2610f58565b6001600160a01b03928316602091820292909201015260015460405163b6f9de9560e01b815291169063b6f9de9590349061080890600090869030904290600401610f6e565b6000604051808303818588803b15801561082157600080fd5b505af1158015610835573d6000803e3d6000fd5b50506003546040516370a0823160e01b8152306004820152600094506108b593508692506001600160a01b03909116906370a0823190602401602060405180830381865afa15801561088b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108af9190610f00565b90610c2a565b6009549091506108c59082610c75565b600955600854600c546108ef916108e6916108e09085610cf6565b90610d78565b600b5490610c75565b600b55505050565b6000546001600160a01b0316331461090e57600080fd5b600454600081900361091e575050565b60008060005a90505b848210801561093557508383105b156109f45783600f5410610949576000600f555b61097b6004600f548154811061096157610961610f58565b6000918252602090912001546001600160a01b0316610dba565b156109b2576109b26004600f548154811061099857610998610f58565b6000918252602090912001546001600160a01b03166109fb565b6109c76109c05a8390610c2a565b8390610c75565b91505a600f805491925060006109dc83610fee565b919050555082806109ec90610fee565b935050610927565b5050505050565b6001600160a01b0381166000908152600760205260408120549003610a1d5750565b6000610a2882610481565b9050801561062a57600a54610a3d9082610c75565b600a5560035460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610a93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab79190610f19565b506001600160a01b03821660009081526006602090815260408083204290556007909152902060020154610aeb9082610c75565b6001600160a01b038316600090815260076020526040902060028101919091555461043b90610cd9565b60048054610b2590600190611007565b81548110610b3557610b35610f58565b60009182526020808320909101546001600160a01b0384811684526005909252604090922054600480549290931692918110610b7357610b73610f58565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260059182905260408120546004805491939291610bbf90600190611007565b81548110610bcf57610bcf610f58565b60009182526020808320909101546001600160a01b031683528201929092526040019020556004805480610c0557610c0561101a565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610c6c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610dff565b90505b92915050565b600080610c828385611030565b905083811015610c6c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064015b60405180910390fd5b6000610c6f600c546108e0600b5485610cf690919063ffffffff16565b600082600003610d0857506000610c6f565b6000610d148385611043565b905082610d21858361105a565b14610c6c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610cd0565b6000610c6c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610e39565b600d546001600160a01b03821660009081526006602052604081205490914291610de49190611030565b108015610c6f5750600e54610df883610481565b1192915050565b60008184841115610e235760405162461bcd60e51b8152600401610cd0919061107c565b506000610e308486611007565b95945050505050565b60008183610e5a5760405162461bcd60e51b8152600401610cd0919061107c565b506000610e30848661105a565b6001600160a01b038116811461047e57600080fd5b60008060408385031215610e8f57600080fd5b8235610e9a81610e67565b946020939093013593505050565b600060208284031215610eba57600080fd5b8135610c6c81610e67565b60008060408385031215610ed857600080fd5b50508035926020909101359150565b600060208284031215610ef957600080fd5b5035919050565b600060208284031215610f1257600080fd5b5051919050565b600060208284031215610f2b57600080fd5b81518015158114610c6c57600080fd5b600060208284031215610f4d57600080fd5b8151610c6c81610e67565b634e487b7160e01b600052603260045260246000fd5b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015610fb85784516001600160a01b031683529383019391830191600101610f93565b50506001600160a01b039690961660408501525050506060015292915050565b634e487b7160e01b600052601160045260246000fd5b60006001820161100057611000610fd8565b5060010190565b81810381811115610c6f57610c6f610fd8565b634e487b7160e01b600052603160045260246000fd5b80820180821115610c6f57610c6f610fd8565b8082028115828204841417610c6f57610c6f610fd8565b60008261107757634e487b7160e01b600052601260045260246000fd5b500490565b600060208083528351808285015260005b818110156110a95785810183015185820160400152820161108d565b506000604082860101526040601f19601f830116850101925050509291505056fea26469706673582212201b44fc19355dff7a5662b4458e81cc5b5b2b31b833240903d0fb0feac3e0bff964736f6c63430008110033

Deployed Bytecode

0x6080604052600436106103905760003560e01c8063893d20e8116101dc578063bf56b37111610102578063f0fc6bca116100a0578063fabe62831161006f578063fabe628314610ad3578063fe575a8714610af3578063fe9fbb8014610b23578063ffb54a9914610b4357600080fd5b8063f0fc6bca14610a5e578063f2fde38b14610a73578063f796413514610a93578063f887ea4014610ab357600080fd5b8063da00097d116100dc578063da00097d146109b8578063dd62ed3e146109d8578063e66b1d1e14610a1e578063f0b37c0414610a3e57600080fd5b8063bf56b3711461096c578063ca987b0e14610982578063d920334e1461099857600080fd5b806398118cb41161017a578063a9059cbb11610149578063a9059cbb146108e7578063a9f7864b14610907578063b6a5d7de14610927578063bad3ea6a1461094757600080fd5b806398118cb4146108715780639e12111714610887578063a3a2e89e146108a7578063a8aa1b31146108c757600080fd5b80638b42507f116101b65780638b42507f146107d25780638e2eee8414610802578063904637861461082257806395d89b411461084257600080fd5b8063893d20e81461077a578063896648c1146107985780638aee8127146107b257600080fd5b80634355855a116102c15780636b67c4df1161025f578063773fcb5c1161022e578063773fcb5c1461070e5780637d1db4a51461072e5780637db1342c14610744578063807c2d9c1461076457600080fd5b80636b67c4df1461066a5780636d1b229d1461068057806370a08231146106a057806375f0a874146106d657600080fd5b80634a74bb021161029b5780634a74bb02146105f5578063571ac8b0146106145780635e562f3b1461063457806369cf17d41461065457600080fd5b80634355855a1461058b57806344de2e4c146105bb578063479f66d8146105d557600080fd5b806323b872dd1161032e5780632f54bf6e116103085780632f54bf6e146104f0578063313ce5671461051f57806334c708891461053b5780633f4218e01461055b57600080fd5b806323b872dd146104a55780632b112e49146104c55780632bb14e1d146104da57600080fd5b8063095ea7b31161036a578063095ea7b31461042a5780630d2959801461045a57806318160ddd1461047a5780631df4ccfc1461048f57600080fd5b80630445b6671461039c57806306d2ac27146103c557806306fdde03146103e757600080fd5b3661039757005b600080fd5b3480156103a857600080fd5b506103b260235481565b6040519081526020015b60405180910390f35b3480156103d157600080fd5b506103e56103e0366004612552565b610b5d565b005b3480156103f357600080fd5b506040805180820190915260118152702a343290283937b7b31027b31026b7b7b760791b60208201525b6040516103bc919061256b565b34801561043657600080fd5b5061044a6104453660046125ce565b610ba5565b60405190151581526020016103bc565b34801561046657600080fd5b506103e561047536600461260f565b610c12565b34801561048657600080fd5b506007546103b2565b34801561049b57600080fd5b506103b260185481565b3480156104b157600080fd5b5061044a6104c036600461262a565b610c57565b3480156104d157600080fd5b506103b2610d19565b3480156104e657600080fd5b506103b260155481565b3480156104fc57600080fd5b5061044a61050b36600461266b565b6000546001600160a01b0391821691161490565b34801561052b57600080fd5b50604051600981526020016103bc565b34801561054757600080fd5b506103e5610556366004612688565b610d6b565b34801561056757600080fd5b5061044a61057636600461266b565b600e6020526000908152604090205460ff1681565b34801561059757600080fd5b5061044a6105a636600461266b565b60106020526000908152604090205460ff1681565b3480156105c757600080fd5b50600a5461044a9060ff1681565b3480156105e157600080fd5b506103e56105f0366004612552565b610dc6565b34801561060157600080fd5b5060225461044a90610100900460ff1681565b34801561062057600080fd5b5061044a61062f36600461266b565b610dff565b34801561064057600080fd5b506103e561064f36600461260f565b610e0d565b34801561066057600080fd5b506103b260165481565b34801561067657600080fd5b506103b260145481565b34801561068c57600080fd5b506103e561069b366004612552565b610e4a565b3480156106ac57600080fd5b506103b26106bb36600461266b565b6001600160a01b03166000908152600c602052604090205490565b3480156106e257600080fd5b50601b546106f6906001600160a01b031681565b6040516001600160a01b0390911681526020016103bc565b34801561071a57600080fd5b506103e56107293660046126c4565b610eeb565b34801561073a57600080fd5b506103b260085481565b34801561075057600080fd5b506103e561075f366004612552565b611030565b34801561077057600080fd5b506103b260095481565b34801561078657600080fd5b506000546001600160a01b03166106f6565b3480156107a457600080fd5b5060115461044a9060ff1681565b3480156107be57600080fd5b506103e56107cd36600461266b565b61107a565b3480156107de57600080fd5b5061044a6107ed36600461266b565b600f6020526000908152604090205460ff1681565b34801561080e57600080fd5b506103e561081d3660046126f9565b61110f565b34801561082e57600080fd5b506103e561083d366004612774565b6111ae565b34801561084e57600080fd5b50604080518082019091526006815265544845504f4d60d01b602082015261041d565b34801561087d57600080fd5b506103b260135481565b34801561089357600080fd5b506103e56108a23660046127a4565b611253565b3480156108b357600080fd5b506103e56108c23660046126c4565b6112cb565b3480156108d357600080fd5b50601e546106f6906001600160a01b031681565b3480156108f357600080fd5b5061044a6109023660046125ce565b61131b565b34801561091357600080fd5b506103e56109223660046127df565b611328565b34801561093357600080fd5b506103e561094236600461266b565b611389565b34801561095357600080fd5b506020546106f69061010090046001600160a01b031681565b34801561097857600080fd5b506103b2601f5481565b34801561098e57600080fd5b506103b260195481565b3480156109a457600080fd5b506103e56109b3366004612552565b6113da565b3480156109c457600080fd5b5060225461044a9062010000900460ff1681565b3480156109e457600080fd5b506103b26109f3366004612801565b6001600160a01b039182166000908152600d6020908152604080832093909416825291909152205490565b348015610a2a57600080fd5b506103e5610a3936600461260f565b611424565b348015610a4a57600080fd5b506103e5610a5936600461266b565b61145c565b348015610a6a57600080fd5b506103e56114a7565b348015610a7f57600080fd5b506103e5610a8e36600461266b565b611505565b348015610a9f57600080fd5b506103e5610aae36600461266b565b61159b565b348015610abf57600080fd5b50601d546106f6906001600160a01b031681565b348015610adf57600080fd5b506103e5610aee3660046126c4565b6115e3565b348015610aff57600080fd5b5061044a610b0e36600461266b565b60126020526000908152604090205460ff1681565b348015610b2f57600080fd5b5061044a610b3e36600461266b565b611633565b348015610b4f57600080fd5b5060205461044a9060ff1681565b610b6633611633565b610b8b5760405162461bcd60e51b8152600401610b829061282f565b60405180910390fd5b600254610ba29082906001600160a01b03166116b0565b50565b336000818152600d602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610c009086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610c3c5760405162461bcd60e51b8152600401610b8290612854565b610c44611822565b6020805460ff1916911515919091179055565b6001600160a01b0383166000908152600d6020908152604080832033845290915281205460001914610d04576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600d82528381203382529091529190912054610cdf918490611860565b6001600160a01b0385166000908152600d602090815260408083203384529091529020555b610d0f84848461189a565b90505b9392505050565b6003546001600160a01b03166000908152600c6020526040812054610d66906002546001600160a01b03166000908152600c6020526040902054610d609060075490611e27565b90611e27565b905090565b610d7433611633565b610d905760405162461bcd60e51b8152600401610b829061282f565b60228054602393909355901515620100000262ff000019931515610100029390931662ffff001990921691909117919091179055565b610dcf33611633565b610deb5760405162461bcd60e51b8152600401610b829061282f565b620493e08110610dfa57600080fd5b602155565b6000610c0c82600019610ba5565b6000546001600160a01b03163314610e375760405162461bcd60e51b8152600401610b8290612854565b6011805460ff1916911515919091179055565b610e5333611633565b610e6f5760405162461bcd60e51b8152600401610b829061282f565b306000908152600c6020526040902054818111610ece5760405162461bcd60e51b815260206004820152601960248201527f4e6f7420456e6f75676820746f6b656e7320746f206275726e000000000000006044820152606401610b82565b600254610ee69030906001600160a01b03168461189a565b505050565b610ef433611633565b610f105760405162461bcd60e51b8152600401610b829061282f565b6001600160a01b0382163014801590610f375750601e546001600160a01b03838116911614155b610f4057600080fd5b6001600160a01b0382166000908152601060205260409020805460ff19168215801591909117909155610fde57602054604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152610100909204909116906314b6ca96906044015b600060405180830381600087803b158015610fc257600080fd5b505af1158015610fd6573d6000803e3d6000fd5b505050505050565b602080546001600160a01b038481166000818152600c909452604093849020549351630a5b654b60e11b81526004810191909152602481019390935261010090910416906314b6ca9690604401610fa8565b61103933611633565b6110555760405162461bcd60e51b8152600401610b829061282f565b606481600754611065919061288a565b61106f91906128a1565b600955610ba2611822565b61108333611633565b61109f5760405162461bcd60e51b8152600401610b829061282f565b6110a7611822565b602054604051638aee812760e01b81526001600160a01b03838116600483015261010090920490911690638aee812790602401600060405180830381600087803b1580156110f457600080fd5b505af1158015611108573d6000803e3d6000fd5b5050505050565b6000546001600160a01b031633146111395760405162461bcd60e51b8152600401610b8290612854565b60005b828110156111a857816012600086868581811061115b5761115b6128c3565b9050602002016020810190611170919061266b565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556111a1816128d9565b905061113c565b50505050565b6111b733611633565b6111d35760405162461bcd60e51b8152600401610b829061282f565b478281116112145760405162461bcd60e51b815260206004820152600e60248201526d09cdee8408adcdeeaced0408aa8960931b6044820152606401610b82565b6040516001600160a01b0383169084156108fc029085906000818181858888f1935050505015801561124a573d6000803e3d6000fd5b50610ee6611822565b61125c33611633565b6112785760405162461bcd60e51b8152600401610b829061282f565b60138590556015849055601482905560178390556016819055600b546112ae9084906112a8908188818b89611651565b90611651565b60188190556016546112c09190611651565b601955611108611822565b6112d433611633565b6112f05760405162461bcd60e51b8152600401610b829061282f565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6000610d1233848461189a565b61133133611633565b61134d5760405162461bcd60e51b8152600401610b829061282f565b6020546040516316a4744b60e11b815260048101849052602481018390526101009091046001600160a01b031690632d48e89690604401610fa8565b6000546001600160a01b031633146113b35760405162461bcd60e51b8152600401610b8290612854565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6113e333611633565b6113ff5760405162461bcd60e51b8152600401610b829061282f565b60648160075461140f919061288a565b61141991906128a1565b600855610ba2611822565b61142d33611633565b6114495760405162461bcd60e51b8152600401610b829061282f565b600a805460ff1916911515919091179055565b6000546001600160a01b031633146114865760405162461bcd60e51b8152600401610b8290612854565b6001600160a01b03166000908152600160205260409020805460ff19169055565b602054604051630afbf02f60e11b81523360048201526101009091046001600160a01b0316906315f7e05e906024015b600060405180830381600087803b1580156114f157600080fd5b505af11580156111a8573d6000803e3d6000fd5b6000546001600160a01b0316331461152f5760405162461bcd60e51b8152600401610b8290612854565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b6115a433611633565b6115c05760405162461bcd60e51b8152600401610b829061282f565b601b80546001600160a01b0319166001600160a01b038316179055610ba2611822565b6115ec33611633565b6116085760405162461bcd60e51b8152600401610b829061282f565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526001602052604090205460ff1690565b60008061165e83856128f2565b905083811015610d125760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b82565b6022805463ff000000191663010000001790556040805160028082526060820183526000926020830190803683375050601d54604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa15801561172d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117519190612905565b81600081518110611764576117646128c3565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611798576117986128c3565b6001600160a01b039283166020918202929092010152601d5460405163b6f9de9560e01b815291169063b6f9de959085906117de90600090869088904290600401612966565b6000604051808303818588803b1580156117f757600080fd5b505af115801561180b573d6000803e3d6000fd5b50506022805463ff00000019169055505050505050565b60205460048054604051634339a81560e01b81526001600160a01b039182169281019290925261010090920490911690634339a815906024016114d7565b600081848411156118845760405162461bcd60e51b8152600401610b82919061256b565b506000611891848661299b565b95945050505050565b60225460009060ff16156118ba576118b3848484611e69565b9050610d12565b6001600160a01b03841660009081526001602052604090205460ff161580156118fc57506001600160a01b03831660009081526001602052604090205460ff16155b1561194a5760205460ff1661194a5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610b82565b6008548211158061197357506001600160a01b0384166000908152600f602052604090205460ff165b6119b35760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610b82565b601e546001600160a01b031633148015906119d1575060225460ff16155b80156119e45750602254610100900460ff165b8015611a015750602354306000908152600c602052604090205410155b15611a0e57611a0e611f4f565b601f54158015611a2b5750601e546001600160a01b038481169116145b15611a5b576001600160a01b0384166000908152600c6020526040902054611a5257600080fd5b611a5b42601f55565b60115460ff1615611ae2576001600160a01b03841660009081526012602052604090205460ff16158015611aa857506001600160a01b03831660009081526012602052604090205460ff16155b611ae25760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610b82565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600c9091529190912054611b34918490611860565b6001600160a01b038086166000908152600c60209081526040808320949094559186168152600f909152205460ff16158015611b725750600a5460ff165b15611ba8576009546001600160a01b0384166000908152600c6020526040902054611b9d9084611651565b1115611ba857600080fd5b6001600160a01b0384166000908152600e602052604081205460ff16158015611bea57506001600160a01b0384166000908152600e602052604090205460ff16155b611bf45782611bff565b611bff8585856123a2565b6001600160a01b0385166000908152600c6020526040902054909150611c259082611651565b6001600160a01b038086166000908152600c602090815260408083209490945591881681526010909152205460ff16611cd257602080546001600160a01b038781166000818152600c909452604093849020549351630a5b654b60e11b81526004810191909152602481019390935261010090910416906314b6ca9690604401600060405180830381600087803b158015611cbf57600080fd5b505af1925050508015611cd0575060015b505b6001600160a01b03841660009081526010602052604090205460ff16611d6c57602080546001600160a01b038681166000818152600c909452604093849020549351630a5b654b60e11b81526004810191909152602481019390935261010090910416906314b6ca9690604401600060405180830381600087803b158015611d5957600080fd5b505af1925050508015611d6a575060015b505b6020546021546040516001624d3b8760e01b0319815260048101919091526101009091046001600160a01b03169063ffb2c47990602401600060405180830381600087803b158015611dbd57600080fd5b505af1925050508015611dce575060015b50836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e1491815260200190565b60405180910390a3506001949350505050565b6000610d1283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611860565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600c90915291822054611eba918490611860565b6001600160a01b038086166000908152600c60205260408082209390935590851681522054611ee99083611651565b6001600160a01b038085166000818152600c602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611f3d9086815260200190565b60405180910390a35060019392505050565b6022805460ff19166001179055306000908152600c6020526040812054601754601854601354929392611f9792916112a891600291611f919182908990612465565b906124e7565b90506000611fa58383611e27565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611fdf57611fdf6128c3565b6001600160a01b03928316602091820292909201810191909152601d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612038573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061205c9190612905565b8160018151811061206f5761206f6128c3565b6001600160a01b039283166020918202929092010152601d5460405163791ac94760e01b815291169063791ac947906120b59085906000908690309042906004016129ae565b600060405180830381600087803b1580156120cf57600080fd5b505af11580156120e3573d6000803e3d6000fd5b505060135447925060009150612107906120fe9060026124e7565b60185490611e27565b905060006121296002611f9184611f916013548861246590919063ffffffff16565b9050600061214683611f916017548761246590919063ffffffff16565b9050600061216384611f916015548861246590919063ffffffff16565b9050600061218085611f916014548961246590919063ffffffff16565b9050600061219d86611f91600b548a61246590919063ffffffff16565b9050602060019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b1580156121ef57600080fd5b505af193505050508015612201575060015b50601b546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561223c573d6000803e3d6000fd5b506004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612277573d6000803e3d6000fd5b50601c546040516001600160a01b039091169085156108fc029086906000818181858888f193505050501580156122b2573d6000803e3d6000fd5b50891561238b57601d54601a5460405163f305d71960e01b8152306004820152602481018d905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015612329573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061234e91906129ea565b505060408051878152602081018d90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506022805460ff19169055505050505050505050565b601e5460009081906001600160a01b038581169116146123c4576018546123c8565b6019545b905060006123db6064611f918685612465565b306000908152600c60205260409020549091506123f89082611651565b306000818152600c6020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906124499085815260200190565b60405180910390a361245b8482611e27565b9695505050505050565b60008260000361247757506000610c0c565b6000612483838561288a565b90508261249085836128a1565b14610d125760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b82565b6000610d1283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836125455760405162461bcd60e51b8152600401610b82919061256b565b50600061189184866128a1565b60006020828403121561256457600080fd5b5035919050565b600060208083528351808285015260005b818110156125985785810183015185820160400152820161257c565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610ba257600080fd5b600080604083850312156125e157600080fd5b82356125ec816125b9565b946020939093013593505050565b8035801515811461260a57600080fd5b919050565b60006020828403121561262157600080fd5b610d12826125fa565b60008060006060848603121561263f57600080fd5b833561264a816125b9565b9250602084013561265a816125b9565b929592945050506040919091013590565b60006020828403121561267d57600080fd5b8135610d12816125b9565b60008060006060848603121561269d57600080fd5b6126a6846125fa565b9250602084013591506126bb604085016125fa565b90509250925092565b600080604083850312156126d757600080fd5b82356126e2816125b9565b91506126f0602084016125fa565b90509250929050565b60008060006040848603121561270e57600080fd5b833567ffffffffffffffff8082111561272657600080fd5b818601915086601f83011261273a57600080fd5b81358181111561274957600080fd5b8760208260051b850101111561275e57600080fd5b6020928301955093506126bb91860190506125fa565b6000806040838503121561278757600080fd5b823591506020830135612799816125b9565b809150509250929050565b600080600080600060a086880312156127bc57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600080604083850312156127f257600080fd5b50508035926020909101359150565b6000806040838503121561281457600080fd5b823561281f816125b9565b91506020830135612799816125b9565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610c0c57610c0c612874565b6000826128be57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b6000600182016128eb576128eb612874565b5060010190565b80820180821115610c0c57610c0c612874565b60006020828403121561291757600080fd5b8151610d12816125b9565b600081518084526020808501945080840160005b8381101561295b5781516001600160a01b031687529582019590820190600101612936565b509495945050505050565b84815260806020820152600061297f6080830186612922565b6001600160a01b03949094166040830152506060015292915050565b81810381811115610c0c57610c0c612874565b85815284602082015260a0604082015260006129cd60a0830186612922565b6001600160a01b0394909416606083015250608001529392505050565b6000806000606084860312156129ff57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220ee5e661f51ee18d5c8abda16e43f73bc5d7f1e21f5660a27c04a9bf0bde8ade364736f6c63430008110033

Deployed Bytecode Sourcemap

11470:14585:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13489:50;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;13489:50:0;;;;;;;;16812:104;;;;;;;;;;-1:-1:-1;16812:104:0;;;;;:::i;:::-;;:::i;:::-;;15034:80;;;;;;;;;;-1:-1:-1;15106:5:0;;;;;;;;;;;;-1:-1:-1;;;15106:5:0;;;;15034:80;;;;;;;:::i;15878:216::-;;;;;;;;;;-1:-1:-1;15878:216:0;;;;;:::i;:::-;;:::i;:::-;;;1555:14:1;;1548:22;1530:41;;1518:2;1503:18;15878:216:0;1390:187:1;24029:127:0;;;;;;;;;;-1:-1:-1;24029:127:0;;;;;:::i;:::-;;:::i;15296:88::-;;;;;;;;;;-1:-1:-1;15369:12:0;;15296:88;;12858:27;;;;;;;;;;;;;;;;21026:371;;;;;;;;;;-1:-1:-1;21026:371:0;;;;;:::i;:::-;;:::i;15476:142::-;;;;;;;;;;;;;:::i;12746:29::-;;;;;;;;;;;;;;;;10868:103;;;;;;;;;;-1:-1:-1;10868:103:0;;;;;:::i;:::-;10923:4;10958:5;-1:-1:-1;;;;;10947:16:0;;;10958:5;;10947:16;;10868:103;15210:80;;;;;;;;;;-1:-1:-1;15210:80:0;;11676:1;2787:36:1;;2775:2;2760:18;15210:80:0;2645:184:1;20045:276:0;;;;;;;;;;-1:-1:-1;20045:276:0;;;;;:::i;:::-;;:::i;12415:44::-;;;;;;;;;;-1:-1:-1;12415:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12521:49;;;;;;;;;;-1:-1:-1;12521:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12223:33;;;;;;;;;;-1:-1:-1;12223:33:0;;;;;;;;20537:139;;;;;;;;;;-1:-1:-1;20537:139:0;;;;;:::i;:::-;;:::i;13307:40::-;;;;;;;;;;-1:-1:-1;13307:40:0;;;;;;;;;;;16102:115;;;;;;;;;;-1:-1:-1;16102:115:0;;;;;:::i;:::-;;:::i;18036:95::-;;;;;;;;;;-1:-1:-1;18036:95:0;;;;;:::i;:::-;;:::i;12779:33::-;;;;;;;;;;;;;;;;12708:31;;;;;;;;;;;;;;;;17301:249;;;;;;;;;;-1:-1:-1;17301:249:0;;;;;:::i;:::-;;:::i;15626:105::-;;;;;;;;;;-1:-1:-1;15626:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;15710:18:0;15692:7;15710:18;;;:9;:18;;;;;;;15626:105;12981:30;;;;;;;;;;-1:-1:-1;12981:30:0;;;;-1:-1:-1;;;;;12981:30:0;;;;;;-1:-1:-1;;;;;3319:32:1;;;3301:51;;3289:2;3274:18;12981:30:0;3155:203:1;18941:376:0;;;;;;;;;;-1:-1:-1;18941:376:0;;;;;:::i;:::-;;:::i;12101:52::-;;;;;;;;;;;;;;;;18139:177;;;;;;;;;;-1:-1:-1;18139:177:0;;;;;:::i;:::-;;:::i;12160:50::-;;;;;;;;;;;;;;;;15390:78;;;;;;;;;;-1:-1:-1;15442:7:0;15460:5;-1:-1:-1;;;;;15460:5:0;15390:78;;12577:32;;;;;;;;;;-1:-1:-1;12577:32:0;;;;;;;;20688:162;;;;;;;;;;-1:-1:-1;20688:162:0;;;;;:::i;:::-;;:::i;12466:48::-;;;;;;;;;;-1:-1:-1;12466:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18328:215;;;;;;;;;;-1:-1:-1;18328:215:0;;;;;:::i;:::-;;:::i;17558:288::-;;;;;;;;;;-1:-1:-1;17558:288:0;;;;;:::i;:::-;;:::i;15120:84::-;;;;;;;;;;-1:-1:-1;15194:7:0;;;;;;;;;;;;-1:-1:-1;;;15194:7:0;;;;15120:84;;12670:31;;;;;;;;;;;;;;;;19325:544;;;;;;;;;;-1:-1:-1;19325:544:0;;;;;:::i;:::-;;:::i;18671:123::-;;;;;;;;;;-1:-1:-1;18671:123:0;;;;;:::i;:::-;;:::i;13087:19::-;;;;;;;;;;-1:-1:-1;13087:19:0;;;;-1:-1:-1;;;;;13087:19:0;;;20862:156;;;;;;;;;;-1:-1:-1;20862:156:0;;;;;:::i;:::-;;:::i;20329:200::-;;;;;;;;;;-1:-1:-1;20329:200:0;;;;;:::i;:::-;;:::i;10541:94::-;;;;;;;;;;-1:-1:-1;10541:94:0;;;;;:::i;:::-;;:::i;13186:46::-;;;;;;;;;;-1:-1:-1;13186:46:0;;;;;;;-1:-1:-1;;;;;13186:46:0;;;13115:25;;;;;;;;;;;;;;;;12892:36;;;;;;;;;;;;;;;;16631:173;;;;;;;;;;-1:-1:-1;16631:173:0;;;;;:::i;:::-;;:::i;13354:45::-;;;;;;;;;;-1:-1:-1;13354:45:0;;;;;;;;;;;15737:133;;;;;;;;;;-1:-1:-1;15737:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;15839:19:0;;;15821:7;15839:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;15737:133;18551:108;;;;;;;;;;-1:-1:-1;18551:108:0;;;;;:::i;:::-;;:::i;10711:97::-;;;;;;;;;;-1:-1:-1;10711:97:0;;;;;:::i;:::-;;:::i;16229:98::-;;;;;;;;;;;;;:::i;11240:173::-;;;;;;;;;;-1:-1:-1;11240:173:0;;;;;:::i;:::-;;:::i;19877:160::-;;;;;;;;;;-1:-1:-1;19877:160:0;;;;;:::i;:::-;;:::i;13056:24::-;;;;;;;;;;-1:-1:-1;13056:24:0;;;;-1:-1:-1;;;;;13056:24:0;;;18802:131;;;;;;;;;;-1:-1:-1;18802:131:0;;;;;:::i;:::-;;:::i;12616:45::-;;;;;;;;;;-1:-1:-1;12616:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;11042:107;;;;;;;;;;-1:-1:-1;11042:107:0;;;;;:::i;:::-;;:::i;13147:30::-;;;;;;;;;;-1:-1:-1;13147:30:0;;;;;;;;16812:104;10426:24;10439:10;10426:12;:24::i;:::-;10418:48;;;;-1:-1:-1;;;10418:48:0;;;;;;;:::i;:::-;;;;;;;;;16897:4:::1;::::0;16879:23:::1;::::0;16889:6;;-1:-1:-1;;;;;16897:4:0::1;16879:9;:23::i;:::-;16812:104:::0;:::o;15878:216::-;15982:10;15953:4;15970:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;15970:32:0;;;;;;;;;;:41;;;16027:37;15953:4;;15970:32;;16027:37;;;;16005:6;160:25:1;;148:2;133:18;;14:177;16027:37:0;;;;;;;;-1:-1:-1;16082:4:0;15878:216;;;;;:::o;24029:127::-;10923:4;10958:5;-1:-1:-1;;;;;10958:5:0;10265:10;10947:16;10249:38;;;;-1:-1:-1;;;10249:38:0;;;;;;;:::i;:::-;24096:18:::1;:16;:18::i;:::-;24125:11;:23:::0;;-1:-1:-1;;24125:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24029:127::o;21026:371::-;-1:-1:-1;;;;;21156:19:0;;21126:4;21156:19;;;:11;:19;;;;;;;;21176:10;21156:31;;;;;;;;-1:-1:-1;;21156:45:0;21153:179;;21251:69;;;;;;;;;;;-1:-1:-1;;;21251:69:0;;;;;;;;-1:-1:-1;;;;;21251:19:0;;-1:-1:-1;21251:19:0;;;:11;:19;;;;;21271:10;21251:31;;;;;;;;;;:69;;21287:6;;21251:35;:69::i;:::-;-1:-1:-1;;;;;21217:19:0;;;;;;:11;:19;;;;;;;;21237:10;21217:31;;;;;;;:103;21153:179;21349:40;21363:6;21371:9;21382:6;21349:13;:40::i;:::-;21342:47;;21026:371;;;;;;:::o;15476:142::-;15604:4;;-1:-1:-1;;;;;15604:4:0;15529:7;15710:18;;;:9;:18;;;;;;15556:54;;15583:4;;-1:-1:-1;;;;;15583:4:0;15692:7;15710:18;;;:9;:18;;;;;;15556:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;15549:61;;15476:142;:::o;20045:276::-;10426:24;10439:10;10426:12;:24::i;:::-;10418:48;;;;-1:-1:-1;;;10418:48:0;;;;;;;:::i;:::-;20177:21:::1;:39:::0;;20227:13:::1;:32:::0;;;;20270:43;::::1;;::::0;::::1;-1:-1:-1::0;;20177:39:0;::::1;;;;20270:43:::0;;;;-1:-1:-1;;20270:43:0;;;;;;;;;;::::1;::::0;;20045:276::o;20537:139::-;10426:24;10439:10;10426:12;:24::i;:::-;10418:48;;;;-1:-1:-1;;;10418:48:0;;;;;;;:::i;:::-;20630:6:::1;20624:3;:12;20616:21;;;::::0;::::1;;20648:14;:20:::0;20537:139::o;16102:115::-;16157:4;16181:28;16189:7;-1:-1:-1;;16181:7:0;:28::i;18036:95::-;10923:4;10958:5;-1:-1:-1;;;;;10958:5:0;10265:10;10947:16;10249:38;;;;-1:-1:-1;;;10249:38:0;;;;;;;:::i;:::-;18100:13:::1;:23:::0;;-1:-1:-1;;18100:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18036:95::o;17301:249::-;10426:24;10439:10;10426:12;:24::i;:::-;10418:48;;;;-1:-1:-1;;;10418:48:0;;;;;;;:::i;:::-;17411:4:::1;17367:23;17393:24:::0;;;:9:::1;:24;::::0;;;;;17435;;::::1;17427:61;;;::::0;-1:-1:-1;;;17427:61:0;;7408:2:1;17427:61:0::1;::::0;::::1;7390:21:1::0;7447:2;7427:18;;;7420:30;7486:27;7466:18;;;7459:55;7531:18;;17427:61:0::1;7206:349:1::0;17427:61:0::1;17528:4;::::0;17500:40:::1;::::0;17522:4:::1;::::0;-1:-1:-1;;;;;17528:4:0::1;17533:6:::0;17500:13:::1;:40::i;:::-;;17357:193;17301:249:::0;:::o;18941:376::-;10426:24;10439:10;10426:12;:24::i;:::-;10418:48;;;;-1:-1:-1;;;10418:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19041:23:0;::::1;19059:4;19041:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;19078:4:0::1;::::0;-1:-1:-1;;;;;19068:14:0;;::::1;19078:4:::0;::::1;19068:14;;19041:41;19033:50;;;::::0;::::1;;-1:-1:-1::0;;;;;19094:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;19094:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;19148:162:::1;;19173:19;::::0;:39:::1;::::0;-1:-1:-1;;;19173:39:0;;-1:-1:-1;;;;;7760:32:1;;;19173:39:0::1;::::0;::::1;7742:51:1::0;19210:1:0::1;7809:18:1::0;;;7802:34;19173:19:0::1;::::0;;::::1;::::0;;::::1;::::0;:28:::1;::::0;7715:18:1;;19173:39:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18941:376:::0;;:::o;19148:162::-:1;19243:19;::::0;;-1:-1:-1;;;;;19280:17:0;;::::1;;::::0;;;:9:::1;:17:::0;;;;;;;;;19243:55;;-1:-1:-1;;;19243:55:0;;::::1;::::0;::::1;7742:51:1::0;;;;7809:18;;;7802:34;;;;19243:19:0::1;::::0;;::::1;;::::0;:28:::1;::::0;7715:18:1;;19243:55:0::1;7560:282:1::0;18139:177:0;10426:24;10439:10;10426:12;:24::i;:::-;10418:48;;;;-1:-1:-1;;;10418:48:0;;;;;;;:::i;:::-;18275:3:::1;18254:18;18239:12;;:33;;;;:::i;:::-;:39;;;;:::i;:::-;18226:10;:52:::0;18290:18:::1;:16;:18::i;20688:162::-:0;10426:24;10439:10;10426:12;:24::i;:::-;10418:48;;;;-1:-1:-1;;;10418:48:0;;;;;;;:::i;:::-;20765:18:::1;:16;:18::i;:::-;20794:19;::::0;:48:::1;::::0;-1:-1:-1;;;20794:48:0;;-1:-1:-1;;;;;3319:32:1;;;20794:48:0::1;::::0;::::1;3301:51:1::0;20794:19:0::1;::::0;;::::1;::::0;;::::1;::::0;:34:::1;::::0;3274:18:1;;20794:48:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20688:162:::0;:::o;18328:215::-;10923:4;10958:5;-1:-1:-1;;;;;10958:5:0;10265:10;10947:16;10249:38;;;;-1:-1:-1;;;10249:38:0;;;;;;;:::i;:::-;18441:9:::1;18436:100;18452:20:::0;;::::1;18436:100;;;18518:6;18488:13;:27;18502:9;;18512:1;18502:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18488:27:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;18488:27:0;:36;;-1:-1:-1;;18488:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18474:3:::1;::::0;::::1;:::i;:::-;;;18436:100;;;;18328:215:::0;;;:::o;17558:288::-;10426:24;10439:10;10426:12;:24::i;:::-;10418:48;;;;-1:-1:-1;;;10418:48:0;;;;;;;:::i;:::-;17692:21:::1;17731:24:::0;;::::1;17723:50;;;::::0;-1:-1:-1;;;17723:50:0;;9127:2:1;17723:50:0::1;::::0;::::1;9109:21:1::0;9166:2;9146:18;;;9139:30;-1:-1:-1;;;9185:18:1;;;9178:44;9239:18;;17723:50:0::1;8925:338:1::0;17723:50:0::1;17784:25;::::0;-1:-1:-1;;;;;17784:17:0;::::1;::::0;:25;::::1;;;::::0;17802:6;;17784:25:::1;::::0;;;17802:6;17784:17;:25;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;17820:18;:16;:18::i;19325:544::-:0;10426:24;10439:10;10426:12;:24::i;:::-;10418:48;;;;-1:-1:-1;;;10418:48:0;;;;;;;:::i;:::-;19490:12:::1;:24:::0;;;19525:10:::1;:25:::0;;;19561:12:::1;:30:::0;;;19602:10:::1;:26:::0;;;19633:14:::1;:32:::0;;;19748:8:::1;::::0;19697:76:::1;::::0;19615:13;;19697:60:::1;::::0;;19538:12;19697:60;19505:9;19576:15;19697:16:::1;:30::i;:::-;:34:::0;::::1;:46::i;:76::-;19686:8;:87:::0;;;19817:14:::1;::::0;19804:28:::1;::::0;19686:87;19804:12:::1;:28::i;:::-;19784:17;:48:::0;19843:18:::1;:16;:18::i;18671:123::-:0;10426:24;10439:10;10426:12;:24::i;:::-;10418:48;;;;-1:-1:-1;;;10418:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18758:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;18758:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18671:123::o;20862:156::-;20942:4;20966:44;20980:10;20992:9;21003:6;20966:13;:44::i;20329:200::-;10426:24;10439:10;10426:12;:24::i;:::-;10418:48;;;;-1:-1:-1;;;10418:48:0;;;;;;;:::i;:::-;20445:19:::1;::::0;:76:::1;::::0;-1:-1:-1;;;20445:76:0;;::::1;::::0;::::1;9442:25:1::0;;;9483:18;;;9476:34;;;20445:19:0::1;::::0;;::::1;-1:-1:-1::0;;;;;20445:19:0::1;::::0;:43:::1;::::0;9415:18:1;;20445:76:0::1;9268:248:1::0;10541:94:0;10923:4;10958:5;-1:-1:-1;;;;;10958:5:0;10265:10;10947:16;10249:38;;;;-1:-1:-1;;;10249:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10601:19:0::1;;::::0;;;10623:4:::1;10601:19;::::0;;;;;;;:26;;-1:-1:-1;;10601:26:0::1;::::0;;::::1;::::0;;10541:94::o;16631:173::-;10426:24;10439:10;10426:12;:24::i;:::-;10418:48;;;;-1:-1:-1;;;10418:48:0;;;;;;;:::i;:::-;16764:3:::1;16743:18;16728:12;;:33;;;;:::i;:::-;:39;;;;:::i;:::-;16713:12;:54:::0;16778:18:::1;:16;:18::i;18551:108::-:0;10426:24;10439:10;10426:12;:24::i;:::-;10418:48;;;;-1:-1:-1;;;10418:48:0;;;;;;;:::i;:::-;18626:14:::1;:25:::0;;-1:-1:-1;;18626:25:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18551:108::o;10711:97::-;10923:4;10958:5;-1:-1:-1;;;;;10958:5:0;10265:10;10947:16;10249:38;;;;-1:-1:-1;;;10249:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10773:19:0::1;10795:5;10773:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;10773:27:0::1;::::0;;10711:97::o;16229:98::-;16274:19;;:45;;-1:-1:-1;;;16274:45:0;;16308:10;16274:45;;;3301:51:1;16274:19:0;;;;-1:-1:-1;;;;;16274:19:0;;:33;;3274:18:1;;16274:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11240:173;10923:4;10958:5;-1:-1:-1;;;;;10958:5:0;10265:10;10947:16;10249:38;;;;-1:-1:-1;;;10249:38:0;;;;;;;:::i;:::-;11316:5:::1;:11:::0;;-1:-1:-1;;;;;;11316:11:0::1;-1:-1:-1::0;;;;;11316:11:0;::::1;::::0;;::::1;::::0;;11338:19;;;-1:-1:-1;11338:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;11338:26:0::1;::::0;;::::1;::::0;;;11380:25;;3301:51:1;;;11380:25:0::1;::::0;3274:18:1;11380:25:0::1;;;;;;;11240:173:::0;:::o;19877:160::-;10426:24;10439:10;10426:12;:24::i;:::-;10418:48;;;;-1:-1:-1;;;10418:48:0;;;;;;;:::i;:::-;19964:15:::1;:36:::0;;-1:-1:-1;;;;;;19964:36:0::1;-1:-1:-1::0;;;;;19964:36:0;::::1;;::::0;;20011:18:::1;:16;:18::i;18802:131::-:0;10426:24;10439:10;10426:12;:24::i;:::-;10418:48;;;;-1:-1:-1;;;10418:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18893:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;18893:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18802:131::o;11042:107::-;-1:-1:-1;;;;;11122:19:0;11098:4;11122:19;;;:14;:19;;;;;;;;;11042:107::o;88:179::-;146:7;;178:5;182:1;178;:5;:::i;:::-;166:17;;207:1;202;:6;;194:46;;;;-1:-1:-1;;;194:46:0;;10069:2:1;194:46:0;;;10051:21:1;10108:2;10088:18;;;10081:30;10147:29;10127:18;;;10120:57;10194:18;;194:46:0;9867:351:1;16923:370:0;13446:6;:13;;-1:-1:-1;;13446:13:0;;;;;17023:16:::1;::::0;;17037:1:::1;17023:16:::0;;;;;::::1;::::0;;-1:-1:-1;;17023:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;17060:6:0::1;::::0;:13:::1;::::0;;-1:-1:-1;;;17060:13:0;;;;16999:40;;-1:-1:-1;;;;;;17060:6:0;;::::1;::::0;:11:::1;::::0;-1:-1:-1;17060:13:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17050:4;17055:1;17050:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;17050:23:0::1;;;-1:-1:-1::0;;;;;17050:23:0::1;;;::::0;::::1;17102:4;17084;17089:1;17084:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17084:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;17120:6:::1;::::0;:165:::1;::::0;-1:-1:-1;;;17120:165:0;;:6;::::1;::::0;:57:::1;::::0;17185:6;;17120:165:::1;::::0;:6:::1;::::0;17223:4;;17242:2;;17259:15:::1;::::0;17120:165:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;13464:6:0;:14;;-1:-1:-1;;13464:14:0;;;-1:-1:-1;;;;;;16923:370:0:o;16333:106::-;16381:19;;16417:13;;;16381:50;;-1:-1:-1;;;16381:50:0;;-1:-1:-1;;;;;16417:13:0;;;16381:50;;;3301:51:1;;;;16381:19:0;;;;;;;;:35;;3274:18:1;;16381:50:0;3155:203:1;419:190:0;505:7;541:12;533:6;;;;525:29;;;;-1:-1:-1;;;525:29:0;;;;;;;;:::i;:::-;-1:-1:-1;565:9:0;577:5;581:1;577;:5;:::i;:::-;565:17;419:190;-1:-1:-1;;;;;419:190:0:o;21405:1827::-;21527:16;;21497:4;;21527:16;;21524:73;;;21553:41;21568:6;21576:9;21587:6;21553:14;:41::i;:::-;21546:48;;;;21524:73;-1:-1:-1;;;;;21613:22:0;;;;;;:14;:22;;;;;;;;21612:23;:53;;;;-1:-1:-1;;;;;;21640:25:0;;;;;;:14;:25;;;;;;;;21639:26;21612:53;21609:128;;;21689:11;;;;21681:44;;;;-1:-1:-1;;;21681:44:0;;11927:2:1;21681:44:0;;;11909:21:1;11966:2;11946:18;;;11939:30;-1:-1:-1;;;11985:18:1;;;11978:50;12045:18;;21681:44:0;11725:344:1;21681:44:0;21767:12;;21757:6;:22;;:49;;;-1:-1:-1;;;;;;21783:23:0;;;;;;:15;:23;;;;;;;;21757:49;21749:79;;;;-1:-1:-1;;;21749:79:0;;12276:2:1;21749:79:0;;;12258:21:1;12315:2;12295:18;;;12288:30;-1:-1:-1;;;12334:18:1;;;12327:47;12391:18;;21749:79:0;12074:341:1;21749:79:0;21858:4;;-1:-1:-1;;;;;21858:4:0;21844:10;:18;;;;:39;;-1:-1:-1;21867:16:0;;;;21866:17;21844:39;:64;;;;-1:-1:-1;21887:21:0;;;;;;;21844:64;:109;;;;-1:-1:-1;21940:13:0;;21930:4;21912:24;;;;:9;:24;;;;;;:41;;21844:109;21841:128;;;21956:10;:8;:10::i;:::-;16514;;:15;;;21984:32;;-1:-1:-1;22012:4:0;;-1:-1:-1;;;;;21999:17:0;;;22012:4;;21999:17;21984:32;21981:117;;;-1:-1:-1;;;;;22041:17:0;;22061:1;22041:17;;;:9;:17;;;;;;22033:30;;;;;;22078:8;16596:15;16583:10;:28;16545:74;22078:8;22144:13;;;;22140:144;;;-1:-1:-1;;;;;22197:21:0;;;;;;:13;:21;;;;;;;;22196:22;:51;;;;-1:-1:-1;;;;;;22223:24:0;;;;;;:13;:24;;;;;;;;22222:25;22196:51;22174:102;;;;-1:-1:-1;;;22174:102:0;;12622:2:1;22174:102:0;;;12604:21:1;12661:2;12641:18;;;12634:30;-1:-1:-1;;;12680:18:1;;;12673:41;12731:18;;22174:102:0;12420:335:1;22174:102:0;22343:53;;;;;;;;;;;-1:-1:-1;;;22343:53:0;;;;;;;;-1:-1:-1;;;;;22343:17:0;;-1:-1:-1;22343:17:0;;;:9;:17;;;;;;;;:53;;22365:6;;22343:21;:53::i;:::-;-1:-1:-1;;;;;22323:17:0;;;;;;;:9;:17;;;;;;;;:73;;;;22421:26;;;;;:15;:26;;;;;;;22420:27;:45;;;;-1:-1:-1;22451:14:0;;;;22420:45;22417:141;;;22535:10;;-1:-1:-1;;;;;22499:20:0;;;;;;:9;:20;;;;;;:32;;22524:6;22499:24;:32::i;:::-;:46;;22491:55;;;;;;-1:-1:-1;;;;;22593:19:0;;22570;22593;;;:11;:19;;;;;;;;22592:20;:47;;;;-1:-1:-1;;;;;;22617:22:0;;;;;;:11;:22;;;;;;;;22616:23;22592:47;:93;;22679:6;22592:93;;;22642:34;22650:6;22658:9;22669:6;22642:7;:34::i;:::-;-1:-1:-1;;;;;22719:20:0;;;;;;:9;:20;;;;;;22570:115;;-1:-1:-1;22719:37:0;;22570:115;22719:24;:37::i;:::-;-1:-1:-1;;;;;22696:20:0;;;;;;;:9;:20;;;;;;;;:60;;;;22802:24;;;;;:16;:24;;;;;;;22798:127;;22847:19;;;-1:-1:-1;;;;;22884:17:0;;;;;;;:9;:17;;;;;;;;;22847:55;;-1:-1:-1;;;22847:55:0;;;;;7742:51:1;;;;7809:18;;;7802:34;;;;22847:19:0;;;;;;:28;;7715:18:1;;22847:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22843:71;;-1:-1:-1;;;;;22941:27:0;;;;;;:16;:27;;;;;;;;22937:137;;22989:19;;;-1:-1:-1;;;;;23029:20:0;;;;;;;:9;:20;;;;;;;;;22989:61;;-1:-1:-1;;;22989:61:0;;;;;7742:51:1;;;;7809:18;;;7802:34;;;;22989:19:0;;;;;;:28;;7715:18:1;;22989:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22985:77;;23090:19;;23118:14;;23090:43;;-1:-1:-1;;;;;;23090:43:0;;;;;160:25:1;;;;23090:19:0;;;;-1:-1:-1;;;;;23090:19:0;;:27;;133:18:1;;23090:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23086:59;23179:9;-1:-1:-1;;;;;23162:40:0;23171:6;-1:-1:-1;;;;;23162:40:0;;23190:11;23162:40;;;;160:25:1;;148:2;133:18;;14:177;23162:40:0;;;;;;;;-1:-1:-1;23220:4:0;;21405:1827;-1:-1:-1;;;;21405:1827:0:o;275:136::-;333:7;360:43;364:1;367;360:43;;;;;;;;;;;;;;;;;:3;:43::i;23244:330::-;23374:53;;;;;;;;;;;-1:-1:-1;;;23374:53:0;;;;;;;;-1:-1:-1;;;;;23374:17:0;;23337:4;23374:17;;;:9;:17;;;;;;;:53;;23396:6;;23374:21;:53::i;:::-;-1:-1:-1;;;;;23354:17:0;;;;;;;:9;:17;;;;;;:73;;;;23461:20;;;;;;;:32;;23486:6;23461:24;:32::i;:::-;-1:-1:-1;;;;;23438:20:0;;;;;;;:9;:20;;;;;;;:55;;;;23509:35;;;;;;;;;;23537:6;160:25:1;;148:2;133:18;;14:177;23509:35:0;;;;;;;;-1:-1:-1;23562:4:0;23244:330;;;;;:::o;24164:1822::-;13596:16;:23;;-1:-1:-1;;13596:23:0;13615:4;13596:23;;;24270:4:::1;13596:16:::0;24252:24;;;:9:::1;:24;::::0;;;;;24372:10:::1;::::0;24351:8:::1;::::0;24333:12:::1;::::0;24252:24;;13596:16;24313:70:::1;::::0;24372:10;24313:54:::1;::::0;24365:1:::1;::::0;24313:47:::1;::::0;;;24252:24;;24313:19:::1;:33::i;:::-;:37:::0;::::1;:47::i;:70::-;24287:96:::0;-1:-1:-1;24394:20:0::1;24417:36;:15:::0;24287:96;24417:19:::1;:36::i;:::-;24490:16;::::0;;24504:1:::1;24490:16:::0;;;;;::::1;::::0;;24394:59;;-1:-1:-1;24466:21:0::1;::::0;24490:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;24490:16:0::1;24466:40;;24535:4;24517;24522:1;24517:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24517:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;24561:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;24561:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;24517:7;;24561:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24551:4;24556:1;24551:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24551:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;24587:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;24587:188:0;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;24659:12;;24587:6:::1;::::0;24702:4;;24729::::1;::::0;24749:15:::1;::::0;24587:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;24877:12:0::1;::::0;24808:21:::1;::::0;-1:-1:-1;24788:17:0::1;::::0;-1:-1:-1;24864:33:0::1;::::0;24877:19:::1;::::0;24894:1:::1;24877:16;:19::i;:::-;24864:8;::::0;;:12:::1;:33::i;:::-;24842:55;;24918:26;24947:51;24996:1;24947:44;24979:11;24947:27;24961:12;;24947:9;:13;;:27;;;;:::i;:51::-;24918:80;;25009:24;25036:42;25066:11;25036:25;25050:10;;25036:9;:13;;:25;;;;:::i;:42::-;25009:69;;25089:27;25119:42;25149:11;25119:25;25133:10;;25119:9;:13;;:25;;;;:::i;:42::-;25089:72;;25172:26;25201:44;25233:11;25201:27;25215:12;;25201:9;:13;;:27;;;;:::i;:44::-;25172:73;;25256:24;25283:40;25311:11;25283:23;25297:8;;25283:9;:13;;:23;;;;:::i;:40::-;25256:67;;25350:19;;;;;;;;;-1:-1:-1::0;;;;;25350:19:0::1;-1:-1:-1::0;;;;;25350:27:0::1;;25385:19;25350:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;25346:73:::0;25439:15:::1;::::0;25431:53:::1;::::0;-1:-1:-1;;;;;25439:15:0;;::::1;::::0;25431:53;::::1;;;::::0;25465:18;;25439:15:::1;25431:53:::0;25439:15;25431:53;25465:18;25439:15;25431:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;25503:13:0::1;::::0;25495:49:::1;::::0;-1:-1:-1;;;;;25503:13:0;;::::1;::::0;25495:49;::::1;;;::::0;25527:16;;25503:13:::1;25495:49:::0;25503:13;25495:49;25527:16;25503:13;25495:49;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;25563:13:0::1;::::0;25555:49:::1;::::0;-1:-1:-1;;;;;25563:13:0;;::::1;::::0;25555:49;::::1;;;::::0;25587:16;;25563:13:::1;25555:49:::0;25563:13;25555:49;25587:16;25563:13;25555:49;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;25620:19:0;;25617:362:::1;;25655:6;::::0;25829:21:::1;::::0;25655:244:::1;::::0;-1:-1:-1;;;25655:244:0;;25731:4:::1;25655:244;::::0;::::1;13688:34:1::0;13738:18;;;13731:34;;;25655:6:0::1;13781:18:1::0;;;13774:34;;;13824:18;;;13817:34;-1:-1:-1;;;;;25829:21:0;;::::1;13867:19:1::0;;;13860:44;25869:15:0::1;13920:19:1::0;;;13913:35;25655:6:0;::::1;::::0;:22:::1;::::0;25685:18;;13622:19:1;;25655:244:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;25919:48:0::1;::::0;;9442:25:1;;;9498:2;9483:18;;9476:34;;;25919:48:0::1;::::0;-1:-1:-1;9415:18:1;25919:48:0::1;;;;;;;25617:362;-1:-1:-1::0;;13642:16:0;:24;;-1:-1:-1;;13642:24:0;;;-1:-1:-1;;;;;;;;;24164:1822:0:o;23582:439::-;23722:4;;23668:7;;;;-1:-1:-1;;;;;23722:17:0;;;:4;;:17;:48;;23762:8;;23722:48;;;23742:17;;23722:48;23698:72;-1:-1:-1;23781:17:0;23801:34;23831:3;23801:25;:6;23698:72;23801:10;:25::i;:34::-;23893:4;23875:24;;;;:9;:24;;;;;;23781:54;;-1:-1:-1;23875:39:0;;23781:54;23875:28;:39::i;:::-;23866:4;23848:24;;;;:9;:24;;;;;;;:66;;;;23930:42;;-1:-1:-1;;;;;23930:42:0;;;;;;;23962:9;160:25:1;;148:2;133:18;;14:177;23930:42:0;;;;;;;;23992:21;:6;24003:9;23992:10;:21::i;:::-;23985:28;23582:439;-1:-1:-1;;;;;;23582:439:0:o;617:224::-;675:7;699:1;704;699:6;695:25;;-1:-1:-1;716:1:0;709:8;;695:25;730:9;742:5;746:1;742;:5;:::i;:::-;730:17;-1:-1:-1;775:1:0;766:5;770:1;730:17;766:5;:::i;:::-;:10;758:56;;;;-1:-1:-1;;;758:56:0;;14472:2:1;758:56:0;;;14454:21:1;14511:2;14491:18;;;14484:30;14550:34;14530:18;;;14523:62;-1:-1:-1;;;14601:18:1;;;14594:31;14642:19;;758:56:0;14270:397:1;849:132:0;907:7;934:39;938:1;941;934:39;;;;;;;;;;;;;;;;;1075:7;1110:12;1103:5;1095:28;;;;-1:-1:-1;;;1095:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1134:9:0;1146:5;1150:1;1146;:5;:::i;196:180:1:-;255:6;308:2;296:9;287:7;283:23;279:32;276:52;;;324:1;321;314:12;276:52;-1:-1:-1;347:23:1;;196:180;-1:-1:-1;196:180:1:o;381:548::-;493:4;522:2;551;540:9;533:21;583:6;577:13;626:6;621:2;610:9;606:18;599:34;651:1;661:140;675:6;672:1;669:13;661:140;;;770:14;;;766:23;;760:30;736:17;;;755:2;732:26;725:66;690:10;;661:140;;;665:3;850:1;845:2;836:6;825:9;821:22;817:31;810:42;920:2;913;909:7;904:2;896:6;892:15;888:29;877:9;873:45;869:54;861:62;;;;381:548;;;;:::o;934:131::-;-1:-1:-1;;;;;1009:31:1;;999:42;;989:70;;1055:1;1052;1045:12;1070:315;1138:6;1146;1199:2;1187:9;1178:7;1174:23;1170:32;1167:52;;;1215:1;1212;1205:12;1167:52;1254:9;1241:23;1273:31;1298:5;1273:31;:::i;:::-;1323:5;1375:2;1360:18;;;;1347:32;;-1:-1:-1;;;1070:315:1:o;1582:160::-;1647:20;;1703:13;;1696:21;1686:32;;1676:60;;1732:1;1729;1722:12;1676:60;1582:160;;;:::o;1747:180::-;1803:6;1856:2;1844:9;1835:7;1831:23;1827:32;1824:52;;;1872:1;1869;1862:12;1824:52;1895:26;1911:9;1895:26;:::i;1932:456::-;2009:6;2017;2025;2078:2;2066:9;2057:7;2053:23;2049:32;2046:52;;;2094:1;2091;2084:12;2046:52;2133:9;2120:23;2152:31;2177:5;2152:31;:::i;:::-;2202:5;-1:-1:-1;2259:2:1;2244:18;;2231:32;2272:33;2231:32;2272:33;:::i;:::-;1932:456;;2324:7;;-1:-1:-1;;;2378:2:1;2363:18;;;;2350:32;;1932:456::o;2393:247::-;2452:6;2505:2;2493:9;2484:7;2480:23;2476:32;2473:52;;;2521:1;2518;2511:12;2473:52;2560:9;2547:23;2579:31;2604:5;2579:31;:::i;2834:316::-;2905:6;2913;2921;2974:2;2962:9;2953:7;2949:23;2945:32;2942:52;;;2990:1;2987;2980:12;2942:52;3013:26;3029:9;3013:26;:::i;:::-;3003:36;;3086:2;3075:9;3071:18;3058:32;3048:42;;3109:35;3140:2;3129:9;3125:18;3109:35;:::i;:::-;3099:45;;2834:316;;;;;:::o;3363:315::-;3428:6;3436;3489:2;3477:9;3468:7;3464:23;3460:32;3457:52;;;3505:1;3502;3495:12;3457:52;3544:9;3531:23;3563:31;3588:5;3563:31;:::i;:::-;3613:5;-1:-1:-1;3637:35:1;3668:2;3653:18;;3637:35;:::i;:::-;3627:45;;3363:315;;;;;:::o;3683:689::-;3775:6;3783;3791;3844:2;3832:9;3823:7;3819:23;3815:32;3812:52;;;3860:1;3857;3850:12;3812:52;3900:9;3887:23;3929:18;3970:2;3962:6;3959:14;3956:34;;;3986:1;3983;3976:12;3956:34;4024:6;4013:9;4009:22;3999:32;;4069:7;4062:4;4058:2;4054:13;4050:27;4040:55;;4091:1;4088;4081:12;4040:55;4131:2;4118:16;4157:2;4149:6;4146:14;4143:34;;;4173:1;4170;4163:12;4143:34;4228:7;4221:4;4211:6;4208:1;4204:14;4200:2;4196:23;4192:34;4189:47;4186:67;;;4249:1;4246;4239:12;4186:67;4280:4;4272:13;;;;-1:-1:-1;4304:6:1;-1:-1:-1;4329:37:1;;4345:20;;;-1:-1:-1;4329:37:1;:::i;4377:323::-;4453:6;4461;4514:2;4502:9;4493:7;4489:23;4485:32;4482:52;;;4530:1;4527;4520:12;4482:52;4566:9;4553:23;4543:33;;4626:2;4615:9;4611:18;4598:32;4639:31;4664:5;4639:31;:::i;:::-;4689:5;4679:15;;;4377:323;;;;;:::o;4705:454::-;4800:6;4808;4816;4824;4832;4885:3;4873:9;4864:7;4860:23;4856:33;4853:53;;;4902:1;4899;4892:12;4853:53;-1:-1:-1;;4925:23:1;;;4995:2;4980:18;;4967:32;;-1:-1:-1;5046:2:1;5031:18;;5018:32;;5097:2;5082:18;;5069:32;;-1:-1:-1;5148:3:1;5133:19;5120:33;;-1:-1:-1;4705:454:1;-1:-1:-1;4705:454:1:o;5164:248::-;5232:6;5240;5293:2;5281:9;5272:7;5268:23;5264:32;5261:52;;;5309:1;5306;5299:12;5261:52;-1:-1:-1;;5332:23:1;;;5402:2;5387:18;;;5374:32;;-1:-1:-1;5164:248:1:o;5653:388::-;5721:6;5729;5782:2;5770:9;5761:7;5757:23;5753:32;5750:52;;;5798:1;5795;5788:12;5750:52;5837:9;5824:23;5856:31;5881:5;5856:31;:::i;:::-;5906:5;-1:-1:-1;5963:2:1;5948:18;;5935:32;5976:33;5935:32;5976:33;:::i;6532:335::-;6734:2;6716:21;;;6773:2;6753:18;;;6746:30;-1:-1:-1;;;6807:2:1;6792:18;;6785:41;6858:2;6843:18;;6532:335::o;6872:329::-;7074:2;7056:21;;;7113:1;7093:18;;;7086:29;-1:-1:-1;;;7146:2:1;7131:18;;7124:36;7192:2;7177:18;;6872:329::o;8126:127::-;8187:10;8182:3;8178:20;8175:1;8168:31;8218:4;8215:1;8208:15;8242:4;8239:1;8232:15;8258:168;8331:9;;;8362;;8379:15;;;8373:22;;8359:37;8349:71;;8400:18;;:::i;8431:217::-;8471:1;8497;8487:132;;8541:10;8536:3;8532:20;8529:1;8522:31;8576:4;8573:1;8566:15;8604:4;8601:1;8594:15;8487:132;-1:-1:-1;8633:9:1;;8431:217::o;8653:127::-;8714:10;8709:3;8705:20;8702:1;8695:31;8745:4;8742:1;8735:15;8769:4;8766:1;8759:15;8785:135;8824:3;8845:17;;;8842:43;;8865:18;;:::i;:::-;-1:-1:-1;8912:1:1;8901:13;;8785:135::o;9737:125::-;9802:9;;;9823:10;;;9820:36;;;9836:18;;:::i;10355:251::-;10425:6;10478:2;10466:9;10457:7;10453:23;10449:32;10446:52;;;10494:1;10491;10484:12;10446:52;10526:9;10520:16;10545:31;10570:5;10545:31;:::i;10611:461::-;10664:3;10702:5;10696:12;10729:6;10724:3;10717:19;10755:4;10784:2;10779:3;10775:12;10768:19;;10821:2;10814:5;10810:14;10842:1;10852:195;10866:6;10863:1;10860:13;10852:195;;;10931:13;;-1:-1:-1;;;;;10927:39:1;10915:52;;10987:12;;;;11022:15;;;;10963:1;10881:9;10852:195;;;-1:-1:-1;11063:3:1;;10611:461;-1:-1:-1;;;;;10611:461:1:o;11077:510::-;11348:6;11337:9;11330:25;11391:3;11386:2;11375:9;11371:18;11364:31;11311:4;11412:57;11464:3;11453:9;11449:19;11441:6;11412:57;:::i;:::-;-1:-1:-1;;;;;11505:32:1;;;;11500:2;11485:18;;11478:60;-1:-1:-1;11569:2:1;11554:18;11547:34;11404:65;11077:510;-1:-1:-1;;11077:510:1:o;11592:128::-;11659:9;;;11680:11;;;11677:37;;;11694:18;;:::i;12760:582::-;13059:6;13048:9;13041:25;13102:6;13097:2;13086:9;13082:18;13075:34;13145:3;13140:2;13129:9;13125:18;13118:31;13022:4;13166:57;13218:3;13207:9;13203:19;13195:6;13166:57;:::i;:::-;-1:-1:-1;;;;;13259:32:1;;;;13254:2;13239:18;;13232:60;-1:-1:-1;13323:3:1;13308:19;13301:35;13158:65;12760:582;-1:-1:-1;;;12760:582:1:o;13959:306::-;14047:6;14055;14063;14116:2;14104:9;14095:7;14091:23;14087:32;14084:52;;;14132:1;14129;14122:12;14084:52;14161:9;14155:16;14145:26;;14211:2;14200:9;14196:18;14190:25;14180:35;;14255:2;14244:9;14240:18;14234:25;14224:35;;13959:306;;;;;:::o

Swarm Source

ipfs://1b44fc19355dff7a5662b4458e81cc5b5b2b31b833240903d0fb0feac3e0bff9
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.