ETH Price: $2,445.61 (+3.54%)
Gas: 2.04 Gwei

Token

ERC20 ***
 

Overview

Max Total Supply

100,000,000 ERC20 ***

Holders

230

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000001 ERC20 ***

Value
$0.00
0xe4b953abd92a8432d8edd664bca2f08d3c8ccbe0
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:
ERC20SOUNDAI

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: UNLICENSED

pragma solidity 0.8.15;

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

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

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

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

interface ERC20 {
    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 Auth {
    address internal owner;
    address internal potentialOwner;
    mapping (address => bool) internal authorizations;

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

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    function unauthorize(address adr) public onlyOwner {
        require(adr != owner, "OWNER cant be unauthorized");
        authorizations[adr] = false;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    function transferOwnership(address payable adr) public onlyOwner {
        require(adr != owner, "Already the owner");
        require(adr != address(0), "Can not be zero address.");
        potentialOwner = adr;
        emit OwnershipNominated(adr);
    }

    function renounceOwnership() public onlyOwner {
        authorizations[owner] = false;
        owner = address(0);
        emit OwnershipTransferred(owner);
    }

    function acceptOwnership() public {
        require(msg.sender == potentialOwner, "You must be nominated as potential owner before you can accept the role.");
        authorizations[owner] = false;
        authorizations[potentialOwner] = true;
        owner = potentialOwner;
        potentialOwner = address(0);
        emit OwnershipTransferred(owner);
    }

    event OwnershipTransferred(address owner);
    event OwnershipNominated(address potentialOwner);
}

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 addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

contract ERC20SOUNDAI is ERC20, Auth {
    using SafeMath for uint256;

    address immutable WETH;
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;

    string public constant name = "SoundAI";
    string public constant symbol = "SAI";
    uint8 public constant decimals = 9;

    uint256 public constant totalSupply = 100 * 10**6 * 10**decimals;

    uint256 public _maxTxAmount = totalSupply / 200;
    uint256 public _maxWalletToken = totalSupply / 200;

    mapping (address => uint256) public balanceOf;
    mapping (address => mapping (address => uint256)) _allowances;

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

    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isWalletLimitExempt;

    uint256 public liquidityFee = 10;
    uint256 public marketingFee = 30;
    uint256 public operationsFee = 10;
    uint256 public totalFee = marketingFee + liquidityFee + operationsFee;
    uint256 public constant feeDenominator = 1000;

    uint256 public buyMultiplier = 100;
    uint256 public sellMultiplier = 100;
    uint256 public transferMultiplier = 1999;

    address autoLiquidityReceiver;
    address marketingFeeReceiver;
    address operationsFeeReceiver;

    IDEXRouter public router;
    address public immutable pair;

    bool public tradingOpen = true;
    bool antibot = true;

    mapping (address => uint) firstbuy;

    bool public swapEnabled = true;
    uint256 public swapThreshold = totalSupply / 1000;

    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();

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

        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = 0xCAF17C9eb1115BC623Db7C92d28f99e207334843;
        operationsFeeReceiver = 0xeD70eFC9C731a05D22c5e30c1f402Eba384542fA;

        isFeeExempt[msg.sender] = true;

        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[DEAD] = true;
        isTxLimitExempt[ZERO] = true;

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

        balanceOf[msg.sender] = totalSupply;
        emit Transfer(address(0), msg.sender, totalSupply);
    }

    receive() external payable { }

    function getOwner() external view override returns (address) { return owner; }
    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 _transferFrom(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 _transferFrom(sender, recipient, amount);
    }

    function setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external onlyOwner {
        require(maxWallPercent_base1000 >= 5,"Cannot set max wallet less than 0.5%");
        _maxWalletToken = (totalSupply * maxWallPercent_base1000 ) / 1000;
    }
    function setMaxTxPercent_base1000(uint256 maxTXPercentage_base1000) external onlyOwner {
        require(maxTXPercentage_base1000 >= 5,"Cannot set max transaction less than 0.5%");
        _maxTxAmount = (totalSupply * maxTXPercentage_base1000 ) / 1000;
    }

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

        if(!authorizations[sender] && !authorizations[recipient]){
            require(tradingOpen,"Trading not open yet");
            if(antibot && (sender == pair)){
                if(firstbuy[recipient] == 0){
                    firstbuy[recipient] = block.number;
                }
                blacklist_wallet(recipient,true);
            }
        }

        // Blacklist
        if(blacklistMode && !antibot){
            require(!isBlacklisted[sender],"Blacklisted");
        }

        if(antibot && (firstbuy[sender] > 0)){
            require( firstbuy[sender] > (block.number - 60), "Bought before contract was launched");
        }

        if (!authorizations[sender] && !isWalletLimitExempt[sender] && !isWalletLimitExempt[recipient] && recipient != pair) {
            require((balanceOf[recipient] + amount) <= _maxWalletToken,"max wallet limit reached");
        }

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

        if(shouldSwapBack()){ swapBack(); }

        balanceOf[sender] = balanceOf[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = (isFeeExempt[sender] || isFeeExempt[recipient]) ? amount : takeFee(sender, amount, recipient);

        balanceOf[recipient] = balanceOf[recipient].add(amountReceived);


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

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        if(amount == 0 || totalFee == 0){
            return amount;
        }

        uint256 multiplier = transferMultiplier;

        if(recipient == pair) {
            multiplier = sellMultiplier;
        } else if(sender == pair) {
            multiplier = buyMultiplier;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);
        uint256 contractTokens = feeAmount;

        if(contractTokens > 0){
            balanceOf[address(this)] = balanceOf[address(this)].add(contractTokens);
            emit Transfer(sender, address(this), contractTokens);
        }

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && balanceOf[address(this)] >= swapThreshold;
    }

    function clearStuckBalance(uint256 amountPercentage) external onlyOwner {
        uint256 amountETH = address(this).balance;
        payable(msg.sender).transfer(amountETH * amountPercentage / 100);
    }

    function clearStuckToken(address tokenAddress, uint256 tokens) external onlyOwner returns (bool success) {
        if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }
        return ERC20(tokenAddress).transfer(msg.sender, tokens);
    }

    function tradingStatus(bool _status, bool _ab) external onlyOwner {
        tradingOpen = _status;
        antibot = _ab;
    }

    function swapBack() internal swapping {
        uint256 amountToLiquify = swapThreshold.mul(liquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

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

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

        uint256 amountETH = address(this).balance;

        uint256 totalETHFee = totalFee.sub(liquidityFee.div(2));
        
        uint256 amountETHLiquidity = amountETH.mul(liquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
        uint256 amountETHOperations = amountETH.mul(operationsFee).div(totalETHFee);

        payable(marketingFeeReceiver).transfer(amountETHMarketing);
        payable(operationsFeeReceiver).transfer(amountETHOperations);

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

    function manage_blacklist_status(bool _status) external onlyOwner {
        blacklistMode = _status;
    }

    function manage_blacklist(address[] calldata addresses, bool status) external onlyOwner {
        require(addresses.length < 201,"GAS Error: max limit is 200 addresses");
        for (uint256 i=0; i < addresses.length; ++i) {
            blacklist_wallet(addresses[i],status);
        }
    }

    function blacklist_wallet(address _adr, bool _status) private {
        if(_status && _adr == pair){
            return;
        }
        isBlacklisted[_adr] = _status;
    }

    function manage_FeeExempt(address[] calldata addresses, bool status) external onlyOwner {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i=0; i < addresses.length; ++i) {
            isFeeExempt[addresses[i]] = status;
        }
    }

    function manage_TxLimitExempt(address[] calldata addresses, bool status) external onlyOwner {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i=0; i < addresses.length; ++i) {
            isTxLimitExempt[addresses[i]] = status;
        }
    }

    function manage_WalletLimitExempt(address[] calldata addresses, bool status) external onlyOwner {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i=0; i < addresses.length; ++i) {
            isWalletLimitExempt[addresses[i]] = status;
        }
    }

    function setMultipliers(uint256 _buy, uint256 _sell, uint256 _trans) external onlyOwner {
        sellMultiplier = _sell;
        buyMultiplier = _buy;
        transferMultiplier = _trans;
    }

    function setFees(uint256 _liquidityFee,  uint256 _marketingFee, uint256 _operationsFee) external onlyOwner {
        liquidityFee = _liquidityFee;
        marketingFee = _marketingFee;
        operationsFee = _operationsFee;
        totalFee = _liquidityFee + _marketingFee + _operationsFee;
    }

    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _operationsFeeReceiver) external onlyOwner {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        operationsFeeReceiver = _operationsFeeReceiver;
    }


    function setSwapBackSettings(bool _enabled, uint256 _denominator) external onlyOwner {
        require(_denominator > 50, "Amount too high");

        swapEnabled = _enabled;
        swapThreshold = totalSupply / _denominator;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return (totalSupply - balanceOf[DEAD] - balanceOf[ZERO]);
    }


	function multiTransfer(address from, address[] calldata addresses, uint256[] calldata tokens) external authorized {
	    require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
	    require(addresses.length == tokens.length,"Mismatch between address and token count");

	    uint256 SCCC = 0;

	    for(uint i=0; i < addresses.length; i++){
	        SCCC = SCCC + tokens[i];
	    }

	    require(balanceOf[from] >= SCCC, "Not enough tokens in wallet");

	    for(uint i=0; i < addresses.length; i++){
	        _basicTransfer(from,addresses[i],tokens[i]);
	    }
	}

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"potentialOwner","type":"address"}],"name":"OwnershipNominated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blacklistMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_FeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_TxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_WalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"manage_blacklist_status","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"multiTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"sellMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_operationsFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_operationsFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base1000","type":"uint256"}],"name":"setMaxTxPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setMultipliers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","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":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"bool","name":"_ab","type":"bool"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c060405260c8620000146009600a62000595565b62000024906305f5e100620005ad565b620000309190620005cf565b60035560c8620000436009600a62000595565b62000053906305f5e100620005ad565b6200005f9190620005cf565b6004556007805460ff19166001179055600a600c819055601e600d819055600e8290556200008f908290620005f2565b6200009b9190620005f2565b600f55606460108190556011556107cf6012556016805461ffff60a01b191661010160a01b1790556018805460ff191660011790556103e8620000e16009600a62000595565b620000f1906305f5e100620005ad565b620000fd9190620005cf565b6019553480156200010d57600080fd5b5060008054336001600160a01b031991821681178355825260026020908152604092839020805460ff1916600117905560168054737a250d5630b4cf539739df2c5dacb4c659f2488d93168317905582516315ab88c960e31b81529251919263ad5c464892600480830193928290030181865afa15801562000193573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b991906200060d565b6001600160a01b039081166080526016546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa1580156200020a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023091906200060d565b6080516040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af115801562000282573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a891906200060d565b6001600160a01b0390811660a05230600081815260066020908152604080832060165490951683529381528382206000199055601380546001600160a01b03199081163390811790925560148054821673caf17c9eb1115bc623db7c92d28f99e2073348431790556015805490911673ed70efc9c731a05d22c5e30c1f402eba384542fa17905582526009808252848320805460ff199081166001908117909255600a80855287862080548316841790557f20677881080440a9b3c87e826370bb5d9c2f74efd4dede686d52d77a6a09f8bb80548316841790557f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e38054831684179055600b9094528685208054821683179055948452948320805485168617905561dead9092527f44433eeeda1d04bdae79f62169cdb2ab0a6af287fa15706d3fafdbac5fac34158054909316909317909155620004069162000595565b62000416906305f5e100620005ad565b33600081815260056020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620004596009600a62000595565b62000469906305f5e100620005ad565b60405190815260200160405180910390a362000638565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004d7578160001904821115620004bb57620004bb62000480565b80851615620004c957918102915b93841c93908002906200049b565b509250929050565b600082620004f0575060016200058f565b81620004ff575060006200058f565b8160018114620005185760028114620005235762000543565b60019150506200058f565b60ff84111562000537576200053762000480565b50506001821b6200058f565b5060208310610133831016604e8410600b841016171562000568575081810a6200058f565b62000574838362000496565b80600019048211156200058b576200058b62000480565b0290505b92915050565b6000620005a660ff841683620004df565b9392505050565b6000816000190483118215151615620005ca57620005ca62000480565b500290565b600082620005ed57634e487b7160e01b600052601260045260246000fd5b500490565b6000821982111562000608576200060862000480565b500190565b6000602082840312156200062057600080fd5b81516001600160a01b0381168114620005a657600080fd5b60805160a051612e31620006886000396000818161082201528181611c5401528181611e6d0152818161210d015281816121e1015281816125600152612594015260006122e80152612e316000f3fe6080604052600436106103375760003560e01c8063715018a6116101ab578063b6a5d7de116100f7578063f0b37c0411610095578063fe575a871161006f578063fe575a87146109da578063fe9fbb8014610a0a578063fed0d2a114610a43578063ffb54a9914610a5957600080fd5b8063f0b37c041461097a578063f2fde38b1461099a578063f887ea40146109ba57600080fd5b8063cec10c11116100d1578063cec10c11146108d4578063d7c01032146108f4578063dd62ed3e14610914578063df20fd491461095a57600080fd5b8063b6a5d7de14610864578063bd9ab53714610884578063c867d60b146108a457600080fd5b8063896648c11161016457806395d89b411161013e57806395d89b41146107cb57806398118cb4146107fa578063a8aa1b3114610810578063a9059cbb1461084457600080fd5b8063896648c1146107615780638b42507f1461077b5780638e2eee84146107ab57600080fd5b8063715018a6146106b957806377b54bad146106ce57806378109e54146106ee57806379ba5097146107045780637d1db4a514610719578063893d20e81461072f57600080fd5b80631df4ccfc116102855780634be9d869116102235780636b67c4df116101fd5780636b67c4df1461063c5780636ce46bc3146106525780636ddd17131461067257806370a082311461068c57600080fd5b80634be9d869146105e6578063571ac8b0146106065780635921652f1461062657600080fd5b80632f54bf6e1161025f5780632f54bf6e1461054a5780633121c7c014610579578063313ce5671461058f5780633f4218e0146105b657600080fd5b80631df4ccfc146104ff57806323b872dd146105155780632b112e491461053557600080fd5b8063090896be116102f2578063180b0d7e116102cc578063180b0d7e1461049457806318160ddd146104aa5780631ca0a28d146104bf5780631da1db5e146104df57600080fd5b8063090896be1461042e57806309302dc614610444578063095ea7b31461046457600080fd5b806210868314610343578062bff44614610365578063034c489714610385578063034fc0b7146103a55780630445b667146103c557806306fdde03146103ee57600080fd5b3661033e57005b600080fd5b34801561034f57600080fd5b5061036361035e366004612824565b610a7a565b005b34801561037157600080fd5b50610363610380366004612824565b610b43565b34801561039157600080fd5b506103636103a036600461287b565b610bfd565b3480156103b157600080fd5b506103636103c03660046128b4565b610c5b565b3480156103d157600080fd5b506103db60195481565b6040519081526020015b60405180910390f35b3480156103fa57600080fd5b5061042160405180604001604052806007815260200166536f756e64414960c81b81525081565b6040516103e591906128d1565b34801561043a57600080fd5b506103db600e5481565b34801561045057600080fd5b5061036361045f366004612926565b610c98565b34801561047057600080fd5b5061048461047f366004612954565b610d57565b60405190151581526020016103e5565b3480156104a057600080fd5b506103db6103e881565b3480156104b657600080fd5b506103db610dc4565b3480156104cb57600080fd5b506103636104da366004612980565b610de1565b3480156104eb57600080fd5b506103636104fa366004612926565b610fcc565b34801561050b57600080fd5b506103db600f5481565b34801561052157600080fd5b50610484610530366004612a03565b61103e565b34801561054157600080fd5b506103db611100565b34801561055657600080fd5b50610484610565366004612a44565b6000546001600160a01b0391821691161490565b34801561058557600080fd5b506103db60105481565b34801561059b57600080fd5b506105a4600981565b60405160ff90911681526020016103e5565b3480156105c257600080fd5b506104846105d1366004612a44565b60096020526000908152604090205460ff1681565b3480156105f257600080fd5b50610363610601366004612824565b611187565b34801561061257600080fd5b50610484610621366004612a44565b611241565b34801561063257600080fd5b506103db60125481565b34801561064857600080fd5b506103db600d5481565b34801561065e57600080fd5b5061036361066d366004612a61565b61124f565b34801561067e57600080fd5b506018546104849060ff1681565b34801561069857600080fd5b506103db6106a7366004612a44565b60056020526000908152604090205481565b3480156106c557600080fd5b5061036361128a565b3480156106da57600080fd5b506104846106e9366004612954565b611317565b3480156106fa57600080fd5b506103db60045481565b34801561071057600080fd5b50610363611426565b34801561072557600080fd5b506103db60035481565b34801561073b57600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016103e5565b34801561076d57600080fd5b506007546104849060ff1681565b34801561078757600080fd5b50610484610796366004612a44565b600a6020526000908152604090205460ff1681565b3480156107b757600080fd5b506103636107c6366004612824565b611540565b3480156107d757600080fd5b506104216040518060400160405280600381526020016253414960e81b81525081565b34801561080657600080fd5b506103db600c5481565b34801561081c57600080fd5b506107497f000000000000000000000000000000000000000000000000000000000000000081565b34801561085057600080fd5b5061048461085f366004612954565b611613565b34801561087057600080fd5b5061036361087f366004612a44565b611620565b34801561089057600080fd5b5061036361089f366004612926565b61166e565b3480156108b057600080fd5b506104846108bf366004612a44565b600b6020526000908152604090205460ff1681565b3480156108e057600080fd5b506103636108ef366004612a61565b611733565b34801561090057600080fd5b5061036361090f366004612a8d565b611789565b34801561092057600080fd5b506103db61092f366004612acd565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561096657600080fd5b50610363610975366004612afb565b6117f2565b34801561098657600080fd5b50610363610995366004612a44565b611898565b3480156109a657600080fd5b506103636109b5366004612a44565b611941565b3480156109c657600080fd5b50601654610749906001600160a01b031681565b3480156109e657600080fd5b506104846109f5366004612a44565b60086020526000908152604090205460ff1681565b348015610a1657600080fd5b50610484610a25366004612a44565b6001600160a01b031660009081526002602052604090205460ff1690565b348015610a4f57600080fd5b506103db60115481565b348015610a6557600080fd5b5060165461048490600160a01b900460ff1681565b6000546001600160a01b03163314610aad5760405162461bcd60e51b8152600401610aa490612b19565b60405180910390fd5b6101f58210610ace5760405162461bcd60e51b8152600401610aa490612b39565b60005b82811015610b3d5781600b6000868685818110610af057610af0612b7e565b9050602002016020810190610b059190612a44565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610b3681612baa565b9050610ad1565b50505050565b6000546001600160a01b03163314610b6d5760405162461bcd60e51b8152600401610aa490612b19565b6101f58210610b8e5760405162461bcd60e51b8152600401610aa490612b39565b60005b82811015610b3d578160096000868685818110610bb057610bb0612b7e565b9050602002016020810190610bc59190612a44565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610bf681612baa565b9050610b91565b6000546001600160a01b03163314610c275760405162461bcd60e51b8152600401610aa490612b19565b6016805461ffff60a01b1916600160a01b9315159390930260ff60a81b191692909217600160a81b91151591909102179055565b6000546001600160a01b03163314610c855760405162461bcd60e51b8152600401610aa490612b19565b6007805460ff1916911515919091179055565b6000546001600160a01b03163314610cc25760405162461bcd60e51b8152600401610aa490612b19565b6005811015610d1f5760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e20604482015263302e352560e01b6064820152608401610aa4565b6103e881610d2f6009600a612ca7565b610d3d906305f5e100612cb6565b610d479190612cb6565b610d519190612cd5565b60045550565b3360008181526006602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610db29086815260200190565b60405180910390a35060015b92915050565b610dd06009600a612ca7565b610dde906305f5e100612cb6565b81565b3360009081526002602052604090205460ff16610e2e5760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610aa4565b6101f58310610e4f5760405162461bcd60e51b8152600401610aa490612b39565b828114610eaf5760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e206164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610aa4565b6000805b84811015610ef357838382818110610ecd57610ecd612b7e565b9050602002013582610edf9190612cf7565b915080610eeb81612baa565b915050610eb3565b506001600160a01b038616600090815260056020526040902054811115610f5c5760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610aa4565b60005b84811015610fc357610fb087878784818110610f7d57610f7d612b7e565b9050602002016020810190610f929190612a44565b868685818110610fa457610fa4612b7e565b90506020020135611a67565b5080610fbb81612baa565b915050610f5f565b50505050505050565b6000546001600160a01b03163314610ff65760405162461bcd60e51b8152600401610aa490612b19565b47336108fc60646110078585612cb6565b6110119190612cd5565b6040518115909202916000818181858888f19350505050158015611039573d6000803e3d6000fd5b505050565b6001600160a01b0383166000908152600660209081526040808320338452909152812054600019146110eb576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526006825283812033825290915291909120546110c6918490611b4d565b6001600160a01b03851660009081526006602090815260408083203384529091529020555b6110f6848484611b87565b90505b9392505050565b60056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461dead60009081527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba549091906111606009600a612ca7565b61116e906305f5e100612cb6565b6111789190612d0f565b6111829190612d0f565b905090565b6000546001600160a01b031633146111b15760405162461bcd60e51b8152600401610aa490612b19565b6101f582106111d25760405162461bcd60e51b8152600401610aa490612b39565b60005b82811015610b3d5781600a60008686858181106111f4576111f4612b7e565b90506020020160208101906112099190612a44565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561123a81612baa565b90506111d5565b6000610dbe82600019610d57565b6000546001600160a01b031633146112795760405162461bcd60e51b8152600401610aa490612b19565b601191909155601091909155601255565b6000546001600160a01b031633146112b45760405162461bcd60e51b8152600401610aa490612b19565b600080546001600160a01b03168152600260209081526040808320805460ff1916905582546001600160a01b0319168355519182527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616391015b60405180910390a1565b600080546001600160a01b031633146113425760405162461bcd60e51b8152600401610aa490612b19565b816000036113b5576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa15801561138e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b29190612d26565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015611402573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f99190612d3f565b6001546001600160a01b031633146114b75760405162461bcd60e51b815260206004820152604860248201527f596f75206d757374206265206e6f6d696e6174656420617320706f74656e746960448201527f616c206f776e6572206265666f726520796f752063616e2061636365707420746064820152673432903937b6329760c11b608482015260a401610aa4565b600080546001600160a01b039081168252600260209081526040808420805460ff19908116909155600180548516865282862080549092168117909155805485549481166001600160a01b031995861681179096559390931690925590519182527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910161130d565b6000546001600160a01b0316331461156a5760405162461bcd60e51b8152600401610aa490612b19565b60c982106115c85760405162461bcd60e51b815260206004820152602560248201527f474153204572726f723a206d6178206c696d6974206973203230302061646472604482015264657373657360d81b6064820152608401610aa4565b60005b82811015610b3d576116038484838181106115e8576115e8612b7e565b90506020020160208101906115fd9190612a44565b83612103565b61160c81612baa565b90506115cb565b60006110f9338484611b87565b6000546001600160a01b0316331461164a5760405162461bcd60e51b8152600401610aa490612b19565b6001600160a01b03166000908152600260205260409020805460ff19166001179055565b6000546001600160a01b031633146116985760405162461bcd60e51b8152600401610aa490612b19565b60058110156116fb5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c657373206044820152687468616e20302e352560b81b6064820152608401610aa4565b6103e88161170b6009600a612ca7565b611719906305f5e100612cb6565b6117239190612cb6565b61172d9190612cd5565b60035550565b6000546001600160a01b0316331461175d5760405162461bcd60e51b8152600401610aa490612b19565b600c839055600d829055600e819055806117778385612cf7565b6117819190612cf7565b600f55505050565b6000546001600160a01b031633146117b35760405162461bcd60e51b8152600401610aa490612b19565b601380546001600160a01b039485166001600160a01b031991821617909155601480549385169382169390931790925560158054919093169116179055565b6000546001600160a01b0316331461181c5760405162461bcd60e51b8152600401610aa490612b19565b6032811161185e5760405162461bcd60e51b815260206004820152600f60248201526e082dadeeadce840e8dede40d0d2ced608b1b6044820152606401610aa4565b6018805460ff1916831515179055806118796009600a612ca7565b611887906305f5e100612cb6565b6118919190612cd5565b6019555050565b6000546001600160a01b031633146118c25760405162461bcd60e51b8152600401610aa490612b19565b6000546001600160a01b03908116908216036119205760405162461bcd60e51b815260206004820152601a60248201527f4f574e45522063616e7420626520756e617574686f72697a65640000000000006044820152606401610aa4565b6001600160a01b03166000908152600260205260409020805460ff19169055565b6000546001600160a01b0316331461196b5760405162461bcd60e51b8152600401610aa490612b19565b6000546001600160a01b03908116908216036119bd5760405162461bcd60e51b815260206004820152601160248201527020b63932b0b23c903a34329037bbb732b960791b6044820152606401610aa4565b6001600160a01b038116611a135760405162461bcd60e51b815260206004820152601860248201527f43616e206e6f74206265207a65726f20616464726573732e00000000000000006044820152606401610aa4565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527fe235b3289f2e990914b334bf6827949c27f6ba58d3e5a1d6f8415037ca1ef2229060200160405180910390a150565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600590915291822054611ab8918490611b4d565b6001600160a01b038086166000908152600560205260408082209390935590851681522054611ae79083612175565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b3b9086815260200190565b60405180910390a35060019392505050565b60008184841115611b715760405162461bcd60e51b8152600401610aa491906128d1565b506000611b7e8486612d0f565b95945050505050565b601a5460009060ff1615611ba757611ba0848484611a67565b90506110f9565b6001600160a01b03841660009081526002602052604090205460ff16158015611be957506001600160a01b03831660009081526002602052604090205460ff16155b15611cd357601654600160a01b900460ff16611c3e5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610aa4565b601654600160a81b900460ff168015611c8857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316145b15611cd3576001600160a01b0383166000908152601760205260408120549003611cc8576001600160a01b03831660009081526017602052604090204390555b611cd3836001612103565b60075460ff168015611cef5750601654600160a81b900460ff16155b15611d4b576001600160a01b03841660009081526008602052604090205460ff1615611d4b5760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610aa4565b601654600160a81b900460ff168015611d7b57506001600160a01b03841660009081526017602052604090205415155b15611dfd57611d8b603c43612d0f565b6001600160a01b03851660009081526017602052604090205411611dfd5760405162461bcd60e51b815260206004820152602360248201527f426f75676874206265666f726520636f6e747261637420776173206c61756e636044820152621a195960ea1b6064820152608401610aa4565b6001600160a01b03841660009081526002602052604090205460ff16158015611e3f57506001600160a01b0384166000908152600b602052604090205460ff16155b8015611e6457506001600160a01b0383166000908152600b602052604090205460ff16155b8015611ea257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b15611f1c576004546001600160a01b038416600090815260056020526040902054611ece908490612cf7565b1115611f1c5760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d6974207265616368656400000000000000006044820152606401610aa4565b60035482111580611f4557506001600160a01b0384166000908152600a602052604090205460ff165b80611f6857506001600160a01b0383166000908152600a602052604090205460ff165b611fac5760405162461bcd60e51b815260206004820152601560248201527413585e08151608131a5b5a5d08115e18d959591959605a1b6044820152606401610aa4565b611fb46121d4565b15611fc157611fc1612240565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260059091529190912054612013918490611b4d565b6001600160a01b038516600090815260056020908152604080832093909355600990529081205460ff168061206057506001600160a01b03841660009081526009602052604090205460ff165b6120745761206f858486612538565b612076565b825b6001600160a01b03851660009081526005602052604090205490915061209c9082612175565b6001600160a01b0380861660008181526005602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906120f09085815260200190565b60405180910390a3506001949350505050565b80801561214157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b1561214a575050565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000806121828385612cf7565b9050838110156110f95760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610aa4565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015906122125750601a5460ff16155b8015612220575060185460ff165b801561118257505060195430600090815260056020526040902054101590565b601a805460ff19166001179055600f54600c546019546000926122739260029261226d9291839190612693565b90612715565b9050600061228c8260195461275790919063ffffffff16565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106122c6576122c6612b7e565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061231a5761231a612b7e565b6001600160a01b03928316602091820292909201015260165460405163791ac94760e01b815291169063791ac94790612360908590600090869030904290600401612d5c565b600060405180830381600087803b15801561237a57600080fd5b505af115801561238e573d6000803e3d6000fd5b5050600c54479250600091506123b2906123a9906002612715565b600f5490612757565b905060006123d4600261226d8461226d600c548861269390919063ffffffff16565b905060006123f18361226d600d548761269390919063ffffffff16565b9050600061240e8461226d600e548861269390919063ffffffff16565b6014546040519192506001600160a01b03169083156108fc029084906000818181858888f19350505050158015612449573d6000803e3d6000fd5b506015546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612484573d6000803e3d6000fd5b5087156125245760165460135460405163f305d71960e01b8152306004820152602481018b905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990859060c40160606040518083038185885af11580156124fb573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906125209190612dcd565b5050505b5050601a805460ff19169055505050505050565b60008215806125475750600f54155b156125535750816110f9565b6012546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169084160361259257506011546125d0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316036125d057506010545b60006126016125e26103e86064612cb6565b61226d846125fb600f548a61269390919063ffffffff16565b90612693565b905080801561267e57306000908152600560205260409020546126249082612175565b30600081815260056020526040908190209290925590516001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906126759085815260200190565b60405180910390a35b6126888683612757565b979650505050505050565b6000826000036126a557506000610dbe565b60006126b18385612cb6565b9050826126be8583612cd5565b146110f95760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610aa4565b60006110f983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612799565b60006110f983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b4d565b600081836127ba5760405162461bcd60e51b8152600401610aa491906128d1565b506000611b7e8486612cd5565b60008083601f8401126127d957600080fd5b50813567ffffffffffffffff8111156127f157600080fd5b6020830191508360208260051b850101111561280c57600080fd5b9250929050565b801515811461282157600080fd5b50565b60008060006040848603121561283957600080fd5b833567ffffffffffffffff81111561285057600080fd5b61285c868287016127c7565b909450925050602084013561287081612813565b809150509250925092565b6000806040838503121561288e57600080fd5b823561289981612813565b915060208301356128a981612813565b809150509250929050565b6000602082840312156128c657600080fd5b81356110f981612813565b600060208083528351808285015260005b818110156128fe578581018301518582016040015282016128e2565b81811115612910576000604083870101525b50601f01601f1916929092016040019392505050565b60006020828403121561293857600080fd5b5035919050565b6001600160a01b038116811461282157600080fd5b6000806040838503121561296757600080fd5b82356129728161293f565b946020939093013593505050565b60008060008060006060868803121561299857600080fd5b85356129a38161293f565b9450602086013567ffffffffffffffff808211156129c057600080fd5b6129cc89838a016127c7565b909650945060408801359150808211156129e557600080fd5b506129f2888289016127c7565b969995985093965092949392505050565b600080600060608486031215612a1857600080fd5b8335612a238161293f565b92506020840135612a338161293f565b929592945050506040919091013590565b600060208284031215612a5657600080fd5b81356110f98161293f565b600080600060608486031215612a7657600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215612aa257600080fd5b8335612aad8161293f565b92506020840135612abd8161293f565b915060408401356128708161293f565b60008060408385031215612ae057600080fd5b8235612aeb8161293f565b915060208301356128a98161293f565b60008060408385031215612b0e57600080fd5b823561297281612813565b60208082526006908201526510a7aba722a960d11b604082015260600190565b60208082526025908201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604082015264657373657360d81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612bbc57612bbc612b94565b5060010190565b600181815b80851115612bfe578160001904821115612be457612be4612b94565b80851615612bf157918102915b93841c9390800290612bc8565b509250929050565b600082612c1557506001610dbe565b81612c2257506000610dbe565b8160018114612c385760028114612c4257612c5e565b6001915050610dbe565b60ff841115612c5357612c53612b94565b50506001821b610dbe565b5060208310610133831016604e8410600b8410161715612c81575081810a610dbe565b612c8b8383612bc3565b8060001904821115612c9f57612c9f612b94565b029392505050565b60006110f960ff841683612c06565b6000816000190483118215151615612cd057612cd0612b94565b500290565b600082612cf257634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115612d0a57612d0a612b94565b500190565b600082821015612d2157612d21612b94565b500390565b600060208284031215612d3857600080fd5b5051919050565b600060208284031215612d5157600080fd5b81516110f981612813565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612dac5784516001600160a01b031683529383019391830191600101612d87565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612de257600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212200f737c2d73c7047c18ad6c93eadb8abb6e23e3a8e628f0e6170a29d5b68d8b4564736f6c634300080f0033

Deployed Bytecode

0x6080604052600436106103375760003560e01c8063715018a6116101ab578063b6a5d7de116100f7578063f0b37c0411610095578063fe575a871161006f578063fe575a87146109da578063fe9fbb8014610a0a578063fed0d2a114610a43578063ffb54a9914610a5957600080fd5b8063f0b37c041461097a578063f2fde38b1461099a578063f887ea40146109ba57600080fd5b8063cec10c11116100d1578063cec10c11146108d4578063d7c01032146108f4578063dd62ed3e14610914578063df20fd491461095a57600080fd5b8063b6a5d7de14610864578063bd9ab53714610884578063c867d60b146108a457600080fd5b8063896648c11161016457806395d89b411161013e57806395d89b41146107cb57806398118cb4146107fa578063a8aa1b3114610810578063a9059cbb1461084457600080fd5b8063896648c1146107615780638b42507f1461077b5780638e2eee84146107ab57600080fd5b8063715018a6146106b957806377b54bad146106ce57806378109e54146106ee57806379ba5097146107045780637d1db4a514610719578063893d20e81461072f57600080fd5b80631df4ccfc116102855780634be9d869116102235780636b67c4df116101fd5780636b67c4df1461063c5780636ce46bc3146106525780636ddd17131461067257806370a082311461068c57600080fd5b80634be9d869146105e6578063571ac8b0146106065780635921652f1461062657600080fd5b80632f54bf6e1161025f5780632f54bf6e1461054a5780633121c7c014610579578063313ce5671461058f5780633f4218e0146105b657600080fd5b80631df4ccfc146104ff57806323b872dd146105155780632b112e491461053557600080fd5b8063090896be116102f2578063180b0d7e116102cc578063180b0d7e1461049457806318160ddd146104aa5780631ca0a28d146104bf5780631da1db5e146104df57600080fd5b8063090896be1461042e57806309302dc614610444578063095ea7b31461046457600080fd5b806210868314610343578062bff44614610365578063034c489714610385578063034fc0b7146103a55780630445b667146103c557806306fdde03146103ee57600080fd5b3661033e57005b600080fd5b34801561034f57600080fd5b5061036361035e366004612824565b610a7a565b005b34801561037157600080fd5b50610363610380366004612824565b610b43565b34801561039157600080fd5b506103636103a036600461287b565b610bfd565b3480156103b157600080fd5b506103636103c03660046128b4565b610c5b565b3480156103d157600080fd5b506103db60195481565b6040519081526020015b60405180910390f35b3480156103fa57600080fd5b5061042160405180604001604052806007815260200166536f756e64414960c81b81525081565b6040516103e591906128d1565b34801561043a57600080fd5b506103db600e5481565b34801561045057600080fd5b5061036361045f366004612926565b610c98565b34801561047057600080fd5b5061048461047f366004612954565b610d57565b60405190151581526020016103e5565b3480156104a057600080fd5b506103db6103e881565b3480156104b657600080fd5b506103db610dc4565b3480156104cb57600080fd5b506103636104da366004612980565b610de1565b3480156104eb57600080fd5b506103636104fa366004612926565b610fcc565b34801561050b57600080fd5b506103db600f5481565b34801561052157600080fd5b50610484610530366004612a03565b61103e565b34801561054157600080fd5b506103db611100565b34801561055657600080fd5b50610484610565366004612a44565b6000546001600160a01b0391821691161490565b34801561058557600080fd5b506103db60105481565b34801561059b57600080fd5b506105a4600981565b60405160ff90911681526020016103e5565b3480156105c257600080fd5b506104846105d1366004612a44565b60096020526000908152604090205460ff1681565b3480156105f257600080fd5b50610363610601366004612824565b611187565b34801561061257600080fd5b50610484610621366004612a44565b611241565b34801561063257600080fd5b506103db60125481565b34801561064857600080fd5b506103db600d5481565b34801561065e57600080fd5b5061036361066d366004612a61565b61124f565b34801561067e57600080fd5b506018546104849060ff1681565b34801561069857600080fd5b506103db6106a7366004612a44565b60056020526000908152604090205481565b3480156106c557600080fd5b5061036361128a565b3480156106da57600080fd5b506104846106e9366004612954565b611317565b3480156106fa57600080fd5b506103db60045481565b34801561071057600080fd5b50610363611426565b34801561072557600080fd5b506103db60035481565b34801561073b57600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016103e5565b34801561076d57600080fd5b506007546104849060ff1681565b34801561078757600080fd5b50610484610796366004612a44565b600a6020526000908152604090205460ff1681565b3480156107b757600080fd5b506103636107c6366004612824565b611540565b3480156107d757600080fd5b506104216040518060400160405280600381526020016253414960e81b81525081565b34801561080657600080fd5b506103db600c5481565b34801561081c57600080fd5b506107497f000000000000000000000000ab553c3a2836dfc15dcea73cba9b9d9aaa42c75a81565b34801561085057600080fd5b5061048461085f366004612954565b611613565b34801561087057600080fd5b5061036361087f366004612a44565b611620565b34801561089057600080fd5b5061036361089f366004612926565b61166e565b3480156108b057600080fd5b506104846108bf366004612a44565b600b6020526000908152604090205460ff1681565b3480156108e057600080fd5b506103636108ef366004612a61565b611733565b34801561090057600080fd5b5061036361090f366004612a8d565b611789565b34801561092057600080fd5b506103db61092f366004612acd565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561096657600080fd5b50610363610975366004612afb565b6117f2565b34801561098657600080fd5b50610363610995366004612a44565b611898565b3480156109a657600080fd5b506103636109b5366004612a44565b611941565b3480156109c657600080fd5b50601654610749906001600160a01b031681565b3480156109e657600080fd5b506104846109f5366004612a44565b60086020526000908152604090205460ff1681565b348015610a1657600080fd5b50610484610a25366004612a44565b6001600160a01b031660009081526002602052604090205460ff1690565b348015610a4f57600080fd5b506103db60115481565b348015610a6557600080fd5b5060165461048490600160a01b900460ff1681565b6000546001600160a01b03163314610aad5760405162461bcd60e51b8152600401610aa490612b19565b60405180910390fd5b6101f58210610ace5760405162461bcd60e51b8152600401610aa490612b39565b60005b82811015610b3d5781600b6000868685818110610af057610af0612b7e565b9050602002016020810190610b059190612a44565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610b3681612baa565b9050610ad1565b50505050565b6000546001600160a01b03163314610b6d5760405162461bcd60e51b8152600401610aa490612b19565b6101f58210610b8e5760405162461bcd60e51b8152600401610aa490612b39565b60005b82811015610b3d578160096000868685818110610bb057610bb0612b7e565b9050602002016020810190610bc59190612a44565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610bf681612baa565b9050610b91565b6000546001600160a01b03163314610c275760405162461bcd60e51b8152600401610aa490612b19565b6016805461ffff60a01b1916600160a01b9315159390930260ff60a81b191692909217600160a81b91151591909102179055565b6000546001600160a01b03163314610c855760405162461bcd60e51b8152600401610aa490612b19565b6007805460ff1916911515919091179055565b6000546001600160a01b03163314610cc25760405162461bcd60e51b8152600401610aa490612b19565b6005811015610d1f5760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e20604482015263302e352560e01b6064820152608401610aa4565b6103e881610d2f6009600a612ca7565b610d3d906305f5e100612cb6565b610d479190612cb6565b610d519190612cd5565b60045550565b3360008181526006602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610db29086815260200190565b60405180910390a35060015b92915050565b610dd06009600a612ca7565b610dde906305f5e100612cb6565b81565b3360009081526002602052604090205460ff16610e2e5760405162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b6044820152606401610aa4565b6101f58310610e4f5760405162461bcd60e51b8152600401610aa490612b39565b828114610eaf5760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e206164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610aa4565b6000805b84811015610ef357838382818110610ecd57610ecd612b7e565b9050602002013582610edf9190612cf7565b915080610eeb81612baa565b915050610eb3565b506001600160a01b038616600090815260056020526040902054811115610f5c5760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610aa4565b60005b84811015610fc357610fb087878784818110610f7d57610f7d612b7e565b9050602002016020810190610f929190612a44565b868685818110610fa457610fa4612b7e565b90506020020135611a67565b5080610fbb81612baa565b915050610f5f565b50505050505050565b6000546001600160a01b03163314610ff65760405162461bcd60e51b8152600401610aa490612b19565b47336108fc60646110078585612cb6565b6110119190612cd5565b6040518115909202916000818181858888f19350505050158015611039573d6000803e3d6000fd5b505050565b6001600160a01b0383166000908152600660209081526040808320338452909152812054600019146110eb576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526006825283812033825290915291909120546110c6918490611b4d565b6001600160a01b03851660009081526006602090815260408083203384529091529020555b6110f6848484611b87565b90505b9392505050565b60056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461dead60009081527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba549091906111606009600a612ca7565b61116e906305f5e100612cb6565b6111789190612d0f565b6111829190612d0f565b905090565b6000546001600160a01b031633146111b15760405162461bcd60e51b8152600401610aa490612b19565b6101f582106111d25760405162461bcd60e51b8152600401610aa490612b39565b60005b82811015610b3d5781600a60008686858181106111f4576111f4612b7e565b90506020020160208101906112099190612a44565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561123a81612baa565b90506111d5565b6000610dbe82600019610d57565b6000546001600160a01b031633146112795760405162461bcd60e51b8152600401610aa490612b19565b601191909155601091909155601255565b6000546001600160a01b031633146112b45760405162461bcd60e51b8152600401610aa490612b19565b600080546001600160a01b03168152600260209081526040808320805460ff1916905582546001600160a01b0319168355519182527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616391015b60405180910390a1565b600080546001600160a01b031633146113425760405162461bcd60e51b8152600401610aa490612b19565b816000036113b5576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa15801561138e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b29190612d26565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015611402573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f99190612d3f565b6001546001600160a01b031633146114b75760405162461bcd60e51b815260206004820152604860248201527f596f75206d757374206265206e6f6d696e6174656420617320706f74656e746960448201527f616c206f776e6572206265666f726520796f752063616e2061636365707420746064820152673432903937b6329760c11b608482015260a401610aa4565b600080546001600160a01b039081168252600260209081526040808420805460ff19908116909155600180548516865282862080549092168117909155805485549481166001600160a01b031995861681179096559390931690925590519182527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910161130d565b6000546001600160a01b0316331461156a5760405162461bcd60e51b8152600401610aa490612b19565b60c982106115c85760405162461bcd60e51b815260206004820152602560248201527f474153204572726f723a206d6178206c696d6974206973203230302061646472604482015264657373657360d81b6064820152608401610aa4565b60005b82811015610b3d576116038484838181106115e8576115e8612b7e565b90506020020160208101906115fd9190612a44565b83612103565b61160c81612baa565b90506115cb565b60006110f9338484611b87565b6000546001600160a01b0316331461164a5760405162461bcd60e51b8152600401610aa490612b19565b6001600160a01b03166000908152600260205260409020805460ff19166001179055565b6000546001600160a01b031633146116985760405162461bcd60e51b8152600401610aa490612b19565b60058110156116fb5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c657373206044820152687468616e20302e352560b81b6064820152608401610aa4565b6103e88161170b6009600a612ca7565b611719906305f5e100612cb6565b6117239190612cb6565b61172d9190612cd5565b60035550565b6000546001600160a01b0316331461175d5760405162461bcd60e51b8152600401610aa490612b19565b600c839055600d829055600e819055806117778385612cf7565b6117819190612cf7565b600f55505050565b6000546001600160a01b031633146117b35760405162461bcd60e51b8152600401610aa490612b19565b601380546001600160a01b039485166001600160a01b031991821617909155601480549385169382169390931790925560158054919093169116179055565b6000546001600160a01b0316331461181c5760405162461bcd60e51b8152600401610aa490612b19565b6032811161185e5760405162461bcd60e51b815260206004820152600f60248201526e082dadeeadce840e8dede40d0d2ced608b1b6044820152606401610aa4565b6018805460ff1916831515179055806118796009600a612ca7565b611887906305f5e100612cb6565b6118919190612cd5565b6019555050565b6000546001600160a01b031633146118c25760405162461bcd60e51b8152600401610aa490612b19565b6000546001600160a01b03908116908216036119205760405162461bcd60e51b815260206004820152601a60248201527f4f574e45522063616e7420626520756e617574686f72697a65640000000000006044820152606401610aa4565b6001600160a01b03166000908152600260205260409020805460ff19169055565b6000546001600160a01b0316331461196b5760405162461bcd60e51b8152600401610aa490612b19565b6000546001600160a01b03908116908216036119bd5760405162461bcd60e51b815260206004820152601160248201527020b63932b0b23c903a34329037bbb732b960791b6044820152606401610aa4565b6001600160a01b038116611a135760405162461bcd60e51b815260206004820152601860248201527f43616e206e6f74206265207a65726f20616464726573732e00000000000000006044820152606401610aa4565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527fe235b3289f2e990914b334bf6827949c27f6ba58d3e5a1d6f8415037ca1ef2229060200160405180910390a150565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600590915291822054611ab8918490611b4d565b6001600160a01b038086166000908152600560205260408082209390935590851681522054611ae79083612175565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b3b9086815260200190565b60405180910390a35060019392505050565b60008184841115611b715760405162461bcd60e51b8152600401610aa491906128d1565b506000611b7e8486612d0f565b95945050505050565b601a5460009060ff1615611ba757611ba0848484611a67565b90506110f9565b6001600160a01b03841660009081526002602052604090205460ff16158015611be957506001600160a01b03831660009081526002602052604090205460ff16155b15611cd357601654600160a01b900460ff16611c3e5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610aa4565b601654600160a81b900460ff168015611c8857507f000000000000000000000000ab553c3a2836dfc15dcea73cba9b9d9aaa42c75a6001600160a01b0316846001600160a01b0316145b15611cd3576001600160a01b0383166000908152601760205260408120549003611cc8576001600160a01b03831660009081526017602052604090204390555b611cd3836001612103565b60075460ff168015611cef5750601654600160a81b900460ff16155b15611d4b576001600160a01b03841660009081526008602052604090205460ff1615611d4b5760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610aa4565b601654600160a81b900460ff168015611d7b57506001600160a01b03841660009081526017602052604090205415155b15611dfd57611d8b603c43612d0f565b6001600160a01b03851660009081526017602052604090205411611dfd5760405162461bcd60e51b815260206004820152602360248201527f426f75676874206265666f726520636f6e747261637420776173206c61756e636044820152621a195960ea1b6064820152608401610aa4565b6001600160a01b03841660009081526002602052604090205460ff16158015611e3f57506001600160a01b0384166000908152600b602052604090205460ff16155b8015611e6457506001600160a01b0383166000908152600b602052604090205460ff16155b8015611ea257507f000000000000000000000000ab553c3a2836dfc15dcea73cba9b9d9aaa42c75a6001600160a01b0316836001600160a01b031614155b15611f1c576004546001600160a01b038416600090815260056020526040902054611ece908490612cf7565b1115611f1c5760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d6974207265616368656400000000000000006044820152606401610aa4565b60035482111580611f4557506001600160a01b0384166000908152600a602052604090205460ff165b80611f6857506001600160a01b0383166000908152600a602052604090205460ff165b611fac5760405162461bcd60e51b815260206004820152601560248201527413585e08151608131a5b5a5d08115e18d959591959605a1b6044820152606401610aa4565b611fb46121d4565b15611fc157611fc1612240565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260059091529190912054612013918490611b4d565b6001600160a01b038516600090815260056020908152604080832093909355600990529081205460ff168061206057506001600160a01b03841660009081526009602052604090205460ff165b6120745761206f858486612538565b612076565b825b6001600160a01b03851660009081526005602052604090205490915061209c9082612175565b6001600160a01b0380861660008181526005602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906120f09085815260200190565b60405180910390a3506001949350505050565b80801561214157507f000000000000000000000000ab553c3a2836dfc15dcea73cba9b9d9aaa42c75a6001600160a01b0316826001600160a01b0316145b1561214a575050565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000806121828385612cf7565b9050838110156110f95760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610aa4565b6000336001600160a01b037f000000000000000000000000ab553c3a2836dfc15dcea73cba9b9d9aaa42c75a16148015906122125750601a5460ff16155b8015612220575060185460ff165b801561118257505060195430600090815260056020526040902054101590565b601a805460ff19166001179055600f54600c546019546000926122739260029261226d9291839190612693565b90612715565b9050600061228c8260195461275790919063ffffffff16565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106122c6576122c6612b7e565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061231a5761231a612b7e565b6001600160a01b03928316602091820292909201015260165460405163791ac94760e01b815291169063791ac94790612360908590600090869030904290600401612d5c565b600060405180830381600087803b15801561237a57600080fd5b505af115801561238e573d6000803e3d6000fd5b5050600c54479250600091506123b2906123a9906002612715565b600f5490612757565b905060006123d4600261226d8461226d600c548861269390919063ffffffff16565b905060006123f18361226d600d548761269390919063ffffffff16565b9050600061240e8461226d600e548861269390919063ffffffff16565b6014546040519192506001600160a01b03169083156108fc029084906000818181858888f19350505050158015612449573d6000803e3d6000fd5b506015546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612484573d6000803e3d6000fd5b5087156125245760165460135460405163f305d71960e01b8152306004820152602481018b905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990859060c40160606040518083038185885af11580156124fb573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906125209190612dcd565b5050505b5050601a805460ff19169055505050505050565b60008215806125475750600f54155b156125535750816110f9565b6012546001600160a01b037f000000000000000000000000ab553c3a2836dfc15dcea73cba9b9d9aaa42c75a81169084160361259257506011546125d0565b7f000000000000000000000000ab553c3a2836dfc15dcea73cba9b9d9aaa42c75a6001600160a01b0316856001600160a01b0316036125d057506010545b60006126016125e26103e86064612cb6565b61226d846125fb600f548a61269390919063ffffffff16565b90612693565b905080801561267e57306000908152600560205260409020546126249082612175565b30600081815260056020526040908190209290925590516001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906126759085815260200190565b60405180910390a35b6126888683612757565b979650505050505050565b6000826000036126a557506000610dbe565b60006126b18385612cb6565b9050826126be8583612cd5565b146110f95760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610aa4565b60006110f983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612799565b60006110f983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b4d565b600081836127ba5760405162461bcd60e51b8152600401610aa491906128d1565b506000611b7e8486612cd5565b60008083601f8401126127d957600080fd5b50813567ffffffffffffffff8111156127f157600080fd5b6020830191508360208260051b850101111561280c57600080fd5b9250929050565b801515811461282157600080fd5b50565b60008060006040848603121561283957600080fd5b833567ffffffffffffffff81111561285057600080fd5b61285c868287016127c7565b909450925050602084013561287081612813565b809150509250925092565b6000806040838503121561288e57600080fd5b823561289981612813565b915060208301356128a981612813565b809150509250929050565b6000602082840312156128c657600080fd5b81356110f981612813565b600060208083528351808285015260005b818110156128fe578581018301518582016040015282016128e2565b81811115612910576000604083870101525b50601f01601f1916929092016040019392505050565b60006020828403121561293857600080fd5b5035919050565b6001600160a01b038116811461282157600080fd5b6000806040838503121561296757600080fd5b82356129728161293f565b946020939093013593505050565b60008060008060006060868803121561299857600080fd5b85356129a38161293f565b9450602086013567ffffffffffffffff808211156129c057600080fd5b6129cc89838a016127c7565b909650945060408801359150808211156129e557600080fd5b506129f2888289016127c7565b969995985093965092949392505050565b600080600060608486031215612a1857600080fd5b8335612a238161293f565b92506020840135612a338161293f565b929592945050506040919091013590565b600060208284031215612a5657600080fd5b81356110f98161293f565b600080600060608486031215612a7657600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215612aa257600080fd5b8335612aad8161293f565b92506020840135612abd8161293f565b915060408401356128708161293f565b60008060408385031215612ae057600080fd5b8235612aeb8161293f565b915060208301356128a98161293f565b60008060408385031215612b0e57600080fd5b823561297281612813565b60208082526006908201526510a7aba722a960d11b604082015260600190565b60208082526025908201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604082015264657373657360d81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612bbc57612bbc612b94565b5060010190565b600181815b80851115612bfe578160001904821115612be457612be4612b94565b80851615612bf157918102915b93841c9390800290612bc8565b509250929050565b600082612c1557506001610dbe565b81612c2257506000610dbe565b8160018114612c385760028114612c4257612c5e565b6001915050610dbe565b60ff841115612c5357612c53612b94565b50506001821b610dbe565b5060208310610133831016604e8410600b8410161715612c81575081810a610dbe565b612c8b8383612bc3565b8060001904821115612c9f57612c9f612b94565b029392505050565b60006110f960ff841683612c06565b6000816000190483118215151615612cd057612cd0612b94565b500290565b600082612cf257634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115612d0a57612d0a612b94565b500190565b600082821015612d2157612d21612b94565b500390565b600060208284031215612d3857600080fd5b5051919050565b600060208284031215612d5157600080fd5b81516110f981612813565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612dac5784516001600160a01b031683529383019391830191600101612d87565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612de257600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212200f737c2d73c7047c18ad6c93eadb8abb6e23e3a8e628f0e6170a29d5b68d8b4564736f6c634300080f0033

Deployed Bytecode Sourcemap

4508:12806:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15160:310;;;;;;;;;;-1:-1:-1;15160:310:0;;;;;:::i;:::-;;:::i;:::-;;14548:294;;;;;;;;;;-1:-1:-1;14548:294:0;;;;;:::i;:::-;;:::i;12436:130::-;;;;;;;;;;-1:-1:-1;12436:130:0;;;;;:::i;:::-;;:::i;13939:108::-;;;;;;;;;;-1:-1:-1;13939:108:0;;;;;:::i;:::-;;:::i;6169:49::-;;;;;;;;;;;;;;;;;;;1853:25:1;;;1841:2;1826:18;6169:49:0;;;;;;;;4764:39;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4764:39:0;;;;;;;;;;;;:::i;5544:33::-;;;;;;;;;;;;;;;;8400:261;;;;;;;;;;-1:-1:-1;8400:261:0;;;;;:::i;:::-;;:::i;7504:216::-;;;;;;;;;;-1:-1:-1;7504:216:0;;;;;:::i;:::-;;:::i;:::-;;;3297:14:1;;3290:22;3272:41;;3260:2;3245:18;7504:216:0;3132:187:1;5660:45:0;;;;;;;;;;;;5701:4;5660:45;;4897:64;;;;;;;;;;;;;:::i;16713:596::-;;;;;;;;;;-1:-1:-1;16713:596:0;;;;;:::i;:::-;;:::i;11929:207::-;;;;;;;;;;-1:-1:-1;11929:207:0;;;;;:::i;:::-;;:::i;5584:69::-;;;;;;;;;;;;;;;;8022:370;;;;;;;;;;-1:-1:-1;8022:370:0;;;;;:::i;:::-;;:::i;16569:137::-;;;;;;;;;;;;;:::i;2607:103::-;;;;;;;;;;-1:-1:-1;2607:103:0;;;;;:::i;:::-;2662:4;2697:5;-1:-1:-1;;;;;2686:16:0;;;2697:5;;2686:16;;2607:103;5714:34;;;;;;;;;;;;;;;;4854;;;;;;;;;;;;4887:1;4854:34;;;;;5122:4:1;5110:17;;;5092:36;;5080:2;5065:18;4854:34:0;4950:184:1;5299:44:0;;;;;;;;;;-1:-1:-1;5299:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;14850:302;;;;;;;;;;-1:-1:-1;14850:302:0;;;;;:::i;:::-;;:::i;7728:122::-;;;;;;;;;;-1:-1:-1;7728:122:0;;;;;:::i;:::-;;:::i;5797:40::-;;;;;;;;;;;;;;;;5505:32;;;;;;;;;;;;;;;;15478:198;;;;;;;;;;-1:-1:-1;15478:198:0;;;;;:::i;:::-;;:::i;6132:30::-;;;;;;;;;;-1:-1:-1;6132:30:0;;;;;;;;5083:45;;;;;;;;;;-1:-1:-1;5083:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;3102:166;;;;;;;;;;;;;:::i;12144:284::-;;;;;;;;;;-1:-1:-1;12144:284:0;;;;;:::i;:::-;;:::i;5024:50::-;;;;;;;;;;;;;;;;3276:368;;;;;;;;;;;;;:::i;4970:47::-;;;;;;;;;;;;;;;;7279:78;;;;;;;;;;-1:-1:-1;7331:7:0;7349:5;-1:-1:-1;;;;;7349:5:0;7279:78;;;-1:-1:-1;;;;;5624:32:1;;;5606:51;;5594:2;5579:18;7279:78:0;5460:203:1;5205:32:0;;;;;;;;;;-1:-1:-1;5205:32:0;;;;;;;;5350:48;;;;;;;;;;-1:-1:-1;5350:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;14055:297;;;;;;;;;;-1:-1:-1;14055:297:0;;;;;:::i;:::-;;:::i;4810:37::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4810:37:0;;;;;5466:32;;;;;;;;;;;;;;;;5986:29;;;;;;;;;;;;;;;7858:156;;;;;;;;;;-1:-1:-1;7858:156:0;;;;;:::i;:::-;;:::i;2338:94::-;;;;;;;;;;-1:-1:-1;2338:94:0;;;;;:::i;:::-;;:::i;8667:262::-;;;;;;;;;;-1:-1:-1;8667:262:0;;;;;:::i;:::-;;:::i;5405:52::-;;;;;;;;;;-1:-1:-1;5405:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15684:302;;;;;;;;;;-1:-1:-1;15684:302:0;;;;;:::i;:::-;;:::i;15994:316::-;;;;;;;;;;-1:-1:-1;15994:316:0;;;;;:::i;:::-;;:::i;7363:133::-;;;;;;;;;;-1:-1:-1;7363:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;7465:19:0;;;7447:7;7465:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;7363:133;16320:237;;;;;;;;;;-1:-1:-1;16320:237:0;;;;;:::i;:::-;;:::i;2440:159::-;;;;;;;;;;-1:-1:-1;2440:159:0;;;;;:::i;:::-;;:::i;2833:261::-;;;;;;;;;;-1:-1:-1;2833:261:0;;;;;:::i;:::-;;:::i;5955:24::-;;;;;;;;;;-1:-1:-1;5955:24:0;;;;-1:-1:-1;;;;;5955:24:0;;;5244:46;;;;;;;;;;-1:-1:-1;5244:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;2718:107;;;;;;;;;;-1:-1:-1;2718:107:0;;;;;:::i;:::-;-1:-1:-1;;;;;2798:19:0;2774:4;2798:19;;;:14;:19;;;;;;;;;2718:107;5755:35;;;;;;;;;;;;;;;;6024:30;;;;;;;;;;-1:-1:-1;6024:30:0;;;;-1:-1:-1;;;6024:30:0;;;;;;15160:310;2662:4;2697:5;-1:-1:-1;;;;;2697:5:0;2197:10;2686:16;2181:38;;;;-1:-1:-1;;;2181:38:0;;;;;;;:::i;:::-;;;;;;;;;15294:3:::1;15275:22:::0;::::1;15267:71;;;;-1:-1:-1::0;;;15267:71:0::1;;;;;;;:::i;:::-;15354:9;15349:114;15367:20:::0;;::::1;15349:114;;;15445:6;15409:19;:33;15429:9;;15439:1;15429:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15409:33:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;15409:33:0;:42;;-1:-1:-1;;15409:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15389:3:::1;::::0;::::1;:::i;:::-;;;15349:114;;;;15160:310:::0;;;:::o;14548:294::-;2662:4;2697:5;-1:-1:-1;;;;;2697:5:0;2197:10;2686:16;2181:38;;;;-1:-1:-1;;;2181:38:0;;;;;;;:::i;:::-;14674:3:::1;14655:22:::0;::::1;14647:71;;;;-1:-1:-1::0;;;14647:71:0::1;;;;;;;:::i;:::-;14734:9;14729:106;14747:20:::0;;::::1;14729:106;;;14817:6;14789:11;:25;14801:9;;14811:1;14801:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14789:25:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;14789:25:0;:34;;-1:-1:-1;;14789:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14769:3:::1;::::0;::::1;:::i;:::-;;;14729:106;;12436:130:::0;2662:4;2697:5;-1:-1:-1;;;;;2697:5:0;2197:10;2686:16;2181:38;;;;-1:-1:-1;;;2181:38:0;;;;;;;:::i;:::-;12513:11:::1;:21:::0;;-1:-1:-1;;;;12545:13:0;-1:-1:-1;;;12513:21:0;::::1;;::::0;;;::::1;-1:-1:-1::0;;;;12545:13:0;;;;;-1:-1:-1;;;12545:13:0;::::1;;::::0;;;::::1;;::::0;;12436:130::o;13939:108::-;2662:4;2697:5;-1:-1:-1;;;;;2697:5:0;2197:10;2686:16;2181:38;;;;-1:-1:-1;;;2181:38:0;;;;;;;:::i;:::-;14016:13:::1;:23:::0;;-1:-1:-1;;14016:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13939:108::o;8400:261::-;2662:4;2697:5;-1:-1:-1;;;;;2697:5:0;2197:10;2686:16;2181:38;;;;-1:-1:-1;;;2181:38:0;;;;;;;:::i;:::-;8536:1:::1;8509:23;:28;;8501:76;;;::::0;-1:-1:-1;;;8501:76:0;;8741:2:1;8501:76:0::1;::::0;::::1;8723:21:1::0;8780:2;8760:18;;;8753:30;8819:34;8799:18;;;8792:62;-1:-1:-1;;;8870:18:1;;;8863:34;8914:19;;8501:76:0::1;8539:400:1::0;8501:76:0::1;8649:4;8621:23:::0;4949:12:::1;4887:1;4949:2;:12;:::i;:::-;4935:26;::::0;:11:::1;:26;:::i;:::-;8607:37;;;;:::i;:::-;8606:47;;;;:::i;:::-;8588:15;:65:::0;-1:-1:-1;8400:261:0:o;7504:216::-;7608:10;7579:4;7596:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;7596:32:0;;;;;;;;;;:41;;;7653:37;7579:4;;7596:32;;7653:37;;;;7631:6;1853:25:1;;1841:2;1826:18;;1707:177;7653:37:0;;;;;;;;-1:-1:-1;7708:4:0;7504:216;;;;;:::o;4897:64::-;4949:12;4887:1;4949:2;:12;:::i;:::-;4935:26;;:11;:26;:::i;:::-;4897:64;:::o;16713:596::-;2292:10;2774:4;2798:19;;;:14;:19;;;;;;;;2271:48;;;;-1:-1:-1;;;2271:48:0;;10924:2:1;2271:48:0;;;10906:21:1;10963:2;10943:18;;;10936:30;-1:-1:-1;;;10982:18:1;;;10975:41;11033:18;;2271:48:0;10722:335:1;2271:48:0;16862:3:::1;16843:22:::0;::::1;16835:71;;;;-1:-1:-1::0;;;16835:71:0::1;;;;;;;:::i;:::-;16922:33:::0;;::::1;16914:85;;;::::0;-1:-1:-1;;;16914:85:0;;11264:2:1;16914:85:0::1;::::0;::::1;11246:21:1::0;11303:2;11283:18;;;11276:30;11342:34;11322:18;;;11315:62;-1:-1:-1;;;11393:18:1;;;11386:38;11441:19;;16914:85:0::1;11062:404:1::0;16914:85:0::1;17009:12;17039:6:::0;17035:84:::1;17049:20:::0;;::::1;17035:84;;;17101:6;;17108:1;17101:9;;;;;;;:::i;:::-;;;;;;;17094:4;:16;;;;:::i;:::-;17087:23:::0;-1:-1:-1;17071:3:0;::::1;::::0;::::1;:::i;:::-;;;;17035:84;;;-1:-1:-1::0;;;;;;17136:15:0;::::1;;::::0;;;:9:::1;:15;::::0;;;;;:23;-1:-1:-1;17136:23:0::1;17128:63;;;::::0;-1:-1:-1;;;17128:63:0;;11806:2:1;17128:63:0::1;::::0;::::1;11788:21:1::0;11845:2;11825:18;;;11818:30;11884:29;11864:18;;;11857:57;11931:18;;17128:63:0::1;11604:351:1::0;17128:63:0::1;17205:6;17201:104;17215:20:::0;;::::1;17201:104;;;17253:43;17268:4;17273:9;;17283:1;17273:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;17286:6;;17293:1;17286:9;;;;;;;:::i;:::-;;;;;;;17253:14;:43::i;:::-;-1:-1:-1::0;17237:3:0;::::1;::::0;::::1;:::i;:::-;;;;17201:104;;;;16827:482;16713:596:::0;;;;;:::o;11929:207::-;2662:4;2697:5;-1:-1:-1;;;;;2697:5:0;2197:10;2686:16;2181:38;;;;-1:-1:-1;;;2181:38:0;;;;;;;:::i;:::-;12032:21:::1;12072:10;12064:64;12124:3;12093:28;12105:16:::0;12032:21;12093:28:::1;:::i;:::-;:34;;;;:::i;:::-;12064:64;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12001:135;11929:207:::0;:::o;8022:370::-;-1:-1:-1;;;;;8142:19:0;;8122:4;8142:19;;;:11;:19;;;;;;;;8162:10;8142:31;;;;;;;;-1:-1:-1;;8142:52:0;8139:186;;8244:69;;;;;;;;;;;-1:-1:-1;;;8244:69:0;;;;;;;;-1:-1:-1;;;;;8244:19:0;;-1:-1:-1;8244:19:0;;;:11;:19;;;;;8264:10;8244:31;;;;;;;;;;:69;;8280:6;;8244:35;:69::i;:::-;-1:-1:-1;;;;;8210:19:0;;;;;;:11;:19;;;;;;;;8230:10;8210:31;;;;;;;:103;8139:186;8344:40;8358:6;8366:9;8377:6;8344:13;:40::i;:::-;8337:47;;8022:370;;;;;;:::o;16569:137::-;16682:9;:15;;;;4640:42;16622:7;16664:15;;;;;16622:7;;16682:15;4949:12;4887:1;4949:2;:12;:::i;:::-;4935:26;;:11;:26;:::i;:::-;16650:29;;;;:::i;:::-;:47;;;;:::i;:::-;16642:56;;16569:137;:::o;14850:302::-;2662:4;2697:5;-1:-1:-1;;;;;2697:5:0;2197:10;2686:16;2181:38;;;;-1:-1:-1;;;2181:38:0;;;;;;;:::i;:::-;14980:3:::1;14961:22:::0;::::1;14953:71;;;;-1:-1:-1::0;;;14953:71:0::1;;;;;;;:::i;:::-;15040:9;15035:110;15053:20:::0;;::::1;15035:110;;;15127:6;15095:15;:29;15111:9;;15121:1;15111:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15095:29:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;15095:29:0;:38;;-1:-1:-1;;15095:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15075:3:::1;::::0;::::1;:::i;:::-;;;15035:110;;7728:122:::0;7783:4;7807:35;7815:7;-1:-1:-1;;7807:7:0;:35::i;15478:198::-;2662:4;2697:5;-1:-1:-1;;;;;2697:5:0;2197:10;2686:16;2181:38;;;;-1:-1:-1;;;2181:38:0;;;;;;;:::i;:::-;15577:14:::1;:22:::0;;;;15610:13:::1;:20:::0;;;;15641:18:::1;:27:::0;15478:198::o;3102:166::-;2662:4;2697:5;-1:-1:-1;;;;;2697:5:0;2197:10;2686:16;2181:38;;;;-1:-1:-1;;;2181:38:0;;;;;;;:::i;:::-;3183:5:::1;3174::::0;;-1:-1:-1;;;;;3174:5:0::1;3159:21:::0;;:14:::1;:21;::::0;;;;;;;:29;;-1:-1:-1;;3159:29:0::1;::::0;;3199:18;;-1:-1:-1;;;;;;3199:18:0::1;::::0;;3233:27;5606:51:1;;;3233:27:0::1;::::0;5579:18:1;3233:27:0::1;;;;;;;;3102:166::o:0;12144:284::-;12235:12;2697:5;;-1:-1:-1;;;;;2697:5:0;2197:10;2686:16;2181:38;;;;-1:-1:-1;;;2181:38:0;;;;;;;:::i;:::-;12263:6:::1;12273:1;12263:11:::0;12260:95:::1;;12299:44;::::0;-1:-1:-1;;;12299:44:0;;12337:4:::1;12299:44;::::0;::::1;5606:51:1::0;-1:-1:-1;;;;;12299:29:0;::::1;::::0;::::1;::::0;5579:18:1;;12299:44:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12290:53;;12260:95;12372:48;::::0;-1:-1:-1;;;12372:48:0;;12401:10:::1;12372:48;::::0;::::1;12453:51:1::0;12520:18;;;12513:34;;;-1:-1:-1;;;;;12372:28:0;::::1;::::0;::::1;::::0;12426:18:1;;12372:48:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3276:368::-:0;3343:14;;-1:-1:-1;;;;;3343:14:0;3329:10;:28;3321:113;;;;-1:-1:-1;;;3321:113:0;;13010:2:1;3321:113:0;;;12992:21:1;13049:2;13029:18;;;13022:30;13088:34;13068:18;;;13061:62;13159:34;13139:18;;;13132:62;-1:-1:-1;;;13210:19:1;;;13203:39;13259:19;;3321:113:0;12808:476:1;3321:113:0;3469:5;3460;;-1:-1:-1;;;;;3460:5:0;;;3445:21;;:14;:21;;;;;;;;:29;;-1:-1:-1;;3445:29:0;;;;;;-1:-1:-1;3500:14:0;;;;3485:30;;;;;:37;;;;;;;;;;3541:14;;3533:22;;3541:14;;;-1:-1:-1;;;;;;3533:22:0;;;;;;;;3566:27;;;;;;;3609;;5606:51:1;;;3609:27:0;;5579:18:1;3609:27:0;5460:203:1;14055:297:0;2662:4;2697:5;-1:-1:-1;;;;;2697:5:0;2197:10;2686:16;2181:38;;;;-1:-1:-1;;;2181:38:0;;;;;;;:::i;:::-;14181:3:::1;14162:22:::0;::::1;14154:71;;;::::0;-1:-1:-1;;;14154:71:0;;13491:2:1;14154:71:0::1;::::0;::::1;13473:21:1::0;13530:2;13510:18;;;13503:30;13569:34;13549:18;;;13542:62;-1:-1:-1;;;13620:18:1;;;13613:35;13665:19;;14154:71:0::1;13289:401:1::0;14154:71:0::1;14241:9;14236:109;14254:20:::0;;::::1;14236:109;;;14296:37;14313:9;;14323:1;14313:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;14326:6;14296:16;:37::i;:::-;14276:3;::::0;::::1;:::i;:::-;;;14236:109;;7858:156:::0;7938:4;7962:44;7976:10;7988:9;7999:6;7962:13;:44::i;2338:94::-;2662:4;2697:5;-1:-1:-1;;;;;2697:5:0;2197:10;2686:16;2181:38;;;;-1:-1:-1;;;2181:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2398:19:0::1;;::::0;;;:14:::1;:19;::::0;;;;:26;;-1:-1:-1;;2398:26:0::1;2420:4;2398:26;::::0;;2338:94::o;8667:262::-;2662:4;2697:5;-1:-1:-1;;;;;2697:5:0;2197:10;2686:16;2181:38;;;;-1:-1:-1;;;2181:38:0;;;;;;;:::i;:::-;8801:1:::1;8773:24;:29;;8765:82;;;::::0;-1:-1:-1;;;8765:82:0;;13897:2:1;8765:82:0::1;::::0;::::1;13879:21:1::0;13936:2;13916:18;;;13909:30;13975:34;13955:18;;;13948:62;-1:-1:-1;;;14026:18:1;;;14019:39;14075:19;;8765:82:0::1;13695:405:1::0;8765:82:0::1;8917:4;8888:24:::0;4949:12:::1;4887:1;4949:2;:12;:::i;:::-;4935:26;::::0;:11:::1;:26;:::i;:::-;8874:38;;;;:::i;:::-;8873:48;;;;:::i;:::-;8858:12;:63:::0;-1:-1:-1;8667:262:0:o;15684:302::-;2662:4;2697:5;-1:-1:-1;;;;;2697:5:0;2197:10;2686:16;2181:38;;;;-1:-1:-1;;;2181:38:0;;;;;;;:::i;:::-;15802:12:::1;:28:::0;;;15841:12:::1;:28:::0;;;15880:13:::1;:30:::0;;;15896:14;15932:29:::1;15856:13:::0;15817;15932:29:::1;:::i;:::-;:46;;;;:::i;:::-;15921:8;:57:::0;-1:-1:-1;;;15684:302:0:o;15994:316::-;2662:4;2697:5;-1:-1:-1;;;;;2697:5:0;2197:10;2686:16;2181:38;;;;-1:-1:-1;;;2181:38:0;;;;;;;:::i;:::-;16144:21:::1;:46:::0;;-1:-1:-1;;;;;16144:46:0;;::::1;-1:-1:-1::0;;;;;;16144:46:0;;::::1;;::::0;;;16201:20:::1;:44:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;16256:21:::1;:46:::0;;;;;::::1;::::0;::::1;;::::0;;15994:316::o;16320:237::-;2662:4;2697:5;-1:-1:-1;;;;;2697:5:0;2197:10;2686:16;2181:38;;;;-1:-1:-1;;;2181:38:0;;;;;;;:::i;:::-;16439:2:::1;16424:12;:17;16416:45;;;::::0;-1:-1:-1;;;16416:45:0;;14307:2:1;16416:45:0::1;::::0;::::1;14289:21:1::0;14346:2;14326:18;;;14319:30;-1:-1:-1;;;14365:18:1;;;14358:45;14420:18;;16416:45:0::1;14105:339:1::0;16416:45:0::1;16474:11;:22:::0;;-1:-1:-1;;16474:22:0::1;::::0;::::1;;;::::0;;16537:12;4949::::1;4887:1;4949:2;:12;:::i;:::-;4935:26;::::0;:11:::1;:26;:::i;:::-;16523;;;;:::i;:::-;16507:13;:42:::0;-1:-1:-1;;16320:237:0:o;2440:159::-;2662:4;2697:5;-1:-1:-1;;;;;2697:5:0;2197:10;2686:16;2181:38;;;;-1:-1:-1;;;2181:38:0;;;;;;;:::i;:::-;2517:5:::1;::::0;-1:-1:-1;;;;;2517:5:0;;::::1;2510:12:::0;;::::1;::::0;2502:51:::1;;;::::0;-1:-1:-1;;;2502:51:0;;14651:2:1;2502:51:0::1;::::0;::::1;14633:21:1::0;14690:2;14670:18;;;14663:30;14729:28;14709:18;;;14702:56;14775:18;;2502:51:0::1;14449:350:1::0;2502:51:0::1;-1:-1:-1::0;;;;;2564:19:0::1;2586:5;2564:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;2564:27:0::1;::::0;;2440:159::o;2833:261::-;2662:4;2697:5;-1:-1:-1;;;;;2697:5:0;2197:10;2686:16;2181:38;;;;-1:-1:-1;;;2181:38:0;;;;;;;:::i;:::-;2924:5:::1;::::0;-1:-1:-1;;;;;2924:5:0;;::::1;2917:12:::0;;::::1;::::0;2909:42:::1;;;::::0;-1:-1:-1;;;2909:42:0;;15006:2:1;2909:42:0::1;::::0;::::1;14988:21:1::0;15045:2;15025:18;;;15018:30;-1:-1:-1;;;15064:18:1;;;15057:47;15121:18;;2909:42:0::1;14804:341:1::0;2909:42:0::1;-1:-1:-1::0;;;;;2970:17:0;::::1;2962:54;;;::::0;-1:-1:-1;;;2962:54:0;;15352:2:1;2962:54:0::1;::::0;::::1;15334:21:1::0;15391:2;15371:18;;;15364:30;15430:26;15410:18;;;15403:54;15474:18;;2962:54:0::1;15150:348:1::0;2962:54:0::1;3027:14;:20:::0;;-1:-1:-1;;;;;;3027:20:0::1;-1:-1:-1::0;;;;;3027:20:0;::::1;::::0;;::::1;::::0;;;3063:23:::1;::::0;5606:51:1;;;3063:23:0::1;::::0;5594:2:1;5579:18;3063:23:0::1;;;;;;;2833:261:::0;:::o;10595:330::-;10725:53;;;;;;;;;;;-1:-1:-1;;;10725:53:0;;;;;;;;-1:-1:-1;;;;;10725:17:0;;10688:4;10725:17;;;:9;:17;;;;;;;:53;;10747:6;;10725:21;:53::i;:::-;-1:-1:-1;;;;;10705:17:0;;;;;;;:9;:17;;;;;;:73;;;;10812:20;;;;;;;:32;;10837:6;10812:24;:32::i;:::-;-1:-1:-1;;;;;10789:20:0;;;;;;;:9;:20;;;;;;;:55;;;;10860:35;;;;;;;;;;10888:6;1853:25:1;;1841:2;1826:18;;1707:177;10860:35:0;;;;;;;;-1:-1:-1;10913:4:0;10595:330;;;;;:::o;423:192::-;509:7;545:12;537:6;;;;529:29;;;;-1:-1:-1;;;529:29:0;;;;;;;;:::i;:::-;-1:-1:-1;569:9:0;581:5;585:1;581;:5;:::i;:::-;569:17;423:192;-1:-1:-1;;;;;423:192:0:o;8937:1646::-;9049:6;;9029:4;;9049:6;;9046:63;;;9065:41;9080:6;9088:9;9099:6;9065:14;:41::i;:::-;9058:48;;;;9046:63;-1:-1:-1;;;;;9125:22:0;;;;;;:14;:22;;;;;;;;9124:23;:53;;;;-1:-1:-1;;;;;;9152:25:0;;;;;;:14;:25;;;;;;;;9151:26;9124:53;9121:362;;;9201:11;;-1:-1:-1;;;9201:11:0;;;;9193:43;;;;-1:-1:-1;;;9193:43:0;;15921:2:1;9193:43:0;;;15903:21:1;15960:2;15940:18;;;15933:30;-1:-1:-1;;;15979:18:1;;;15972:50;16039:18;;9193:43:0;15719:344:1;9193:43:0;9254:7;;-1:-1:-1;;;9254:7:0;;;;:27;;;;;9276:4;-1:-1:-1;;;;;9266:14:0;:6;-1:-1:-1;;;;;9266:14:0;;9254:27;9251:221;;;-1:-1:-1;;;;;9304:19:0;;;;;;:8;:19;;;;;;:24;;9301:105;;-1:-1:-1;;;;;9352:19:0;;;;;;:8;:19;;;;;9374:12;9352:34;;9301:105;9424:32;9441:9;9451:4;9424:16;:32::i;:::-;9520:13;;;;:25;;;;-1:-1:-1;9538:7:0;;-1:-1:-1;;;9538:7:0;;;;9537:8;9520:25;9517:101;;;-1:-1:-1;;;;;9570:21:0;;;;;;:13;:21;;;;;;;;9569:22;9561:45;;;;-1:-1:-1;;;9561:45:0;;16270:2:1;9561:45:0;;;16252:21:1;16309:2;16289:18;;;16282:30;-1:-1:-1;;;16328:18:1;;;16321:41;16379:18;;9561:45:0;16068:335:1;9561:45:0;9633:7;;-1:-1:-1;;;9633:7:0;;;;:33;;;;-1:-1:-1;;;;;;9645:16:0;;9664:1;9645:16;;;:8;:16;;;;;;:20;;9633:33;9630:151;;;9711:17;9726:2;9711:12;:17;:::i;:::-;-1:-1:-1;;;;;9691:16:0;;;;;;:8;:16;;;;;;:38;9682:87;;;;-1:-1:-1;;;9682:87:0;;16610:2:1;9682:87:0;;;16592:21:1;16649:2;16629:18;;;16622:30;16688:34;16668:18;;;16661:62;-1:-1:-1;;;16739:18:1;;;16732:33;16782:19;;9682:87:0;16408:399:1;9682:87:0;-1:-1:-1;;;;;9798:22:0;;;;;;:14;:22;;;;;;;;9797:23;:55;;;;-1:-1:-1;;;;;;9825:27:0;;;;;;:19;:27;;;;;;;;9824:28;9797:55;:90;;;;-1:-1:-1;;;;;;9857:30:0;;;;;;:19;:30;;;;;;;;9856:31;9797:90;:111;;;;;9904:4;-1:-1:-1;;;;;9891:17:0;:9;-1:-1:-1;;;;;9891:17:0;;;9797:111;9793:230;;;9968:15;;-1:-1:-1;;;;;9934:20:0;;;;;;:9;:20;;;;;;:29;;9957:6;;9934:29;:::i;:::-;9933:50;;9925:86;;;;-1:-1:-1;;;9925:86:0;;17014:2:1;9925:86:0;;;16996:21:1;17053:2;17033:18;;;17026:30;17092:26;17072:18;;;17065:54;17136:18;;9925:86:0;16812:348:1;9925:86:0;10054:12;;10044:6;:22;;10043:51;;;-1:-1:-1;;;;;;10071:23:0;;;;;;:15;:23;;;;;;;;10043:51;:81;;;-1:-1:-1;;;;;;10098:26:0;;;;;;:15;:26;;;;;;;;10043:81;10035:115;;;;-1:-1:-1;;;10035:115:0;;17367:2:1;10035:115:0;;;17349:21:1;17406:2;17386:18;;;17379:30;-1:-1:-1;;;17425:18:1;;;17418:51;17486:18;;10035:115:0;17165:345:1;10035:115:0;10166:16;:14;:16::i;:::-;10163:35;;;10185:10;:8;:10::i;:::-;10230:53;;;;;;;;;;;-1:-1:-1;;;10230:53:0;;;;;;;;-1:-1:-1;;;;;10230:17:0;;-1:-1:-1;10230:17:0;;;:9;:17;;;;;;;;:53;;10252:6;;10230:21;:53::i;:::-;-1:-1:-1;;;;;10210:17:0;;;;;;:9;:17;;;;;;;;:73;;;;10322:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;10345:22:0;;;;;;:11;:22;;;;;;;;10322:45;10321:93;;10380:34;10388:6;10396;10404:9;10380:7;:34::i;:::-;10321:93;;;10371:6;10321:93;-1:-1:-1;;;;;10450:20:0;;;;;;:9;:20;;;;;;10296:118;;-1:-1:-1;10450:40:0;;10296:118;10450:24;:40::i;:::-;-1:-1:-1;;;;;10427:20:0;;;;;;;:9;:20;;;;;;;:63;;;;10510:43;;;;;;;;;;10538:14;1853:25:1;;1841:2;1826:18;;1707:177;10510:43:0;;;;;;;;-1:-1:-1;10571:4:0;;8937:1646;-1:-1:-1;;;;8937:1646:0:o;14360:180::-;14436:7;:23;;;;;14455:4;-1:-1:-1;;;;;14447:12:0;:4;-1:-1:-1;;;;;14447:12:0;;14436:23;14433:60;;;14360:180;;:::o;14433:60::-;-1:-1:-1;;;;;14503:19:0;;;;;;;;:13;:19;;;;;:29;;-1:-1:-1;;14503:29:0;;;;;;;;;;14360:180::o;94:181::-;152:7;;184:5;188:1;184;:5;:::i;:::-;172:17;;213:1;208;:6;;200:46;;;;-1:-1:-1;;;200:46:0;;17717:2:1;200:46:0;;;17699:21:1;17756:2;17736:18;;;17729:30;17795:29;17775:18;;;17768:57;17842:18;;200:46:0;17515:351:1;11724:197:0;11773:4;11797:10;-1:-1:-1;;;;;11811:4:0;11797:18;;;;;:38;;-1:-1:-1;11829:6:0;;;;11828:7;11797:38;:62;;;;-1:-1:-1;11848:11:0;;;;11797:62;:116;;;;-1:-1:-1;;11900:13:0;;11890:4;11872:24;;;;:9;:24;;;;;;:41;;;11724:197::o;12574:1357::-;6267:6;:13;;-1:-1:-1;;6267:13:0;6276:4;6267:13;;;12685:8:::1;::::0;12667:12:::1;::::0;12649:13:::1;::::0;6267:6;;12649:52:::1;::::0;12699:1:::1;::::0;12649:45:::1;::::0;12685:8;12649:45;;:13;:17:::1;:31::i;:::-;:35:::0;::::1;:45::i;:52::-;12623:78;;12712:20;12735:34;12753:15;12735:13;;:17;;:34;;;;:::i;:::-;12806:16;::::0;;12820:1:::1;12806:16:::0;;;;;::::1;::::0;;12712:57;;-1:-1:-1;12782:21:0::1;::::0;12806:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12806:16:0::1;12782:40;;12851:4;12833;12838:1;12833:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;12833:23:0::1;;;-1:-1:-1::0;;;;;12833:23:0::1;;;::::0;::::1;12877:4;12867;12872:1;12867:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12867:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;12894:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;12894:188:0;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;12966:12;;12894:6:::1;::::0;13009:4;;13036::::1;::::0;13056:15:::1;::::0;12894:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;13184:12:0::1;::::0;13115:21:::1;::::0;-1:-1:-1;13095:17:0::1;::::0;-1:-1:-1;13171:33:0::1;::::0;13184:19:::1;::::0;13201:1:::1;13184:16;:19::i;:::-;13171:8;::::0;;:12:::1;:33::i;:::-;13149:55;;13225:26;13254:51;13303:1;13254:44;13286:11;13254:27;13268:12;;13254:9;:13;;:27;;;;:::i;:51::-;13225:80;;13316:26;13345:44;13377:11;13345:27;13359:12;;13345:9;:13;;:27;;;;:::i;:44::-;13316:73;;13400:27;13430:45;13463:11;13430:28;13444:13;;13430:9;:13;;:28;;;;:::i;:45::-;13496:20;::::0;13488:58:::1;::::0;13400:75;;-1:-1:-1;;;;;;13496:20:0::1;::::0;13488:58;::::1;;;::::0;13527:18;;13496:20:::1;13488:58:::0;13496:20;13488:58;13527:18;13496:20;13488:58;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;13565:21:0::1;::::0;13557:60:::1;::::0;-1:-1:-1;;;;;13565:21:0;;::::1;::::0;13557:60;::::1;;;::::0;13597:19;;13565:21:::1;13557:60:::0;13565:21;13557:60;13597:19;13565:21;13557:60;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;13633:19:0;;13630:294:::1;;13668:6;::::0;13842:21:::1;::::0;13668:244:::1;::::0;-1:-1:-1;;;13668:244:0;;13744:4:::1;13668:244;::::0;::::1;19329:34:1::0;19379:18;;;19372:34;;;13668:6:0::1;19422:18:1::0;;;19415:34;;;19465:18;;;19458:34;-1:-1:-1;;;;;13842:21:0;;::::1;19508:19:1::0;;;19501:44;13882:15:0::1;19561:19:1::0;;;19554:35;13668:6:0;::::1;::::0;:22:::1;::::0;13698:18;;19263:19:1;;13668:244:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13630:294;-1:-1:-1::0;;6285:6:0;:14;;-1:-1:-1;;6285:14:0;;;-1:-1:-1;;;;;;12574:1357:0:o;10933:783::-;11019:7;11042:11;;;:28;;-1:-1:-1;11057:8:0;;:13;11042:28;11039:72;;;-1:-1:-1;11093:6:0;11086:13;;11039:72;11144:18;;-1:-1:-1;;;;;11191:4:0;11178:17;;;;;;11175:154;;-1:-1:-1;11225:14:0;;11175:154;;;11270:4;-1:-1:-1;;;;;11260:14:0;:6;-1:-1:-1;;;;;11260:14:0;;11257:72;;-1:-1:-1;11304:13:0;;11257:72;11341:17;11361:62;11402:20;5701:4;11419:3;11402:20;:::i;:::-;11361:36;11386:10;11361:20;11372:8;;11361:6;:10;;:20;;;;:::i;:::-;:24;;:36::i;:62::-;11341:82;-1:-1:-1;11341:82:0;11484:18;;11481:187;;11563:4;11545:24;;;;:9;:24;;;;;;:44;;11574:14;11545:28;:44::i;:::-;11536:4;11518:24;;;;:9;:24;;;;;;;:71;;;;11609:47;;-1:-1:-1;;;;;11609:47:0;;;;;;;11641:14;1853:25:1;;1841:2;1826:18;;1707:177;11609:47:0;;;;;;;;11481:187;11687:21;:6;11698:9;11687:10;:21::i;:::-;11680:28;10933:783;-1:-1:-1;;;;;;;10933:783:0:o;621:250::-;679:7;703:1;708;703:6;699:47;;-1:-1:-1;733:1:0;726:8;;699:47;758:9;770:5;774:1;770;:5;:::i;:::-;758:17;-1:-1:-1;803:1:0;794:5;798:1;758:17;794:5;:::i;:::-;:10;786:56;;;;-1:-1:-1;;;786:56:0;;20113:2:1;786:56:0;;;20095:21:1;20152:2;20132:18;;;20125:30;20191:34;20171:18;;;20164:62;-1:-1:-1;;;20242:18:1;;;20235:31;20283:19;;786:56:0;19911:397:1;877:132:0;935:7;962:39;966:1;969;962:39;;;;;;;;;;;;;;;;;:3;:39::i;281:136::-;339:7;366:43;370:1;373;366:43;;;;;;;;;;;;;;;;;:3;:43::i;1015:189::-;1101:7;1136:12;1129:5;1121:28;;;;-1:-1:-1;;;1121:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1160:9:0;1172:5;1176:1;1172;:5;:::i;14:367:1:-;77:8;87:6;141:3;134:4;126:6;122:17;118:27;108:55;;159:1;156;149:12;108:55;-1:-1:-1;182:20:1;;225:18;214:30;;211:50;;;257:1;254;247:12;211:50;294:4;286:6;282:17;270:29;;354:3;347:4;337:6;334:1;330:14;322:6;318:27;314:38;311:47;308:67;;;371:1;368;361:12;308:67;14:367;;;;;:::o;386:118::-;472:5;465:13;458:21;451:5;448:32;438:60;;494:1;491;484:12;438:60;386:118;:::o;509:566::-;601:6;609;617;670:2;658:9;649:7;645:23;641:32;638:52;;;686:1;683;676:12;638:52;726:9;713:23;759:18;751:6;748:30;745:50;;;791:1;788;781:12;745:50;830:70;892:7;883:6;872:9;868:22;830:70;:::i;:::-;919:8;;-1:-1:-1;804:96:1;-1:-1:-1;;1004:2:1;989:18;;976:32;1017:28;976:32;1017:28;:::i;:::-;1064:5;1054:15;;;509:566;;;;;:::o;1080:376::-;1142:6;1150;1203:2;1191:9;1182:7;1178:23;1174:32;1171:52;;;1219:1;1216;1209:12;1171:52;1258:9;1245:23;1277:28;1299:5;1277:28;:::i;:::-;1324:5;-1:-1:-1;1381:2:1;1366:18;;1353:32;1394:30;1353:32;1394:30;:::i;:::-;1443:7;1433:17;;;1080:376;;;;;:::o;1461:241::-;1517:6;1570:2;1558:9;1549:7;1545:23;1541:32;1538:52;;;1586:1;1583;1576:12;1538:52;1625:9;1612:23;1644:28;1666:5;1644:28;:::i;1889:597::-;2001:4;2030:2;2059;2048:9;2041:21;2091:6;2085:13;2134:6;2129:2;2118:9;2114:18;2107:34;2159:1;2169:140;2183:6;2180:1;2177:13;2169:140;;;2278:14;;;2274:23;;2268:30;2244:17;;;2263:2;2240:26;2233:66;2198:10;;2169:140;;;2327:6;2324:1;2321:13;2318:91;;;2397:1;2392:2;2383:6;2372:9;2368:22;2364:31;2357:42;2318:91;-1:-1:-1;2470:2:1;2449:15;-1:-1:-1;;2445:29:1;2430:45;;;;2477:2;2426:54;;1889:597;-1:-1:-1;;;1889:597:1:o;2491:180::-;2550:6;2603:2;2591:9;2582:7;2578:23;2574:32;2571:52;;;2619:1;2616;2609:12;2571:52;-1:-1:-1;2642:23:1;;2491:180;-1:-1:-1;2491:180:1:o;2676:131::-;-1:-1:-1;;;;;2751:31:1;;2741:42;;2731:70;;2797:1;2794;2787:12;2812:315;2880:6;2888;2941:2;2929:9;2920:7;2916:23;2912:32;2909:52;;;2957:1;2954;2947:12;2909:52;2996:9;2983:23;3015:31;3040:5;3015:31;:::i;:::-;3065:5;3117:2;3102:18;;;;3089:32;;-1:-1:-1;;;2812:315:1:o;3324:908::-;3455:6;3463;3471;3479;3487;3540:2;3528:9;3519:7;3515:23;3511:32;3508:52;;;3556:1;3553;3546:12;3508:52;3595:9;3582:23;3614:31;3639:5;3614:31;:::i;:::-;3664:5;-1:-1:-1;3720:2:1;3705:18;;3692:32;3743:18;3773:14;;;3770:34;;;3800:1;3797;3790:12;3770:34;3839:70;3901:7;3892:6;3881:9;3877:22;3839:70;:::i;:::-;3928:8;;-1:-1:-1;3813:96:1;-1:-1:-1;4016:2:1;4001:18;;3988:32;;-1:-1:-1;4032:16:1;;;4029:36;;;4061:1;4058;4051:12;4029:36;;4100:72;4164:7;4153:8;4142:9;4138:24;4100:72;:::i;:::-;3324:908;;;;-1:-1:-1;3324:908:1;;-1:-1:-1;4191:8:1;;4074:98;3324:908;-1:-1:-1;;;3324:908:1:o;4237:456::-;4314:6;4322;4330;4383:2;4371:9;4362:7;4358:23;4354:32;4351:52;;;4399:1;4396;4389:12;4351:52;4438:9;4425:23;4457:31;4482:5;4457:31;:::i;:::-;4507:5;-1:-1:-1;4564:2:1;4549:18;;4536:32;4577:33;4536:32;4577:33;:::i;:::-;4237:456;;4629:7;;-1:-1:-1;;;4683:2:1;4668:18;;;;4655:32;;4237:456::o;4698:247::-;4757:6;4810:2;4798:9;4789:7;4785:23;4781:32;4778:52;;;4826:1;4823;4816:12;4778:52;4865:9;4852:23;4884:31;4909:5;4884:31;:::i;5139:316::-;5216:6;5224;5232;5285:2;5273:9;5264:7;5260:23;5256:32;5253:52;;;5301:1;5298;5291:12;5253:52;-1:-1:-1;;5324:23:1;;;5394:2;5379:18;;5366:32;;-1:-1:-1;5445:2:1;5430:18;;;5417:32;;5139:316;-1:-1:-1;5139:316:1:o;5668:529::-;5745:6;5753;5761;5814:2;5802:9;5793:7;5789:23;5785:32;5782:52;;;5830:1;5827;5820:12;5782:52;5869:9;5856:23;5888:31;5913:5;5888:31;:::i;:::-;5938:5;-1:-1:-1;5995:2:1;5980:18;;5967:32;6008:33;5967:32;6008:33;:::i;:::-;6060:7;-1:-1:-1;6119:2:1;6104:18;;6091:32;6132:33;6091:32;6132:33;:::i;6202:388::-;6270:6;6278;6331:2;6319:9;6310:7;6306:23;6302:32;6299:52;;;6347:1;6344;6337:12;6299:52;6386:9;6373:23;6405:31;6430:5;6405:31;:::i;:::-;6455:5;-1:-1:-1;6512:2:1;6497:18;;6484:32;6525:33;6484:32;6525:33;:::i;6595:309::-;6660:6;6668;6721:2;6709:9;6700:7;6696:23;6692:32;6689:52;;;6737:1;6734;6727:12;6689:52;6776:9;6763:23;6795:28;6817:5;6795:28;:::i;7395:329::-;7597:2;7579:21;;;7636:1;7616:18;;;7609:29;-1:-1:-1;;;7669:2:1;7654:18;;7647:36;7715:2;7700:18;;7395:329::o;7729:401::-;7931:2;7913:21;;;7970:2;7950:18;;;7943:30;8009:34;8004:2;7989:18;;7982:62;-1:-1:-1;;;8075:2:1;8060:18;;8053:35;8120:3;8105:19;;7729:401::o;8135:127::-;8196:10;8191:3;8187:20;8184:1;8177:31;8227:4;8224:1;8217:15;8251:4;8248:1;8241:15;8267:127;8328:10;8323:3;8319:20;8316:1;8309:31;8359:4;8356:1;8349:15;8383:4;8380:1;8373:15;8399:135;8438:3;8459:17;;;8456:43;;8479:18;;:::i;:::-;-1:-1:-1;8526:1:1;8515:13;;8399:135::o;8944:422::-;9033:1;9076:5;9033:1;9090:270;9111:7;9101:8;9098:21;9090:270;;;9170:4;9166:1;9162:6;9158:17;9152:4;9149:27;9146:53;;;9179:18;;:::i;:::-;9229:7;9219:8;9215:22;9212:55;;;9249:16;;;;9212:55;9328:22;;;;9288:15;;;;9090:270;;;9094:3;8944:422;;;;;:::o;9371:806::-;9420:5;9450:8;9440:80;;-1:-1:-1;9491:1:1;9505:5;;9440:80;9539:4;9529:76;;-1:-1:-1;9576:1:1;9590:5;;9529:76;9621:4;9639:1;9634:59;;;;9707:1;9702:130;;;;9614:218;;9634:59;9664:1;9655:10;;9678:5;;;9702:130;9739:3;9729:8;9726:17;9723:43;;;9746:18;;:::i;:::-;-1:-1:-1;;9802:1:1;9788:16;;9817:5;;9614:218;;9916:2;9906:8;9903:16;9897:3;9891:4;9888:13;9884:36;9878:2;9868:8;9865:16;9860:2;9854:4;9851:12;9847:35;9844:77;9841:159;;;-1:-1:-1;9953:19:1;;;9985:5;;9841:159;10032:34;10057:8;10051:4;10032:34;:::i;:::-;10102:6;10098:1;10094:6;10090:19;10081:7;10078:32;10075:58;;;10113:18;;:::i;:::-;10151:20;;9371:806;-1:-1:-1;;;9371:806:1:o;10182:140::-;10240:5;10269:47;10310:4;10300:8;10296:19;10290:4;10269:47;:::i;10327:168::-;10367:7;10433:1;10429;10425:6;10421:14;10418:1;10415:21;10410:1;10403:9;10396:17;10392:45;10389:71;;;10440:18;;:::i;:::-;-1:-1:-1;10480:9:1;;10327:168::o;10500:217::-;10540:1;10566;10556:132;;10610:10;10605:3;10601:20;10598:1;10591:31;10645:4;10642:1;10635:15;10673:4;10670:1;10663:15;10556:132;-1:-1:-1;10702:9:1;;10500:217::o;11471:128::-;11511:3;11542:1;11538:6;11535:1;11532:13;11529:39;;;11548:18;;:::i;:::-;-1:-1:-1;11584:9:1;;11471:128::o;11960:125::-;12000:4;12028:1;12025;12022:8;12019:34;;;12033:18;;:::i;:::-;-1:-1:-1;12070:9:1;;11960:125::o;12090:184::-;12160:6;12213:2;12201:9;12192:7;12188:23;12184:32;12181:52;;;12229:1;12226;12219:12;12181:52;-1:-1:-1;12252:16:1;;12090:184;-1:-1:-1;12090:184:1:o;12558:245::-;12625:6;12678:2;12666:9;12657:7;12653:23;12649:32;12646:52;;;12694:1;12691;12684:12;12646:52;12726:9;12720:16;12745:28;12767:5;12745:28;:::i;18003:980::-;18265:4;18313:3;18302:9;18298:19;18344:6;18333:9;18326:25;18370:2;18408:6;18403:2;18392:9;18388:18;18381:34;18451:3;18446:2;18435:9;18431:18;18424:31;18475:6;18510;18504:13;18541:6;18533;18526:22;18579:3;18568:9;18564:19;18557:26;;18618:2;18610:6;18606:15;18592:29;;18639:1;18649:195;18663:6;18660:1;18657:13;18649:195;;;18728:13;;-1:-1:-1;;;;;18724:39:1;18712:52;;18819:15;;;;18784:12;;;;18760:1;18678:9;18649:195;;;-1:-1:-1;;;;;;;18900:32:1;;;;18895:2;18880:18;;18873:60;-1:-1:-1;;;18964:3:1;18949:19;18942:35;18861:3;18003:980;-1:-1:-1;;;18003:980:1:o;19600:306::-;19688:6;19696;19704;19757:2;19745:9;19736:7;19732:23;19728:32;19725:52;;;19773:1;19770;19763:12;19725:52;19802:9;19796:16;19786:26;;19852:2;19841:9;19837:18;19831:25;19821:35;;19896:2;19885:9;19881:18;19875:25;19865:35;;19600:306;;;;;:::o

Swarm Source

ipfs://0f737c2d73c7047c18ad6c93eadb8abb6e23e3a8e628f0e6170a29d5b68d8b45
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.