ETH Price: $3,108.05 (+1.28%)
Gas: 6 Gwei

Token

Moonboy (MOONBOY)
 

Overview

Max Total Supply

10,000,000,000 MOONBOY

Holders

74

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
990,000 MOONBOY

Value
$0.00
0x32f3895ede4de3601c9e8fab0e88e8c4a7ba16ab
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x7aB0A0B2...65e078455
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
Moonboy

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// 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 BEP20 {
    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) external onlyOwner {
        authorizations[adr] = true;
        emit Authorize_Wallet(adr,true);
    }

    function unauthorize(address adr) external onlyOwner {
        require(adr != owner, "OWNER cant be unauthorized");
        authorizations[adr] = false;
        emit Authorize_Wallet(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) external onlyOwner {
        require(adr != owner, "Already the owner");
        potentialOwner = adr;
        emit OwnershipNominated(adr);
    }

    function renounceOwnership() external onlyOwner {
        address adr = address(0);
        potentialOwner = adr;
        emit OwnershipNominated(adr);
    }

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

        emit Authorize_Wallet(owner,false);
        emit Authorize_Wallet(potentialOwner,true);
        
        owner = potentialOwner;
        potentialOwner = address(0);
        emit OwnershipTransferred(owner);
    }

    event OwnershipTransferred(address owner);
    event OwnershipNominated(address potentialOwner);
    event Authorize_Wallet(address Wallet, bool Status);
}

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;

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

contract Moonboy is BEP20, Auth {
    using SafeMath for uint256;

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

    string public constant name = "Moonboy";
    string public constant symbol = "MOONBOY";
    uint8 public constant decimals = 9;

    uint256 public constant totalSupply = 10 * 10**9 * 10**decimals;

    mapping(address => bool) public isBlacklisted;

    // uint256 public _maxTxAmount = totalSupply / 100;
    uint256 public _maxTxAmount = totalSupply * 1 / 100;
    uint256 public _maxWalletToken = totalSupply * 1 / 100;

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

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

    uint256 public liquidityFee = 10;
    uint256 public marketingFee = 40;
    uint256 public teamFee = 20;
    uint256 public developmentFee = 0;
    uint256 public burnFee = 0;
    uint256 public totalFee = marketingFee + liquidityFee + teamFee + burnFee + developmentFee;
    uint256 public constant feeDenominator = 1000;
    
    uint256 buyMultiplier = 100;
    uint256 sellMultiplier = 100;
    uint256 transferMultiplier = 100;

    address public marketingFeeReceiver;
    address public teamFeeReceiver;
    address public developmentFeeReceiver;

    IDEXRouter public router;
    address public immutable pair;

    bool public tradingOpen = false;

    bool public swapEnabled = false;
    uint256 public swapThreshold = totalSupply / 5000;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor (address _marketingWallet, address _developmentWallet, address _teamWallet) 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;

        marketingFeeReceiver = _marketingWallet;
        developmentFeeReceiver = _developmentWallet;
        teamFeeReceiver = _teamWallet;

        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 blacklistAddress(address account, bool value) external onlyOwner{
        isBlacklisted[account] = value;
    }

    function bulkIsBlacklisted(address[] memory accounts, bool value) external onlyOwner{
        for(uint256 i =0; i < accounts.length; i++){
            isBlacklisted[accounts[i]] = value;

        }
    }

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

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

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(!isBlacklisted[sender] && !isBlacklisted[recipient], 'Blacklisted address');

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

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

        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 burnTokens = feeAmount.mul(burnFee).div(totalFee);
        uint256 contractTokens = feeAmount.sub(burnTokens);

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

        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 {
        require(amountPercentage < 101, "Max 100%");
        uint256 amountETH = address(this).balance;
        uint256 amountToClear = ( amountETH * amountPercentage ) / 100;
        payable(msg.sender).transfer(amountToClear);
        emit BalanceClear(amountToClear);
    }

    function clearStuckToken(address tokenAddress, uint256 tokens) external onlyOwner returns (bool success) {
        if(tokens == 0){
            tokens = BEP20(tokenAddress).balanceOf(address(this));
        }

        emit clearToken(tokenAddress, tokens);

        return BEP20(tokenAddress).transfer(msg.sender, tokens);
    }

    function tradingOpenFlag() external onlyOwner {
        tradingOpen = true;
        emit config_TradingStatus(tradingOpen);
    }

    function swapBack() internal swapping {

        uint256 totalETHFee = totalFee - burnFee;

        uint256 amountToLiquify = (swapThreshold * liquidityFee)/(totalETHFee * 2);
        uint256 amountToSwap = swapThreshold - 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;

        totalETHFee = totalETHFee - (liquidityFee / 2);
        
        uint256 amountETHLiquidity = (amountETH * liquidityFee) / (totalETHFee * 2);
        uint256 amountETHMarketing = (amountETH * marketingFee) / totalETHFee;
        uint256 amountETHTeam = (amountETH * teamFee) / totalETHFee;
        uint256 amountETHDevelopment = (amountETH * developmentFee) / totalETHFee;

        payable(marketingFeeReceiver).transfer(amountETHMarketing);
        payable(teamFeeReceiver).transfer(amountETHTeam);
        payable(developmentFeeReceiver).transfer(amountETHDevelopment);


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

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

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

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

    function update_fees() internal {
        // require(totalFee.mul(buyMultiplier).div(100) <= 120, "Buy tax cannot be more than 12%");
        // require(totalFee.mul(sellMultiplier).div(100) <= 120, "Sell tax cannot be more than 12%");
        // require(totalFee.mul(transferMultiplier).div(100) <= 100, "Transfer Tax cannot be more than 10%");

        emit UpdateFee( uint8(totalFee.mul(buyMultiplier).div(100)),
            uint8(totalFee.mul(sellMultiplier).div(100)),
            uint8(totalFee.mul(transferMultiplier).div(100))
            );
    }

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

        update_fees();
    }

    function setFees_base1000(uint256 _liquidityFee,  uint256 _marketingFee, uint256 _teamFee, uint256 _developmentFee, uint256 _burnFee) external onlyOwner {
        liquidityFee = _liquidityFee;
        marketingFee = _marketingFee;
        teamFee = _teamFee;
        developmentFee = _developmentFee;
        burnFee = _burnFee;
        totalFee = _liquidityFee + _marketingFee + _teamFee + _burnFee + _developmentFee;
        
        update_fees();
    }

    function setFeeReceivers(address _marketingFeeReceiver, address _teamFeeReceiver, address _developmentFeeReceiver ) external onlyOwner {
        // require(_marketingFeeReceiver != address(0),"Marketing fee address cannot be zero address");
        // require(_teamFeeReceiver != address(0),"Team fee address cannot be zero address");
        // require(_developmentFeeReceiver != address(0),"Development fee address cannot be zero address");

        marketingFeeReceiver = _marketingFeeReceiver;
        teamFeeReceiver = _teamFeeReceiver;
        developmentFeeReceiver = _developmentFeeReceiver;

        emit Set_Wallets(marketingFeeReceiver, teamFeeReceiver, developmentFeeReceiver);
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external onlyOwner {
        require(_amount < (totalSupply/10), "Amount too high");

        swapEnabled = _enabled;
        swapThreshold = _amount;

        emit config_SwapSettings(swapThreshold, swapEnabled);
    }

    function getCirculatingSupply() public view returns (uint256) {
        return (totalSupply - balanceOf[DEAD] - balanceOf[ZERO]);
    }

    function distribute(address[] calldata addresses, uint256[] calldata tokens) external onlyOwner {
        address from = msg.sender;

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

    }

event AutoLiquify(uint256 amountETH, uint256 amountTokens);
event UpdateFee(uint8 Buy, uint8 Sell, uint8 Transfer);
event Wallet_feeExempt(address Wallet, bool Status);
event Wallet_txExempt(address Wallet, bool Status);
event Wallet_holdingExempt(address Wallet, bool Status);

event BalanceClear(uint256 amount);
event clearToken(address TokenAddressCleared, uint256 Amount);

event Set_Wallets(address MarketingWallet, address TeamWallet, address DevelopmentWallet);

event config_MaxWallet(uint256 maxWallet);
event config_MaxTransaction(uint256 maxWallet);
event config_TradingStatus(bool Status);
event config_SwapSettings(uint256 Amount, bool Enabled);

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_developmentWallet","type":"address"},{"internalType":"address","name":"_teamWallet","type":"address"}],"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":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"Authorize_Wallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BalanceClear","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":false,"internalType":"address","name":"MarketingWallet","type":"address"},{"indexed":false,"internalType":"address","name":"TeamWallet","type":"address"},{"indexed":false,"internalType":"address","name":"DevelopmentWallet","type":"address"}],"name":"Set_Wallets","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"Buy","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"Sell","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"Transfer","type":"uint8"}],"name":"UpdateFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"Wallet_feeExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"Wallet_holdingExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"Wallet_txExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"TokenAddressCleared","type":"address"},{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"clearToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"config_MaxTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"config_MaxWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"Enabled","type":"bool"}],"name":"config_SwapSettings","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"config_TradingStatus","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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"blacklistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"bulkIsBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnFee","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":"developmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"developmentFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"distribute","outputs":[],"stateMutability":"nonpayable","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":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":[{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_teamFeeReceiver","type":"address"},{"internalType":"address","name":"_developmentFeeReceiver","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":"_teamFee","type":"uint256"},{"internalType":"uint256","name":"_developmentFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"setFees_base1000","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":"_amount","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":"teamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"tradingOpenFlag","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526064620000146009600a620005c2565b62000025906402540be400620005da565b62000032906001620005da565b6200003e9190620005fc565b6004556064620000516009600a620005c2565b62000062906402540be400620005da565b6200006f906001620005da565b6200007b9190620005fc565b600555600a600b556028600c556014600d556000600e556000600f55600e54600f54600d54600b54600c54620000b291906200061f565b620000be91906200061f565b620000ca91906200061f565b620000d691906200061f565b6010556064601181905560128190556013556017805461ffff60a01b19169055611388620001076009600a620005c2565b62000118906402540be400620005da565b620001249190620005fc565b6018553480156200013457600080fd5b5060405162003a3238038062003a32833981016040819052620001579162000657565b60008054336001600160a01b031991821681178355825260026020908152604092839020805460ff1916600117905560178054737a250d5630b4cf539739df2c5dacb4c659f2488d93168317905582516315ab88c960e31b81529251919263ad5c464892600480830193928290030181865afa158015620001dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002029190620006a1565b6001600160a01b039081166080526017546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa15801562000253573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002799190620006a1565b6080516040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af1158015620002cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f19190620006a1565b6001600160a01b0390811660a0523060008181526007602090815260408083206017548616845282528083206000199055601480546001600160a01b03199081168a881617909155601680548216898816179055601580549091169587169590951790945533825260088152838220805460ff199081166001908117909255600980845286852080548316841790557f960b1051749987b45b5679007fff577a1c2f763ec21c15a6c5eb19307500378580548316841790557fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6b8054831684179055600a938490528685208054831684179055948452948320805486168217905561dead9092527f20677881080440a9b3c87e826370bb5d9c2f74efd4dede686d52d77a6a09f8bb80549094169091179092556200042e91620005c2565b6200043f906402540be400620005da565b33600081815260066020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620004826009600a620005c2565b62000493906402540be400620005da565b60405190815260200160405180910390a3505050620006bf565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000504578160001904821115620004e857620004e8620004ad565b80851615620004f657918102915b93841c9390800290620004c8565b509250929050565b6000826200051d57506001620005bc565b816200052c57506000620005bc565b8160018114620005455760028114620005505762000570565b6001915050620005bc565b60ff841115620005645762000564620004ad565b50506001821b620005bc565b5060208310610133831016604e8410600b841016171562000595575081810a620005bc565b620005a18383620004c3565b8060001904821115620005b857620005b8620004ad565b0290505b92915050565b6000620005d360ff8416836200050c565b9392505050565b6000816000190483118215151615620005f757620005f7620004ad565b500290565b6000826200061a57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115620006355762000635620004ad565b500190565b80516001600160a01b03811681146200065257600080fd5b919050565b6000806000606084860312156200066d57600080fd5b62000678846200063a565b925062000688602085016200063a565b915062000698604085016200063a565b90509250925092565b600060208284031215620006b457600080fd5b620005d3826200063a565b60805160a051613331620007016000396000818161083b01528181611f8e01528181612392015281816127b401526127e8015260006124ae01526133316000f3fe6080604052600436106103525760003560e01c8063715018a6116101c6578063c867d60b116100f7578063f2fde38b11610095578063fce589d81161006f578063fce589d814610a29578063fe575a8714610a3f578063fe9fbb8014610a6f578063ffb54a9914610a8f57600080fd5b8063f2fde38b146109c9578063f887ea40146109e9578063f9fdac1114610a0957600080fd5b8063dd62ed3e116100d1578063dd62ed3e14610923578063df20fd4914610969578063e96fada214610989578063f0b37c04146109a957600080fd5b8063c867d60b146108bd578063d7c01032146108ed578063d7c94efd1461090d57600080fd5b806395d89b4111610164578063a8aa1b311161013e578063a8aa1b3114610829578063a9059cbb1461085d578063b6a5d7de1461087d578063bd9ab5371461089d57600080fd5b806395d89b41146107ca57806398118cb4146107fd578063a5f3d0031461081357600080fd5b806379ba5097116101a057806379ba5097146107515780637d1db4a514610766578063893d20e81461077c5780638b42507f1461079a57600080fd5b8063715018a61461070657806377b54bad1461071b57806378109e541461073b57600080fd5b80632929abe6116102a05780634be9d8691161023e5780636ce46bc3116102185780636ce46bc3146106785780636ddd1713146106985780636ec518b8146106b957806370a08231146106d957600080fd5b80634be9d86914610622578063571ac8b0146106425780636b67c4df1461066257600080fd5b8063313ce5671161027a578063313ce567146105735780633f4218e01461059a57806340291143146105ca578063455a43961461060257600080fd5b80632929abe61461050f5780632b112e491461052f5780632f54bf6e1461054457600080fd5b806313f97a8e1161030d578063193dba36116102e7578063193dba36146104a45780631da1db5e146104b95780631df4ccfc146104d957806323b872dd146104ef57600080fd5b806313f97a8e14610459578063180b0d7e1461047957806318160ddd1461048f57600080fd5b80621086831461035e578062bff446146103805780630445b667146103a057806306fdde03146103c957806309302dc614610409578063095ea7b31461042957600080fd5b3661035957005b600080fd5b34801561036a57600080fd5b5061037e610379366004612ba5565b610ab0565b005b34801561038c57600080fd5b5061037e61039b366004612ba5565b610bd3565b3480156103ac57600080fd5b506103b660185481565b6040519081526020015b60405180910390f35b3480156103d557600080fd5b506103fc604051806040016040528060078152602001664d6f6f6e626f7960c81b81525081565b6040516103c09190612bfc565b34801561041557600080fd5b5061037e610424366004612c51565b610ce7565b34801561043557600080fd5b50610449610444366004612c8a565b610ddd565b60405190151581526020016103c0565b34801561046557600080fd5b5061037e610474366004612ccc565b610e4a565b34801561048557600080fd5b506103b66103e881565b34801561049b57600080fd5b506103b6610ee0565b3480156104b057600080fd5b5061037e610efe565b3480156104c557600080fd5b5061037e6104d4366004612c51565b610f81565b3480156104e557600080fd5b506103b660105481565b3480156104fb57600080fd5b5061044961050a366004612da3565b611069565b34801561051b57600080fd5b5061037e61052a366004612de4565b61112b565b34801561053b57600080fd5b506103b66112f4565b34801561055057600080fd5b5061044961055f366004612e50565b6000546001600160a01b0391821691161490565b34801561057f57600080fd5b50610588600981565b60405160ff90911681526020016103c0565b3480156105a657600080fd5b506104496105b5366004612e50565b60086020526000908152604090205460ff1681565b3480156105d657600080fd5b506015546105ea906001600160a01b031681565b6040516001600160a01b0390911681526020016103c0565b34801561060e57600080fd5b5061037e61061d366004612e6d565b61137c565b34801561062e57600080fd5b5061037e61063d366004612ba5565b6113d1565b34801561064e57600080fd5b5061044961065d366004612e50565b6114e5565b34801561066e57600080fd5b506103b6600c5481565b34801561068457600080fd5b5061037e610693366004612ea6565b6114f3565b3480156106a457600080fd5b5060175461044990600160a81b900460ff1681565b3480156106c557600080fd5b506016546105ea906001600160a01b031681565b3480156106e557600080fd5b506103b66106f4366004612e50565b60066020526000908152604090205481565b34801561071257600080fd5b5061037e61152f565b34801561072757600080fd5b50610449610736366004612c8a565b61159c565b34801561074757600080fd5b506103b660055481565b34801561075d57600080fd5b5061037e6116ed565b34801561077257600080fd5b506103b660045481565b34801561078857600080fd5b506000546001600160a01b03166105ea565b3480156107a657600080fd5b506104496107b5366004612e50565b60096020526000908152604090205460ff1681565b3480156107d657600080fd5b506103fc604051806040016040528060078152602001664d4f4f4e424f5960c81b81525081565b34801561080957600080fd5b506103b6600b5481565b34801561081f57600080fd5b506103b6600e5481565b34801561083557600080fd5b506105ea7f000000000000000000000000000000000000000000000000000000000000000081565b34801561086957600080fd5b50610449610878366004612c8a565b61186d565b34801561088957600080fd5b5061037e610898366004612e50565b61187a565b3480156108a957600080fd5b5061037e6108b8366004612c51565b6118ea565b3480156108c957600080fd5b506104496108d8366004612e50565b600a6020526000908152604090205460ff1681565b3480156108f957600080fd5b5061037e610908366004612ed2565b6119df565b34801561091957600080fd5b506103b6600d5481565b34801561092f57600080fd5b506103b661093e366004612f12565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b34801561097557600080fd5b5061037e610984366004612f40565b611a85565b34801561099557600080fd5b506014546105ea906001600160a01b031681565b3480156109b557600080fd5b5061037e6109c4366004612e50565b611b7e565b3480156109d557600080fd5b5061037e6109e4366004612e50565b611c44565b3480156109f557600080fd5b506017546105ea906001600160a01b031681565b348015610a1557600080fd5b5061037e610a24366004612f5e565b611d0e565b348015610a3557600080fd5b506103b6600f5481565b348015610a4b57600080fd5b50610449610a5a366004612e50565b60036020526000908152604090205460ff1681565b348015610a7b57600080fd5b50610449610a8a366004612e50565b611d8e565b348015610a9b57600080fd5b5060175461044990600160a01b900460ff1681565b610ab933611d8e565b610ade5760405162461bcd60e51b8152600401610ad590612f99565b60405180910390fd5b6101f58210610aff5760405162461bcd60e51b8152600401610ad590612fbe565b60005b82811015610bcd5781600a6000868685818110610b2157610b21613003565b9050602002016020810190610b369190612e50565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f566c2270277919680152b0734389ae919d95ff7e9024c03fc3c7c209ec8412c7848483818110610b9157610b91613003565b9050602002016020810190610ba69190612e50565b83604051610bb5929190613019565b60405180910390a1610bc68161304a565b9050610b02565b50505050565b610bdc33611d8e565b610bf85760405162461bcd60e51b8152600401610ad590612f99565b6101f58210610c195760405162461bcd60e51b8152600401610ad590612fbe565b60005b82811015610bcd578160086000868685818110610c3b57610c3b613003565b9050602002016020810190610c509190612e50565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f9fbd25f95d342f2efc070b56d2fadd2341d264ef8c915dc268609b2ca1bb25de848483818110610cab57610cab613003565b9050602002016020810190610cc09190612e50565b83604051610ccf929190613019565b60405180910390a1610ce08161304a565b9050610c1c565b6000546001600160a01b03163314610d115760405162461bcd60e51b8152600401610ad590613063565b6005811015610d6e5760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e20604482015263302e352560e01b6064820152608401610ad5565b6103e881610d7e6009600a613167565b610d8d906402540be400613176565b610d979190613176565b610da19190613195565b60058190556040519081527fa69fa556bf940aa0c695b9c8e1b229fdb1476830e2025e44da1028e0c1458d4a906020015b60405180910390a150565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610e389086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610e745760405162461bcd60e51b8152600401610ad590613063565b60005b8251811015610edb578160036000858481518110610e9757610e97613003565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610ed38161304a565b915050610e77565b505050565b610eec6009600a613167565b610efb906402540be400613176565b81565b6000546001600160a01b03163314610f285760405162461bcd60e51b8152600401610ad590613063565b6017805460ff60a01b1916600160a01b908117918290556040517ff865819dcfd8250cfaa23e1ab7129c1ec65c617bae1e716699dfe07dd7c489ee92610f7792900460ff161515815260200190565b60405180910390a1565b6000546001600160a01b03163314610fab5760405162461bcd60e51b8152600401610ad590613063565b60658110610fe65760405162461bcd60e51b81526020600482015260086024820152674d6178203130302560c01b6044820152606401610ad5565b4760006064610ff58484613176565b610fff9190613195565b604051909150339082156108fc029083906000818181858888f1935050505015801561102f573d6000803e3d6000fd5b506040518181527f377153983e64f72f80af47182763316780b9133be808b7082a16710202b8fbda906020015b60405180910390a1505050565b6001600160a01b038316600090815260076020908152604080832033845290915281205460001914611116576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526007825283812033825290915291909120546110f1918490611dac565b6001600160a01b03851660009081526007602090815260408083203384529091529020555b611121848484611de6565b90505b9392505050565b6000546001600160a01b031633146111555760405162461bcd60e51b8152600401610ad590613063565b336101f584106111775760405162461bcd60e51b8152600401610ad590612fbe565b8382146111d75760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e206164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610ad5565b6000805b8581101561121b578484828181106111f5576111f5613003565b905060200201358261120791906131b7565b9150806112138161304a565b9150506111db565b506001600160a01b0382166000908152600660205260409020548111156112845760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610ad5565b60005b858110156112eb576112d8838888848181106112a5576112a5613003565b90506020020160208101906112ba9190612e50565b8787858181106112cc576112cc613003565b90506020020135612212565b50806112e38161304a565b915050611287565b50505050505050565b60066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85461dead60009081527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22549091906113546009600a613167565b611363906402540be400613176565b61136d91906131cf565b61137791906131cf565b905090565b6000546001600160a01b031633146113a65760405162461bcd60e51b8152600401610ad590613063565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b6113da33611d8e565b6113f65760405162461bcd60e51b8152600401610ad590612f99565b6101f582106114175760405162461bcd60e51b8152600401610ad590612fbe565b60005b82811015610bcd57816009600086868581811061143957611439613003565b905060200201602081019061144e9190612e50565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f3c4f06d74861dea6c152189f2ac8853b6f789feb0e1182101b7ad9d1858f70e38484838181106114a9576114a9613003565b90506020020160208101906114be9190612e50565b836040516114cd929190613019565b60405180910390a16114de8161304a565b905061141a565b6000610e4482600019610ddd565b6114fc33611d8e565b6115185760405162461bcd60e51b8152600401610ad590612f99565b601282905560118390556013819055610edb6122e6565b6000546001600160a01b031633146115595760405162461bcd60e51b8152600401610ad590613063565b600180546001600160a01b03191690556040516000808252907fe235b3289f2e990914b334bf6827949c27f6ba58d3e5a1d6f8415037ca1ef22290602001610dd2565b600080546001600160a01b031633146115c75760405162461bcd60e51b8152600401610ad590613063565b8160000361163a576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611613573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163791906131e6565b91505b604080516001600160a01b0385168152602081018490527f960427a4fde284dcc8da2c51a43d210cfd7ed6f4328a24ba33eee49910db564b910160405180910390a160405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af11580156116c9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112491906131ff565b6001546001600160a01b0316331461177e5760405162461bcd60e51b815260206004820152604860248201527f596f75206d757374206265206e6f6d696e6174656420617320706f74656e746960448201527f616c206f776e6572206265666f726520796f752063616e2061636365707420746064820152673432903937b6329760c11b608482015260a401610ad5565b600080546001600160a01b03908116825260026020526040808320805460ff1990811690915560018054841685528285208054909216179055825490516000805160206132dc833981519152936117da93929092169190613019565b60405180910390a1600180546040516000805160206132dc8339815191529261180c926001600160a01b031691613019565b60405180910390a160018054600080546001600160a01b0383166001600160a01b031991821681179092559091169091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616390602001610f77565b6000611124338484611de6565b6000546001600160a01b031633146118a45760405162461bcd60e51b8152600401610ad590613063565b6001600160a01b03811660009081526002602052604090819020805460ff1916600190811790915590516000805160206132dc83398151915291610dd291849190613019565b6000546001600160a01b031633146119145760405162461bcd60e51b8152600401610ad590613063565b60058110156119775760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c657373206044820152687468616e20302e352560b81b6064820152608401610ad5565b6103e8816119876009600a613167565b611996906402540be400613176565b6119a09190613176565b6119aa9190613195565b60048190556040519081527f365a2bb07537fddd750e9ac8d56970e584f83a144bb5225e77491b83bccd118390602001610dd2565b6000546001600160a01b03163314611a095760405162461bcd60e51b8152600401610ad590613063565b601480546001600160a01b038581166001600160a01b0319928316811790935560158054868316908416811790915560168054928616929093168217909255604080519384526020840192909252908201527fb93b1ef445620c8661ebddddb575085ede7dfe08ccc6a91b933a6520249c3c7c9060600161105c565b6000546001600160a01b03163314611aaf5760405162461bcd60e51b8152600401610ad590613063565b600a611abc600982613167565b611acb906402540be400613176565b611ad59190613195565b8110611b155760405162461bcd60e51b815260206004820152600f60248201526e082dadeeadce840e8dede40d0d2ced608b1b6044820152606401610ad5565b6017805460ff60a81b1916600160a81b8415158102919091179182905560188390556040805184815260ff9290930491909116151560208301527f34c2d4c263b6f41223c6d30ae2e7bcb18629892587e0a4138f57ba2c523953d0910160405180910390a15050565b6000546001600160a01b03163314611ba85760405162461bcd60e51b8152600401610ad590613063565b6000546001600160a01b0390811690821603611c065760405162461bcd60e51b815260206004820152601a60248201527f4f574e45522063616e7420626520756e617574686f72697a65640000000000006044820152606401610ad5565b6001600160a01b038116600090815260026020526040808220805460ff19169055516000805160206132dc83398151915291610dd291849190613019565b6000546001600160a01b03163314611c6e5760405162461bcd60e51b8152600401610ad590613063565b6000546001600160a01b0390811690821603611cc05760405162461bcd60e51b815260206004820152601160248201527020b63932b0b23c903a34329037bbb732b960791b6044820152606401610ad5565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527fe235b3289f2e990914b334bf6827949c27f6ba58d3e5a1d6f8415037ca1ef22290602001610dd2565b6000546001600160a01b03163314611d385760405162461bcd60e51b8152600401610ad590613063565b600b859055600c849055600d839055600e829055600f819055818184611d5e87896131b7565b611d6891906131b7565b611d7291906131b7565b611d7c91906131b7565b601055611d876122e6565b5050505050565b6001600160a01b031660009081526002602052604090205460ff1690565b60008184841115611dd05760405162461bcd60e51b8152600401610ad59190612bfc565b506000611ddd84866131cf565b95945050505050565b6001600160a01b03831660009081526003602052604081205460ff16158015611e2857506001600160a01b03831660009081526003602052604090205460ff16155b611e6a5760405162461bcd60e51b8152602060048201526013602482015272426c61636b6c6973746564206164647265737360681b6044820152606401610ad5565b60195460ff1615611e8757611e80848484612212565b9050611124565b6001600160a01b03841660009081526002602052604090205460ff16158015611ec957506001600160a01b03831660009081526002602052604090205460ff16155b15611f1e57601754600160a01b900460ff16611f1e5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610ad5565b6001600160a01b03841660009081526002602052604090205460ff16158015611f6057506001600160a01b0384166000908152600a602052604090205460ff16155b8015611f8557506001600160a01b0383166000908152600a602052604090205460ff16155b8015611fc357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b1561203d576005546001600160a01b038416600090815260066020526040902054611fef9084906131b7565b111561203d5760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d6974207265616368656400000000000000006044820152606401610ad5565b6004548211158061206657506001600160a01b03841660009081526009602052604090205460ff165b8061208957506001600160a01b03831660009081526009602052604090205460ff165b6120cd5760405162461bcd60e51b815260206004820152601560248201527413585e08151608131a5b5a5d08115e18d959591959605a1b6044820152606401610ad5565b6120d5612385565b156120e2576120e26123f8565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260069091529190912054612134918490611dac565b6001600160a01b038516600090815260066020908152604080832093909355600890529081205460ff168061218157506001600160a01b03841660009081526008602052604090205460ff165b6121955761219085848661278c565b612197565b825b6001600160a01b0385166000908152600660205260409020549091506121bd90826129a5565b6001600160a01b0380861660008181526006602052604090819020939093559151908716906000805160206132bc833981519152906121ff9085815260200190565b60405180910390a3506001949350505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600690915291822054612263918490611dac565b6001600160a01b03808616600090815260066020526040808220939093559085168152205461229290836129a5565b6001600160a01b0380851660008181526006602052604090819020939093559151908616906000805160206132bc833981519152906122d49086815260200190565b60405180910390a35060019392505050565b7f375884ed7f92283ee74d8884b39a803f4aee832b15766fe016b74fc791fc2ada6123296064612323601154601054612a0490919063ffffffff16565b90612a86565b6123456064612323601254601054612a0490919063ffffffff16565b6123616064612323601354601054612a0490919063ffffffff16565b6040805160ff94851681529284166020840152921691810191909152606001610f77565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015906123c3575060195460ff16155b80156123d85750601754600160a81b900460ff165b801561137757505060185430600090815260066020526040902054101590565b6019805460ff19166001179055600f54601054600091612417916131cf565b90506000612426826002613176565b600b546018546124369190613176565b6124409190613195565b905060008160185461245291906131cf565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061248c5761248c613003565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106124e0576124e0613003565b6001600160a01b03928316602091820292909201015260175460405163791ac94760e01b815291169063791ac9479061252690859060009086903090429060040161321c565b600060405180830381600087803b15801561254057600080fd5b505af1158015612554573d6000803e3d6000fd5b5050600b544792506125699150600290613195565b61257390866131cf565b94506000612582866002613176565b600b5461258f9084613176565b6125999190613195565b9050600086600c54846125ac9190613176565b6125b69190613195565b9050600087600d54856125c99190613176565b6125d39190613195565b9050600088600e54866125e69190613176565b6125f09190613195565b6014546040519192506001600160a01b03169084156108fc029085906000818181858888f1935050505015801561262b573d6000803e3d6000fd5b506015546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015612666573d6000803e3d6000fd5b506016546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156126a1573d6000803e3d6000fd5b5087156127775760175460405163f305d71960e01b81523060048201819052602482018b9052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990869060c40160606040518083038185885af1158015612715573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061273a919061328d565b505060408051868152602081018b90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506019805460ff1916905550505050505050565b600082158061279b5750601054155b156127a7575081611124565b6013546001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116908416036127e65750601254612824565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b03160361282457506011545b60006128556128366103e86064613176565b6123238461284f6010548a612a0490919063ffffffff16565b90612a04565b90506000612874601054612323600f5485612a0490919063ffffffff16565b905060006128828383612ac8565b905080156128ec57306000908152600660205260409020546128a490826129a5565b30600081815260066020526040908190209290925590516001600160a01b038a16906000805160206132bc833981519152906128e39085815260200190565b60405180910390a35b811561298f5761dead60005260066020527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e225461292990836129a5565b61dead600081905260066020527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22919091556040516001600160a01b038a16906000805160206132bc833981519152906129869086815260200190565b60405180910390a35b6129998784612ac8565b98975050505050505050565b6000806129b283856131b7565b9050838110156111245760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610ad5565b600082600003612a1657506000610e44565b6000612a228385613176565b905082612a2f8583613195565b146111245760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610ad5565b600061112483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b0a565b600061112483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611dac565b60008183612b2b5760405162461bcd60e51b8152600401610ad59190612bfc565b506000611ddd8486613195565b60008083601f840112612b4a57600080fd5b50813567ffffffffffffffff811115612b6257600080fd5b6020830191508360208260051b8501011115612b7d57600080fd5b9250929050565b8015158114612b9257600080fd5b50565b8035612ba081612b84565b919050565b600080600060408486031215612bba57600080fd5b833567ffffffffffffffff811115612bd157600080fd5b612bdd86828701612b38565b9094509250506020840135612bf181612b84565b809150509250925092565b600060208083528351808285015260005b81811015612c2957858101830151858201604001528201612c0d565b81811115612c3b576000604083870101525b50601f01601f1916929092016040019392505050565b600060208284031215612c6357600080fd5b5035919050565b6001600160a01b0381168114612b9257600080fd5b8035612ba081612c6a565b60008060408385031215612c9d57600080fd5b8235612ca881612c6a565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215612cdf57600080fd5b823567ffffffffffffffff80821115612cf757600080fd5b818501915085601f830112612d0b57600080fd5b8135602082821115612d1f57612d1f612cb6565b8160051b604051601f19603f83011681018181108682111715612d4457612d44612cb6565b604052928352818301935084810182019289841115612d6257600080fd5b948201945b83861015612d8757612d7886612c7f565b85529482019493820193612d67565b9650612d969050878201612b95565b9450505050509250929050565b600080600060608486031215612db857600080fd5b8335612dc381612c6a565b92506020840135612dd381612c6a565b929592945050506040919091013590565b60008060008060408587031215612dfa57600080fd5b843567ffffffffffffffff80821115612e1257600080fd5b612e1e88838901612b38565b90965094506020870135915080821115612e3757600080fd5b50612e4487828801612b38565b95989497509550505050565b600060208284031215612e6257600080fd5b813561112481612c6a565b60008060408385031215612e8057600080fd5b8235612e8b81612c6a565b91506020830135612e9b81612b84565b809150509250929050565b600080600060608486031215612ebb57600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215612ee757600080fd5b8335612ef281612c6a565b92506020840135612f0281612c6a565b91506040840135612bf181612c6a565b60008060408385031215612f2557600080fd5b8235612f3081612c6a565b91506020830135612e9b81612c6a565b60008060408385031215612f5357600080fd5b8235612ca881612b84565b600080600080600060a08688031215612f7657600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b60208082526025908201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604082015264657373657360d81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b039290921682521515602082015260400190565b634e487b7160e01b600052601160045260246000fd5b60006001820161305c5761305c613034565b5060010190565b60208082526006908201526510a7aba722a960d11b604082015260600190565b600181815b808511156130be5781600019048211156130a4576130a4613034565b808516156130b157918102915b93841c9390800290613088565b509250929050565b6000826130d557506001610e44565b816130e257506000610e44565b81600181146130f857600281146131025761311e565b6001915050610e44565b60ff84111561311357613113613034565b50506001821b610e44565b5060208310610133831016604e8410600b8410161715613141575081810a610e44565b61314b8383613083565b806000190482111561315f5761315f613034565b029392505050565b600061112460ff8416836130c6565b600081600019048311821515161561319057613190613034565b500290565b6000826131b257634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156131ca576131ca613034565b500190565b6000828210156131e1576131e1613034565b500390565b6000602082840312156131f857600080fd5b5051919050565b60006020828403121561321157600080fd5b815161112481612b84565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561326c5784516001600160a01b031683529383019391830191600101613247565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156132a257600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efb6a1709218b158ea8591fc9269b88652f1c908dc68a79faa865c745a770b9505a26469706673582212200f609dedba901830d5e11afc4d31ce2c9f490986653b291c1da93c00405e718a64736f6c634300080f003300000000000000000000000071e14bf21f511e72b63a9f78860bcc75c95eaa7c000000000000000000000000077b31aa4fca49c975774c54975448a63167b69a000000000000000000000000077b31aa4fca49c975774c54975448a63167b69a

Deployed Bytecode

0x6080604052600436106103525760003560e01c8063715018a6116101c6578063c867d60b116100f7578063f2fde38b11610095578063fce589d81161006f578063fce589d814610a29578063fe575a8714610a3f578063fe9fbb8014610a6f578063ffb54a9914610a8f57600080fd5b8063f2fde38b146109c9578063f887ea40146109e9578063f9fdac1114610a0957600080fd5b8063dd62ed3e116100d1578063dd62ed3e14610923578063df20fd4914610969578063e96fada214610989578063f0b37c04146109a957600080fd5b8063c867d60b146108bd578063d7c01032146108ed578063d7c94efd1461090d57600080fd5b806395d89b4111610164578063a8aa1b311161013e578063a8aa1b3114610829578063a9059cbb1461085d578063b6a5d7de1461087d578063bd9ab5371461089d57600080fd5b806395d89b41146107ca57806398118cb4146107fd578063a5f3d0031461081357600080fd5b806379ba5097116101a057806379ba5097146107515780637d1db4a514610766578063893d20e81461077c5780638b42507f1461079a57600080fd5b8063715018a61461070657806377b54bad1461071b57806378109e541461073b57600080fd5b80632929abe6116102a05780634be9d8691161023e5780636ce46bc3116102185780636ce46bc3146106785780636ddd1713146106985780636ec518b8146106b957806370a08231146106d957600080fd5b80634be9d86914610622578063571ac8b0146106425780636b67c4df1461066257600080fd5b8063313ce5671161027a578063313ce567146105735780633f4218e01461059a57806340291143146105ca578063455a43961461060257600080fd5b80632929abe61461050f5780632b112e491461052f5780632f54bf6e1461054457600080fd5b806313f97a8e1161030d578063193dba36116102e7578063193dba36146104a45780631da1db5e146104b95780631df4ccfc146104d957806323b872dd146104ef57600080fd5b806313f97a8e14610459578063180b0d7e1461047957806318160ddd1461048f57600080fd5b80621086831461035e578062bff446146103805780630445b667146103a057806306fdde03146103c957806309302dc614610409578063095ea7b31461042957600080fd5b3661035957005b600080fd5b34801561036a57600080fd5b5061037e610379366004612ba5565b610ab0565b005b34801561038c57600080fd5b5061037e61039b366004612ba5565b610bd3565b3480156103ac57600080fd5b506103b660185481565b6040519081526020015b60405180910390f35b3480156103d557600080fd5b506103fc604051806040016040528060078152602001664d6f6f6e626f7960c81b81525081565b6040516103c09190612bfc565b34801561041557600080fd5b5061037e610424366004612c51565b610ce7565b34801561043557600080fd5b50610449610444366004612c8a565b610ddd565b60405190151581526020016103c0565b34801561046557600080fd5b5061037e610474366004612ccc565b610e4a565b34801561048557600080fd5b506103b66103e881565b34801561049b57600080fd5b506103b6610ee0565b3480156104b057600080fd5b5061037e610efe565b3480156104c557600080fd5b5061037e6104d4366004612c51565b610f81565b3480156104e557600080fd5b506103b660105481565b3480156104fb57600080fd5b5061044961050a366004612da3565b611069565b34801561051b57600080fd5b5061037e61052a366004612de4565b61112b565b34801561053b57600080fd5b506103b66112f4565b34801561055057600080fd5b5061044961055f366004612e50565b6000546001600160a01b0391821691161490565b34801561057f57600080fd5b50610588600981565b60405160ff90911681526020016103c0565b3480156105a657600080fd5b506104496105b5366004612e50565b60086020526000908152604090205460ff1681565b3480156105d657600080fd5b506015546105ea906001600160a01b031681565b6040516001600160a01b0390911681526020016103c0565b34801561060e57600080fd5b5061037e61061d366004612e6d565b61137c565b34801561062e57600080fd5b5061037e61063d366004612ba5565b6113d1565b34801561064e57600080fd5b5061044961065d366004612e50565b6114e5565b34801561066e57600080fd5b506103b6600c5481565b34801561068457600080fd5b5061037e610693366004612ea6565b6114f3565b3480156106a457600080fd5b5060175461044990600160a81b900460ff1681565b3480156106c557600080fd5b506016546105ea906001600160a01b031681565b3480156106e557600080fd5b506103b66106f4366004612e50565b60066020526000908152604090205481565b34801561071257600080fd5b5061037e61152f565b34801561072757600080fd5b50610449610736366004612c8a565b61159c565b34801561074757600080fd5b506103b660055481565b34801561075d57600080fd5b5061037e6116ed565b34801561077257600080fd5b506103b660045481565b34801561078857600080fd5b506000546001600160a01b03166105ea565b3480156107a657600080fd5b506104496107b5366004612e50565b60096020526000908152604090205460ff1681565b3480156107d657600080fd5b506103fc604051806040016040528060078152602001664d4f4f4e424f5960c81b81525081565b34801561080957600080fd5b506103b6600b5481565b34801561081f57600080fd5b506103b6600e5481565b34801561083557600080fd5b506105ea7f00000000000000000000000067e76f89ffe34a6646886b10b8f8a998dacfd04681565b34801561086957600080fd5b50610449610878366004612c8a565b61186d565b34801561088957600080fd5b5061037e610898366004612e50565b61187a565b3480156108a957600080fd5b5061037e6108b8366004612c51565b6118ea565b3480156108c957600080fd5b506104496108d8366004612e50565b600a6020526000908152604090205460ff1681565b3480156108f957600080fd5b5061037e610908366004612ed2565b6119df565b34801561091957600080fd5b506103b6600d5481565b34801561092f57600080fd5b506103b661093e366004612f12565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b34801561097557600080fd5b5061037e610984366004612f40565b611a85565b34801561099557600080fd5b506014546105ea906001600160a01b031681565b3480156109b557600080fd5b5061037e6109c4366004612e50565b611b7e565b3480156109d557600080fd5b5061037e6109e4366004612e50565b611c44565b3480156109f557600080fd5b506017546105ea906001600160a01b031681565b348015610a1557600080fd5b5061037e610a24366004612f5e565b611d0e565b348015610a3557600080fd5b506103b6600f5481565b348015610a4b57600080fd5b50610449610a5a366004612e50565b60036020526000908152604090205460ff1681565b348015610a7b57600080fd5b50610449610a8a366004612e50565b611d8e565b348015610a9b57600080fd5b5060175461044990600160a01b900460ff1681565b610ab933611d8e565b610ade5760405162461bcd60e51b8152600401610ad590612f99565b60405180910390fd5b6101f58210610aff5760405162461bcd60e51b8152600401610ad590612fbe565b60005b82811015610bcd5781600a6000868685818110610b2157610b21613003565b9050602002016020810190610b369190612e50565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f566c2270277919680152b0734389ae919d95ff7e9024c03fc3c7c209ec8412c7848483818110610b9157610b91613003565b9050602002016020810190610ba69190612e50565b83604051610bb5929190613019565b60405180910390a1610bc68161304a565b9050610b02565b50505050565b610bdc33611d8e565b610bf85760405162461bcd60e51b8152600401610ad590612f99565b6101f58210610c195760405162461bcd60e51b8152600401610ad590612fbe565b60005b82811015610bcd578160086000868685818110610c3b57610c3b613003565b9050602002016020810190610c509190612e50565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f9fbd25f95d342f2efc070b56d2fadd2341d264ef8c915dc268609b2ca1bb25de848483818110610cab57610cab613003565b9050602002016020810190610cc09190612e50565b83604051610ccf929190613019565b60405180910390a1610ce08161304a565b9050610c1c565b6000546001600160a01b03163314610d115760405162461bcd60e51b8152600401610ad590613063565b6005811015610d6e5760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e20604482015263302e352560e01b6064820152608401610ad5565b6103e881610d7e6009600a613167565b610d8d906402540be400613176565b610d979190613176565b610da19190613195565b60058190556040519081527fa69fa556bf940aa0c695b9c8e1b229fdb1476830e2025e44da1028e0c1458d4a906020015b60405180910390a150565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610e389086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610e745760405162461bcd60e51b8152600401610ad590613063565b60005b8251811015610edb578160036000858481518110610e9757610e97613003565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610ed38161304a565b915050610e77565b505050565b610eec6009600a613167565b610efb906402540be400613176565b81565b6000546001600160a01b03163314610f285760405162461bcd60e51b8152600401610ad590613063565b6017805460ff60a01b1916600160a01b908117918290556040517ff865819dcfd8250cfaa23e1ab7129c1ec65c617bae1e716699dfe07dd7c489ee92610f7792900460ff161515815260200190565b60405180910390a1565b6000546001600160a01b03163314610fab5760405162461bcd60e51b8152600401610ad590613063565b60658110610fe65760405162461bcd60e51b81526020600482015260086024820152674d6178203130302560c01b6044820152606401610ad5565b4760006064610ff58484613176565b610fff9190613195565b604051909150339082156108fc029083906000818181858888f1935050505015801561102f573d6000803e3d6000fd5b506040518181527f377153983e64f72f80af47182763316780b9133be808b7082a16710202b8fbda906020015b60405180910390a1505050565b6001600160a01b038316600090815260076020908152604080832033845290915281205460001914611116576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526007825283812033825290915291909120546110f1918490611dac565b6001600160a01b03851660009081526007602090815260408083203384529091529020555b611121848484611de6565b90505b9392505050565b6000546001600160a01b031633146111555760405162461bcd60e51b8152600401610ad590613063565b336101f584106111775760405162461bcd60e51b8152600401610ad590612fbe565b8382146111d75760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e206164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610ad5565b6000805b8581101561121b578484828181106111f5576111f5613003565b905060200201358261120791906131b7565b9150806112138161304a565b9150506111db565b506001600160a01b0382166000908152600660205260409020548111156112845760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610ad5565b60005b858110156112eb576112d8838888848181106112a5576112a5613003565b90506020020160208101906112ba9190612e50565b8787858181106112cc576112cc613003565b90506020020135612212565b50806112e38161304a565b915050611287565b50505050505050565b60066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85461dead60009081527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22549091906113546009600a613167565b611363906402540be400613176565b61136d91906131cf565b61137791906131cf565b905090565b6000546001600160a01b031633146113a65760405162461bcd60e51b8152600401610ad590613063565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b6113da33611d8e565b6113f65760405162461bcd60e51b8152600401610ad590612f99565b6101f582106114175760405162461bcd60e51b8152600401610ad590612fbe565b60005b82811015610bcd57816009600086868581811061143957611439613003565b905060200201602081019061144e9190612e50565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f3c4f06d74861dea6c152189f2ac8853b6f789feb0e1182101b7ad9d1858f70e38484838181106114a9576114a9613003565b90506020020160208101906114be9190612e50565b836040516114cd929190613019565b60405180910390a16114de8161304a565b905061141a565b6000610e4482600019610ddd565b6114fc33611d8e565b6115185760405162461bcd60e51b8152600401610ad590612f99565b601282905560118390556013819055610edb6122e6565b6000546001600160a01b031633146115595760405162461bcd60e51b8152600401610ad590613063565b600180546001600160a01b03191690556040516000808252907fe235b3289f2e990914b334bf6827949c27f6ba58d3e5a1d6f8415037ca1ef22290602001610dd2565b600080546001600160a01b031633146115c75760405162461bcd60e51b8152600401610ad590613063565b8160000361163a576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611613573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163791906131e6565b91505b604080516001600160a01b0385168152602081018490527f960427a4fde284dcc8da2c51a43d210cfd7ed6f4328a24ba33eee49910db564b910160405180910390a160405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af11580156116c9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112491906131ff565b6001546001600160a01b0316331461177e5760405162461bcd60e51b815260206004820152604860248201527f596f75206d757374206265206e6f6d696e6174656420617320706f74656e746960448201527f616c206f776e6572206265666f726520796f752063616e2061636365707420746064820152673432903937b6329760c11b608482015260a401610ad5565b600080546001600160a01b03908116825260026020526040808320805460ff1990811690915560018054841685528285208054909216179055825490516000805160206132dc833981519152936117da93929092169190613019565b60405180910390a1600180546040516000805160206132dc8339815191529261180c926001600160a01b031691613019565b60405180910390a160018054600080546001600160a01b0383166001600160a01b031991821681179092559091169091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616390602001610f77565b6000611124338484611de6565b6000546001600160a01b031633146118a45760405162461bcd60e51b8152600401610ad590613063565b6001600160a01b03811660009081526002602052604090819020805460ff1916600190811790915590516000805160206132dc83398151915291610dd291849190613019565b6000546001600160a01b031633146119145760405162461bcd60e51b8152600401610ad590613063565b60058110156119775760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c657373206044820152687468616e20302e352560b81b6064820152608401610ad5565b6103e8816119876009600a613167565b611996906402540be400613176565b6119a09190613176565b6119aa9190613195565b60048190556040519081527f365a2bb07537fddd750e9ac8d56970e584f83a144bb5225e77491b83bccd118390602001610dd2565b6000546001600160a01b03163314611a095760405162461bcd60e51b8152600401610ad590613063565b601480546001600160a01b038581166001600160a01b0319928316811790935560158054868316908416811790915560168054928616929093168217909255604080519384526020840192909252908201527fb93b1ef445620c8661ebddddb575085ede7dfe08ccc6a91b933a6520249c3c7c9060600161105c565b6000546001600160a01b03163314611aaf5760405162461bcd60e51b8152600401610ad590613063565b600a611abc600982613167565b611acb906402540be400613176565b611ad59190613195565b8110611b155760405162461bcd60e51b815260206004820152600f60248201526e082dadeeadce840e8dede40d0d2ced608b1b6044820152606401610ad5565b6017805460ff60a81b1916600160a81b8415158102919091179182905560188390556040805184815260ff9290930491909116151560208301527f34c2d4c263b6f41223c6d30ae2e7bcb18629892587e0a4138f57ba2c523953d0910160405180910390a15050565b6000546001600160a01b03163314611ba85760405162461bcd60e51b8152600401610ad590613063565b6000546001600160a01b0390811690821603611c065760405162461bcd60e51b815260206004820152601a60248201527f4f574e45522063616e7420626520756e617574686f72697a65640000000000006044820152606401610ad5565b6001600160a01b038116600090815260026020526040808220805460ff19169055516000805160206132dc83398151915291610dd291849190613019565b6000546001600160a01b03163314611c6e5760405162461bcd60e51b8152600401610ad590613063565b6000546001600160a01b0390811690821603611cc05760405162461bcd60e51b815260206004820152601160248201527020b63932b0b23c903a34329037bbb732b960791b6044820152606401610ad5565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527fe235b3289f2e990914b334bf6827949c27f6ba58d3e5a1d6f8415037ca1ef22290602001610dd2565b6000546001600160a01b03163314611d385760405162461bcd60e51b8152600401610ad590613063565b600b859055600c849055600d839055600e829055600f819055818184611d5e87896131b7565b611d6891906131b7565b611d7291906131b7565b611d7c91906131b7565b601055611d876122e6565b5050505050565b6001600160a01b031660009081526002602052604090205460ff1690565b60008184841115611dd05760405162461bcd60e51b8152600401610ad59190612bfc565b506000611ddd84866131cf565b95945050505050565b6001600160a01b03831660009081526003602052604081205460ff16158015611e2857506001600160a01b03831660009081526003602052604090205460ff16155b611e6a5760405162461bcd60e51b8152602060048201526013602482015272426c61636b6c6973746564206164647265737360681b6044820152606401610ad5565b60195460ff1615611e8757611e80848484612212565b9050611124565b6001600160a01b03841660009081526002602052604090205460ff16158015611ec957506001600160a01b03831660009081526002602052604090205460ff16155b15611f1e57601754600160a01b900460ff16611f1e5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610ad5565b6001600160a01b03841660009081526002602052604090205460ff16158015611f6057506001600160a01b0384166000908152600a602052604090205460ff16155b8015611f8557506001600160a01b0383166000908152600a602052604090205460ff16155b8015611fc357507f00000000000000000000000067e76f89ffe34a6646886b10b8f8a998dacfd0466001600160a01b0316836001600160a01b031614155b1561203d576005546001600160a01b038416600090815260066020526040902054611fef9084906131b7565b111561203d5760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d6974207265616368656400000000000000006044820152606401610ad5565b6004548211158061206657506001600160a01b03841660009081526009602052604090205460ff165b8061208957506001600160a01b03831660009081526009602052604090205460ff165b6120cd5760405162461bcd60e51b815260206004820152601560248201527413585e08151608131a5b5a5d08115e18d959591959605a1b6044820152606401610ad5565b6120d5612385565b156120e2576120e26123f8565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260069091529190912054612134918490611dac565b6001600160a01b038516600090815260066020908152604080832093909355600890529081205460ff168061218157506001600160a01b03841660009081526008602052604090205460ff165b6121955761219085848661278c565b612197565b825b6001600160a01b0385166000908152600660205260409020549091506121bd90826129a5565b6001600160a01b0380861660008181526006602052604090819020939093559151908716906000805160206132bc833981519152906121ff9085815260200190565b60405180910390a3506001949350505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600690915291822054612263918490611dac565b6001600160a01b03808616600090815260066020526040808220939093559085168152205461229290836129a5565b6001600160a01b0380851660008181526006602052604090819020939093559151908616906000805160206132bc833981519152906122d49086815260200190565b60405180910390a35060019392505050565b7f375884ed7f92283ee74d8884b39a803f4aee832b15766fe016b74fc791fc2ada6123296064612323601154601054612a0490919063ffffffff16565b90612a86565b6123456064612323601254601054612a0490919063ffffffff16565b6123616064612323601354601054612a0490919063ffffffff16565b6040805160ff94851681529284166020840152921691810191909152606001610f77565b6000336001600160a01b037f00000000000000000000000067e76f89ffe34a6646886b10b8f8a998dacfd04616148015906123c3575060195460ff16155b80156123d85750601754600160a81b900460ff165b801561137757505060185430600090815260066020526040902054101590565b6019805460ff19166001179055600f54601054600091612417916131cf565b90506000612426826002613176565b600b546018546124369190613176565b6124409190613195565b905060008160185461245291906131cf565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061248c5761248c613003565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106124e0576124e0613003565b6001600160a01b03928316602091820292909201015260175460405163791ac94760e01b815291169063791ac9479061252690859060009086903090429060040161321c565b600060405180830381600087803b15801561254057600080fd5b505af1158015612554573d6000803e3d6000fd5b5050600b544792506125699150600290613195565b61257390866131cf565b94506000612582866002613176565b600b5461258f9084613176565b6125999190613195565b9050600086600c54846125ac9190613176565b6125b69190613195565b9050600087600d54856125c99190613176565b6125d39190613195565b9050600088600e54866125e69190613176565b6125f09190613195565b6014546040519192506001600160a01b03169084156108fc029085906000818181858888f1935050505015801561262b573d6000803e3d6000fd5b506015546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015612666573d6000803e3d6000fd5b506016546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156126a1573d6000803e3d6000fd5b5087156127775760175460405163f305d71960e01b81523060048201819052602482018b9052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990869060c40160606040518083038185885af1158015612715573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061273a919061328d565b505060408051868152602081018b90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506019805460ff1916905550505050505050565b600082158061279b5750601054155b156127a7575081611124565b6013546001600160a01b037f00000000000000000000000067e76f89ffe34a6646886b10b8f8a998dacfd0468116908416036127e65750601254612824565b7f00000000000000000000000067e76f89ffe34a6646886b10b8f8a998dacfd0466001600160a01b0316856001600160a01b03160361282457506011545b60006128556128366103e86064613176565b6123238461284f6010548a612a0490919063ffffffff16565b90612a04565b90506000612874601054612323600f5485612a0490919063ffffffff16565b905060006128828383612ac8565b905080156128ec57306000908152600660205260409020546128a490826129a5565b30600081815260066020526040908190209290925590516001600160a01b038a16906000805160206132bc833981519152906128e39085815260200190565b60405180910390a35b811561298f5761dead60005260066020527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e225461292990836129a5565b61dead600081905260066020527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22919091556040516001600160a01b038a16906000805160206132bc833981519152906129869086815260200190565b60405180910390a35b6129998784612ac8565b98975050505050505050565b6000806129b283856131b7565b9050838110156111245760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610ad5565b600082600003612a1657506000610e44565b6000612a228385613176565b905082612a2f8583613195565b146111245760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610ad5565b600061112483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b0a565b600061112483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611dac565b60008183612b2b5760405162461bcd60e51b8152600401610ad59190612bfc565b506000611ddd8486613195565b60008083601f840112612b4a57600080fd5b50813567ffffffffffffffff811115612b6257600080fd5b6020830191508360208260051b8501011115612b7d57600080fd5b9250929050565b8015158114612b9257600080fd5b50565b8035612ba081612b84565b919050565b600080600060408486031215612bba57600080fd5b833567ffffffffffffffff811115612bd157600080fd5b612bdd86828701612b38565b9094509250506020840135612bf181612b84565b809150509250925092565b600060208083528351808285015260005b81811015612c2957858101830151858201604001528201612c0d565b81811115612c3b576000604083870101525b50601f01601f1916929092016040019392505050565b600060208284031215612c6357600080fd5b5035919050565b6001600160a01b0381168114612b9257600080fd5b8035612ba081612c6a565b60008060408385031215612c9d57600080fd5b8235612ca881612c6a565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215612cdf57600080fd5b823567ffffffffffffffff80821115612cf757600080fd5b818501915085601f830112612d0b57600080fd5b8135602082821115612d1f57612d1f612cb6565b8160051b604051601f19603f83011681018181108682111715612d4457612d44612cb6565b604052928352818301935084810182019289841115612d6257600080fd5b948201945b83861015612d8757612d7886612c7f565b85529482019493820193612d67565b9650612d969050878201612b95565b9450505050509250929050565b600080600060608486031215612db857600080fd5b8335612dc381612c6a565b92506020840135612dd381612c6a565b929592945050506040919091013590565b60008060008060408587031215612dfa57600080fd5b843567ffffffffffffffff80821115612e1257600080fd5b612e1e88838901612b38565b90965094506020870135915080821115612e3757600080fd5b50612e4487828801612b38565b95989497509550505050565b600060208284031215612e6257600080fd5b813561112481612c6a565b60008060408385031215612e8057600080fd5b8235612e8b81612c6a565b91506020830135612e9b81612b84565b809150509250929050565b600080600060608486031215612ebb57600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215612ee757600080fd5b8335612ef281612c6a565b92506020840135612f0281612c6a565b91506040840135612bf181612c6a565b60008060408385031215612f2557600080fd5b8235612f3081612c6a565b91506020830135612e9b81612c6a565b60008060408385031215612f5357600080fd5b8235612ca881612b84565b600080600080600060a08688031215612f7657600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b60208082526025908201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604082015264657373657360d81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b039290921682521515602082015260400190565b634e487b7160e01b600052601160045260246000fd5b60006001820161305c5761305c613034565b5060010190565b60208082526006908201526510a7aba722a960d11b604082015260600190565b600181815b808511156130be5781600019048211156130a4576130a4613034565b808516156130b157918102915b93841c9390800290613088565b509250929050565b6000826130d557506001610e44565b816130e257506000610e44565b81600181146130f857600281146131025761311e565b6001915050610e44565b60ff84111561311357613113613034565b50506001821b610e44565b5060208310610133831016604e8410600b8410161715613141575081810a610e44565b61314b8383613083565b806000190482111561315f5761315f613034565b029392505050565b600061112460ff8416836130c6565b600081600019048311821515161561319057613190613034565b500290565b6000826131b257634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156131ca576131ca613034565b500190565b6000828210156131e1576131e1613034565b500390565b6000602082840312156131f857600080fd5b5051919050565b60006020828403121561321157600080fd5b815161112481612b84565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561326c5784516001600160a01b031683529383019391830191600101613247565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156132a257600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efb6a1709218b158ea8591fc9269b88652f1c908dc68a79faa865c745a770b9505a26469706673582212200f609dedba901830d5e11afc4d31ce2c9f490986653b291c1da93c00405e718a64736f6c634300080f0033

Deployed Bytecode Sourcemap

4897:15057:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15809:373;;;;;;;;;;-1:-1:-1;15809:373:0;;;;;:::i;:::-;;:::i;:::-;;15080:353;;;;;;;;;;-1:-1:-1;15080:353:0;;;;;:::i;:::-;;:::i;6600:49::-;;;;;;;;;;;;;;;;;;;1359:25:1;;;1347:2;1332:18;6600:49:0;;;;;;;;5148:39;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5148:39:0;;;;;;;;;;;;:::i;9194:310::-;;;;;;;;;;-1:-1:-1;9194:310:0;;;;;:::i;:::-;;:::i;7952:216::-;;;;;;;;;;-1:-1:-1;7952:216:0;;;;;:::i;:::-;;:::i;:::-;;;2942:14:1;;2935:22;2917:41;;2905:2;2890:18;7952:216:0;2777:187:1;8978:208:0;;;;;;;;;;-1:-1:-1;8978:208:0;;;;;:::i;:::-;;:::i;6160:45::-;;;;;;;;;;;;6201:4;6160:45;;5285:63;;;;;;;;;;;;;:::i;13354:132::-;;;;;;;;;;;;;:::i;12646:356::-;;;;;;;;;;-1:-1:-1;12646:356:0;;;;;:::i;:::-;;:::i;6063:90::-;;;;;;;;;;;;;;;;8470:370;;;;;;;;;;-1:-1:-1;8470:370:0;;;;;:::i;:::-;;:::i;18621:651::-;;;;;;;;;;-1:-1:-1;18621:651:0;;;;;:::i;:::-;;:::i;18476:137::-;;;;;;;;;;;;;:::i;2695:103::-;;;;;;;;;;-1:-1:-1;2695:103:0;;;;;:::i;:::-;2750:4;2785:5;-1:-1:-1;;;;;2774:16:0;;;2785:5;;2774:16;;2695:103;5242:34;;;;;;;;;;;;5275:1;5242:34;;;;;5960:4:1;5948:17;;;5930:36;;5918:2;5903:18;5242:34:0;5788:184:1;5711:44:0;;;;;;;;;;-1:-1:-1;5711:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6370:30;;;;;;;;;;-1:-1:-1;6370:30:0;;;;-1:-1:-1;;;;;6370:30:0;;;;;;-1:-1:-1;;;;;6141:32:1;;;6123:51;;6111:2;6096:18;6370:30:0;5977:203:1;8848:122:0;;;;;;;;;;-1:-1:-1;8848:122:0;;;;;:::i;:::-;;:::i;15441:360::-;;;;;;;;;;-1:-1:-1;15441:360:0;;;;;:::i;:::-;;:::i;8176:122::-;;;;;;;;;;-1:-1:-1;8176:122:0;;;;;:::i;:::-;;:::i;5917:32::-;;;;;;;;;;;;;;;;16762:225;;;;;;;;;;-1:-1:-1;16762:225:0;;;;;:::i;:::-;;:::i;6562:31::-;;;;;;;;;;-1:-1:-1;6562:31:0;;;;-1:-1:-1;;;6562:31:0;;;;;;6407:37;;;;;;;;;;-1:-1:-1;6407:37:0;;;;-1:-1:-1;;;;;6407:37:0;;;5589:45;;;;;;;;;;-1:-1:-1;5589:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;3127:161;;;;;;;;;;;;;:::i;13010:336::-;;;;;;;;;;-1:-1:-1;13010:336:0;;;;;:::i;:::-;;:::i;5526:54::-;;;;;;;;;;;;;;;;3296:480;;;;;;;;;;;;;:::i;5468:51::-;;;;;;;;;;;;;;;;7727:78;;;;;;;;;;-1:-1:-1;7779:7:0;7797:5;-1:-1:-1;;;;;7797:5:0;7727:78;;5762:48;;;;;;;;;;-1:-1:-1;5762:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5194:41;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5194:41:0;;;;;5878:32;;;;;;;;;;;;;;;;5990:33;;;;;;;;;;;;;;;;6484:29;;;;;;;;;;;;;;;8306:156;;;;;;;;;;-1:-1:-1;8306:156:0;;;;;:::i;:::-;;:::i;2337:138::-;;;;;;;;;;-1:-1:-1;2337:138:0;;;;;:::i;:::-;;:::i;9512:313::-;;;;;;;;;;-1:-1:-1;9512:313:0;;;;;:::i;:::-;;:::i;5817:52::-;;;;;;;;;;-1:-1:-1;5817:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17468:705;;;;;;;;;;-1:-1:-1;17468:705:0;;;;;:::i;:::-;;:::i;5956:27::-;;;;;;;;;;;;;;;;7811:133;;;;;;;;;;-1:-1:-1;7811:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;7913:19:0;;;7895:7;7913:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;7811:133;18181:287;;;;;;;;;;-1:-1:-1;18181:287:0;;;;;:::i;:::-;;:::i;6328:35::-;;;;;;;;;;-1:-1:-1;6328:35:0;;;;-1:-1:-1;;;;;6328:35:0;;;2483:204;;;;;;;;;;-1:-1:-1;2483:204:0;;;;;:::i;:::-;;:::i;2921:198::-;;;;;;;;;;-1:-1:-1;2921:198:0;;;;;:::i;:::-;;:::i;6453:24::-;;;;;;;;;;-1:-1:-1;6453:24:0;;;;-1:-1:-1;;;;;6453:24:0;;;16995:465;;;;;;;;;;-1:-1:-1;16995:465:0;;;;;:::i;:::-;;:::i;6030:26::-;;;;;;;;;;;;;;;;5357:45;;;;;;;;;;-1:-1:-1;5357:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;2806:107;;;;;;;;;;-1:-1:-1;2806:107:0;;;;;:::i;:::-;;:::i;6522:31::-;;;;;;;;;;-1:-1:-1;6522:31:0;;;;-1:-1:-1;;;6522:31:0;;;;;;15809:373;2278:24;2291:10;2278:12;:24::i;:::-;2270:48;;;;-1:-1:-1;;;2270:48:0;;;;;;;:::i;:::-;;;;;;;;;15944:3:::1;15925:22:::0;::::1;15917:71;;;;-1:-1:-1::0;;;15917:71:0::1;;;;;;;:::i;:::-;16004:9;15999:176;16017:20:::0;;::::1;15999:176;;;16095:6;16059:19;:33;16079:9;;16089:1;16079:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16059:33:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;16059:33:0;:42;;-1:-1:-1;;16059:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16121::::1;16142:9:::0;;16152:1;16142:12;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;16156:6;16121:42;;;;;;;:::i;:::-;;;;;;;;16039:3;::::0;::::1;:::i;:::-;;;15999:176;;;;15809:373:::0;;;:::o;15080:353::-;2278:24;2291:10;2278:12;:24::i;:::-;2270:48;;;;-1:-1:-1;;;2270:48:0;;;;;;;:::i;:::-;15207:3:::1;15188:22:::0;::::1;15180:71;;;;-1:-1:-1::0;;;15180:71:0::1;;;;;;;:::i;:::-;15267:9;15262:164;15280:20:::0;;::::1;15262:164;;;15350:6;15322:11;:25;15334:9;;15344:1;15334:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15322:25:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;15322:25:0;:34;;-1:-1:-1;;15322:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15376:38:::1;15393:9:::0;;15403:1;15393:12;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;15407:6;15376:38;;;;;;;:::i;:::-;;;;;;;;15302:3;::::0;::::1;:::i;:::-;;;15262:164;;9194:310:::0;2750:4;2785:5;-1:-1:-1;;;;;2785:5:0;2196:10;2774:16;2180:38;;;;-1:-1:-1;;;2180:38:0;;;;;;;:::i;:::-;9330:1:::1;9303:23;:28;;9295:76;;;::::0;-1:-1:-1;;;9295:76:0;;11054:2:1;9295:76:0::1;::::0;::::1;11036:21:1::0;11093:2;11073:18;;;11066:30;11132:34;11112:18;;;11105:62;-1:-1:-1;;;11183:18:1;;;11176:34;11227:19;;9295:76:0::1;10852:400:1::0;9295:76:0::1;9443:4;9415:23:::0;5336:12:::1;5275:1;5336:2;:12;:::i;:::-;5323:25;::::0;:10:::1;:25;:::i;:::-;9401:37;;;;:::i;:::-;9400:47;;;;:::i;:::-;9382:15;:65:::0;;;9463:33:::1;::::0;1359:25:1;;;9463:33:0::1;::::0;1347:2:1;1332:18;9463:33:0::1;;;;;;;;9194:310:::0;:::o;7952:216::-;8056:10;8027:4;8044:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;8044:32:0;;;;;;;;;;:41;;;8101:37;8027:4;;8044:32;;8101:37;;;;8079:6;1359:25:1;;1347:2;1332:18;;1213:177;8101:37:0;;;;;;;;-1:-1:-1;8156:4:0;7952:216;;;;;:::o;8978:208::-;2750:4;2785:5;-1:-1:-1;;;;;2785:5:0;2196:10;2774:16;2180:38;;;;-1:-1:-1;;;2180:38:0;;;;;;;:::i;:::-;9077:9:::1;9073:106;9095:8;:15;9091:1;:19;9073:106;;;9160:5;9131:13;:26;9145:8;9154:1;9145:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;9131:26:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;9131:26:0;:34;;-1:-1:-1;;9131:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;9112:3;::::1;::::0;::::1;:::i;:::-;;;;9073:106;;;;8978:208:::0;;:::o;5285:63::-;5336:12;5275:1;5336:2;:12;:::i;:::-;5323:25;;:10;:25;:::i;:::-;5285:63;:::o;13354:132::-;2750:4;2785:5;-1:-1:-1;;;;;2785:5:0;2196:10;2774:16;2180:38;;;;-1:-1:-1;;;2180:38:0;;;;;;;:::i;:::-;13411:11:::1;:18:::0;;-1:-1:-1;;;;13411:18:0::1;-1:-1:-1::0;;;13411:18:0;;::::1;::::0;;;;13445:33:::1;::::0;::::1;::::0;::::1;::::0;13466:11;::::1;13411:18;13466:11;2942:14:1::0;2935:22;2917:41;;2905:2;2890:18;;2777:187;13445:33:0::1;;;;;;;;13354:132::o:0;12646:356::-;2750:4;2785:5;-1:-1:-1;;;;;2785:5:0;2196:10;2774:16;2180:38;;;;-1:-1:-1;;;2180:38:0;;;;;;;:::i;:::-;12756:3:::1;12737:16;:22;12729:43;;;::::0;-1:-1:-1;;;12729:43:0;;13237:2:1;12729:43:0::1;::::0;::::1;13219:21:1::0;13276:1;13256:18;;;13249:29;-1:-1:-1;;;13294:18:1;;;13287:38;13342:18;;12729:43:0::1;13035:331:1::0;12729:43:0::1;12803:21;12783:17;12894:3;12861:28;12873:16:::0;12803:21;12861:28:::1;:::i;:::-;12859:38;;;;:::i;:::-;12908:43;::::0;12835:62;;-1:-1:-1;12916:10:0::1;::::0;12908:43;::::1;;;::::0;12835:62;;12908:43:::1;::::0;;;12835:62;12916:10;12908:43;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;12967:27:0::1;::::0;1359:25:1;;;12967:27:0::1;::::0;1347:2:1;1332:18;12967:27:0::1;;;;;;;;12718:284;;12646:356:::0;:::o;8470:370::-;-1:-1:-1;;;;;8590:19:0;;8570:4;8590:19;;;:11;:19;;;;;;;;8610:10;8590:31;;;;;;;;-1:-1:-1;;8590:52:0;8587:186;;8692:69;;;;;;;;;;;-1:-1:-1;;;8692:69:0;;;;;;;;-1:-1:-1;;;;;8692:19:0;;-1:-1:-1;8692:19:0;;;:11;:19;;;;;8712:10;8692:31;;;;;;;;;;:69;;8728:6;;8692:35;:69::i;:::-;-1:-1:-1;;;;;8658:19:0;;;;;;:11;:19;;;;;;;;8678:10;8658:31;;;;;;;:103;8587:186;8792:40;8806:6;8814:9;8825:6;8792:13;:40::i;:::-;8785:47;;8470:370;;;;;;:::o;18621:651::-;2750:4;2785:5;-1:-1:-1;;;;;2785:5:0;2196:10;2774:16;2180:38;;;;-1:-1:-1;;;2180:38:0;;;;;;;:::i;:::-;18743:10:::1;18793:3;18774:22:::0;::::1;18766:71;;;;-1:-1:-1::0;;;18766:71:0::1;;;;;;;:::i;:::-;18856:33:::0;;::::1;18848:85;;;::::0;-1:-1:-1;;;18848:85:0;;13573:2:1;18848:85:0::1;::::0;::::1;13555:21:1::0;13612:2;13592:18;;;13585:30;13651:34;13631:18;;;13624:62;-1:-1:-1;;;13702:18:1;;;13695:38;13750:19;;18848:85:0::1;13371:404:1::0;18848:85:0::1;18946:12;18979:6:::0;18975:90:::1;18989:20:::0;;::::1;18975:90;;;19044:6;;19051:1;19044:9;;;;;;;:::i;:::-;;;;;;;19037:4;:16;;;;:::i;:::-;19030:23:::0;-1:-1:-1;19011:3:0;::::1;::::0;::::1;:::i;:::-;;;;18975:90;;;-1:-1:-1::0;;;;;;19085:15:0;::::1;;::::0;;;:9:::1;:15;::::0;;;;;:23;-1:-1:-1;19085:23:0::1;19077:63;;;::::0;-1:-1:-1;;;19077:63:0;;14115:2:1;19077:63:0::1;::::0;::::1;14097:21:1::0;14154:2;14134:18;;;14127:30;14193:29;14173:18;;;14166:57;14240:18;;19077:63:0::1;13913:351:1::0;19077:63:0::1;19157:6;19153:110;19167:20:::0;;::::1;19153:110;;;19208:43;19223:4;19228:9;;19238:1;19228:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;19241:6;;19248:1;19241:9;;;;;;;:::i;:::-;;;;;;;19208:14;:43::i;:::-;-1:-1:-1::0;19189:3:0;::::1;::::0;::::1;:::i;:::-;;;;19153:110;;;;18717:555;;18621:651:::0;;;;:::o;18476:137::-;18589:9;:15;;;;5024:42;18529:7;18571:15;;;;;18529:7;;18589:15;5336:12;5275:1;5336:2;:12;:::i;:::-;5323:25;;:10;:25;:::i;:::-;18557:29;;;;:::i;:::-;:47;;;;:::i;:::-;18549:56;;18476:137;:::o;8848:122::-;2750:4;2785:5;-1:-1:-1;;;;;2785:5:0;2196:10;2774:16;2180:38;;;;-1:-1:-1;;;2180:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8932:22:0;;;::::1;;::::0;;;:13:::1;:22;::::0;;;;:30;;-1:-1:-1;;8932:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8848:122::o;15441:360::-;2278:24;2291:10;2278:12;:24::i;:::-;2270:48;;;;-1:-1:-1;;;2270:48:0;;;;;;;:::i;:::-;15572:3:::1;15553:22:::0;::::1;15545:71;;;;-1:-1:-1::0;;;15545:71:0::1;;;;;;;:::i;:::-;15632:9;15627:167;15645:20:::0;;::::1;15627:167;;;15719:6;15687:15;:29;15703:9;;15713:1;15703:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15687:29:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;15687:29:0;:38;;-1:-1:-1;;15687:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15745:37:::1;15761:9:::0;;15771:1;15761:12;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;15775:6;15745:37;;;;;;;:::i;:::-;;;;;;;;15667:3;::::0;::::1;:::i;:::-;;;15627:167;;8176:122:::0;8231:4;8255:35;8263:7;-1:-1:-1;;8255:7:0;:35::i;16762:225::-;2278:24;2291:10;2278:12;:24::i;:::-;2270:48;;;;-1:-1:-1;;;2270:48:0;;;;;;;:::i;:::-;16862:14:::1;:22:::0;;;16895:13:::1;:20:::0;;;16926:18:::1;:27:::0;;;16966:13:::1;:11;:13::i;3127:161::-:0;2750:4;2785:5;-1:-1:-1;;;;;2785:5:0;2196:10;2774:16;2180:38;;;;-1:-1:-1;;;2180:38:0;;;;;;;:::i;:::-;3221:14:::1;:20:::0;;-1:-1:-1;;;;;;3221:20:0::1;::::0;;3257:23:::1;::::0;-1:-1:-1;6123:51:1;;;-1:-1:-1;3257:23:0::1;::::0;6111:2:1;6096:18;3257:23:0::1;5977:203:1::0;13010:336:0;13101:12;2785:5;;-1:-1:-1;;;;;2785:5:0;2196:10;2774:16;2180:38;;;;-1:-1:-1;;;2180:38:0;;;;;;;:::i;:::-;13129:6:::1;13139:1;13129:11:::0;13126:95:::1;;13165:44;::::0;-1:-1:-1;;;13165:44:0;;13203:4:::1;13165:44;::::0;::::1;6123:51:1::0;-1:-1:-1;;;;;13165:29:0;::::1;::::0;::::1;::::0;6096:18:1;;13165:44:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13156:53;;13126:95;13238:32;::::0;;-1:-1:-1;;;;;14780:32:1;;14762:51;;14844:2;14829:18;;14822:34;;;13238:32:0::1;::::0;14735:18:1;13238:32:0::1;;;;;;;13290:48;::::0;-1:-1:-1;;;13290:48:0;;13319:10:::1;13290:48;::::0;::::1;14762:51:1::0;14829:18;;;14822:34;;;-1:-1:-1;;;;;13290:28:0;::::1;::::0;::::1;::::0;14735:18:1;;13290:48:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3296:480::-:0;3365:14;;-1:-1:-1;;;;;3365:14:0;3351:10;:28;3343:113;;;;-1:-1:-1;;;3343:113:0;;15319:2:1;3343:113:0;;;15301:21:1;15358:2;15338:18;;;15331:30;15397:34;15377:18;;;15370:62;15468:34;15448:18;;;15441:62;-1:-1:-1;;;15519:19:1;;;15512:39;15568:19;;3343:113:0;15117:476:1;3343:113:0;3491:5;3482;;-1:-1:-1;;;;;3482:5:0;;;3467:21;;:14;:21;;;;;;:29;;-1:-1:-1;;3467:29:0;;;;;;3482:5;3522:14;;;;3507:30;;;;;:37;;;;;;;;3579:5;;3562:29;;-1:-1:-1;;;;;;;;;;;3562:29:0;;;3579:5;;;;;3491;3562:29;:::i;:::-;;;;;;;;3624:14;;;3607:37;;-1:-1:-1;;;;;;;;;;;3607:37:0;;;-1:-1:-1;;;;;3624:14:0;;3607:37;:::i;:::-;;;;;;;;3673:14;;;;3665:22;;-1:-1:-1;;;;;3673:14:0;;-1:-1:-1;;;;;;3665:22:0;;;;;;;;3698:27;;;;;;3741;;6123:51:1;;;3741:27:0;;6111:2:1;6096:18;3741:27:0;5977:203:1;8306:156:0;8386:4;8410:44;8424:10;8436:9;8447:6;8410:13;:44::i;2337:138::-;2750:4;2785:5;-1:-1:-1;;;;;2785:5:0;2196:10;2774:16;2180:38;;;;-1:-1:-1;;;2180:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2399:19:0;::::1;;::::0;;;:14:::1;:19;::::0;;;;;;:26;;-1:-1:-1;;2399:26:0::1;2421:4;2399:26:::0;;::::1;::::0;;;2441;;-1:-1:-1;;;;;;;;;;;2441:26:0;::::1;::::0;2414:3;;2421:4;2441:26:::1;:::i;9512:313::-:0;2750:4;2785:5;-1:-1:-1;;;;;2785:5:0;2196:10;2774:16;2180:38;;;;-1:-1:-1;;;2180:38:0;;;;;;;:::i;:::-;9646:1:::1;9618:24;:29;;9610:82;;;::::0;-1:-1:-1;;;9610:82:0;;15800:2:1;9610:82:0::1;::::0;::::1;15782:21:1::0;15839:2;15819:18;;;15812:30;15878:34;15858:18;;;15851:62;-1:-1:-1;;;15929:18:1;;;15922:39;15978:19;;9610:82:0::1;15598:405:1::0;9610:82:0::1;9762:4;9733:24:::0;5336:12:::1;5275:1;5336:2;:12;:::i;:::-;5323:25;::::0;:10:::1;:25;:::i;:::-;9719:38;;;;:::i;:::-;9718:48;;;;:::i;:::-;9703:12;:63:::0;;;9782:35:::1;::::0;1359:25:1;;;9782:35:0::1;::::0;1347:2:1;1332:18;9782:35:0::1;1213:177:1::0;17468:705:0;2750:4;2785:5;-1:-1:-1;;;;;2785:5:0;2196:10;2774:16;2180:38;;;;-1:-1:-1;;;2180:38:0;;;;;;;:::i;:::-;17925:20:::1;:44:::0;;-1:-1:-1;;;;;17925:44:0;;::::1;-1:-1:-1::0;;;;;;17925:44:0;;::::1;::::0;::::1;::::0;;;17980:15:::1;:34:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;18025:22:::1;:48:::0;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;18091:74:::1;::::0;;16248:34:1;;;16313:2;16298:18;;16291:43;;;;16350:18;;;16343:43;18091:74:0::1;::::0;16198:2:1;16183:18;18091:74:0::1;16008:384:1::0;18181:287:0;2750:4;2785:5;-1:-1:-1;;;;;2785:5:0;2196:10;2774:16;2180:38;;;;-1:-1:-1;;;2180:38:0;;;;;;;:::i;:::-;18303:2:::1;5336:12;5275:1;18303:2:::0;5336:12:::1;:::i;:::-;5323:25;::::0;:10:::1;:25;:::i;:::-;18291:14;;;;:::i;:::-;18280:7;:26;18272:54;;;::::0;-1:-1:-1;;;18272:54:0;;16599:2:1;18272:54:0::1;::::0;::::1;16581:21:1::0;16638:2;16618:18;;;16611:30;-1:-1:-1;;;16657:18:1;;;16650:45;16712:18;;18272:54:0::1;16397:339:1::0;18272:54:0::1;18339:11;:22:::0;;-1:-1:-1;;;;18339:22:0::1;-1:-1:-1::0;;;18339:22:0;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;18372:13:::1;:23:::0;;;18413:47:::1;::::0;;16909:25:1;;;18339:22:0::1;18448:11:::0;;;::::1;::::0;;;::::1;16977:14:1::0;16970:22;16965:2;16950:18;;16943:50;18413:47:0::1;::::0;16882:18:1;18413:47:0::1;;;;;;;18181:287:::0;;:::o;2483:204::-;2750:4;2785:5;-1:-1:-1;;;;;2785:5:0;2196:10;2774:16;2180:38;;;;-1:-1:-1;;;2180:38:0;;;;;;;:::i;:::-;2562:5:::1;::::0;-1:-1:-1;;;;;2562:5:0;;::::1;2555:12:::0;;::::1;::::0;2547:51:::1;;;::::0;-1:-1:-1;;;2547:51:0;;17206:2:1;2547:51:0::1;::::0;::::1;17188:21:1::0;17245:2;17225:18;;;17218:30;17284:28;17264:18;;;17257:56;17330:18;;2547:51:0::1;17004:350:1::0;2547:51:0::1;-1:-1:-1::0;;;;;2609:19:0;::::1;2631:5;2609:19:::0;;;:14:::1;:19;::::0;;;;;:27;;-1:-1:-1;;2609:27:0::1;::::0;;2652;-1:-1:-1;;;;;;;;;;;2652:27:0;::::1;::::0;2624:3;;2631:5;2652:27:::1;:::i;2921:198::-:0;2750:4;2785:5;-1:-1:-1;;;;;2785:5:0;2196:10;2774:16;2180:38;;;;-1:-1:-1;;;2180:38:0;;;;;;;:::i;:::-;3014:5:::1;::::0;-1:-1:-1;;;;;3014:5:0;;::::1;3007:12:::0;;::::1;::::0;2999:42:::1;;;::::0;-1:-1:-1;;;2999:42:0;;17561:2:1;2999:42:0::1;::::0;::::1;17543:21:1::0;17600:2;17580:18;;;17573:30;-1:-1:-1;;;17619:18:1;;;17612:47;17676:18;;2999:42:0::1;17359:341:1::0;2999:42:0::1;3052:14;:20:::0;;-1:-1:-1;;;;;;3052:20:0::1;-1:-1:-1::0;;;;;3052:20:0;::::1;::::0;;::::1;::::0;;;3088:23:::1;::::0;6123:51:1;;;3088:23:0::1;::::0;6111:2:1;6096:18;3088:23:0::1;5977:203:1::0;16995:465:0;2750:4;2785:5;-1:-1:-1;;;;;2785:5:0;2196:10;2774:16;2180:38;;;;-1:-1:-1;;;2180:38:0;;;;;;;:::i;:::-;17159:12:::1;:28:::0;;;17198:12:::1;:28:::0;;;17237:7:::1;:18:::0;;;17266:14:::1;:32:::0;;;17309:7:::1;:18:::0;;;17283:15;17319:8;17247;17349:29:::1;17213:13:::0;17174;17349:29:::1;:::i;:::-;:40;;;;:::i;:::-;:51;;;;:::i;:::-;:69;;;;:::i;:::-;17338:8;:80:::0;17439:13:::1;:11;:13::i;:::-;16995:465:::0;;;;;:::o;2806:107::-;-1:-1:-1;;;;;2886:19:0;2862:4;2886:19;;;:14;:19;;;;;;;;;2806:107::o;422:192::-;508:7;544:12;536:6;;;;528:29;;;;-1:-1:-1;;;528:29:0;;;;;;;;:::i;:::-;-1:-1:-1;568:9:0;580:5;584:1;580;:5;:::i;:::-;568:17;422:192;-1:-1:-1;;;;;422:192:0:o;9833:1211::-;-1:-1:-1;;;;;9951:21:0;;9925:4;9951:21;;;:13;:21;;;;;;;;9950:22;:51;;;;-1:-1:-1;;;;;;9977:24:0;;;;;;:13;:24;;;;;;;;9976:25;9950:51;9942:83;;;;-1:-1:-1;;;9942:83:0;;18123:2:1;9942:83:0;;;18105:21:1;18162:2;18142:18;;;18135:30;-1:-1:-1;;;18181:18:1;;;18174:49;18240:18;;9942:83:0;17921:343:1;9942:83:0;10041:6;;;;10038:63;;;10057:41;10072:6;10080:9;10091:6;10057:14;:41::i;:::-;10050:48;;;;10038:63;-1:-1:-1;;;;;10117:22:0;;;;;;:14;:22;;;;;;;;10116:23;:53;;;;-1:-1:-1;;;;;;10144:25:0;;;;;;:14;:25;;;;;;;;10143:26;10116:53;10113:127;;;10193:11;;-1:-1:-1;;;10193:11:0;;;;10185:43;;;;-1:-1:-1;;;10185:43:0;;18471:2:1;10185:43:0;;;18453:21:1;18510:2;18490:18;;;18483:30;-1:-1:-1;;;18529:18:1;;;18522:50;18589:18;;10185:43:0;18269:344:1;10185:43:0;-1:-1:-1;;;;;10257:22:0;;;;;;:14;:22;;;;;;;;10256:23;:55;;;;-1:-1:-1;;;;;;10284:27:0;;;;;;:19;:27;;;;;;;;10283:28;10256:55;:90;;;;-1:-1:-1;;;;;;10316:30:0;;;;;;:19;:30;;;;;;;;10315:31;10256:90;:111;;;;;10363:4;-1:-1:-1;;;;;10350:17:0;:9;-1:-1:-1;;;;;10350:17:0;;;10256:111;10252:230;;;10427:15;;-1:-1:-1;;;;;10393:20:0;;;;;;:9;:20;;;;;;:29;;10416:6;;10393:29;:::i;:::-;10392:50;;10384:86;;;;-1:-1:-1;;;10384:86:0;;18820:2:1;10384:86:0;;;18802:21:1;18859:2;18839:18;;;18832:30;18898:26;18878:18;;;18871:54;18942:18;;10384:86:0;18618:348:1;10384:86:0;10517:12;;10507:6;:22;;10506:51;;;-1:-1:-1;;;;;;10534:23:0;;;;;;:15;:23;;;;;;;;10506:51;:81;;;-1:-1:-1;;;;;;10561:26:0;;;;;;:15;:26;;;;;;;;10506:81;10498:115;;;;-1:-1:-1;;;10498:115:0;;19173:2:1;10498:115:0;;;19155:21:1;19212:2;19192:18;;;19185:30;-1:-1:-1;;;19231:18:1;;;19224:51;19292:18;;10498:115:0;18971:345:1;10498:115:0;10629:16;:14;:16::i;:::-;10626:35;;;10648:10;:8;:10::i;:::-;10693:53;;;;;;;;;;;-1:-1:-1;;;10693:53:0;;;;;;;;-1:-1:-1;;;;;10693:17:0;;-1:-1:-1;10693:17:0;;;:9;:17;;;;;;;;:53;;10715:6;;10693:21;:53::i;:::-;-1:-1:-1;;;;;10673:17:0;;;;;;:9;:17;;;;;;;;:73;;;;10785:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;10808:22:0;;;;;;:11;:22;;;;;;;;10785:45;10784:93;;10843:34;10851:6;10859;10867:9;10843:7;:34::i;:::-;10784:93;;;10834:6;10784:93;-1:-1:-1;;;;;10913:20:0;;;;;;:9;:20;;;;;;10759:118;;-1:-1:-1;10913:40:0;;10759:118;10913:24;:40::i;:::-;-1:-1:-1;;;;;10890:20:0;;;;;;;:9;:20;;;;;;;:63;;;;10971:43;;;;;;-1:-1:-1;;;;;;;;;;;10971:43:0;;;10999:14;1359:25:1;;1347:2;1332:18;;1213:177;10971:43:0;;;;;;;;-1:-1:-1;11032:4:0;;9833:1211;-1:-1:-1;;;;9833:1211:0:o;11056:330::-;11186:53;;;;;;;;;;;-1:-1:-1;;;11186:53:0;;;;;;;;-1:-1:-1;;;;;11186:17:0;;11149:4;11186:17;;;:9;:17;;;;;;;:53;;11208:6;;11186:21;:53::i;:::-;-1:-1:-1;;;;;11166:17:0;;;;;;;:9;:17;;;;;;:73;;;;11273:20;;;;;;;:32;;11298:6;11273:24;:32::i;:::-;-1:-1:-1;;;;;11250:20:0;;;;;;;:9;:20;;;;;;;:55;;;;11321:35;;;;;;-1:-1:-1;;;;;;;;;;;11321:35:0;;;11349:6;1359:25:1;;1347:2;1332:18;;1213:177;11321:35:0;;;;;;;;-1:-1:-1;11374:4:0;11056:330;;;;;:::o;16190:564::-;16555:191;16572:36;16604:3;16572:27;16585:13;;16572:8;;:12;;:27;;;;:::i;:::-;:31;;:36::i;:::-;16630:37;16663:3;16630:28;16643:14;;16630:8;;:12;;:28;;;;:::i;:37::-;16689:41;16726:3;16689:32;16702:18;;16689:8;;:12;;:32;;;;:::i;:41::-;16555:191;;;19541:4:1;19529:17;;;19511:36;;19583:17;;;19578:2;19563:18;;19556:45;19637:17;;19617:18;;;19610:45;;;;19499:2;19484:18;16555:191:0;19321:340:1;12441:197:0;12490:4;12514:10;-1:-1:-1;;;;;12528:4:0;12514:18;;;;;:38;;-1:-1:-1;12546:6:0;;;;12545:7;12514:38;:62;;;;-1:-1:-1;12565:11:0;;-1:-1:-1;;;12565:11:0;;;;12514:62;:116;;;;-1:-1:-1;;12617:13:0;;12607:4;12589:24;;;;:9;:24;;;;;;:41;;;12441:197::o;13494:1578::-;6696:6;:13;;-1:-1:-1;;6696:13:0;6705:4;6696:13;;;13578:7:::1;::::0;13567:8:::1;::::0;6696:6;;13567:18:::1;::::0;::::1;:::i;:::-;13545:40:::0;-1:-1:-1;13598:23:0::1;13656:15;13545:40:::0;13670:1:::1;13656:15;:::i;:::-;13641:12;;13625:13;;:28;;;;:::i;:::-;13624:48;;;;:::i;:::-;13598:74;;13683:20;13722:15;13706:13;;:31;;;;:::i;:::-;13774:16;::::0;;13788:1:::1;13774:16:::0;;;;;::::1;::::0;;13683:54;;-1:-1:-1;13750:21:0::1;::::0;13774:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;13774:16:0::1;13750:40;;13819:4;13801;13806:1;13801:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;13801:23:0::1;;;-1:-1:-1::0;;;;;13801:23:0::1;;;::::0;::::1;13845:4;13835;13840:1;13835:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13835:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;13862:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;13862:188:0;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;13934:12;;13862:6:::1;::::0;13977:4;;14004::::1;::::0;14024:15:::1;::::0;13862:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;14146:12:0::1;::::0;14083:21:::1;::::0;-1:-1:-1;14146:16:0::1;::::0;-1:-1:-1;14161:1:0::1;::::0;14146:16:::1;:::i;:::-;14131:32;::::0;:11;:32:::1;:::i;:::-;14117:46:::0;-1:-1:-1;14184:26:0::1;14243:15;14117:46:::0;14257:1:::1;14243:15;:::i;:::-;14226:12;::::0;14214:24:::1;::::0;:9;:24:::1;:::i;:::-;14213:46;;;;:::i;:::-;14184:75;;14270:26;14328:11;14312:12;;14300:9;:24;;;;:::i;:::-;14299:40;;;;:::i;:::-;14270:69;;14350:21;14398:11;14387:7;;14375:9;:19;;;;:::i;:::-;14374:35;;;;:::i;:::-;14350:59;;14420:28;14482:11;14464:14;;14452:9;:26;;;;:::i;:::-;14451:42;;;;:::i;:::-;14514:20;::::0;14506:58:::1;::::0;14420:73;;-1:-1:-1;;;;;;14514:20:0::1;::::0;14506:58;::::1;;;::::0;14545:18;;14514:20:::1;14506:58:::0;14514:20;14506:58;14545:18;14514:20;14506:58;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;14583:15:0::1;::::0;14575:48:::1;::::0;-1:-1:-1;;;;;14583:15:0;;::::1;::::0;14575:48;::::1;;;::::0;14609:13;;14583:15:::1;14575:48:::0;14583:15;14575:48;14609:13;14583:15;14575:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;14642:22:0::1;::::0;14634:62:::1;::::0;-1:-1:-1;;;;;14642:22:0;;::::1;::::0;14634:62;::::1;;;::::0;14675:20;;14642:22:::1;14634:62:::0;14642:22;14634:62;14675:20;14642:22;14634:62;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;14714:19:0;;14711:354:::1;;14749:6;::::0;:236:::1;::::0;-1:-1:-1;;;14749:236:0;;14825:4:::1;14749:236;::::0;::::1;20992:34:1::0;;;21042:18;;;21035:34;;;14749:6:0::1;21085:18:1::0;;;21078:34;;;21128:18;;;21121:34;21171:19;;;21164:44;14955:15:0::1;21224:19:1::0;;;21217:35;-1:-1:-1;;;;;14749:6:0;;::::1;::::0;:22:::1;::::0;14779:18;;20926:19:1;;14749:236:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;15005:48:0::1;::::0;;21748:25:1;;;21804:2;21789:18;;21782:34;;;15005:48:0::1;::::0;-1:-1:-1;21721:18:1;15005:48:0::1;;;;;;;14711:354;-1:-1:-1::0;;6714:6:0;:14;;-1:-1:-1;;6714:14:0;;;-1:-1:-1;;;;;;;13494:1578:0:o;11394:1039::-;11480:7;11503:11;;;:28;;-1:-1:-1;11518:8:0;;:13;11503:28;11500:72;;;-1:-1:-1;11554:6:0;11547:13;;11500:72;11605:18;;-1:-1:-1;;;;;11652:4:0;11639:17;;;;;;11636:154;;-1:-1:-1;11686:14:0;;11636:154;;;11731:4;-1:-1:-1;;;;;11721:14:0;:6;-1:-1:-1;;;;;11721:14:0;;11718:72;;-1:-1:-1;11765:13:0;;11718:72;11802:17;11822:62;11863:20;6201:4;11880:3;11863:20;:::i;:::-;11822:36;11847:10;11822:20;11833:8;;11822:6;:10;;:20;;;;:::i;:::-;:24;;:36::i;:62::-;11802:82;;11895:18;11916:36;11943:8;;11916:22;11930:7;;11916:9;:13;;:22;;;;:::i;:36::-;11895:57;-1:-1:-1;11963:22:0;11988:25;:9;11895:57;11988:13;:25::i;:::-;11963:50;-1:-1:-1;12029:18:0;;12026:187;;12108:4;12090:24;;;;:9;:24;;;;;;:44;;12119:14;12090:28;:44::i;:::-;12081:4;12063:24;;;;:9;:24;;;;;;;:71;;;;12154:47;;-1:-1:-1;;;;;12154:47:0;;;-1:-1:-1;;;;;;;;;;;12154:47:0;;;12186:14;1359:25:1;;1347:2;1332:18;;1213:177;12154:47:0;;;;;;;;12026:187;12236:14;;12233:152;;5024:42;12284:15;;:9;:15;;;;:31;;12304:10;12284:19;:31::i;:::-;5024:42;12266:15;;;;:9;:15;;;:49;;;;:15;12335:34;-1:-1:-1;;;;;12335:34:0;;;-1:-1:-1;;;;;;;;;;;12335:34:0;;;12358:10;1359:25:1;;1347:2;1332:18;;1213:177;12335:34:0;;;;;;;;12233:152;12404:21;:6;12415:9;12404:10;:21::i;:::-;12397:28;11394:1039;-1:-1:-1;;;;;;;;11394:1039:0:o;93:181::-;151:7;;183:5;187:1;183;:5;:::i;:::-;171:17;;212:1;207;:6;;199:46;;;;-1:-1:-1;;;199:46:0;;22029:2:1;199:46:0;;;22011:21:1;22068:2;22048:18;;;22041:30;22107:29;22087:18;;;22080:57;22154:18;;199:46:0;21827:351:1;620:250:0;678:7;702:1;707;702:6;698:47;;-1:-1:-1;732:1:0;725:8;;698:47;757:9;769:5;773:1;769;:5;:::i;:::-;757:17;-1:-1:-1;802:1:0;793:5;797:1;757:17;793:5;:::i;:::-;:10;785:56;;;;-1:-1:-1;;;785:56:0;;22385:2:1;785:56:0;;;22367:21:1;22424:2;22404:18;;;22397:30;22463:34;22443:18;;;22436:62;-1:-1:-1;;;22514:18:1;;;22507:31;22555:19;;785:56:0;22183:397:1;876:132:0;934:7;961:39;965:1;968;961:39;;;;;;;;;;;;;;;;;:3;:39::i;280:136::-;338:7;365:43;369:1;372;365:43;;;;;;;;;;;;;;;;;:3;:43::i;1014:189::-;1100:7;1135:12;1128:5;1120:28;;;;-1:-1:-1;;;1120:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1159:9:0;1171:5;1175:1;1171;: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:128::-;574:20;;603:28;574:20;603:28;:::i;:::-;509:128;;;:::o;642:566::-;734:6;742;750;803:2;791:9;782:7;778:23;774:32;771:52;;;819:1;816;809:12;771:52;859:9;846:23;892:18;884:6;881:30;878:50;;;924:1;921;914:12;878:50;963:70;1025:7;1016:6;1005:9;1001:22;963:70;:::i;:::-;1052:8;;-1:-1:-1;937:96:1;-1:-1:-1;;1137:2:1;1122:18;;1109:32;1150:28;1109:32;1150:28;:::i;:::-;1197:5;1187:15;;;642:566;;;;;:::o;1395:597::-;1507:4;1536:2;1565;1554:9;1547:21;1597:6;1591:13;1640:6;1635:2;1624:9;1620:18;1613:34;1665:1;1675:140;1689:6;1686:1;1683:13;1675:140;;;1784:14;;;1780:23;;1774:30;1750:17;;;1769:2;1746:26;1739:66;1704:10;;1675:140;;;1833:6;1830:1;1827:13;1824:91;;;1903:1;1898:2;1889:6;1878:9;1874:22;1870:31;1863:42;1824:91;-1:-1:-1;1976:2:1;1955:15;-1:-1:-1;;1951:29:1;1936:45;;;;1983:2;1932:54;;1395:597;-1:-1:-1;;;1395:597:1:o;1997:180::-;2056:6;2109:2;2097:9;2088:7;2084:23;2080:32;2077:52;;;2125:1;2122;2115:12;2077:52;-1:-1:-1;2148:23:1;;1997:180;-1:-1:-1;1997:180:1:o;2182:131::-;-1:-1:-1;;;;;2257:31:1;;2247:42;;2237:70;;2303:1;2300;2293:12;2318:134;2386:20;;2415:31;2386:20;2415:31;:::i;2457:315::-;2525:6;2533;2586:2;2574:9;2565:7;2561:23;2557:32;2554:52;;;2602:1;2599;2592:12;2554:52;2641:9;2628:23;2660:31;2685:5;2660:31;:::i;:::-;2710:5;2762:2;2747:18;;;;2734:32;;-1:-1:-1;;;2457:315:1:o;2969:127::-;3030:10;3025:3;3021:20;3018:1;3011:31;3061:4;3058:1;3051:15;3085:4;3082:1;3075:15;3101:1191;3191:6;3199;3252:2;3240:9;3231:7;3227:23;3223:32;3220:52;;;3268:1;3265;3258:12;3220:52;3308:9;3295:23;3337:18;3378:2;3370:6;3367:14;3364:34;;;3394:1;3391;3384:12;3364:34;3432:6;3421:9;3417:22;3407:32;;3477:7;3470:4;3466:2;3462:13;3458:27;3448:55;;3499:1;3496;3489:12;3448:55;3535:2;3522:16;3557:4;3580:2;3576;3573:10;3570:36;;;3586:18;;:::i;:::-;3632:2;3629:1;3625:10;3664:2;3658:9;3727:2;3723:7;3718:2;3714;3710:11;3706:25;3698:6;3694:38;3782:6;3770:10;3767:22;3762:2;3750:10;3747:18;3744:46;3741:72;;;3793:18;;:::i;:::-;3829:2;3822:22;3879:18;;;3913:15;;;;-1:-1:-1;3955:11:1;;;3951:20;;;3983:19;;;3980:39;;;4015:1;4012;4005:12;3980:39;4039:11;;;;4059:148;4075:6;4070:3;4067:15;4059:148;;;4141:23;4160:3;4141:23;:::i;:::-;4129:36;;4092:12;;;;4185;;;;4059:148;;;4226:6;-1:-1:-1;4251:35:1;;-1:-1:-1;4267:18:1;;;4251:35;:::i;:::-;4241:45;;;;;;3101:1191;;;;;:::o;4297:456::-;4374:6;4382;4390;4443:2;4431:9;4422:7;4418:23;4414:32;4411:52;;;4459:1;4456;4449:12;4411:52;4498:9;4485:23;4517:31;4542:5;4517:31;:::i;:::-;4567:5;-1:-1:-1;4624:2:1;4609:18;;4596:32;4637:33;4596:32;4637:33;:::i;:::-;4297:456;;4689:7;;-1:-1:-1;;;4743:2:1;4728:18;;;;4715:32;;4297:456::o;4758:773::-;4880:6;4888;4896;4904;4957:2;4945:9;4936:7;4932:23;4928:32;4925:52;;;4973:1;4970;4963:12;4925:52;5013:9;5000:23;5042:18;5083:2;5075:6;5072:14;5069:34;;;5099:1;5096;5089:12;5069:34;5138:70;5200:7;5191:6;5180:9;5176:22;5138:70;:::i;:::-;5227:8;;-1:-1:-1;5112:96:1;-1:-1:-1;5315:2:1;5300:18;;5287:32;;-1:-1:-1;5331:16:1;;;5328:36;;;5360:1;5357;5350:12;5328:36;;5399:72;5463:7;5452:8;5441:9;5437:24;5399:72;:::i;:::-;4758:773;;;;-1:-1:-1;5490:8:1;-1:-1:-1;;;;4758:773:1:o;5536:247::-;5595:6;5648:2;5636:9;5627:7;5623:23;5619:32;5616:52;;;5664:1;5661;5654:12;5616:52;5703:9;5690:23;5722:31;5747:5;5722:31;:::i;6185:382::-;6250:6;6258;6311:2;6299:9;6290:7;6286:23;6282:32;6279:52;;;6327:1;6324;6317:12;6279:52;6366:9;6353:23;6385:31;6410:5;6385:31;:::i;:::-;6435:5;-1:-1:-1;6492:2:1;6477:18;;6464:32;6505:30;6464:32;6505:30;:::i;:::-;6554:7;6544:17;;;6185:382;;;;;:::o;6572:316::-;6649:6;6657;6665;6718:2;6706:9;6697:7;6693:23;6689:32;6686:52;;;6734:1;6731;6724:12;6686:52;-1:-1:-1;;6757:23:1;;;6827:2;6812:18;;6799:32;;-1:-1:-1;6878:2:1;6863:18;;;6850:32;;6572:316;-1:-1:-1;6572:316:1:o;6893:529::-;6970:6;6978;6986;7039:2;7027:9;7018:7;7014:23;7010:32;7007:52;;;7055:1;7052;7045:12;7007:52;7094:9;7081:23;7113:31;7138:5;7113:31;:::i;:::-;7163:5;-1:-1:-1;7220:2:1;7205:18;;7192:32;7233:33;7192:32;7233:33;:::i;:::-;7285:7;-1:-1:-1;7344:2:1;7329:18;;7316:32;7357:33;7316:32;7357:33;:::i;7427:388::-;7495:6;7503;7556:2;7544:9;7535:7;7531:23;7527:32;7524:52;;;7572:1;7569;7562:12;7524:52;7611:9;7598:23;7630:31;7655:5;7630:31;:::i;:::-;7680:5;-1:-1:-1;7737:2:1;7722:18;;7709:32;7750:33;7709:32;7750:33;:::i;7820:309::-;7885:6;7893;7946:2;7934:9;7925:7;7921:23;7917:32;7914:52;;;7962:1;7959;7952:12;7914:52;8001:9;7988:23;8020:28;8042:5;8020:28;:::i;8620:454::-;8715:6;8723;8731;8739;8747;8800:3;8788:9;8779:7;8775:23;8771:33;8768:53;;;8817:1;8814;8807:12;8768:53;-1:-1:-1;;8840:23:1;;;8910:2;8895:18;;8882:32;;-1:-1:-1;8961:2:1;8946:18;;8933:32;;9012:2;8997:18;;8984:32;;-1:-1:-1;9063:3:1;9048:19;9035:33;;-1:-1:-1;8620:454:1;-1:-1:-1;8620:454:1:o;9079:335::-;9281:2;9263:21;;;9320:2;9300:18;;;9293:30;-1:-1:-1;;;9354:2:1;9339:18;;9332:41;9405:2;9390:18;;9079:335::o;9419:401::-;9621:2;9603:21;;;9660:2;9640:18;;;9633:30;9699:34;9694:2;9679:18;;9672:62;-1:-1:-1;;;9765:2:1;9750:18;;9743:35;9810:3;9795:19;;9419:401::o;9825:127::-;9886:10;9881:3;9877:20;9874:1;9867:31;9917:4;9914:1;9907:15;9941:4;9938:1;9931:15;9957:284;-1:-1:-1;;;;;10143:32:1;;;;10125:51;;10219:14;10212:22;10207:2;10192:18;;10185:50;10113:2;10098:18;;9957:284::o;10246:127::-;10307:10;10302:3;10298:20;10295:1;10288:31;10338:4;10335:1;10328:15;10362:4;10359:1;10352:15;10378:135;10417:3;10438:17;;;10435:43;;10458:18;;:::i;:::-;-1:-1:-1;10505:1:1;10494:13;;10378:135::o;10518:329::-;10720:2;10702:21;;;10759:1;10739:18;;;10732:29;-1:-1:-1;;;10792:2:1;10777:18;;10770:36;10838:2;10823:18;;10518:329::o;11257:422::-;11346:1;11389:5;11346:1;11403:270;11424:7;11414:8;11411:21;11403:270;;;11483:4;11479:1;11475:6;11471:17;11465:4;11462:27;11459:53;;;11492:18;;:::i;:::-;11542:7;11532:8;11528:22;11525:55;;;11562:16;;;;11525:55;11641:22;;;;11601:15;;;;11403:270;;;11407:3;11257:422;;;;;:::o;11684:806::-;11733:5;11763:8;11753:80;;-1:-1:-1;11804:1:1;11818:5;;11753:80;11852:4;11842:76;;-1:-1:-1;11889:1:1;11903:5;;11842:76;11934:4;11952:1;11947:59;;;;12020:1;12015:130;;;;11927:218;;11947:59;11977:1;11968:10;;11991:5;;;12015:130;12052:3;12042:8;12039:17;12036:43;;;12059:18;;:::i;:::-;-1:-1:-1;;12115:1:1;12101:16;;12130:5;;11927:218;;12229:2;12219:8;12216:16;12210:3;12204:4;12201:13;12197:36;12191:2;12181:8;12178:16;12173:2;12167:4;12164:12;12160:35;12157:77;12154:159;;;-1:-1:-1;12266:19:1;;;12298:5;;12154:159;12345:34;12370:8;12364:4;12345:34;:::i;:::-;12415:6;12411:1;12407:6;12403:19;12394:7;12391:32;12388:58;;;12426:18;;:::i;:::-;12464:20;;11684:806;-1:-1:-1;;;11684:806:1:o;12495:140::-;12553:5;12582:47;12623:4;12613:8;12609:19;12603:4;12582:47;:::i;12640:168::-;12680:7;12746:1;12742;12738:6;12734:14;12731:1;12728:21;12723:1;12716:9;12709:17;12705:45;12702:71;;;12753:18;;:::i;:::-;-1:-1:-1;12793:9:1;;12640:168::o;12813:217::-;12853:1;12879;12869:132;;12923:10;12918:3;12914:20;12911:1;12904:31;12958:4;12955:1;12948:15;12986:4;12983:1;12976:15;12869:132;-1:-1:-1;13015:9:1;;12813:217::o;13780:128::-;13820:3;13851:1;13847:6;13844:1;13841:13;13838:39;;;13857:18;;:::i;:::-;-1:-1:-1;13893:9:1;;13780:128::o;14269:125::-;14309:4;14337:1;14334;14331:8;14328:34;;;14342:18;;:::i;:::-;-1:-1:-1;14379:9:1;;14269:125::o;14399:184::-;14469:6;14522:2;14510:9;14501:7;14497:23;14493:32;14490:52;;;14538:1;14535;14528:12;14490:52;-1:-1:-1;14561:16:1;;14399:184;-1:-1:-1;14399:184:1:o;14867:245::-;14934:6;14987:2;14975:9;14966:7;14962:23;14958:32;14955:52;;;15003:1;15000;14993:12;14955:52;15035:9;15029:16;15054:28;15076:5;15054:28;:::i;19666:980::-;19928:4;19976:3;19965:9;19961:19;20007:6;19996:9;19989:25;20033:2;20071:6;20066:2;20055:9;20051:18;20044:34;20114:3;20109:2;20098:9;20094:18;20087:31;20138:6;20173;20167:13;20204:6;20196;20189:22;20242:3;20231:9;20227:19;20220:26;;20281:2;20273:6;20269:15;20255:29;;20302:1;20312:195;20326:6;20323:1;20320:13;20312:195;;;20391:13;;-1:-1:-1;;;;;20387:39:1;20375:52;;20482:15;;;;20447:12;;;;20423:1;20341:9;20312:195;;;-1:-1:-1;;;;;;;20563:32:1;;;;20558:2;20543:18;;20536:60;-1:-1:-1;;;20627:3:1;20612:19;20605:35;20524:3;19666:980;-1:-1:-1;;;19666:980:1:o;21263:306::-;21351:6;21359;21367;21420:2;21408:9;21399:7;21395:23;21391:32;21388:52;;;21436:1;21433;21426:12;21388:52;21465:9;21459:16;21449:26;;21515:2;21504:9;21500:18;21494:25;21484:35;;21559:2;21548:9;21544:18;21538:25;21528:35;;21263:306;;;;;:::o

Swarm Source

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