ETH Price: $2,309.43 (-0.28%)

Token

Blind Ape (BAPE)
 

Overview

Max Total Supply

1,000,000 BAPE

Holders

82

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000000446948 BAPE

Value
$0.00
0xae58e7b7aad99dc8d4409a7f05293b2945656fd6
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:
bape

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-02
*/

/**
Blind Ape is your ticket to never missing out on the wildest crypto rides. 

Dive in and seize those moonshot moments and get yourself a spot for our revenue-sharing program. 

Explore the madness now!


Socials:
https://blindape.tech/

https://t.me/BlindApeEntry

https://twitter.com/BlindApeERC


Signal Bot:
https://t.me/blindapesignals
*/

// SPDX-License-Identifier: Unlicensed

pragma solidity 0.8.21;

/**
 * Standard SafeMath, stripped down to just add/sub/mul/div
 */
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) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
}

/**
 * ERC20 standard interface.
 */
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);
}

 
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
 
    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

contract Ownable is Context {
    address private _owner;
 
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}


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 IBlindApe {
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
    function setShare(address shareholder, uint256 amount) external;
    function deposit(uint256 newRewards) external;
    function process(uint256 gas) external;
    function gibTokens(address shareholder) external;
}


contract BlindApe is IBlindApe {

    using SafeMath for uint256;
    address _token;

    address public BAPELP;

    IDEXRouter router;

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

    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 = 30 minutes;
    uint256 public minDistribution = 0 * (10 ** 9);

    uint256 public currentIndex;
    bool initialized;

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

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

    constructor () {
        _token = msg.sender;
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    }
    
    receive() external payable {}

    function _setBAPELP(address rewardsAddress) external onlyToken {
        BAPELP = rewardsAddress;
    }

    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(uint256 newRewards) external override onlyToken {
        totalDividends = totalDividends.add(newRewards);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(newRewards).div(totalShares));
    }
    
    function process(uint256 gas) external override {
        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) public 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);
            IERC20(BAPELP).transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }
    
    function gibTokens(address shareholder) external override onlyToken {
        distributeDividend(shareholder);
    }

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

contract bape is Context, IERC20, Ownable {
    using SafeMath for uint256;

    address public BAPELP;

    string private constant _name = "Blind Ape";
    string private constant _symbol = "BAPE";
    uint8 private constant _decimals = 18;
    
    uint256 private _totalSupply = 1000000 * (10 ** _decimals);

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

    address private WETH;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    bool public antiBot = true;

    mapping (address => bool) private bots; 
    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isDividendExempt;

    uint256 public launchedAt;
    address public lpWallet;

    uint256 public buyFee = 50;
    uint256 public sellFee = 50; //tax divisor 1000

    uint256 public toLpReflections = 40;
    uint256 public toMarketing = 60;

    uint256 public allocationSum = 100;

    IDEXRouter public router;
    address public pair;
    address public factory;
    address private tokenOwner;
    address public marketingWallet = payable(0xB1aDb6fD93fF6d04F0D856E9FEe71bc6D6e6196A);

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public tradingOpen = false;
    
    BlindApe public blindApe;
    uint256 public blindApeGas = 0;

    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    uint256 public maxTx = _totalSupply.div(50);
    uint256 public maxWallet = _totalSupply.div(50);
    uint256 public swapThreshold = _totalSupply.div(400);

    constructor () {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
            
        WETH = router.WETH();
        
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        
        _allowances[address(this)][address(router)] = type(uint256).max;

        blindApe = new BlindApe();
        
        isFeeExempt[owner()] = true;
        isFeeExempt[marketingWallet] = true;            

        isDividendExempt[pair] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;    

        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[pair] = true;
        isTxLimitExempt[DEAD] = true;
        isTxLimitExempt[marketingWallet] = true;  


        _balances[owner()] = _totalSupply;
    
        emit Transfer(address(0), owner(), _totalSupply);
    }

    receive() external payable { }


    function setBots(address[] memory bots_) external onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function setBAPELP(address rewardsAddress) external onlyOwner {
        BAPELP = rewardsAddress;
        blindApe._setBAPELP(rewardsAddress);
    }

    function setLPWallet(address lpReceiver) external onlyOwner {
        lpWallet = lpReceiver;
    }

    //once enabled, cannot be reversed
    function openTrading() external onlyOwner {
        launchedAt = block.number;
        tradingOpen = true;
    }      

    function changeBuyFees(uint256 newBuyFee) external onlyOwner {
        require (newBuyFee <= 1000, "must keep fees below 10%");
        buyFee = newBuyFee;
    }

    function changeTotalFees(uint256 newBuyFee, uint256 newSellFee) external onlyOwner {
        require(newBuyFee <= 1000, "must keep fees below 10%"); 
        require(newSellFee <= 1000, "must keep fees below 10%");
        buyFee = newBuyFee;
        sellFee = newSellFee;
    } 
    
    function changeFeeAllocation(uint256 newRewardFee, uint256 newMarketingFee) external onlyOwner {
        toLpReflections = newRewardFee;
        toMarketing = newMarketingFee;
    }

    function changeTxLimit(uint256 newLimit) external onlyOwner {
        maxTx = newLimit;
    }

    function changeWalletLimit(uint256 newLimit) external onlyOwner {
        maxWallet  = newLimit;
    }
    
    function changeIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

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

    function setMarketingWallet(address payable newMarketingWallet) external onlyOwner {
        marketingWallet = payable(newMarketingWallet);
    }

    function setOwnerWallet(address payable newOwnerWallet) external onlyOwner {
        tokenOwner = newOwnerWallet;
    }     

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

    function setDistributionCriteria(uint256 newMinPeriod, uint256 newMinDistribution) external onlyOwner {
        blindApe.setDistributionCriteria(newMinPeriod, newMinDistribution);        
    }

    function delBot(address notbot) external onlyOwner {
        bots[notbot] = false;
    }

    function _setIsDividendExempt(address holder, bool exempt) internal {
        require(holder != address(this) && holder != pair);
        isDividendExempt[holder] = exempt;
        if(exempt){
            blindApe.setShare(holder, 0);
        }else{
            blindApe.setShare(holder, _balances[holder]);
        }
    }

    function setIsDividendExempt(address holder, bool exempt) external onlyOwner {
        _setIsDividendExempt(holder, exempt);
    }

    function changeBlindApeGas(uint256 newGas) external onlyOwner {
        blindApeGas = newGas;
    }           

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

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner(); }
    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, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transfer(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transfer(sender, recipient, amount);
    }

    function _transfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        if (sender!= owner() && recipient!= owner()) require(tradingOpen, "pump the breaks."); //transfers disabled before tradingActive
        require(!bots[sender] && !bots[recipient]);

        if(inSwapAndLiquify){ return _basicTransfer(sender, recipient, amount); }

        require(amount <= maxTx || isTxLimitExempt[sender], "tx");

        if(!isTxLimitExempt[recipient] && antiBot)
        {
            require(_balances[recipient].add(amount) <= maxWallet, "wallet");
        }

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

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

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

        if(!isDividendExempt[recipient]) {
            try blindApe.setShare(recipient, _balances[recipient]) {} 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 ? sellFee : buyFee;
        uint256 feeAmount = amount.mul(feeApplicable).div(1000);

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

        return amount.sub(feeAmount);
    }
    
    function swapTokensForEth(uint256 tokenAmount) private {

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

        approve(address(this), tokenAmount);

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function addLpRewards(uint256 tokenAmount, uint256 ethAmount) private {
        router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            lpWallet,
            block.timestamp
        );
    }

    function swapBack() internal lockTheSwap {
    
        uint256 tokenBalance = _balances[address(this)]; 
        uint256 tokensForLpRewards = tokenBalance.mul(toLpReflections).div(100).div(2);     
        uint256 amountToSwap = tokenBalance.sub(tokensForLpRewards);

        swapTokensForEth(amountToSwap);

        uint256 rewardBalanceBefore = IERC20(BAPELP).balanceOf(address(blindApe));
        uint256 totalEthBalance = address(this).balance;
        uint256 ethForLpRewards = totalEthBalance.mul(toLpReflections).div(100).div(2);

        if (tokensForLpRewards > 0){
            addLpRewards(tokensForLpRewards, ethForLpRewards);
        }

        uint256 newRewards = IERC20(BAPELP).balanceOf(address(blindApe)).sub(rewardBalanceBefore);
        
        blindApe.deposit(newRewards);
      
        if (totalEthBalance > 0){
            payable(marketingWallet).transfer(address(this).balance);
        }
    }

    function manualSwapBack() external onlyOwner {
        swapBack();
    }

    function clearStuckEth() external onlyOwner {
        uint256 contractETHBalance = address(this).balance;
        if(contractETHBalance > 0){          
            payable(marketingWallet).transfer(contractETHBalance);
        }
    }

    function manualDeposit() external {
        uint256 newRewards = IERC20(BAPELP).balanceOf(address(this));
        blindApe.deposit(newRewards);
    }

    function manualProcessGas(uint256 manualGas) external onlyOwner {
        blindApe.process(manualGas);
    }

    function checkPendingReflections(address shareholder) external view returns (uint256) {
        return blindApe.getUnpaidEarnings(shareholder);
    }

    function getRewards() external {
        blindApe.gibTokens(msg.sender);
    }
}

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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"BAPELP","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allocationSum","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":[],"name":"antiBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blindApe","outputs":[{"internalType":"contract BlindApe","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blindApeGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newGas","type":"uint256"}],"name":"changeBlindApeGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyFee","type":"uint256"}],"name":"changeBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newRewardFee","type":"uint256"},{"internalType":"uint256","name":"newMarketingFee","type":"uint256"}],"name":"changeFeeAllocation","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":"enableSwapBack","type":"bool"},{"internalType":"uint256","name":"newSwapBackLimit","type":"uint256"}],"name":"changeSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyFee","type":"uint256"},{"internalType":"uint256","name":"newSellFee","type":"uint256"}],"name":"changeTotalFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"checkPendingReflections","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"getRewards","outputs":[],"stateMutability":"nonpayable","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":"","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":"lpWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualDeposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"manualGas","type":"uint256"}],"name":"manualProcessGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"rewardsAddress","type":"address"}],"name":"setBAPELP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMinPeriod","type":"uint256"},{"internalType":"uint256","name":"newMinDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"lpReceiver","type":"address"}],"name":"setLPWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newMarketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwnerWallet","type":"address"}],"name":"setOwnerWallet","outputs":[],"stateMutability":"nonpayable","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":"toLpReflections","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toMarketing","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":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126012600a620005d3565b6200002190620f4240620005e3565b6002819055600780546001600160a01b03191661dead179055600880546001600160a81b031916600160a01b1790556032600f81905560108190556028601155603c601255606460135560188054600162ffff0160a01b031916750100b1adb6fd93ff6d04f0d856e9fee71bc6d6e6196a1790555f601a55620000a5919062000423565b601b55600254620000b890603262000423565b601c55600254620000cc9061019062000423565b601d55348015620000db575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa1580156200017f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001a59190620005fd565b600680546001600160a01b0319166001600160a01b039283161790556014546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa15801562000202573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002289190620005fd565b6006546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303815f875af115801562000277573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200029d9190620005fd565b601580546001600160a01b0319166001600160a01b03928316179055305f90815260046020908152604080832060145490941683529290528190205f19905551620002e890620004b8565b604051809103905ff08015801562000302573d5f803e3d5ffd5b50601980546001600160a01b0319166001600160a01b039283161790555f805482168152600a60209081526040808320805460ff199081166001908117909255601880548716865283862080548316841790556015805488168752600c86528487208054841685179055308752848720805484168517905560078054891688528588208054851686179055875489168852600b8752858820805485168617905590548816875284872080548416851790555487168652838620805483168417905554861685528285208054909116909117905560025483548516845260038352818420819055835491519081529316927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000699565b5f6200046c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200047560201b60201c565b90505b92915050565b5f8183620004a15760405162461bcd60e51b81526004016200049891906200062c565b60405180910390fd5b505f620004af848662000679565b95945050505050565b610dae8062002e5e83390190565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200051a57815f1904821115620004fe57620004fe620004c6565b808516156200050c57918102915b93841c9390800290620004df565b509250929050565b5f8262000532575060016200046f565b816200054057505f6200046f565b8160018114620005595760028114620005645762000584565b60019150506200046f565b60ff841115620005785762000578620004c6565b50506001821b6200046f565b5060208310610133831016604e8410600b8410161715620005a9575081810a6200046f565b620005b58383620004da565b805f1904821115620005cb57620005cb620004c6565b029392505050565b5f6200046c60ff84168362000522565b80820281158282048414176200046f576200046f620004c6565b5f602082840312156200060e575f80fd5b81516001600160a01b038116811462000625575f80fd5b9392505050565b5f6020808352835180828501525f5b8181101562000659578581018301518582016040015282016200063b565b505f604082860101526040601f19601f8301168501019250505092915050565b5f826200069457634e487b7160e01b5f52601260045260245ffd5b500490565b6127b780620006a75f395ff3fe6080604052600436106103a0575f3560e01c806375df1305116101de578063a9059cbb11610108578063dd62ed3e1161009d578063f8b45b051161006d578063f8b45b0514610aa7578063fa05db0f14610abc578063fabe628314610adb578063ffb54a9914610afa575f80fd5b8063dd62ed3e14610a06578063f2fde38b14610a4a578063f708a64f14610a69578063f887ea4014610a88575f80fd5b8063c45a0155116100d8578063c45a015514610995578063c9567bf9146109b4578063ca19e830146109c8578063d920334e146109e7575f80fd5b8063a9059cbb14610923578063b515566a14610942578063bb542ef014610961578063bf56b37114610980575f80fd5b806387d991cc1161017e5780638da5cb5b1161014e5780638da5cb5b1461086f57806395d89b41146108b9578063a3a2e89e146108e5578063a8aa1b3114610904575f80fd5b806387d991cc1461083c57806389291a8f1461085b578063893d20e81461086f5780638b42507f1461088b575f80fd5b80637bd421fa116101b95780637bd421fa146107bf5780637db1342c146107de5780637dfcbe34146107fd578063819340311461081d575f80fd5b806375df13051461076c57806375f0a8741461078157806377359aa7146107a0575f80fd5b80633dab5269116102ca5780635d098b381161025f57806370a082311161022f57806370a08231146106fa578063715018a61461072e5780637437681e146107425780637518df7714610757575f80fd5b80635d098b38146106945780636303516c146106b357806366eb3785146106d25780636ab86dc1146106e6575f80fd5b8063470624021161029a578063470624021461062b5780634a74bb02146106405780634bb8d20314610660578063571ac8b014610675575f80fd5b80633dab52691461059b5780633f4218e0146105ba5780634355855a146105e85780634543437714610616575f80fd5b8063273123b71161034057806330ca34ee1161031057806330ca34ee1461050b578063313ce5671461052a57806337bd1a89146105455780633b0aacbc1461057c575f80fd5b8063273123b7146104a45780632b112e49146104c35780632b14ca56146104d75780632d48e896146104ec575f80fd5b8063095ea7b31161037b578063095ea7b31461042357806318160ddd14610452578063234730731461046657806323b872dd14610485575f80fd5b80630445b667146103ab5780630572b0cc146103d357806306fdde03146103e9575f80fd5b366103a757005b5f80fd5b3480156103b6575f80fd5b506103c0601d5481565b6040519081526020015b60405180910390f35b3480156103de575f80fd5b506103e7610b1a565b005b3480156103f4575f80fd5b50604080518082019091526009815268426c696e642041706560b81b60208201525b6040516103ca919061231d565b34801561042e575f80fd5b5061044261043d36600461238c565b610b74565b60405190151581526020016103ca565b34801561045d575f80fd5b506002546103c0565b348015610471575f80fd5b506103e76104803660046123b6565b610be0565b348015610490575f80fd5b5061044261049f3660046123cd565b610c17565b3480156104af575f80fd5b506103e76104be36600461240b565b610cd5565b3480156104ce575f80fd5b506103c0610d1e565b3480156104e2575f80fd5b506103c060105481565b3480156104f7575f80fd5b506103e7610506366004612426565b610d6e565b348015610516575f80fd5b506103e7610525366004612426565b610dfc565b348015610535575f80fd5b50604051601281526020016103ca565b348015610550575f80fd5b50601954610564906001600160a01b031681565b6040516001600160a01b0390911681526020016103ca565b348015610587575f80fd5b506103e761059636600461240b565b610e74565b3480156105a6575f80fd5b506103e76105b5366004612455565b610ebf565b3480156105c5575f80fd5b506104426105d436600461240b565b600a6020525f908152604090205460ff1681565b3480156105f3575f80fd5b5061044261060236600461240b565b600c6020525f908152604090205460ff1681565b348015610621575f80fd5b506103c060135481565b348015610636575f80fd5b506103c0600f5481565b34801561064b575f80fd5b5060185461044290600160a81b900460ff1681565b34801561066b575f80fd5b506103c060115481565b348015610680575f80fd5b5061044261068f36600461240b565b610f0a565b34801561069f575f80fd5b506103e76106ae36600461240b565b610f16565b3480156106be575f80fd5b50600e54610564906001600160a01b031681565b3480156106dd575f80fd5b506103e7610f61565b3480156106f1575f80fd5b506103e7610f94565b348015610705575f80fd5b506103c061071436600461240b565b6001600160a01b03165f9081526003602052604090205490565b348015610739575f80fd5b506103e761105c565b34801561074d575f80fd5b506103c0601b5481565b348015610762575f80fd5b506103c0601a5481565b348015610777575f80fd5b506103c060125481565b34801561078c575f80fd5b50601854610564906001600160a01b031681565b3480156107ab575f80fd5b506103c06107ba36600461240b565b6110cd565b3480156107ca575f80fd5b50600154610564906001600160a01b031681565b3480156107e9575f80fd5b506103e76107f83660046123b6565b611139565b348015610808575f80fd5b5060085461044290600160a01b900460ff1681565b348015610828575f80fd5b506103e76108373660046123b6565b611167565b348015610847575f80fd5b506103e761085636600461240b565b6111c4565b348015610866575f80fd5b506103e7611236565b34801561087a575f80fd5b505f546001600160a01b0316610564565b348015610896575f80fd5b506104426108a536600461240b565b600b6020525f908152604090205460ff1681565b3480156108c4575f80fd5b506040805180820190915260048152634241504560e01b6020820152610416565b3480156108f0575f80fd5b506103e76108ff36600461246f565b6112a2565b34801561090f575f80fd5b50601554610564906001600160a01b031681565b34801561092e575f80fd5b5061044261093d36600461238c565b6112f5565b34801561094d575f80fd5b506103e761095c3660046124b6565b611301565b34801561096c575f80fd5b506103e761097b36600461240b565b61138f565b34801561098b575f80fd5b506103c0600d5481565b3480156109a0575f80fd5b50601654610564906001600160a01b031681565b3480156109bf575f80fd5b506103e76113da565b3480156109d3575f80fd5b506103e76109e2366004612426565b61141c565b3480156109f2575f80fd5b506103e7610a013660046123b6565b611450565b348015610a11575f80fd5b506103c0610a20366004612576565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b348015610a55575f80fd5b506103e7610a6436600461240b565b61147e565b348015610a74575f80fd5b506103e7610a8336600461246f565b611565565b348015610a93575f80fd5b50601454610564906001600160a01b031681565b348015610ab2575f80fd5b506103c0601c5481565b348015610ac7575f80fd5b506103e7610ad63660046123b6565b611598565b348015610ae6575f80fd5b506103e7610af536600461246f565b6115e8565b348015610b05575f80fd5b5060185461044290600160b01b900460ff1681565b60195460405163bd14ae2760e01b81523360048201526001600160a01b039091169063bd14ae27906024015f604051808303815f87803b158015610b5c575f80fd5b505af1158015610b6e573d5f803e3d5ffd5b50505050565b335f8181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610bce9086815260200190565b60405180910390a35060015b92915050565b5f546001600160a01b03163314610c125760405162461bcd60e51b8152600401610c09906125ad565b60405180910390fd5b601a55565b6001600160a01b0383165f9081526004602090815260408083203384529091528120545f1914610cc0576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f908152600482528381203382529091529190912054610c9c91849061163b565b6001600160a01b0385165f9081526004602090815260408083203384529091529020555b610ccb848484611673565b90505b9392505050565b5f546001600160a01b03163314610cfe5760405162461bcd60e51b8152600401610c09906125ad565b6001600160a01b03165f908152600960205260409020805460ff19169055565b6008546001600160a01b03165f90815260036020526040812054610d69906007546001600160a01b03165f90815260036020526040902054610d639060025490611b05565b90611b05565b905090565b5f546001600160a01b03163314610d975760405162461bcd60e51b8152600401610c09906125ad565b6019546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b5f604051808303815f87803b158015610de2575f80fd5b505af1158015610df4573d5f803e3d5ffd5b505050505050565b5f546001600160a01b03163314610e255760405162461bcd60e51b8152600401610c09906125ad565b6103e8821115610e475760405162461bcd60e51b8152600401610c09906125e2565b6103e8811115610e695760405162461bcd60e51b8152600401610c09906125e2565b600f91909155601055565b5f546001600160a01b03163314610e9d5760405162461bcd60e51b8152600401610c09906125ad565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314610ee85760405162461bcd60e51b8152600401610c09906125ad565b60188054921515600160a81b0260ff60a81b1990931692909217909155601d55565b5f610bda825f19610b74565b5f546001600160a01b03163314610f3f5760405162461bcd60e51b8152600401610c09906125ad565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314610f8a5760405162461bcd60e51b8152600401610c09906125ad565b610f92611b46565b565b6001546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610fda573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ffe9190612619565b60195460405163b6b55f2560e01b8152600481018390529192506001600160a01b03169063b6b55f25906024015b5f604051808303815f87803b158015611043575f80fd5b505af1158015611055573d5f803e3d5ffd5b5050505050565b5f546001600160a01b031633146110855760405162461bcd60e51b8152600401610c09906125ad565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b60195460405163051fa63360e31b81526001600160a01b0383811660048301525f9216906328fd319890602401602060405180830381865afa158015611115573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bda9190612619565b5f546001600160a01b031633146111625760405162461bcd60e51b8152600401610c09906125ad565b601c55565b5f546001600160a01b031633146111905760405162461bcd60e51b8152600401610c09906125ad565b6019546040516001624d3b8760e01b03198152600481018390526001600160a01b039091169063ffb2c4799060240161102c565b5f546001600160a01b031633146111ed5760405162461bcd60e51b8152600401610c09906125ad565b600180546001600160a01b0319166001600160a01b0383811691821790925560195460405163c22b790f60e01b815260048101929092529091169063c22b790f9060240161102c565b5f546001600160a01b0316331461125f5760405162461bcd60e51b8152600401610c09906125ad565b47801561129f576018546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561129d573d5f803e3d5ffd5b505b50565b5f546001600160a01b031633146112cb5760405162461bcd60e51b8152600401610c09906125ad565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b5f610cce338484611673565b5f546001600160a01b0316331461132a5760405162461bcd60e51b8152600401610c09906125ad565b5f5b815181101561129d57600160095f84848151811061134c5761134c612630565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790558061138781612658565b91505061132c565b5f546001600160a01b031633146113b85760405162461bcd60e51b8152600401610c09906125ad565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146114035760405162461bcd60e51b8152600401610c09906125ad565b43600d556018805460ff60b01b1916600160b01b179055565b5f546001600160a01b031633146114455760405162461bcd60e51b8152600401610c09906125ad565b601191909155601255565b5f546001600160a01b031633146114795760405162461bcd60e51b8152600401610c09906125ad565b601b55565b5f546001600160a01b031633146114a75760405162461bcd60e51b8152600401610c09906125ad565b6001600160a01b03811661150c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c09565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b0316331461158e5760405162461bcd60e51b8152600401610c09906125ad565b61129d8282611d73565b5f546001600160a01b031633146115c15760405162461bcd60e51b8152600401610c09906125ad565b6103e88111156115e35760405162461bcd60e51b8152600401610c09906125e2565b600f55565b5f546001600160a01b031633146116115760405162461bcd60e51b8152600401610c09906125ad565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b5f818484111561165e5760405162461bcd60e51b8152600401610c09919061231d565b505f61166a8486612670565b95945050505050565b5f80546001600160a01b0385811691161480159061169e57505f546001600160a01b03848116911614155b156116ef57601854600160b01b900460ff166116ef5760405162461bcd60e51b815260206004820152601060248201526f383ab6b8103a343290313932b0b5b99760811b6044820152606401610c09565b6001600160a01b0384165f9081526009602052604090205460ff1615801561172f57506001600160a01b0383165f9081526009602052604090205460ff16155b611737575f80fd5b601854600160a01b900460ff161561175b57611754848484611e7b565b9050610cce565b601b548211158061178357506001600160a01b0384165f908152600b602052604090205460ff165b6117b45760405162461bcd60e51b81526020600482015260026024820152610e8f60f31b6044820152606401610c09565b6001600160a01b0383165f908152600b602052604090205460ff161580156117e55750600854600160a01b900460ff165b1561184657601c546001600160a01b0384165f9081526003602052604090205461180f9084611f5e565b11156118465760405162461bcd60e51b81526020600482015260066024820152651dd85b1b195d60d21b6044820152606401610c09565b6015546001600160a01b0316331480159061186b5750601854600160a01b900460ff16155b80156118805750601854600160a81b900460ff165b801561189c5750601d54305f9081526003602052604090205410155b156118a9576118a9611b46565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f908152600390915291909120546118fa91849061163b565b6001600160a01b0385165f90815260036020908152604080832093909355600a90529081205460ff1615801561194857506001600160a01b0384165f908152600a602052604090205460ff16155b611952578261195d565b61195d858585611fbc565b6001600160a01b0385165f908152600360205260409020549091506119829082611f5e565b6001600160a01b038086165f908152600360209081526040808320949094559188168152600c909152205460ff16611a21576019546001600160a01b038681165f8181526003602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca96906044015f604051808303815f87803b158015611a0e575f80fd5b505af1925050508015611a1f575060015b505b6001600160a01b0384165f908152600c602052604090205460ff16611aad576019546001600160a01b038581165f8181526003602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca96906044015f604051808303815f87803b158015611a9a575f80fd5b505af1925050508015611aab575060015b505b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611af291815260200190565b60405180910390a3506001949350505050565b5f610cce83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061163b565b6018805460ff60a01b1916600160a01b179055305f90815260036020526040812054601154909190611b8b90600290611b85906064908290879061207c565b906120fa565b90505f611b988383611b05565b9050611ba38161213b565b6001546019546040516370a0823160e01b81526001600160a01b0391821660048201525f9291909116906370a0823190602401602060405180830381865afa158015611bf1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c159190612619565b90505f4790505f611c3b6002611b856064611b856011548761207c90919063ffffffff16565b90508415611c4d57611c4d858261225f565b6001546019546040516370a0823160e01b81526001600160a01b0391821660048201525f92611cc39287929116906370a0823190602401602060405180830381865afa158015611c9f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d639190612619565b60195460405163b6b55f2560e01b8152600481018390529192506001600160a01b03169063b6b55f25906024015f604051808303815f87803b158015611d07575f80fd5b505af1158015611d19573d5f803e3d5ffd5b505050505f831115611d5d576018546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015611d5b573d5f803e3d5ffd5b505b50506018805460ff60a01b191690555050505050565b6001600160a01b0382163014801590611d9a57506015546001600160a01b03838116911614155b611da2575f80fd5b6001600160a01b0382165f908152600c60205260409020805460ff19168215801591909117909155611e3357601954604051630a5b654b60e11b81526001600160a01b0384811660048301525f6024830152909116906314b6ca96906044015f604051808303815f87803b158015611e18575f80fd5b505af1158015611e2a573d5f803e3d5ffd5b5050505061129d565b6019546001600160a01b038381165f8181526003602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401610dcb565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152600390915291822054611ecb91849061163b565b6001600160a01b038086165f908152600360205260408082209390935590851681522054611ef99083611f5e565b6001600160a01b038085165f8181526003602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611f4c9086815260200190565b60405180910390a35060019392505050565b5f80611f6a8385612683565b905083811015610cce5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610c09565b6015545f9081906001600160a01b03858116911614611fdd57600f54611fe1565b6010545b90505f611ff46103e8611b85868561207c565b305f908152600360205260409020549091506120109082611f5e565b305f81815260036020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906120609085815260200190565b60405180910390a36120728482611b05565b9695505050505050565b5f825f0361208b57505f610bda565b5f6120968385612696565b9050826120a385836126ad565b14610cce5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610c09565b5f610cce83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506122f1565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061216e5761216e612630565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156121c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121e991906126cc565b816001815181106121fc576121fc612630565b60200260200101906001600160a01b031690816001600160a01b0316815250506122263083610b74565b5060145460405163791ac94760e01b81526001600160a01b039091169063791ac94790610dcb9085905f908690309042906004016126e7565b601454600e5460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156122cc573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906110559190612756565b5f81836123115760405162461bcd60e51b8152600401610c09919061231d565b505f61166a84866126ad565b5f6020808352835180828501525f5b818110156123485785810183015185820160400152820161232c565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461129f575f80fd5b803561238781612368565b919050565b5f806040838503121561239d575f80fd5b82356123a881612368565b946020939093013593505050565b5f602082840312156123c6575f80fd5b5035919050565b5f805f606084860312156123df575f80fd5b83356123ea81612368565b925060208401356123fa81612368565b929592945050506040919091013590565b5f6020828403121561241b575f80fd5b8135610cce81612368565b5f8060408385031215612437575f80fd5b50508035926020909101359150565b80358015158114612387575f80fd5b5f8060408385031215612466575f80fd5b6123a883612446565b5f8060408385031215612480575f80fd5b823561248b81612368565b915061249960208401612446565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f60208083850312156124c7575f80fd5b823567ffffffffffffffff808211156124de575f80fd5b818501915085601f8301126124f1575f80fd5b813581811115612503576125036124a2565b8060051b604051601f19603f83011681018181108582111715612528576125286124a2565b604052918252848201925083810185019188831115612545575f80fd5b938501935b8285101561256a5761255b8561237c565b8452938501939285019261254a565b98975050505050505050565b5f8060408385031215612587575f80fd5b823561259281612368565b915060208301356125a281612368565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526018908201527f6d757374206b65657020666565732062656c6f77203130250000000000000000604082015260600190565b5f60208284031215612629575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f6001820161266957612669612644565b5060010190565b81810381811115610bda57610bda612644565b80820180821115610bda57610bda612644565b8082028115828204841417610bda57610bda612644565b5f826126c757634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156126dc575f80fd5b8151610cce81612368565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156127355784516001600160a01b031683529383019391830191600101612710565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612768575f80fd5b835192506020840151915060408401519050925092509256fea264697066735822122036483955d82a81b94103ee4e958b627dda7316ee4f9a0e0783538772562bcb5464736f6c6343000815003360806040526ec097ce7bc90715b34b9f1000000000600b55610708600c555f600d5534801561002c575f80fd5b505f80546001600160a01b0319908116331790915560028054909116737a250d5630b4cf539739df2c5dacb4c659f2488d179055610d418061006d5f395ff3fe608060405260043610610108575f3560e01c8063997664d711610092578063ce7c2ac211610062578063ce7c2ac2146102b1578063e2d2e21914610306578063efca2eed1461031b578063ffb2c47914610330578063ffd49c841461034f575f80fd5b8063997664d71461023f578063b6b55f2514610254578063bd14ae2714610273578063c22b790f14610292575f80fd5b80632d48e896116100d85780632d48e896146101905780633a98ef39146101af5780634fab0ae8146101c45780637bd421fa146101d95780638c21cd5214610210575f80fd5b806311ce023d1461011357806314b6ca961461013b57806326987b601461015c57806328fd319814610171575f80fd5b3661010f57005b5f80fd5b34801561011e575f80fd5b50610128600b5481565b6040519081526020015b60405180910390f35b348015610146575f80fd5b5061015a610155366004610b79565b610364565b005b348015610167575f80fd5b50610128600e5481565b34801561017c575f80fd5b5061012861018b366004610ba1565b6104d2565b34801561019b575f80fd5b5061015a6101aa366004610bba565b610558565b3480156101ba575f80fd5b5061012860075481565b3480156101cf575f80fd5b50610128600d5481565b3480156101e4575f80fd5b506001546101f8906001600160a01b031681565b6040516001600160a01b039091168152602001610132565b34801561021b575f80fd5b5061022f61022a366004610ba1565b610578565b6040519015158152602001610132565b34801561024a575f80fd5b5061012860085481565b34801561025f575f80fd5b5061015a61026e366004610bda565b6105bd565b34801561027e575f80fd5b5061015a61028d366004610ba1565b61060f565b34801561029d575f80fd5b5061015a6102ac366004610ba1565b610630565b3480156102bc575f80fd5b506102eb6102cb366004610ba1565b60066020525f908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610132565b348015610311575f80fd5b50610128600a5481565b348015610326575f80fd5b5061012860095481565b34801561033b575f80fd5b5061015a61034a366004610bda565b610667565b34801561035a575f80fd5b50610128600c5481565b5f546001600160a01b03163314610379575f80fd5b6001600160a01b0382165f908152600660205260409020541561039f5761039f8261074d565b5f811180156103c357506001600160a01b0382165f90815260066020526040902054155b1561042857600380546001600160a01b0384165f818152600460205260408120839055600183018455929092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b031916909117905561045a565b8015801561044c57506001600160a01b0382165f9081526006602052604090205415155b1561045a5761045a82610864565b6001600160a01b0382165f9081526006602052604090205460075461048a91839161048491610974565b906109bc565b6007556001600160a01b0382165f9081526006602052604090208190556104b081610a1f565b6001600160a01b039092165f9081526006602052604090206001019190915550565b6001600160a01b0381165f9081526006602052604081205481036104f757505f919050565b6001600160a01b0382165f9081526006602052604081205461051890610a1f565b6001600160a01b0384165f9081526006602052604090206001015490915080821161054657505f9392505050565b6105508282610974565b949350505050565b5f546001600160a01b0316331461056d575f80fd5b600c91909155600d55565b600c546001600160a01b0382165f90815260056020526040812054909142916105a19190610c05565b1080156105b75750600d546105b5836104d2565b115b92915050565b5f546001600160a01b031633146105d2575f80fd5b6008546105df90826109bc565b600855600754600b5461060991610600916105fa9085610a3b565b90610ab9565b600a54906109bc565b600a5550565b5f546001600160a01b03163314610624575f80fd5b61062d8161074d565b50565b5f546001600160a01b03163314610645575f80fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6003545f819003610676575050565b5f805f5a90505b848210801561068b57508383105b156107465783600e541061069e575f600e555b6106cf6003600e54815481106106b6576106b6610c18565b5f918252602090912001546001600160a01b0316610578565b15610705576107056003600e54815481106106ec576106ec610c18565b5f918252602090912001546001600160a01b031661074d565b61071a6107135a8390610974565b83906109bc565b91505a600e80549192505f61072e83610c2c565b9190505550828061073e90610c2c565b93505061067d565b5050505050565b6001600160a01b0381165f90815260066020526040812054900361076e5750565b5f610778826104d2565b905080156108605760095461078d90826109bc565b60095560015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303815f875af11580156107e0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108049190610c44565b506001600160a01b0382165f908152600560209081526040808320429055600690915290206002015461083790826109bc565b6001600160a01b0383165f9081526006602052604090206002810191909155546104b090610a1f565b5050565b6003805461087490600190610c63565b8154811061088457610884610c18565b5f9182526020808320909101546001600160a01b03848116845260049092526040909220546003805492909316929181106108c1576108c1610c18565b5f91825260208083209190910180546001600160a01b0319166001600160a01b0394851617905591831681526004918290526040812054600380549193929161090c90600190610c63565b8154811061091c5761091c610c18565b5f9182526020808320909101546001600160a01b03168352820192909252604001902055600380548061095157610951610c76565b5f8281526020902081015f1990810180546001600160a01b031916905501905550565b5f6109b583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610afa565b9392505050565b5f806109c88385610c05565b9050838110156109b55760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064015b60405180910390fd5b5f6105b7600b546105fa600a5485610a3b90919063ffffffff16565b5f825f03610a4a57505f6105b7565b5f610a558385610c8a565b905082610a628583610ca1565b146109b55760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610a16565b5f6109b583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610b32565b5f8184841115610b1d5760405162461bcd60e51b8152600401610a169190610cc0565b505f610b298486610c63565b95945050505050565b5f8183610b525760405162461bcd60e51b8152600401610a169190610cc0565b505f610b298486610ca1565b80356001600160a01b0381168114610b74575f80fd5b919050565b5f8060408385031215610b8a575f80fd5b610b9383610b5e565b946020939093013593505050565b5f60208284031215610bb1575f80fd5b6109b582610b5e565b5f8060408385031215610bcb575f80fd5b50508035926020909101359150565b5f60208284031215610bea575f80fd5b5035919050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156105b7576105b7610bf1565b634e487b7160e01b5f52603260045260245ffd5b5f60018201610c3d57610c3d610bf1565b5060010190565b5f60208284031215610c54575f80fd5b815180151581146109b5575f80fd5b818103818111156105b7576105b7610bf1565b634e487b7160e01b5f52603160045260245ffd5b80820281158282048414176105b7576105b7610bf1565b5f82610cbb57634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020808352835180828501525f5b81811015610ceb57858101830151858201604001528201610ccf565b505f604082860101526040601f19601f830116850101925050509291505056fea26469706673582212209b7cfee8d05ec42410b54597059c3aaf856c7e6a1e30da5bce0c4821401d58c664736f6c63430008150033

Deployed Bytecode

0x6080604052600436106103a0575f3560e01c806375df1305116101de578063a9059cbb11610108578063dd62ed3e1161009d578063f8b45b051161006d578063f8b45b0514610aa7578063fa05db0f14610abc578063fabe628314610adb578063ffb54a9914610afa575f80fd5b8063dd62ed3e14610a06578063f2fde38b14610a4a578063f708a64f14610a69578063f887ea4014610a88575f80fd5b8063c45a0155116100d8578063c45a015514610995578063c9567bf9146109b4578063ca19e830146109c8578063d920334e146109e7575f80fd5b8063a9059cbb14610923578063b515566a14610942578063bb542ef014610961578063bf56b37114610980575f80fd5b806387d991cc1161017e5780638da5cb5b1161014e5780638da5cb5b1461086f57806395d89b41146108b9578063a3a2e89e146108e5578063a8aa1b3114610904575f80fd5b806387d991cc1461083c57806389291a8f1461085b578063893d20e81461086f5780638b42507f1461088b575f80fd5b80637bd421fa116101b95780637bd421fa146107bf5780637db1342c146107de5780637dfcbe34146107fd578063819340311461081d575f80fd5b806375df13051461076c57806375f0a8741461078157806377359aa7146107a0575f80fd5b80633dab5269116102ca5780635d098b381161025f57806370a082311161022f57806370a08231146106fa578063715018a61461072e5780637437681e146107425780637518df7714610757575f80fd5b80635d098b38146106945780636303516c146106b357806366eb3785146106d25780636ab86dc1146106e6575f80fd5b8063470624021161029a578063470624021461062b5780634a74bb02146106405780634bb8d20314610660578063571ac8b014610675575f80fd5b80633dab52691461059b5780633f4218e0146105ba5780634355855a146105e85780634543437714610616575f80fd5b8063273123b71161034057806330ca34ee1161031057806330ca34ee1461050b578063313ce5671461052a57806337bd1a89146105455780633b0aacbc1461057c575f80fd5b8063273123b7146104a45780632b112e49146104c35780632b14ca56146104d75780632d48e896146104ec575f80fd5b8063095ea7b31161037b578063095ea7b31461042357806318160ddd14610452578063234730731461046657806323b872dd14610485575f80fd5b80630445b667146103ab5780630572b0cc146103d357806306fdde03146103e9575f80fd5b366103a757005b5f80fd5b3480156103b6575f80fd5b506103c0601d5481565b6040519081526020015b60405180910390f35b3480156103de575f80fd5b506103e7610b1a565b005b3480156103f4575f80fd5b50604080518082019091526009815268426c696e642041706560b81b60208201525b6040516103ca919061231d565b34801561042e575f80fd5b5061044261043d36600461238c565b610b74565b60405190151581526020016103ca565b34801561045d575f80fd5b506002546103c0565b348015610471575f80fd5b506103e76104803660046123b6565b610be0565b348015610490575f80fd5b5061044261049f3660046123cd565b610c17565b3480156104af575f80fd5b506103e76104be36600461240b565b610cd5565b3480156104ce575f80fd5b506103c0610d1e565b3480156104e2575f80fd5b506103c060105481565b3480156104f7575f80fd5b506103e7610506366004612426565b610d6e565b348015610516575f80fd5b506103e7610525366004612426565b610dfc565b348015610535575f80fd5b50604051601281526020016103ca565b348015610550575f80fd5b50601954610564906001600160a01b031681565b6040516001600160a01b0390911681526020016103ca565b348015610587575f80fd5b506103e761059636600461240b565b610e74565b3480156105a6575f80fd5b506103e76105b5366004612455565b610ebf565b3480156105c5575f80fd5b506104426105d436600461240b565b600a6020525f908152604090205460ff1681565b3480156105f3575f80fd5b5061044261060236600461240b565b600c6020525f908152604090205460ff1681565b348015610621575f80fd5b506103c060135481565b348015610636575f80fd5b506103c0600f5481565b34801561064b575f80fd5b5060185461044290600160a81b900460ff1681565b34801561066b575f80fd5b506103c060115481565b348015610680575f80fd5b5061044261068f36600461240b565b610f0a565b34801561069f575f80fd5b506103e76106ae36600461240b565b610f16565b3480156106be575f80fd5b50600e54610564906001600160a01b031681565b3480156106dd575f80fd5b506103e7610f61565b3480156106f1575f80fd5b506103e7610f94565b348015610705575f80fd5b506103c061071436600461240b565b6001600160a01b03165f9081526003602052604090205490565b348015610739575f80fd5b506103e761105c565b34801561074d575f80fd5b506103c0601b5481565b348015610762575f80fd5b506103c0601a5481565b348015610777575f80fd5b506103c060125481565b34801561078c575f80fd5b50601854610564906001600160a01b031681565b3480156107ab575f80fd5b506103c06107ba36600461240b565b6110cd565b3480156107ca575f80fd5b50600154610564906001600160a01b031681565b3480156107e9575f80fd5b506103e76107f83660046123b6565b611139565b348015610808575f80fd5b5060085461044290600160a01b900460ff1681565b348015610828575f80fd5b506103e76108373660046123b6565b611167565b348015610847575f80fd5b506103e761085636600461240b565b6111c4565b348015610866575f80fd5b506103e7611236565b34801561087a575f80fd5b505f546001600160a01b0316610564565b348015610896575f80fd5b506104426108a536600461240b565b600b6020525f908152604090205460ff1681565b3480156108c4575f80fd5b506040805180820190915260048152634241504560e01b6020820152610416565b3480156108f0575f80fd5b506103e76108ff36600461246f565b6112a2565b34801561090f575f80fd5b50601554610564906001600160a01b031681565b34801561092e575f80fd5b5061044261093d36600461238c565b6112f5565b34801561094d575f80fd5b506103e761095c3660046124b6565b611301565b34801561096c575f80fd5b506103e761097b36600461240b565b61138f565b34801561098b575f80fd5b506103c0600d5481565b3480156109a0575f80fd5b50601654610564906001600160a01b031681565b3480156109bf575f80fd5b506103e76113da565b3480156109d3575f80fd5b506103e76109e2366004612426565b61141c565b3480156109f2575f80fd5b506103e7610a013660046123b6565b611450565b348015610a11575f80fd5b506103c0610a20366004612576565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b348015610a55575f80fd5b506103e7610a6436600461240b565b61147e565b348015610a74575f80fd5b506103e7610a8336600461246f565b611565565b348015610a93575f80fd5b50601454610564906001600160a01b031681565b348015610ab2575f80fd5b506103c0601c5481565b348015610ac7575f80fd5b506103e7610ad63660046123b6565b611598565b348015610ae6575f80fd5b506103e7610af536600461246f565b6115e8565b348015610b05575f80fd5b5060185461044290600160b01b900460ff1681565b60195460405163bd14ae2760e01b81523360048201526001600160a01b039091169063bd14ae27906024015f604051808303815f87803b158015610b5c575f80fd5b505af1158015610b6e573d5f803e3d5ffd5b50505050565b335f8181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610bce9086815260200190565b60405180910390a35060015b92915050565b5f546001600160a01b03163314610c125760405162461bcd60e51b8152600401610c09906125ad565b60405180910390fd5b601a55565b6001600160a01b0383165f9081526004602090815260408083203384529091528120545f1914610cc0576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f908152600482528381203382529091529190912054610c9c91849061163b565b6001600160a01b0385165f9081526004602090815260408083203384529091529020555b610ccb848484611673565b90505b9392505050565b5f546001600160a01b03163314610cfe5760405162461bcd60e51b8152600401610c09906125ad565b6001600160a01b03165f908152600960205260409020805460ff19169055565b6008546001600160a01b03165f90815260036020526040812054610d69906007546001600160a01b03165f90815260036020526040902054610d639060025490611b05565b90611b05565b905090565b5f546001600160a01b03163314610d975760405162461bcd60e51b8152600401610c09906125ad565b6019546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b5f604051808303815f87803b158015610de2575f80fd5b505af1158015610df4573d5f803e3d5ffd5b505050505050565b5f546001600160a01b03163314610e255760405162461bcd60e51b8152600401610c09906125ad565b6103e8821115610e475760405162461bcd60e51b8152600401610c09906125e2565b6103e8811115610e695760405162461bcd60e51b8152600401610c09906125e2565b600f91909155601055565b5f546001600160a01b03163314610e9d5760405162461bcd60e51b8152600401610c09906125ad565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314610ee85760405162461bcd60e51b8152600401610c09906125ad565b60188054921515600160a81b0260ff60a81b1990931692909217909155601d55565b5f610bda825f19610b74565b5f546001600160a01b03163314610f3f5760405162461bcd60e51b8152600401610c09906125ad565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314610f8a5760405162461bcd60e51b8152600401610c09906125ad565b610f92611b46565b565b6001546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610fda573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ffe9190612619565b60195460405163b6b55f2560e01b8152600481018390529192506001600160a01b03169063b6b55f25906024015b5f604051808303815f87803b158015611043575f80fd5b505af1158015611055573d5f803e3d5ffd5b5050505050565b5f546001600160a01b031633146110855760405162461bcd60e51b8152600401610c09906125ad565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b60195460405163051fa63360e31b81526001600160a01b0383811660048301525f9216906328fd319890602401602060405180830381865afa158015611115573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bda9190612619565b5f546001600160a01b031633146111625760405162461bcd60e51b8152600401610c09906125ad565b601c55565b5f546001600160a01b031633146111905760405162461bcd60e51b8152600401610c09906125ad565b6019546040516001624d3b8760e01b03198152600481018390526001600160a01b039091169063ffb2c4799060240161102c565b5f546001600160a01b031633146111ed5760405162461bcd60e51b8152600401610c09906125ad565b600180546001600160a01b0319166001600160a01b0383811691821790925560195460405163c22b790f60e01b815260048101929092529091169063c22b790f9060240161102c565b5f546001600160a01b0316331461125f5760405162461bcd60e51b8152600401610c09906125ad565b47801561129f576018546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561129d573d5f803e3d5ffd5b505b50565b5f546001600160a01b031633146112cb5760405162461bcd60e51b8152600401610c09906125ad565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b5f610cce338484611673565b5f546001600160a01b0316331461132a5760405162461bcd60e51b8152600401610c09906125ad565b5f5b815181101561129d57600160095f84848151811061134c5761134c612630565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790558061138781612658565b91505061132c565b5f546001600160a01b031633146113b85760405162461bcd60e51b8152600401610c09906125ad565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146114035760405162461bcd60e51b8152600401610c09906125ad565b43600d556018805460ff60b01b1916600160b01b179055565b5f546001600160a01b031633146114455760405162461bcd60e51b8152600401610c09906125ad565b601191909155601255565b5f546001600160a01b031633146114795760405162461bcd60e51b8152600401610c09906125ad565b601b55565b5f546001600160a01b031633146114a75760405162461bcd60e51b8152600401610c09906125ad565b6001600160a01b03811661150c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c09565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b0316331461158e5760405162461bcd60e51b8152600401610c09906125ad565b61129d8282611d73565b5f546001600160a01b031633146115c15760405162461bcd60e51b8152600401610c09906125ad565b6103e88111156115e35760405162461bcd60e51b8152600401610c09906125e2565b600f55565b5f546001600160a01b031633146116115760405162461bcd60e51b8152600401610c09906125ad565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b5f818484111561165e5760405162461bcd60e51b8152600401610c09919061231d565b505f61166a8486612670565b95945050505050565b5f80546001600160a01b0385811691161480159061169e57505f546001600160a01b03848116911614155b156116ef57601854600160b01b900460ff166116ef5760405162461bcd60e51b815260206004820152601060248201526f383ab6b8103a343290313932b0b5b99760811b6044820152606401610c09565b6001600160a01b0384165f9081526009602052604090205460ff1615801561172f57506001600160a01b0383165f9081526009602052604090205460ff16155b611737575f80fd5b601854600160a01b900460ff161561175b57611754848484611e7b565b9050610cce565b601b548211158061178357506001600160a01b0384165f908152600b602052604090205460ff165b6117b45760405162461bcd60e51b81526020600482015260026024820152610e8f60f31b6044820152606401610c09565b6001600160a01b0383165f908152600b602052604090205460ff161580156117e55750600854600160a01b900460ff165b1561184657601c546001600160a01b0384165f9081526003602052604090205461180f9084611f5e565b11156118465760405162461bcd60e51b81526020600482015260066024820152651dd85b1b195d60d21b6044820152606401610c09565b6015546001600160a01b0316331480159061186b5750601854600160a01b900460ff16155b80156118805750601854600160a81b900460ff165b801561189c5750601d54305f9081526003602052604090205410155b156118a9576118a9611b46565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f908152600390915291909120546118fa91849061163b565b6001600160a01b0385165f90815260036020908152604080832093909355600a90529081205460ff1615801561194857506001600160a01b0384165f908152600a602052604090205460ff16155b611952578261195d565b61195d858585611fbc565b6001600160a01b0385165f908152600360205260409020549091506119829082611f5e565b6001600160a01b038086165f908152600360209081526040808320949094559188168152600c909152205460ff16611a21576019546001600160a01b038681165f8181526003602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca96906044015f604051808303815f87803b158015611a0e575f80fd5b505af1925050508015611a1f575060015b505b6001600160a01b0384165f908152600c602052604090205460ff16611aad576019546001600160a01b038581165f8181526003602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca96906044015f604051808303815f87803b158015611a9a575f80fd5b505af1925050508015611aab575060015b505b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611af291815260200190565b60405180910390a3506001949350505050565b5f610cce83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061163b565b6018805460ff60a01b1916600160a01b179055305f90815260036020526040812054601154909190611b8b90600290611b85906064908290879061207c565b906120fa565b90505f611b988383611b05565b9050611ba38161213b565b6001546019546040516370a0823160e01b81526001600160a01b0391821660048201525f9291909116906370a0823190602401602060405180830381865afa158015611bf1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c159190612619565b90505f4790505f611c3b6002611b856064611b856011548761207c90919063ffffffff16565b90508415611c4d57611c4d858261225f565b6001546019546040516370a0823160e01b81526001600160a01b0391821660048201525f92611cc39287929116906370a0823190602401602060405180830381865afa158015611c9f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d639190612619565b60195460405163b6b55f2560e01b8152600481018390529192506001600160a01b03169063b6b55f25906024015f604051808303815f87803b158015611d07575f80fd5b505af1158015611d19573d5f803e3d5ffd5b505050505f831115611d5d576018546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015611d5b573d5f803e3d5ffd5b505b50506018805460ff60a01b191690555050505050565b6001600160a01b0382163014801590611d9a57506015546001600160a01b03838116911614155b611da2575f80fd5b6001600160a01b0382165f908152600c60205260409020805460ff19168215801591909117909155611e3357601954604051630a5b654b60e11b81526001600160a01b0384811660048301525f6024830152909116906314b6ca96906044015f604051808303815f87803b158015611e18575f80fd5b505af1158015611e2a573d5f803e3d5ffd5b5050505061129d565b6019546001600160a01b038381165f8181526003602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401610dcb565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152600390915291822054611ecb91849061163b565b6001600160a01b038086165f908152600360205260408082209390935590851681522054611ef99083611f5e565b6001600160a01b038085165f8181526003602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611f4c9086815260200190565b60405180910390a35060019392505050565b5f80611f6a8385612683565b905083811015610cce5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610c09565b6015545f9081906001600160a01b03858116911614611fdd57600f54611fe1565b6010545b90505f611ff46103e8611b85868561207c565b305f908152600360205260409020549091506120109082611f5e565b305f81815260036020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906120609085815260200190565b60405180910390a36120728482611b05565b9695505050505050565b5f825f0361208b57505f610bda565b5f6120968385612696565b9050826120a385836126ad565b14610cce5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610c09565b5f610cce83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506122f1565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061216e5761216e612630565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156121c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121e991906126cc565b816001815181106121fc576121fc612630565b60200260200101906001600160a01b031690816001600160a01b0316815250506122263083610b74565b5060145460405163791ac94760e01b81526001600160a01b039091169063791ac94790610dcb9085905f908690309042906004016126e7565b601454600e5460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156122cc573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906110559190612756565b5f81836123115760405162461bcd60e51b8152600401610c09919061231d565b505f61166a84866126ad565b5f6020808352835180828501525f5b818110156123485785810183015185820160400152820161232c565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461129f575f80fd5b803561238781612368565b919050565b5f806040838503121561239d575f80fd5b82356123a881612368565b946020939093013593505050565b5f602082840312156123c6575f80fd5b5035919050565b5f805f606084860312156123df575f80fd5b83356123ea81612368565b925060208401356123fa81612368565b929592945050506040919091013590565b5f6020828403121561241b575f80fd5b8135610cce81612368565b5f8060408385031215612437575f80fd5b50508035926020909101359150565b80358015158114612387575f80fd5b5f8060408385031215612466575f80fd5b6123a883612446565b5f8060408385031215612480575f80fd5b823561248b81612368565b915061249960208401612446565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f60208083850312156124c7575f80fd5b823567ffffffffffffffff808211156124de575f80fd5b818501915085601f8301126124f1575f80fd5b813581811115612503576125036124a2565b8060051b604051601f19603f83011681018181108582111715612528576125286124a2565b604052918252848201925083810185019188831115612545575f80fd5b938501935b8285101561256a5761255b8561237c565b8452938501939285019261254a565b98975050505050505050565b5f8060408385031215612587575f80fd5b823561259281612368565b915060208301356125a281612368565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526018908201527f6d757374206b65657020666565732062656c6f77203130250000000000000000604082015260600190565b5f60208284031215612629575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f6001820161266957612669612644565b5060010190565b81810381811115610bda57610bda612644565b80820180821115610bda57610bda612644565b8082028115828204841417610bda57610bda612644565b5f826126c757634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156126dc575f80fd5b8151610cce81612368565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156127355784516001600160a01b031683529383019391830191600101612710565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612768575f80fd5b835192506020840151915060408401519050925092509256fea264697066735822122036483955d82a81b94103ee4e958b627dda7316ee4f9a0e0783538772562bcb5464736f6c63430008150033

Deployed Bytecode Sourcemap

11042:12458:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12852:52;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;12852:52:0;;;;;;;;23417:80;;;;;;;;;;;;;:::i;:::-;;17420;;;;;;;;;;-1:-1:-1;17492:5:0;;;;;;;;;;;;-1:-1:-1;;;17492:5:0;;;;17420:80;;;;;;;:::i;17848:216::-;;;;;;;;;;-1:-1:-1;17848:216:0;;;;;:::i;:::-;;:::i;:::-;;;1509:14:1;;1502:22;1484:41;;1472:2;1457:18;17848:216:0;1344:187:1;17150:88:0;;;;;;;;;;-1:-1:-1;17223:12:0;;17150:88;;16880:101;;;;;;;;;;-1:-1:-1;16880:101:0;;;;;:::i;:::-;;:::i;18362:366::-;;;;;;;;;;-1:-1:-1;18362:366:0;;;;;:::i;:::-;;:::i;16303:90::-;;;;;;;;;;-1:-1:-1;16303:90:0;;;;;:::i;:::-;;:::i;17000:142::-;;;;;;;;;;;;;:::i;12049:27::-;;;;;;;;;;;;;;;;16100:195;;;;;;;;;;-1:-1:-1;16100:195:0;;;;;:::i;:::-;;:::i;14623:283::-;;;;;;;;;;-1:-1:-1;14623:283:0;;;;;:::i;:::-;;:::i;17244:80::-;;;;;;;;;;-1:-1:-1;17244:80:0;;11288:2;2829:36:1;;2817:2;2802:18;17244:80:0;2687:184:1;12560:24:0;;;;;;;;;;-1:-1:-1;12560:24:0;;;;-1:-1:-1;;;;;12560:24:0;;;;;;-1:-1:-1;;;;;3065:32:1;;;3047:51;;3035:2;3020:18;12560:24:0;2876:228:1;14174:100:0;;;;;;;;;;-1:-1:-1;14174:100:0;;;;;:::i;:::-;;:::i;15893:199::-;;;;;;;;;;-1:-1:-1;15893:199:0;;;;;:::i;:::-;;:::i;11788:44::-;;;;;;;;;;-1:-1:-1;11788:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;11894:49;;;;;;;;;;-1:-1:-1;11894:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12186:34;;;;;;;;;;;;;;;;12016:26;;;;;;;;;;;;;;;;12469:40;;;;;;;;;;-1:-1:-1;12469:40:0;;;;-1:-1:-1;;;12469:40:0;;;;;;12104:35;;;;;;;;;;;;;;;;18072:122;;;;;;;;;;-1:-1:-1;18072:122:0;;;;;:::i;:::-;;:::i;15604:147::-;;;;;;;;;;-1:-1:-1;15604:147:0;;;;;:::i;:::-;;:::i;11984:23::-;;;;;;;;;;-1:-1:-1;11984:23:0;;;;-1:-1:-1;;;;;11984:23:0;;;22651:74;;;;;;;;;;;;;:::i;22980:152::-;;;;;;;;;;;;;:::i;17592:105::-;;;;;;;;;;-1:-1:-1;17592:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;17676:18:0;17658:7;17676:18;;;:9;:18;;;;;;;17592:105;3545:148;;;;;;;;;;;;;:::i;12748:43::-;;;;;;;;;;;;;;;;12591:30;;;;;;;;;;;;;;;;12146:31;;;;;;;;;;;;;;;;12348:84;;;;;;;;;;-1:-1:-1;12348:84:0;;;;-1:-1:-1;;;;;12348:84:0;;;23258:151;;;;;;;;;;-1:-1:-1;23258:151:0;;;;;:::i;:::-;;:::i;11126:21::-;;;;;;;;;;-1:-1:-1;11126:21:0;;;;-1:-1:-1;;;;;11126:21:0;;;15214:104;;;;;;;;;;-1:-1:-1;15214:104:0;;;;;:::i;:::-;;:::i;11707:26::-;;;;;;;;;;-1:-1:-1;11707:26:0;;;;-1:-1:-1;;;11707:26:0;;;;;;23140:110;;;;;;;;;;-1:-1:-1;23140:110:0;;;;;:::i;:::-;;:::i;14016:150::-;;;;;;;;;;-1:-1:-1;14016:150:0;;;;;:::i;:::-;;:::i;22733:239::-;;;;;;;;;;;;;:::i;17506:80::-;;;;;;;;;;-1:-1:-1;17558:7:0;3396:6;-1:-1:-1;;;;;3396:6:0;17506:80;17000:142;11839:48;;;;;;;;;;-1:-1:-1;11839:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17330:84;;;;;;;;;;-1:-1:-1;17404:7:0;;;;;;;;;;;;-1:-1:-1;;;17404:7:0;;;;17330:84;;15330:122;;;;;;;;;;-1:-1:-1;15330:122:0;;;;;:::i;:::-;;:::i;12260:19::-;;;;;;;;;;-1:-1:-1;12260:19:0;;;;-1:-1:-1;;;;;12260:19:0;;;18202:152;;;;;;;;;;-1:-1:-1;18202:152:0;;;;;:::i;:::-;;:::i;13842:166::-;;;;;;;;;;-1:-1:-1;13842:166:0;;;;;:::i;:::-;;:::i;15759:121::-;;;;;;;;;;-1:-1:-1;15759:121:0;;;;;:::i;:::-;;:::i;11952:25::-;;;;;;;;;;;;;;;;12286:22;;;;;;;;;;-1:-1:-1;12286:22:0;;;;-1:-1:-1;;;;;12286:22:0;;;14322:115;;;;;;;;;;;;;:::i;14919:184::-;;;;;;;;;;-1:-1:-1;14919:184:0;;;;;:::i;:::-;;:::i;15111:95::-;;;;;;;;;;-1:-1:-1;15111:95:0;;;;;:::i;:::-;;:::i;17703:133::-;;;;;;;;;;-1:-1:-1;17703:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;17805:19:0;;;17787:7;17805:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;17703:133;3701:244;;;;;;;;;;-1:-1:-1;3701:244:0;;;;;:::i;:::-;;:::i;16740:132::-;;;;;;;;;;-1:-1:-1;16740:132:0;;;;;:::i;:::-;;:::i;12229:24::-;;;;;;;;;;-1:-1:-1;12229:24:0;;;;-1:-1:-1;;;;;12229:24:0;;;12798:47;;;;;;;;;;;;;;;;14451:164;;;;;;;;;;-1:-1:-1;14451:164:0;;;;;:::i;:::-;;:::i;15460:136::-;;;;;;;;;;-1:-1:-1;15460:136:0;;;;;:::i;:::-;;:::i;12516:31::-;;;;;;;;;;-1:-1:-1;12516:31:0;;;;-1:-1:-1;;;12516:31:0;;;;;;23417:80;23459:8;;:30;;-1:-1:-1;;;23459:30:0;;23478:10;23459:30;;;3047:51:1;-1:-1:-1;;;;;23459:8:0;;;;:18;;3020::1;;23459:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23417:80::o;17848:216::-;17952:10;17923:4;17940:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;17940:32:0;;;;;;;;;;:41;;;17997:37;17923:4;;17940:32;;17997:37;;;;17975:6;160:25:1;;148:2;133:18;;14:177;17997:37:0;;;;;;;;-1:-1:-1;18052:4:0;17848:216;;;;;:::o;16880:101::-;3458:6;;-1:-1:-1;;;;;3458:6:0;2875:10;3458:22;3450:67;;;;-1:-1:-1;;;3450:67:0;;;;;;;:::i;:::-;;;;;;;;;16953:11:::1;:20:::0;16880:101::o;18362:366::-;-1:-1:-1;;;;;18482:19:0;;18462:4;18482:19;;;:11;:19;;;;;;;;18502:10;18482:31;;;;;;;;-1:-1:-1;;18482:52:0;18479:186;;18584:69;;;;;;;;;;;-1:-1:-1;;;18584:69:0;;;;;;;;-1:-1:-1;;;;;18584:19:0;;-1:-1:-1;18584:19:0;;;:11;:19;;;;;18604:10;18584:31;;;;;;;;;;:69;;18620:6;;18584:35;:69::i;:::-;-1:-1:-1;;;;;18550:19:0;;;;;;:11;:19;;;;;;;;18570:10;18550:31;;;;;;;:103;18479:186;18684:36;18694:6;18702:9;18713:6;18684:9;:36::i;:::-;18677:43;;18362:366;;;;;;:::o;16303:90::-;3458:6;;-1:-1:-1;;;;;3458:6:0;2875:10;3458:22;3450:67;;;;-1:-1:-1;;;3450:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16365:12:0::1;16380:5;16365:12:::0;;;:4:::1;:12;::::0;;;;:20;;-1:-1:-1;;16365:20:0::1;::::0;;16303:90::o;17000:142::-;17128:4;;-1:-1:-1;;;;;17128:4:0;17053:7;17676:18;;;:9;:18;;;;;;17080:54;;17107:4;;-1:-1:-1;;;;;17107:4:0;17658:7;17676:18;;;:9;:18;;;;;;17080:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;17073:61;;17000:142;:::o;16100:195::-;3458:6;;-1:-1:-1;;;;;3458:6:0;2875:10;3458:22;3450:67;;;;-1:-1:-1;;;3450:67:0;;;;;;;:::i;:::-;16213:8:::1;::::0;:66:::1;::::0;-1:-1:-1;;;16213:66:0;;::::1;::::0;::::1;6727:25:1::0;;;6768:18;;;6761:34;;;-1:-1:-1;;;;;16213:8:0;;::::1;::::0;:32:::1;::::0;6700:18:1;;16213:66:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16100:195:::0;;:::o;14623:283::-;3458:6;;-1:-1:-1;;;;;3458:6:0;2875:10;3458:22;3450:67;;;;-1:-1:-1;;;3450:67:0;;;;;;;:::i;:::-;14738:4:::1;14725:9;:17;;14717:54;;;;-1:-1:-1::0;;;14717:54:0::1;;;;;;;:::i;:::-;14805:4;14791:10;:18;;14783:55;;;;-1:-1:-1::0;;;14783:55:0::1;;;;;;;:::i;:::-;14849:6;:18:::0;;;;14878:7:::1;:20:::0;14623:283::o;14174:100::-;3458:6;;-1:-1:-1;;;;;3458:6:0;2875:10;3458:22;3450:67;;;;-1:-1:-1;;;3450:67:0;;;;;;;:::i;:::-;14245:8:::1;:21:::0;;-1:-1:-1;;;;;;14245:21:0::1;-1:-1:-1::0;;;;;14245:21:0;;;::::1;::::0;;;::::1;::::0;;14174:100::o;15893:199::-;3458:6;;-1:-1:-1;;;;;3458:6:0;2875:10;3458:22;3450:67;;;;-1:-1:-1;;;3450:67:0;;;;;;;:::i;:::-;16002:21:::1;:39:::0;;;::::1;;-1:-1:-1::0;;;16002:39:0::1;-1:-1:-1::0;;;;16002:39:0;;::::1;::::0;;;::::1;::::0;;;16052:13:::1;:32:::0;15893:199::o;18072:122::-;18127:4;18151:35;18159:7;-1:-1:-1;;18151:7:0;:35::i;15604:147::-;3458:6;;-1:-1:-1;;;;;3458:6:0;2875:10;3458:22;3450:67;;;;-1:-1:-1;;;3450:67:0;;;;;;;:::i;:::-;15698:15:::1;:45:::0;;-1:-1:-1;;;;;;15698:45:0::1;-1:-1:-1::0;;;;;15698:45:0;;;::::1;::::0;;;::::1;::::0;;15604:147::o;22651:74::-;3458:6;;-1:-1:-1;;;;;3458:6:0;2875:10;3458:22;3450:67;;;;-1:-1:-1;;;3450:67:0;;;;;;;:::i;:::-;22707:10:::1;:8;:10::i;:::-;22651:74::o:0;22980:152::-;23053:6;;23046:39;;-1:-1:-1;;;23046:39:0;;23079:4;23046:39;;;3047:51:1;23025:18:0;;-1:-1:-1;;;;;23053:6:0;;23046:24;;3020:18:1;;23046:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23096:8;;:28;;-1:-1:-1;;;23096:28:0;;;;;160:25:1;;;23025:60:0;;-1:-1:-1;;;;;;23096:8:0;;:16;;133:18:1;;23096:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23014:118;22980:152::o;3545:148::-;3458:6;;-1:-1:-1;;;;;3458:6:0;2875:10;3458:22;3450:67;;;;-1:-1:-1;;;3450:67:0;;;;;;;:::i;:::-;3652:1:::1;3636:6:::0;;3615:40:::1;::::0;-1:-1:-1;;;;;3636:6:0;;::::1;::::0;3615:40:::1;::::0;3652:1;;3615:40:::1;3683:1;3666:19:::0;;-1:-1:-1;;;;;;3666:19:0::1;::::0;;3545:148::o;23258:151::-;23362:8;;:39;;-1:-1:-1;;;23362:39:0;;-1:-1:-1;;;;;3065:32:1;;;23362:39:0;;;3047:51:1;23335:7:0;;23362:8;;:26;;3020:18:1;;23362:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;15214:104::-;3458:6;;-1:-1:-1;;;;;3458:6:0;2875:10;3458:22;3450:67;;;;-1:-1:-1;;;3450:67:0;;;;;;;:::i;:::-;15289:9:::1;:21:::0;15214:104::o;23140:110::-;3458:6;;-1:-1:-1;;;;;3458:6:0;2875:10;3458:22;3450:67;;;;-1:-1:-1;;;3450:67:0;;;;;;;:::i;:::-;23215:8:::1;::::0;:27:::1;::::0;-1:-1:-1;;;;;;23215:27:0;;::::1;::::0;::::1;160:25:1::0;;;-1:-1:-1;;;;;23215:8:0;;::::1;::::0;:16:::1;::::0;133:18:1;;23215:27:0::1;14:177:1::0;14016:150:0;3458:6;;-1:-1:-1;;;;;3458:6:0;2875:10;3458:22;3450:67;;;;-1:-1:-1;;;3450:67:0;;;;;;;:::i;:::-;14089:6:::1;:23:::0;;-1:-1:-1;;;;;;14089:23:0::1;-1:-1:-1::0;;;;;14089:23:0;;::::1;::::0;;::::1;::::0;;;14123:8:::1;::::0;:35:::1;::::0;-1:-1:-1;;;14123:35:0;;::::1;::::0;::::1;3047:51:1::0;;;;14123:8:0;;::::1;::::0;:19:::1;::::0;3020:18:1;;14123:35:0::1;2876:228:1::0;22733:239:0;3458:6;;-1:-1:-1;;;;;3458:6:0;2875:10;3458:22;3450:67;;;;-1:-1:-1;;;3450:67:0;;;;;;;:::i;:::-;22817:21:::1;22852:22:::0;;22849:116:::1;;22908:15;::::0;22900:53:::1;::::0;-1:-1:-1;;;;;22908:15:0;;::::1;::::0;22900:53;::::1;;;::::0;22934:18;;22908:15:::1;22900:53:::0;22908:15;22900:53;22934:18;22908:15;22900:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;22849:116;22777:195;22733:239::o:0;15330:122::-;3458:6;;-1:-1:-1;;;;;3458:6:0;2875:10;3458:22;3450:67;;;;-1:-1:-1;;;3450:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15416:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;15416:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15330:122::o;18202:152::-;18282:4;18306:40;18316:10;18328:9;18339:6;18306:9;:40::i;13842:166::-;3458:6;;-1:-1:-1;;;;;3458:6:0;2875:10;3458:22;3450:67;;;;-1:-1:-1;;;3450:67:0;;;;;;;:::i;:::-;13918:6:::1;13913:88;13934:5;:12;13930:1;:16;13913:88;;;13985:4;13968;:14;13973:5;13979:1;13973:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;13968:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;13968:14:0;:21;;-1:-1:-1;;13968:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13948:3;::::1;::::0;::::1;:::i;:::-;;;;13913:88;;15759:121:::0;3458:6;;-1:-1:-1;;;;;3458:6:0;2875:10;3458:22;3450:67;;;;-1:-1:-1;;;3450:67:0;;;;;;;:::i;:::-;15845:10:::1;:27:::0;;-1:-1:-1;;;;;;15845:27:0::1;-1:-1:-1::0;;;;;15845:27:0;;;::::1;::::0;;;::::1;::::0;;15759:121::o;14322:115::-;3458:6;;-1:-1:-1;;;;;3458:6:0;2875:10;3458:22;3450:67;;;;-1:-1:-1;;;3450:67:0;;;;;;;:::i;:::-;14388:12:::1;14375:10;:25:::0;14411:11:::1;:18:::0;;-1:-1:-1;;;;14411:18:0::1;-1:-1:-1::0;;;14411:18:0::1;::::0;;14322:115::o;14919:184::-;3458:6;;-1:-1:-1;;;;;3458:6:0;2875:10;3458:22;3450:67;;;;-1:-1:-1;;;3450:67:0;;;;;;;:::i;:::-;15025:15:::1;:30:::0;;;;15066:11:::1;:29:::0;14919:184::o;15111:95::-;3458:6;;-1:-1:-1;;;;;3458:6:0;2875:10;3458:22;3450:67;;;;-1:-1:-1;;;3450:67:0;;;;;;;:::i;:::-;15182:5:::1;:16:::0;15111:95::o;3701:244::-;3458:6;;-1:-1:-1;;;;;3458:6:0;2875:10;3458:22;3450:67;;;;-1:-1:-1;;;3450:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3790:22:0;::::1;3782:73;;;::::0;-1:-1:-1;;;3782:73:0;;7954:2:1;3782:73:0::1;::::0;::::1;7936:21:1::0;7993:2;7973:18;;;7966:30;8032:34;8012:18;;;8005:62;-1:-1:-1;;;8083:18:1;;;8076:36;8129:19;;3782:73:0::1;7752:402:1::0;3782:73:0::1;3892:6;::::0;;3871:38:::1;::::0;-1:-1:-1;;;;;3871:38:0;;::::1;::::0;3892:6;::::1;::::0;3871:38:::1;::::0;::::1;3920:6;:17:::0;;-1:-1:-1;;;;;;3920:17:0::1;-1:-1:-1::0;;;;;3920:17:0;;;::::1;::::0;;;::::1;::::0;;3701:244::o;16740:132::-;3458:6;;-1:-1:-1;;;;;3458:6:0;2875:10;3458:22;3450:67;;;;-1:-1:-1;;;3450:67:0;;;;;;;:::i;:::-;16828:36:::1;16849:6;16857;16828:20;:36::i;14451:164::-:0;3458:6;;-1:-1:-1;;;;;3458:6:0;2875:10;3458:22;3450:67;;;;-1:-1:-1;;;3450:67:0;;;;;;;:::i;:::-;14545:4:::1;14532:9;:17;;14523:55;;;;-1:-1:-1::0;;;14523:55:0::1;;;;;;;:::i;:::-;14589:6;:18:::0;14451:164::o;15460:136::-;3458:6;;-1:-1:-1;;;;;3458:6:0;2875:10;3458:22;3450:67;;;;-1:-1:-1;;;3450:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15556:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;15556:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15460:136::o;861:192::-;947:7;983:12;975:6;;;;967:29;;;;-1:-1:-1;;;967:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1007:9:0;1019:5;1023:1;1019;:5;:::i;:::-;1007:17;861:192;-1:-1:-1;;;;;861:192:0:o;18736:1411::-;18824:4;3396:6;;-1:-1:-1;;;;;18845:16:0;;;3396:6;;18845:16;;;;:39;;-1:-1:-1;3369:7:0;3396:6;-1:-1:-1;;;;;18865:19:0;;;3396:6;;18865:19;;18845:39;18841:85;;;18894:11;;-1:-1:-1;;;18894:11:0;;;;18886:40;;;;-1:-1:-1;;;18886:40:0;;8494:2:1;18886:40:0;;;8476:21:1;8533:2;8513:18;;;8506:30;-1:-1:-1;;;8552:18:1;;;8545:46;8608:18;;18886:40:0;8292:340:1;18886:40:0;-1:-1:-1;;;;;18988:12:0;;;;;;:4;:12;;;;;;;;18987:13;:33;;;;-1:-1:-1;;;;;;19005:15:0;;;;;;:4;:15;;;;;;;;19004:16;18987:33;18979:42;;;;;;19037:16;;-1:-1:-1;;;19037:16:0;;;;19034:73;;;19063:41;19078:6;19086:9;19097:6;19063:14;:41::i;:::-;19056:48;;;;19034:73;19137:5;;19127:6;:15;;:42;;;-1:-1:-1;;;;;;19146:23:0;;;;;;:15;:23;;;;;;;;19127:42;19119:57;;;;-1:-1:-1;;;19119:57:0;;8839:2:1;19119:57:0;;;8821:21:1;8878:1;8858:18;;;8851:29;-1:-1:-1;;;8896:18:1;;;8889:32;8938:18;;19119:57:0;8637:325:1;19119:57:0;-1:-1:-1;;;;;19193:26:0;;;;;;:15;:26;;;;;;;;19192:27;:38;;;;-1:-1:-1;19223:7:0;;-1:-1:-1;;;19223:7:0;;;;19192:38;19189:143;;;19300:9;;-1:-1:-1;;;;;19264:20:0;;;;;;:9;:20;;;;;;:32;;19289:6;19264:24;:32::i;:::-;:45;;19256:64;;;;-1:-1:-1;;;19256:64:0;;9169:2:1;19256:64:0;;;9151:21:1;9208:1;9188:18;;;9181:29;-1:-1:-1;;;9226:18:1;;;9219:36;9272:18;;19256:64:0;8967:329:1;19256:64:0;19361:4;;-1:-1:-1;;;;;19361:4:0;19347:10;:18;;;;:39;;-1:-1:-1;19370:16:0;;-1:-1:-1;;;19370:16:0;;;;19369:17;19347:39;:64;;;;-1:-1:-1;19390:21:0;;-1:-1:-1;;;19390:21:0;;;;19347:64;:109;;;;-1:-1:-1;19443:13:0;;19433:4;19415:24;;;;:9;:24;;;;;;:41;;19347:109;19344:128;;;19459:10;:8;:10::i;:::-;19504:53;;;;;;;;;;;-1:-1:-1;;;19504:53:0;;;;;;;;-1:-1:-1;;;;;19504:17:0;;-1:-1:-1;19504:17:0;;;:9;:17;;;;;;;;:53;;19526:6;;19504:21;:53::i;:::-;-1:-1:-1;;;;;19484:17:0;;;;;;:9;:17;;;;;;;;:73;;;;19601:11;:19;;;;;;;;19600:20;:47;;;;-1:-1:-1;;;;;;19625:22:0;;;;;;:11;:22;;;;;;;;19624:23;19600:47;:93;;19687:6;19600:93;;;19650:34;19658:6;19666:9;19677:6;19650:7;:34::i;:::-;-1:-1:-1;;;;;19727:20:0;;;;;;:9;:20;;;;;;19578:115;;-1:-1:-1;19727:37:0;;19578:115;19727:24;:37::i;:::-;-1:-1:-1;;;;;19704:20:0;;;;;;;:9;:20;;;;;;;;:60;;;;19810:24;;;;;:16;:24;;;;;;;19806:116;;19855:8;;-1:-1:-1;;;;;19881:17:0;;;19855:8;19881:17;;;:9;:17;;;;;;;;19855:44;;-1:-1:-1;;;19855:44:0;;;;;9475:51:1;;;;9542:18;;;9535:34;19855:8:0;;;:17;;9448:18:1;;19855:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19851:60;;-1:-1:-1;;;;;19938:27:0;;;;;;:16;:27;;;;;;;;19934:126;;19986:8;;-1:-1:-1;;;;;20015:20:0;;;19986:8;20015:20;;;:9;:20;;;;;;;;19986:50;;-1:-1:-1;;;19986:50:0;;;;;9475:51:1;;;;9542:18;;;9535:34;19986:8:0;;;:17;;9448:18:1;;19986:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19982:66;;20094:9;-1:-1:-1;;;;;20077:40:0;20086:6;-1:-1:-1;;;;;20077:40:0;;20105:11;20077:40;;;;160:25:1;;148:2;133:18;;14:177;20077:40:0;;;;;;;;-1:-1:-1;20135:4:0;;18736:1411;-1:-1:-1;;;;18736:1411:0:o;719:136::-;777:7;804:43;808:1;811;804:43;;;;;;;;;;;;;;;;;:3;:43::i;21698:945::-;12662:16;:23;;-1:-1:-1;;;;12662:23:0;-1:-1:-1;;;12662:23:0;;;21797:4:::1;12662:23:::0;21779:24;;;:9:::1;:24;::::0;;;;;21861:15:::1;::::0;21779:24;;12662:23;21844:49:::1;::::0;21891:1:::1;::::0;21844:42:::1;::::0;21882:3:::1;::::0;21844:42;;21779:24;;21844:16:::1;:33::i;:::-;:37:::0;::::1;:42::i;:49::-;21815:78:::0;-1:-1:-1;21909:20:0::1;21932:36;:12:::0;21815:78;21932:16:::1;:36::i;:::-;21909:59;;21981:30;21998:12;21981:16;:30::i;:::-;22061:6;::::0;22087:8:::1;::::0;22054:43:::1;::::0;-1:-1:-1;;;22054:43:0;;-1:-1:-1;;;;;22087:8:0;;::::1;22054:43;::::0;::::1;3047:51:1::0;22024:27:0::1;::::0;22061:6;;;::::1;::::0;22054:24:::1;::::0;3020:18:1;;22054:43:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22024:73;;22108:23;22134:21;22108:47;;22166:23;22192:52;22242:1;22192:45;22233:3;22192:36;22212:15;;22192;:19;;:36;;;;:::i;:52::-;22166:78:::0;-1:-1:-1;22261:22:0;;22257:103:::1;;22299:49;22312:18;22332:15;22299:12;:49::i;:::-;22400:6;::::0;22426:8:::1;::::0;22393:43:::1;::::0;-1:-1:-1;;;22393:43:0;;-1:-1:-1;;;;;22426:8:0;;::::1;22393:43;::::0;::::1;3047:51:1::0;22372:18:0::1;::::0;22393:68:::1;::::0;22441:19;;22400:6;::::1;::::0;22393:24:::1;::::0;3020:18:1;;22393:43:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:68::-;22482:8;::::0;:28:::1;::::0;-1:-1:-1;;;22482:28:0;;::::1;::::0;::::1;160:25:1::0;;;22372:89:0;;-1:-1:-1;;;;;;22482:8:0::1;::::0;:16:::1;::::0;133:18:1;;22482:28:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22551:1;22533:15;:19;22529:107;;;22576:15;::::0;22568:56:::1;::::0;-1:-1:-1;;;;;22576:15:0;;::::1;::::0;22602:21:::1;22568:56:::0;::::1;;;::::0;22576:15:::1;22568:56:::0;22576:15;22568:56;22602:21;22576:15;22568:56;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;22529:107;-1:-1:-1::0;;12708:16:0;:24;;-1:-1:-1;;;;12708:24:0;;;-1:-1:-1;;;;;21698:945:0:o;16401:331::-;-1:-1:-1;;;;;16488:23:0;;16506:4;16488:23;;;;:41;;-1:-1:-1;16525:4:0;;-1:-1:-1;;;;;16515:14:0;;;16525:4;;16515:14;;16488:41;16480:50;;;;;;-1:-1:-1;;;;;16541:24:0;;;;;;:16;:24;;;;;:33;;-1:-1:-1;;16541:33:0;;;;;;;;;;;;16585:140;;16610:8;;:28;;-1:-1:-1;;;16610:28:0;;-1:-1:-1;;;;;9493:32:1;;;16610:28:0;;;9475:51:1;16610:8:0;9542:18:1;;;9535:34;16610:8:0;;;;:17;;9448:18:1;;16610:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16585:140;;;16669:8;;-1:-1:-1;;;;;16695:17:0;;;16669:8;16695:17;;;:9;:17;;;;;;;;16669:44;;-1:-1:-1;;;16669:44:0;;;;;9475:51:1;;;;9542:18;;;9535:34;16669:8:0;;;:17;;9448:18:1;;16669:44:0;9301:274:1;20159:330:0;20289:53;;;;;;;;;;;-1:-1:-1;;;20289:53:0;;;;;;;;-1:-1:-1;;;;;20289:17:0;;20252:4;20289:17;;;:9;:17;;;;;;;:53;;20311:6;;20289:21;:53::i;:::-;-1:-1:-1;;;;;20269:17:0;;;;;;;:9;:17;;;;;;:73;;;;20376:20;;;;;;;:32;;20401:6;20376:24;:32::i;:::-;-1:-1:-1;;;;;20353:20:0;;;;;;;:9;:20;;;;;;;:55;;;;20424:35;;;;;;;;;;20452:6;160:25:1;;148:2;133:18;;14:177;20424:35:0;;;;;;;;-1:-1:-1;20477:4:0;20159:330;;;;;:::o;532:181::-;590:7;;622:5;626:1;622;:5;:::i;:::-;610:17;;651:1;646;:6;;638:46;;;;-1:-1:-1;;;638:46:0;;10199:2:1;638:46:0;;;10181:21:1;10238:2;10218:18;;;10211:30;10277:29;10257:18;;;10250:57;10324:18;;638:46:0;9997:351:1;20503:428:0;20643:4;;20589:7;;;;-1:-1:-1;;;;;20643:17:0;;;:4;;:17;:36;;20673:6;;20643:36;;;20663:7;;20643:36;20619:60;-1:-1:-1;20690:17:0;20710:35;20740:4;20710:25;:6;20619:60;20710:10;:25::i;:35::-;20803:4;20785:24;;;;:9;:24;;;;;;20690:55;;-1:-1:-1;20785:39:0;;20690:55;20785:28;:39::i;:::-;20776:4;20758:24;;;;:9;:24;;;;;;;:66;;;;20840:42;;-1:-1:-1;;;;;20840:42:0;;;;;;;20872:9;160:25:1;;148:2;133:18;;14:177;20840:42:0;;;;;;;;20902:21;:6;20913:9;20902:10;:21::i;:::-;20895:28;20503:428;-1:-1:-1;;;;;;20503:428:0:o;1059:250::-;1117:7;1141:1;1146;1141:6;1137:47;;-1:-1:-1;1171:1:0;1164:8;;1137:47;1196:9;1208:5;1212:1;1208;:5;:::i;:::-;1196:17;-1:-1:-1;1241:1:0;1232:5;1236:1;1196:17;1232:5;:::i;:::-;:10;1224:56;;;;-1:-1:-1;;;1224:56:0;;10950:2:1;1224:56:0;;;10932:21:1;10989:2;10969:18;;;10962:30;11028:34;11008:18;;;11001:62;-1:-1:-1;;;11079:18:1;;;11072:31;11120:19;;1224:56:0;10748:397:1;1315:132:0;1373:7;1400:39;1404:1;1407;1400:39;;;;;;;;;;;;;;;;;:3;:39::i;20943:460::-;21035:16;;;21049:1;21035:16;;;;;;;;21011:21;;21035:16;;;;;;;;;;-1:-1:-1;21035:16:0;21011:40;;21080:4;21062;21067:1;21062:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21062:23:0;;;:7;;;;;;;;;;:23;;;;21106:6;;:13;;;-1:-1:-1;;;21106:13:0;;;;:6;;;;;:11;;:13;;;;;21062:7;;21106:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21096:4;21101:1;21096:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;21096:23:0;;;-1:-1:-1;;;;;21096:23:0;;;;;21132:35;21148:4;21155:11;21132:7;:35::i;:::-;-1:-1:-1;21180:6:0;;:215;;-1:-1:-1;;;21180:215:0;;-1:-1:-1;;;;;21180:6:0;;;;:57;;:215;;21252:11;;21180:6;;21322:4;;21349;;21369:15;;21180:215;;;:::i;21411:279::-;21492:6;;21633:8;;21492:190;;-1:-1:-1;;;21492:190:0;;21555:4;21492:190;;;12732:34:1;12782:18;;;12775:34;;;21492:6:0;12825:18:1;;;12818:34;;;12868:18;;;12861:34;-1:-1:-1;;;;;21633:8:0;;;12911:19:1;;;12904:44;21656:15:0;12964:19:1;;;12957:35;21492:6:0;;;:22;;21522:9;;12666:19:1;;21492:190:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1453:345::-;1539:7;1641:12;1634:5;1626:28;;;;-1:-1:-1;;;1626:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1665:9:0;1677:5;1681:1;1677;:5;:::i;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;885:134;953:20;;982:31;953:20;982:31;:::i;:::-;885:134;;;:::o;1024:315::-;1092:6;1100;1153:2;1141:9;1132:7;1128:23;1124:32;1121:52;;;1169:1;1166;1159:12;1121:52;1208:9;1195:23;1227:31;1252:5;1227:31;:::i;:::-;1277:5;1329:2;1314:18;;;;1301:32;;-1:-1:-1;;;1024:315:1:o;1536:180::-;1595:6;1648:2;1636:9;1627:7;1623:23;1619:32;1616:52;;;1664:1;1661;1654:12;1616:52;-1:-1:-1;1687:23:1;;1536:180;-1:-1:-1;1536:180:1:o;1721:456::-;1798:6;1806;1814;1867:2;1855:9;1846:7;1842:23;1838:32;1835:52;;;1883:1;1880;1873:12;1835:52;1922:9;1909:23;1941:31;1966:5;1941:31;:::i;:::-;1991:5;-1:-1:-1;2048:2:1;2033:18;;2020:32;2061:33;2020:32;2061:33;:::i;:::-;1721:456;;2113:7;;-1:-1:-1;;;2167:2:1;2152:18;;;;2139:32;;1721:456::o;2182:247::-;2241:6;2294:2;2282:9;2273:7;2269:23;2265:32;2262:52;;;2310:1;2307;2300:12;2262:52;2349:9;2336:23;2368:31;2393:5;2368:31;:::i;2434:248::-;2502:6;2510;2563:2;2551:9;2542:7;2538:23;2534:32;2531:52;;;2579:1;2576;2569:12;2531:52;-1:-1:-1;;2602:23:1;;;2672:2;2657:18;;;2644:32;;-1:-1:-1;2434:248:1:o;3109:160::-;3174:20;;3230:13;;3223:21;3213:32;;3203:60;;3259:1;3256;3249:12;3274:248;3339:6;3347;3400:2;3388:9;3379:7;3375:23;3371:32;3368:52;;;3416:1;3413;3406:12;3368:52;3439:26;3455:9;3439:26;:::i;3995:315::-;4060:6;4068;4121:2;4109:9;4100:7;4096:23;4092:32;4089:52;;;4137:1;4134;4127:12;4089:52;4176:9;4163:23;4195:31;4220:5;4195:31;:::i;:::-;4245:5;-1:-1:-1;4269:35:1;4300:2;4285:18;;4269:35;:::i;:::-;4259:45;;3995:315;;;;;:::o;4315:127::-;4376:10;4371:3;4367:20;4364:1;4357:31;4407:4;4404:1;4397:15;4431:4;4428:1;4421:15;4447:1121;4531:6;4562:2;4605;4593:9;4584:7;4580:23;4576:32;4573:52;;;4621:1;4618;4611:12;4573:52;4661:9;4648:23;4690:18;4731:2;4723:6;4720:14;4717:34;;;4747:1;4744;4737:12;4717:34;4785:6;4774:9;4770:22;4760:32;;4830:7;4823:4;4819:2;4815:13;4811:27;4801:55;;4852:1;4849;4842:12;4801:55;4888:2;4875:16;4910:2;4906;4903:10;4900:36;;;4916:18;;:::i;:::-;4962:2;4959:1;4955:10;4994:2;4988:9;5057:2;5053:7;5048:2;5044;5040:11;5036:25;5028:6;5024:38;5112:6;5100:10;5097:22;5092:2;5080:10;5077:18;5074:46;5071:72;;;5123:18;;:::i;:::-;5159:2;5152:22;5209:18;;;5243:15;;;;-1:-1:-1;5285:11:1;;;5281:20;;;5313:19;;;5310:39;;;5345:1;5342;5335:12;5310:39;5369:11;;;;5389:148;5405:6;5400:3;5397:15;5389:148;;;5471:23;5490:3;5471:23;:::i;:::-;5459:36;;5422:12;;;;5515;;;;5389:148;;;5556:6;4447:1121;-1:-1:-1;;;;;;;;4447:1121:1:o;5573:388::-;5641:6;5649;5702:2;5690:9;5681:7;5677:23;5673:32;5670:52;;;5718:1;5715;5708:12;5670:52;5757:9;5744:23;5776:31;5801:5;5776:31;:::i;:::-;5826:5;-1:-1:-1;5883:2:1;5868:18;;5855:32;5896:33;5855:32;5896:33;:::i;:::-;5948:7;5938:17;;;5573:388;;;;;:::o;6192:356::-;6394:2;6376:21;;;6413:18;;;6406:30;6472:34;6467:2;6452:18;;6445:62;6539:2;6524:18;;6192:356::o;6806:348::-;7008:2;6990:21;;;7047:2;7027:18;;;7020:30;7086:26;7081:2;7066:18;;7059:54;7145:2;7130:18;;6806:348::o;7159:184::-;7229:6;7282:2;7270:9;7261:7;7257:23;7253:32;7250:52;;;7298:1;7295;7288:12;7250:52;-1:-1:-1;7321:16:1;;7159:184;-1:-1:-1;7159:184:1:o;7348:127::-;7409:10;7404:3;7400:20;7397:1;7390:31;7440:4;7437:1;7430:15;7464:4;7461:1;7454:15;7480:127;7541:10;7536:3;7532:20;7529:1;7522:31;7572:4;7569:1;7562:15;7596:4;7593:1;7586:15;7612:135;7651:3;7672:17;;;7669:43;;7692:18;;:::i;:::-;-1:-1:-1;7739:1:1;7728:13;;7612:135::o;8159:128::-;8226:9;;;8247:11;;;8244:37;;;8261:18;;:::i;9867:125::-;9932:9;;;9953:10;;;9950:36;;;9966:18;;:::i;10353:168::-;10426:9;;;10457;;10474:15;;;10468:22;;10454:37;10444:71;;10495:18;;:::i;10526:217::-;10566:1;10592;10582:132;;10636:10;10631:3;10627:20;10624:1;10617:31;10671:4;10668:1;10661:15;10699:4;10696:1;10689:15;10582:132;-1:-1:-1;10728:9:1;;10526:217::o;11150:251::-;11220:6;11273:2;11261:9;11252:7;11248:23;11244:32;11241:52;;;11289:1;11286;11279:12;11241:52;11321:9;11315:16;11340:31;11365:5;11340:31;:::i;11406:980::-;11668:4;11716:3;11705:9;11701:19;11747:6;11736:9;11729:25;11773:2;11811:6;11806:2;11795:9;11791:18;11784:34;11854:3;11849:2;11838:9;11834:18;11827:31;11878:6;11913;11907:13;11944:6;11936;11929:22;11982:3;11971:9;11967:19;11960:26;;12021:2;12013:6;12009:15;11995:29;;12042:1;12052:195;12066:6;12063:1;12060:13;12052:195;;;12131:13;;-1:-1:-1;;;;;12127:39:1;12115:52;;12222:15;;;;12187:12;;;;12163:1;12081:9;12052:195;;;-1:-1:-1;;;;;;;12303:32:1;;;;12298:2;12283:18;;12276:60;-1:-1:-1;;;12367:3:1;12352:19;12345:35;12264:3;11406:980;-1:-1:-1;;;11406:980:1:o;13003:306::-;13091:6;13099;13107;13160:2;13148:9;13139:7;13135:23;13131:32;13128:52;;;13176:1;13173;13166:12;13128:52;13205:9;13199:16;13189:26;;13255:2;13244:9;13240:18;13234:25;13224:35;;13299:2;13288:9;13284:18;13278:25;13268:35;;13003:306;;;;;:::o

Swarm Source

ipfs://9b7cfee8d05ec42410b54597059c3aaf856c7e6a1e30da5bce0c4821401d58c6
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.