ETH Price: $3,453.72 (+1.83%)
Gas: 3 Gwei

Token

GenBox (GENAI)
 

Overview

Max Total Supply

1,000,000,000 GENAI

Holders

3,136

Market

Price

$0.00 @ 0.000001 ETH (-3.78%)

Onchain Market Cap

$2,612,370.00

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
127,018.794561000168608356 GENAI

Value
$331.82 ( ~0.0960761425556835 Eth) [0.0127%]
0x8e3745eedae50728df35350b6a2ea0323a967d01
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
GenBox

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-04-15
*/

// SPDX-License-Identifier: UNLICENSED

/*

TELEGRAM: 
https://t.me/GenboxAI

WEBSITE: 
https://Genbox.AI/

TWITTER:
https://twitter.com/GenBoxai

*/

pragma solidity 0.8.25;

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

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

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

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

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

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

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

    event Authorize_Wallet(address Wallet, bool Status);

    event OwnershipRenounced(address indexed previousOwner);

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    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 renounceOwnership() public onlyOwner {
        emit OwnershipRenounced(owner);
        owner = address(0);
    }

    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0));
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }
}

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

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

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

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

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

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

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

interface InterfaceLP {
    function sync() external;
}

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

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

    string constant _name = "GenBox";
    string constant _symbol = "GENAI";
    uint8 constant _decimals = 18;

    uint256 public _totalSupply = 1 * 10**9 * 10**_decimals;

    uint256 public _maxTxAmount = _totalSupply;
    uint256 public _maxWalletToken = _totalSupply;

    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 = 0;
    uint256 public marketingFee = 30;
    uint256 public treasuryFee = 10;
    uint256 public ecosystemFee = 10;   
    uint256 public totalFee = liquidityFee + marketingFee + treasuryFee + ecosystemFee;
    uint256 public constant feeDenominator = 1000;

    uint256 sellMultiplier = 100;
    uint256 buyMultiplier = 100;
    uint256 transferMultiplier = 0;

    address public marketingFeeReceiver;
    address public treasuryFeeReceiver;
    address public ecosystemFeeReceiver;

    IDEXRouter public router;
    address public immutable pair;

    InterfaceLP public pairContract;
    uint256 public lastSync;

    bool public tradingOpen = false;
    uint256 public launchedAt;
    uint256 public deadBlocks;

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

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

        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        pairContract = InterfaceLP(pair);
        lastSync = block.timestamp;

        _allowances[address(this)][address(router)] = type(uint256).max;

        marketingFeeReceiver = msg.sender;
        treasuryFeeReceiver = msg.sender;
        ecosystemFeeReceiver = msg.sender;

        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 totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }   function getOwner() external view override returns (address) { return owner; }
    function 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 _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

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

        if (!authorizations[sender] && !isWalletLimitExempt[sender] && !isWalletLimitExempt[recipient] && recipient != pair) {
            require((balanceOf[recipient] + amount) <= _maxWalletToken,"max wallet limit reached");
        }
    
        // Checks max transaction limit
        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 view 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);

        if((launchedAt + deadBlocks) > block.number){
            feeAmount = amount.mul(99 * feeDenominator / 100).mul(multiplier).div(feeDenominator * 100);
        }

        return amount.sub(feeAmount);
    }

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

    function clearStuckToken(address tokenAddress, uint256 tokens) external authorized returns (bool success) {
        require(tokenAddress != address(this),"Cannot withdraw native token");
        if(tokenAddress == pair){
            require(block.timestamp > launchedAt + 500 days,"Locked for 1 year");
        }

        if(tokens == 0){
            tokens = IERC20(tokenAddress).balanceOf(address(this));
        }

        emit clearToken(tokenAddress, tokens);

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

    // switch Trading
    function tradingEnable() external onlyOwner {
        require(!tradingOpen,"Trading already open");
        tradingOpen = true;
        deadBlocks = 1;
        launchedAt = block.timestamp;
        emit config_TradingStatus(tradingOpen);
    }

    function swapBack() internal swapping {

        uint256 totalETHFee = totalFee;

        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 amountETHtreasury = (amountETH * treasuryFee) / totalETHFee;
        uint256 amountETHecosystem = (amountETH * ecosystemFee) / totalETHFee;

        payable(marketingFeeReceiver).transfer(amountETHMarketing);
        payable(treasuryFeeReceiver).transfer(amountETHtreasury);
        payable(ecosystemFeeReceiver).transfer(amountETHecosystem);

        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 update_fees() internal {
        require(totalFee.mul(buyMultiplier).div(100) <= 150, "Buy tax cannot be more than 15%");
        require(totalFee.mul(sellMultiplier).div(100) <= 150, "Sell tax cannot be more than 15%");
        require(totalFee.mul(sellMultiplier + buyMultiplier).div(100) <= 200, "Buy+Sell tax cannot be more than 20%");
        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 _treasuryFee, uint256 _ecosystemFee) external authorized {
        liquidityFee = _liquidityFee;
        marketingFee = _marketingFee;
        treasuryFee = _treasuryFee;
        ecosystemFee = _ecosystemFee;
        totalFee = _liquidityFee + _marketingFee + _treasuryFee + _ecosystemFee;
        
        update_fees();
    }

    function setFeeReceivers(address _marketingFeeReceiver, address _treasuryFeeReceiver, address _ecosystemFeeReceiver) external authorized {
        require(_marketingFeeReceiver != address(0),"Marketing fee address cannot be zero address");
        require(_treasuryFeeReceiver != address(0),"treasury fee address cannot be zero address");
        require(_ecosystemFeeReceiver != address(0),"ecosystem fee address cannot be zero address");

        marketingFeeReceiver = _marketingFeeReceiver;
        treasuryFeeReceiver = _treasuryFeeReceiver;
        ecosystemFeeReceiver = _ecosystemFeeReceiver;

        emit Set_Wallets(marketingFeeReceiver, treasuryFeeReceiver, ecosystemFeeReceiver);
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external authorized {
        require(_amount >= 1 * 10**_decimals, "Amount is less than one token");
        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]);
    }

event AutoLiquify(uint256 amountETH, uint256 amountTokens);
event UpdateFee(uint8 Buy, uint8 Sell, uint8 Transfer);
event Wallet_feeExempt(address Wallet, bool Status);
event BalanceClear(uint256 amount);
event clearToken(address TokenAddressCleared, uint256 Amount);
event Set_Wallets(address MarketingWallet, address treasuryWallet, address ecosystemWallet);
event config_TradingStatus(bool Status);
event config_LaunchMode(bool Status);
event config_SwapSettings(uint256 Amount, bool Enabled);

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"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":true,"internalType":"address","name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"MarketingWallet","type":"address"},{"indexed":false,"internalType":"address","name":"treasuryWallet","type":"address"},{"indexed":false,"internalType":"address","name":"ecosystemWallet","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":"TokenAddressCleared","type":"address"},{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"clearToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"config_LaunchMode","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":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"deadBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"ecosystemFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ecosystemFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"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":"lastSync","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_FeeExempt","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":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairContract","outputs":[{"internalType":"contract InterfaceLP","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":"_treasuryFeeReceiver","type":"address"},{"internalType":"address","name":"_ecosystemFeeReceiver","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":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_ecosystemFee","type":"uint256"}],"name":"setFees_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":"pure","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":"tradingEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526100106012600a6104aa565b61001e90633b9aca006104bf565b6003556003546004556003546005555f600b55601e600c55600a600d55600a600e55600e54600d54600c54600b5461005691906104d6565b61006091906104d6565b61006a91906104d6565b600f55606460108190556011555f6012556019805460ff19908116909155601c805490911660011790556003546100a4906103e8906104e9565b601d553480156100b2575f80fd5b505f8054336001600160a01b031991821681178355825260026020908152604092839020805460ff1916600117905560168054737a250d5630b4cf539739df2c5dacb4c659f2488d93168317905582516315ab88c960e31b81529251919263ad5c464892600480830193928290030181865afa158015610134573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101589190610508565b6001600160a01b039081166080526016546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa1580156101a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101ca9190610508565b6080516040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303815f875af1158015610218573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061023c9190610508565b6001600160a01b0390811660a0819052601780546001600160a01b0319908116909217905542601855305f81815260076020908152604080832060165490961683529481528482205f199055601380543390861681179091556014805486168217905560158054909516811790945583825260088152848220805460ff1990811660019081179092556009835286842080548216831790557f960b1051749987b45b5679007fff577a1c2f763ec21c15a6c5eb19307500378580548216831790557fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6b8054821683179055600a8352868420805482168317905593835285832080548516821790557f20677881080440a9b3c87e826370bb5d9c2f74efd4dede686d52d77a6a09f8bb80549094161790925560035483825260068352848220819055935193845291927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361052e565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561040257815f19048211156103e8576103e86103b4565b808516156103f557918102915b93841c93908002906103cd565b509250929050565b5f82610418575060016104a4565b8161042457505f6104a4565b816001811461043a576002811461044457610460565b60019150506104a4565b60ff841115610455576104556103b4565b50506001821b6104a4565b5060208310610133831016604e8410600b8410161715610483575081810a6104a4565b61048d83836103c8565b805f19048211156104a0576104a06103b4565b0290505b92915050565b5f6104b860ff84168361040a565b9392505050565b80820281158282048414176104a4576104a46103b4565b808201808211156104a4576104a46103b4565b5f8261050357634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215610518575f80fd5b81516001600160a01b03811681146104b8575f80fd5b60805160a0516127c36105725f395f818161066d01528181610dbb015281816115fa01528181611c4e0152818161203c015261207001525f611d4d01526127c35ff3fe6080604052600436106102a7575f3560e01c806378109e541161016f578063c867d60b116100d8578063efa5e34711610092578063f887ea401161006d578063f887ea4014610857578063fabb0b4f14610876578063fe9fbb801461088b578063ffb54a99146108aa575f80fd5b8063efa5e347146107fa578063f0b37c0414610819578063f2fde38b14610838575f80fd5b8063c867d60b14610716578063cc32d17614610744578063d7c0103214610759578063dd62ed3e14610778578063df20fd49146107bc578063e96fada2146107db575f80fd5b8063a8aa1b3111610129578063a8aa1b311461065c578063a9059cbb1461068f578063b1fb0e97146106ae578063b20ae67f146106c3578063b6a5d7de146106e2578063bf56b37114610701575f80fd5b806378109e54146105a65780637d1db4a5146105bb578063893d20e8146105d05780638b42507f146105ec57806395d89b411461061a57806398118cb414610647575f80fd5b8063313ce567116102115780636b67c4df116101cb5780636b67c4df146104fb5780636ce46bc3146105105780636ddd17131461052f57806370a0823114610548578063715018a61461057357806377b54bad14610587575f80fd5b8063313ce5671461044a5780633eaaf86b146104655780633f4218e01461047a5780634d709adf146104a8578063571ac8b0146104c75780636917516b146104e6575f80fd5b806318160ddd1161026257806318160ddd1461038a5780631df4ccfc1461039e57806323b872dd146103b35780632af10fac146103d25780632b112e49146104095780632f54bf6e1461041d575f80fd5b8062bff446146102b25780630445b667146102d357806306fdde03146102fb578063095ea7b3146103325780631693e8d414610361578063180b0d7e14610375575f80fd5b366102ae57005b5f80fd5b3480156102bd575f80fd5b506102d16102cc3660046122da565b6108c3565b005b3480156102de575f80fd5b506102e8601d5481565b6040519081526020015b60405180910390f35b348015610306575f80fd5b5060408051808201909152600681526508ecadc84def60d31b60208201525b6040516102f29190612359565b34801561033d575f80fd5b5061035161034c3660046123a9565b610a24565b60405190151581526020016102f2565b34801561036c575f80fd5b506102d1610a90565b348015610380575f80fd5b506102e86103e881565b348015610395575f80fd5b506003546102e8565b3480156103a9575f80fd5b506102e8600f5481565b3480156103be575f80fd5b506103516103cd3660046123d1565b610b52565b3480156103dd575f80fd5b506014546103f1906001600160a01b031681565b6040516001600160a01b0390911681526020016102f2565b348015610414575f80fd5b506102e8610c10565b348015610428575f80fd5b5061035161043736600461240a565b5f546001600160a01b0391821691161490565b348015610455575f80fd5b50604051601281526020016102f2565b348015610470575f80fd5b506102e860035481565b348015610485575f80fd5b5061035161049436600461240a565b60086020525f908152604090205460ff1681565b3480156104b3575f80fd5b506017546103f1906001600160a01b031681565b3480156104d2575f80fd5b506103516104e136600461240a565b610c7f565b3480156104f1575f80fd5b506102e860185481565b348015610506575f80fd5b506102e8600c5481565b34801561051b575f80fd5b506102d161052a366004612423565b610c8b565b34801561053a575f80fd5b50601c546103519060ff1681565b348015610553575f80fd5b506102e861056236600461240a565b60066020525f908152604090205481565b34801561057e575f80fd5b506102d1610ccc565b348015610592575f80fd5b506103516105a13660046123a9565b610d3b565b3480156105b1575f80fd5b506102e860055481565b3480156105c6575f80fd5b506102e860045481565b3480156105db575f80fd5b505f546001600160a01b03166103f1565b3480156105f7575f80fd5b5061035161060636600461240a565b60096020525f908152604090205460ff1681565b348015610625575f80fd5b5060408051808201909152600581526447454e414960d81b6020820152610325565b348015610652575f80fd5b506102e8600b5481565b348015610667575f80fd5b506103f17f000000000000000000000000000000000000000000000000000000000000000081565b34801561069a575f80fd5b506103516106a93660046123a9565b610f65565b3480156106b9575f80fd5b506102e8600e5481565b3480156106ce575f80fd5b506015546103f1906001600160a01b031681565b3480156106ed575f80fd5b506102d16106fc36600461240a565b610f71565b34801561070c575f80fd5b506102e8601a5481565b348015610721575f80fd5b5061035161073036600461240a565b600a6020525f908152604090205460ff1681565b34801561074f575f80fd5b506102e8600d5481565b348015610764575f80fd5b506102d161077336600461244c565b610ffb565b348015610783575f80fd5b506102e861079236600461248c565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b3480156107c7575f80fd5b506102d16107d63660046124bd565b6111e4565b3480156107e6575f80fd5b506013546103f1906001600160a01b031681565b348015610805575f80fd5b506102d16108143660046124d9565b611316565b348015610824575f80fd5b506102d161083336600461240a565b61137a565b348015610843575f80fd5b506102d161085236600461240a565b611456565b348015610862575f80fd5b506016546103f1906001600160a01b031681565b348015610881575f80fd5b506102e8601b5481565b348015610896575f80fd5b506103516108a536600461240a565b61148b565b3480156108b5575f80fd5b506019546103519060ff1681565b6108cc3361148b565b6108f15760405162461bcd60e51b81526004016108e890612508565b60405180910390fd5b6101f582106109505760405162461bcd60e51b815260206004820152602560248201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604482015264657373657360d81b60648201526084016108e8565b5f5b82811015610a1e578160085f8686858181106109705761097061252d565b9050602002016020810190610985919061240a565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f9fbd25f95d342f2efc070b56d2fadd2341d264ef8c915dc268609b2ca1bb25de8484838181106109df576109df61252d565b90506020020160208101906109f4919061240a565b604080516001600160a01b03909216825284151560208301520160405180910390a1600101610952565b50505050565b335f8181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610a7e9086815260200190565b60405180910390a35060015b92915050565b5f546001600160a01b03163314610ab95760405162461bcd60e51b81526004016108e890612541565b60195460ff1615610b035760405162461bcd60e51b81526020600482015260146024820152732a3930b234b7339030b63932b0b23c9037b832b760611b60448201526064016108e8565b6019805460ff19166001908117909155601b81905542601a556040519081527ff865819dcfd8250cfaa23e1ab7129c1ec65c617bae1e716699dfe07dd7c489ee906020015b60405180910390a1565b6001600160a01b0383165f9081526007602090815260408083203384529091528120545f1914610bfb576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f908152600782528381203382529091529190912054610bd79184906114a8565b6001600160a01b0385165f9081526007602090815260408083203384529091529020555b610c068484846114e0565b90505b9392505050565b60066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85461dead5f9081527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e2254600354919291610c709190612575565b610c7a9190612575565b905090565b5f610a8a825f19610a24565b610c943361148b565b610cb05760405162461bcd60e51b81526004016108e890612508565b601082905560118390556012819055610cc7611888565b505050565b5f546001600160a01b03163314610cf55760405162461bcd60e51b81526004016108e890612541565b5f80546040516001600160a01b03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a25f80546001600160a01b0319169055565b5f610d453361148b565b610d615760405162461bcd60e51b81526004016108e890612508565b306001600160a01b03841603610db95760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f74207769746864726177206e617469766520746f6b656e0000000060448201526064016108e8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031603610e4557601a54610e03906302932e00612588565b4211610e455760405162461bcd60e51b81526020600482015260116024820152702637b1b5b2b2103337b91018903cb2b0b960791b60448201526064016108e8565b815f03610eb5576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610e8e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eb2919061259b565b91505b604080516001600160a01b0385168152602081018490527f960427a4fde284dcc8da2c51a43d210cfd7ed6f4328a24ba33eee49910db564b910160405180910390a160405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303815f875af1158015610f41573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c0991906125b2565b5f610c093384846114e0565b5f546001600160a01b03163314610f9a5760405162461bcd60e51b81526004016108e890612541565b6001600160a01b0381165f81815260026020908152604091829020805460ff191660019081179091558251938452908301527fb6a1709218b158ea8591fc9269b88652f1c908dc68a79faa865c745a770b950591015b60405180910390a150565b6110043361148b565b6110205760405162461bcd60e51b81526004016108e890612508565b6001600160a01b03831661108b5760405162461bcd60e51b815260206004820152602c60248201527f4d61726b6574696e672066656520616464726573732063616e6e6f742062652060448201526b7a65726f206164647265737360a01b60648201526084016108e8565b6001600160a01b0382166110f55760405162461bcd60e51b815260206004820152602b60248201527f74726561737572792066656520616464726573732063616e6e6f74206265207a60448201526a65726f206164647265737360a81b60648201526084016108e8565b6001600160a01b0381166111605760405162461bcd60e51b815260206004820152602c60248201527f65636f73797374656d2066656520616464726573732063616e6e6f742062652060448201526b7a65726f206164647265737360a01b60648201526084016108e8565b601380546001600160a01b038581166001600160a01b0319928316811790935560148054868316908416811790915560158054928616929093168217909255604080519384526020840192909252908201527fb93b1ef445620c8661ebddddb575085ede7dfe08ccc6a91b933a6520249c3c7c9060600160405180910390a1505050565b6111ed3361148b565b6112095760405162461bcd60e51b81526004016108e890612508565b6112156012600a6126ad565b6112209060016126bb565b81101561126f5760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206973206c657373207468616e206f6e6520746f6b656e00000060448201526064016108e8565b600a60035461127e91906126d2565b81106112be5760405162461bcd60e51b815260206004820152600f60248201526e082dadeeadce840e8dede40d0d2ced608b1b60448201526064016108e8565b601c805460ff1916831515908117909155601d8290556040805183815260ff909216151560208301527f34c2d4c263b6f41223c6d30ae2e7bcb18629892587e0a4138f57ba2c523953d0910160405180910390a15050565b61131f3361148b565b61133b5760405162461bcd60e51b81526004016108e890612508565b600b849055600c839055600d829055600e819055808261135b8587612588565b6113659190612588565b61136f9190612588565b600f55610a1e611888565b5f546001600160a01b031633146113a35760405162461bcd60e51b81526004016108e890612541565b5f546001600160a01b03908116908216036114005760405162461bcd60e51b815260206004820152601a60248201527f4f574e45522063616e7420626520756e617574686f72697a656400000000000060448201526064016108e8565b6001600160a01b0381165f818152600260209081526040808320805460ff191690558051938452908301919091527fb6a1709218b158ea8591fc9269b88652f1c908dc68a79faa865c745a770b95059101610ff0565b5f546001600160a01b0316331461147f5760405162461bcd60e51b81526004016108e890612541565b61148881611af4565b50565b6001600160a01b03165f9081526002602052604090205460ff1690565b5f81848411156114cb5760405162461bcd60e51b81526004016108e89190612359565b505f6114d78486612575565b95945050505050565b601e545f9060ff16156114ff576114f8848484611b5f565b9050610c09565b6001600160a01b0384165f9081526002602052604090205460ff1615801561153f57506001600160a01b0383165f9081526002602052604090205460ff16155b1561158d5760195460ff1661158d5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016108e8565b6001600160a01b0384165f9081526002602052604090205460ff161580156115cd57506001600160a01b0384165f908152600a602052604090205460ff16155b80156115f157506001600160a01b0383165f908152600a602052604090205460ff16155b801561162f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b156116a8576005546001600160a01b0384165f9081526006602052604090205461165a908490612588565b11156116a85760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d69742072656163686564000000000000000060448201526064016108e8565b600454821115806116d057506001600160a01b0384165f9081526009602052604090205460ff165b806116f257506001600160a01b0383165f9081526009602052604090205460ff165b6117365760405162461bcd60e51b815260206004820152601560248201527413585e08151608131a5b5a5d08115e18d959591959605a1b60448201526064016108e8565b61173e611c42565b1561174b5761174b611cac565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f9081526006909152919091205461179c9184906114a8565b6001600160a01b0385165f90815260066020908152604080832093909355600890529081205460ff16806117e757506001600160a01b0384165f9081526008602052604090205460ff165b6117fb576117f6858486612015565b6117fd565b825b6001600160a01b0385165f908152600660205260409020549091506118229082612143565b6001600160a01b038086165f8181526006602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118759085815260200190565b60405180910390a3506001949350505050565b60966118ac60646118a6601154600f546121a190919063ffffffff16565b9061221f565b11156118fa5760405162461bcd60e51b815260206004820152601f60248201527f427579207461782063616e6e6f74206265206d6f7265207468616e203135250060448201526064016108e8565b609661191860646118a6601054600f546121a190919063ffffffff16565b11156119665760405162461bcd60e51b815260206004820181905260248201527f53656c6c207461782063616e6e6f74206265206d6f7265207468616e2031352560448201526064016108e8565b60c861198960646118a66011546010546119809190612588565b600f54906121a1565b11156119e35760405162461bcd60e51b8152602060048201526024808201527f4275792b53656c6c207461782063616e6e6f74206265206d6f7265207468616e6044820152632032302560e01b60648201526084016108e8565b6064611a0160646118a6601254600f546121a190919063ffffffff16565b1115611a5b5760405162461bcd60e51b8152602060048201526024808201527f5472616e73666572205461782063616e6e6f74206265206d6f7265207468616e6044820152632031302560e01b60648201526084016108e8565b7f375884ed7f92283ee74d8884b39a803f4aee832b15766fe016b74fc791fc2ada611a9860646118a6601154600f546121a190919063ffffffff16565b611ab460646118a6601054600f546121a190919063ffffffff16565b611ad060646118a6601254600f546121a190919063ffffffff16565b6040805160ff94851681529284166020840152921691810191909152606001610b48565b6001600160a01b038116611b06575f80fd5b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152600690915291822054611baf9184906114a8565b6001600160a01b038086165f908152600660205260408082209390935590851681522054611bdd9083612143565b6001600160a01b038085165f8181526006602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c309086815260200190565b60405180910390a35060019392505050565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801590611c7f5750601e5460ff16155b8015611c8d5750601c5460ff165b8015610c7a575050601d54305f90815260066020526040902054101590565b601e805460ff19166001179055600f545f611cc88260026126bb565b600b54601d54611cd891906126bb565b611ce291906126d2565b90505f81601d54611cf39190612575565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f81518110611d2b57611d2b61252d565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110611d7f57611d7f61252d565b6001600160a01b03928316602091820292909201015260165460405163791ac94760e01b815291169063791ac94790611dc49085905f908690309042906004016126f1565b5f604051808303815f87803b158015611ddb575f80fd5b505af1158015611ded573d5f803e3d5ffd5b5050600b54479250611e0291506002906126d2565b611e0c9086612575565b94505f611e1a8660026126bb565b600b54611e2790846126bb565b611e3191906126d2565b90505f86600c5484611e4391906126bb565b611e4d91906126d2565b90505f87600d5485611e5f91906126bb565b611e6991906126d2565b90505f88600e5486611e7b91906126bb565b611e8591906126d2565b6013546040519192506001600160a01b03169084156108fc029085905f818181858888f19350505050158015611ebd573d5f803e3d5ffd5b506014546040516001600160a01b039091169083156108fc029084905f818181858888f19350505050158015611ef5573d5f803e3d5ffd5b506015546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611f2d573d5f803e3d5ffd5b5087156120005760165460405163f305d71960e01b81523060048201819052602482018b90525f60448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990869060c40160606040518083038185885af1158015611f9e573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611fc39190612762565b505060408051868152602081018b90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050601e805460ff1916905550505050505050565b5f8215806120235750600f54155b1561202f575081610c09565b6012546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169084160361206e57506010546120ac565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316036120ac57506011545b5f6120dc6120bd6103e860646126bb565b6118a6846120d6600f548a6121a190919063ffffffff16565b906121a1565b905043601b54601a546120ef9190612588565b111561212f5761212c6121056103e860646126bb565b6118a6846120d6606461211b6103e860636126bb565b61212591906126d2565b8a906121a1565b90505b6121398582612260565b9695505050505050565b5f8061214f8385612588565b905083811015610c095760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016108e8565b5f825f036121b057505f610a8a565b5f6121bb83856126bb565b9050826121c885836126d2565b14610c095760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016108e8565b5f610c0983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506122a1565b5f610c0983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506114a8565b5f81836122c15760405162461bcd60e51b81526004016108e89190612359565b505f6114d784866126d2565b8015158114611488575f80fd5b5f805f604084860312156122ec575f80fd5b833567ffffffffffffffff80821115612303575f80fd5b818601915086601f830112612316575f80fd5b813581811115612324575f80fd5b8760208260051b8501011115612338575f80fd5b6020928301955093505084013561234e816122cd565b809150509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b03811681146123a4575f80fd5b919050565b5f80604083850312156123ba575f80fd5b6123c38361238e565b946020939093013593505050565b5f805f606084860312156123e3575f80fd5b6123ec8461238e565b92506123fa6020850161238e565b9150604084013590509250925092565b5f6020828403121561241a575f80fd5b610c098261238e565b5f805f60608486031215612435575f80fd5b505081359360208301359350604090920135919050565b5f805f6060848603121561245e575f80fd5b6124678461238e565b92506124756020850161238e565b91506124836040850161238e565b90509250925092565b5f806040838503121561249d575f80fd5b6124a68361238e565b91506124b46020840161238e565b90509250929050565b5f80604083850312156124ce575f80fd5b82356123c3816122cd565b5f805f80608085870312156124ec575f80fd5b5050823594602084013594506040840135936060013592509050565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610a8a57610a8a612561565b80820180821115610a8a57610a8a612561565b5f602082840312156125ab575f80fd5b5051919050565b5f602082840312156125c2575f80fd5b8151610c09816122cd565b600181815b8085111561260757815f19048211156125ed576125ed612561565b808516156125fa57918102915b93841c93908002906125d2565b509250929050565b5f8261261d57506001610a8a565b8161262957505f610a8a565b816001811461263f576002811461264957612665565b6001915050610a8a565b60ff84111561265a5761265a612561565b50506001821b610a8a565b5060208310610133831016604e8410600b8410161715612688575081810a610a8a565b61269283836125cd565b805f19048211156126a5576126a5612561565b029392505050565b5f610c0960ff84168361260f565b8082028115828204841417610a8a57610a8a612561565b5f826126ec57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156127415784516001600160a01b03168352938301939183019160010161271c565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612774575f80fd5b835192506020840151915060408401519050925092509256fea26469706673582212208e1dc3aee220be44980a5fa78b7c867c678f3d585aa1e1e1b164af3496675b5664736f6c63430008190033

Deployed Bytecode

0x6080604052600436106102a7575f3560e01c806378109e541161016f578063c867d60b116100d8578063efa5e34711610092578063f887ea401161006d578063f887ea4014610857578063fabb0b4f14610876578063fe9fbb801461088b578063ffb54a99146108aa575f80fd5b8063efa5e347146107fa578063f0b37c0414610819578063f2fde38b14610838575f80fd5b8063c867d60b14610716578063cc32d17614610744578063d7c0103214610759578063dd62ed3e14610778578063df20fd49146107bc578063e96fada2146107db575f80fd5b8063a8aa1b3111610129578063a8aa1b311461065c578063a9059cbb1461068f578063b1fb0e97146106ae578063b20ae67f146106c3578063b6a5d7de146106e2578063bf56b37114610701575f80fd5b806378109e54146105a65780637d1db4a5146105bb578063893d20e8146105d05780638b42507f146105ec57806395d89b411461061a57806398118cb414610647575f80fd5b8063313ce567116102115780636b67c4df116101cb5780636b67c4df146104fb5780636ce46bc3146105105780636ddd17131461052f57806370a0823114610548578063715018a61461057357806377b54bad14610587575f80fd5b8063313ce5671461044a5780633eaaf86b146104655780633f4218e01461047a5780634d709adf146104a8578063571ac8b0146104c75780636917516b146104e6575f80fd5b806318160ddd1161026257806318160ddd1461038a5780631df4ccfc1461039e57806323b872dd146103b35780632af10fac146103d25780632b112e49146104095780632f54bf6e1461041d575f80fd5b8062bff446146102b25780630445b667146102d357806306fdde03146102fb578063095ea7b3146103325780631693e8d414610361578063180b0d7e14610375575f80fd5b366102ae57005b5f80fd5b3480156102bd575f80fd5b506102d16102cc3660046122da565b6108c3565b005b3480156102de575f80fd5b506102e8601d5481565b6040519081526020015b60405180910390f35b348015610306575f80fd5b5060408051808201909152600681526508ecadc84def60d31b60208201525b6040516102f29190612359565b34801561033d575f80fd5b5061035161034c3660046123a9565b610a24565b60405190151581526020016102f2565b34801561036c575f80fd5b506102d1610a90565b348015610380575f80fd5b506102e86103e881565b348015610395575f80fd5b506003546102e8565b3480156103a9575f80fd5b506102e8600f5481565b3480156103be575f80fd5b506103516103cd3660046123d1565b610b52565b3480156103dd575f80fd5b506014546103f1906001600160a01b031681565b6040516001600160a01b0390911681526020016102f2565b348015610414575f80fd5b506102e8610c10565b348015610428575f80fd5b5061035161043736600461240a565b5f546001600160a01b0391821691161490565b348015610455575f80fd5b50604051601281526020016102f2565b348015610470575f80fd5b506102e860035481565b348015610485575f80fd5b5061035161049436600461240a565b60086020525f908152604090205460ff1681565b3480156104b3575f80fd5b506017546103f1906001600160a01b031681565b3480156104d2575f80fd5b506103516104e136600461240a565b610c7f565b3480156104f1575f80fd5b506102e860185481565b348015610506575f80fd5b506102e8600c5481565b34801561051b575f80fd5b506102d161052a366004612423565b610c8b565b34801561053a575f80fd5b50601c546103519060ff1681565b348015610553575f80fd5b506102e861056236600461240a565b60066020525f908152604090205481565b34801561057e575f80fd5b506102d1610ccc565b348015610592575f80fd5b506103516105a13660046123a9565b610d3b565b3480156105b1575f80fd5b506102e860055481565b3480156105c6575f80fd5b506102e860045481565b3480156105db575f80fd5b505f546001600160a01b03166103f1565b3480156105f7575f80fd5b5061035161060636600461240a565b60096020525f908152604090205460ff1681565b348015610625575f80fd5b5060408051808201909152600581526447454e414960d81b6020820152610325565b348015610652575f80fd5b506102e8600b5481565b348015610667575f80fd5b506103f17f000000000000000000000000dc6b2c2dc744fd06c4f074bde90c99332d0fda5181565b34801561069a575f80fd5b506103516106a93660046123a9565b610f65565b3480156106b9575f80fd5b506102e8600e5481565b3480156106ce575f80fd5b506015546103f1906001600160a01b031681565b3480156106ed575f80fd5b506102d16106fc36600461240a565b610f71565b34801561070c575f80fd5b506102e8601a5481565b348015610721575f80fd5b5061035161073036600461240a565b600a6020525f908152604090205460ff1681565b34801561074f575f80fd5b506102e8600d5481565b348015610764575f80fd5b506102d161077336600461244c565b610ffb565b348015610783575f80fd5b506102e861079236600461248c565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b3480156107c7575f80fd5b506102d16107d63660046124bd565b6111e4565b3480156107e6575f80fd5b506013546103f1906001600160a01b031681565b348015610805575f80fd5b506102d16108143660046124d9565b611316565b348015610824575f80fd5b506102d161083336600461240a565b61137a565b348015610843575f80fd5b506102d161085236600461240a565b611456565b348015610862575f80fd5b506016546103f1906001600160a01b031681565b348015610881575f80fd5b506102e8601b5481565b348015610896575f80fd5b506103516108a536600461240a565b61148b565b3480156108b5575f80fd5b506019546103519060ff1681565b6108cc3361148b565b6108f15760405162461bcd60e51b81526004016108e890612508565b60405180910390fd5b6101f582106109505760405162461bcd60e51b815260206004820152602560248201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604482015264657373657360d81b60648201526084016108e8565b5f5b82811015610a1e578160085f8686858181106109705761097061252d565b9050602002016020810190610985919061240a565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790557f9fbd25f95d342f2efc070b56d2fadd2341d264ef8c915dc268609b2ca1bb25de8484838181106109df576109df61252d565b90506020020160208101906109f4919061240a565b604080516001600160a01b03909216825284151560208301520160405180910390a1600101610952565b50505050565b335f8181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610a7e9086815260200190565b60405180910390a35060015b92915050565b5f546001600160a01b03163314610ab95760405162461bcd60e51b81526004016108e890612541565b60195460ff1615610b035760405162461bcd60e51b81526020600482015260146024820152732a3930b234b7339030b63932b0b23c9037b832b760611b60448201526064016108e8565b6019805460ff19166001908117909155601b81905542601a556040519081527ff865819dcfd8250cfaa23e1ab7129c1ec65c617bae1e716699dfe07dd7c489ee906020015b60405180910390a1565b6001600160a01b0383165f9081526007602090815260408083203384529091528120545f1914610bfb576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f908152600782528381203382529091529190912054610bd79184906114a8565b6001600160a01b0385165f9081526007602090815260408083203384529091529020555b610c068484846114e0565b90505b9392505050565b60066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85461dead5f9081527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e2254600354919291610c709190612575565b610c7a9190612575565b905090565b5f610a8a825f19610a24565b610c943361148b565b610cb05760405162461bcd60e51b81526004016108e890612508565b601082905560118390556012819055610cc7611888565b505050565b5f546001600160a01b03163314610cf55760405162461bcd60e51b81526004016108e890612541565b5f80546040516001600160a01b03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a25f80546001600160a01b0319169055565b5f610d453361148b565b610d615760405162461bcd60e51b81526004016108e890612508565b306001600160a01b03841603610db95760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f74207769746864726177206e617469766520746f6b656e0000000060448201526064016108e8565b7f000000000000000000000000dc6b2c2dc744fd06c4f074bde90c99332d0fda516001600160a01b0316836001600160a01b031603610e4557601a54610e03906302932e00612588565b4211610e455760405162461bcd60e51b81526020600482015260116024820152702637b1b5b2b2103337b91018903cb2b0b960791b60448201526064016108e8565b815f03610eb5576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610e8e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eb2919061259b565b91505b604080516001600160a01b0385168152602081018490527f960427a4fde284dcc8da2c51a43d210cfd7ed6f4328a24ba33eee49910db564b910160405180910390a160405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303815f875af1158015610f41573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c0991906125b2565b5f610c093384846114e0565b5f546001600160a01b03163314610f9a5760405162461bcd60e51b81526004016108e890612541565b6001600160a01b0381165f81815260026020908152604091829020805460ff191660019081179091558251938452908301527fb6a1709218b158ea8591fc9269b88652f1c908dc68a79faa865c745a770b950591015b60405180910390a150565b6110043361148b565b6110205760405162461bcd60e51b81526004016108e890612508565b6001600160a01b03831661108b5760405162461bcd60e51b815260206004820152602c60248201527f4d61726b6574696e672066656520616464726573732063616e6e6f742062652060448201526b7a65726f206164647265737360a01b60648201526084016108e8565b6001600160a01b0382166110f55760405162461bcd60e51b815260206004820152602b60248201527f74726561737572792066656520616464726573732063616e6e6f74206265207a60448201526a65726f206164647265737360a81b60648201526084016108e8565b6001600160a01b0381166111605760405162461bcd60e51b815260206004820152602c60248201527f65636f73797374656d2066656520616464726573732063616e6e6f742062652060448201526b7a65726f206164647265737360a01b60648201526084016108e8565b601380546001600160a01b038581166001600160a01b0319928316811790935560148054868316908416811790915560158054928616929093168217909255604080519384526020840192909252908201527fb93b1ef445620c8661ebddddb575085ede7dfe08ccc6a91b933a6520249c3c7c9060600160405180910390a1505050565b6111ed3361148b565b6112095760405162461bcd60e51b81526004016108e890612508565b6112156012600a6126ad565b6112209060016126bb565b81101561126f5760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206973206c657373207468616e206f6e6520746f6b656e00000060448201526064016108e8565b600a60035461127e91906126d2565b81106112be5760405162461bcd60e51b815260206004820152600f60248201526e082dadeeadce840e8dede40d0d2ced608b1b60448201526064016108e8565b601c805460ff1916831515908117909155601d8290556040805183815260ff909216151560208301527f34c2d4c263b6f41223c6d30ae2e7bcb18629892587e0a4138f57ba2c523953d0910160405180910390a15050565b61131f3361148b565b61133b5760405162461bcd60e51b81526004016108e890612508565b600b849055600c839055600d829055600e819055808261135b8587612588565b6113659190612588565b61136f9190612588565b600f55610a1e611888565b5f546001600160a01b031633146113a35760405162461bcd60e51b81526004016108e890612541565b5f546001600160a01b03908116908216036114005760405162461bcd60e51b815260206004820152601a60248201527f4f574e45522063616e7420626520756e617574686f72697a656400000000000060448201526064016108e8565b6001600160a01b0381165f818152600260209081526040808320805460ff191690558051938452908301919091527fb6a1709218b158ea8591fc9269b88652f1c908dc68a79faa865c745a770b95059101610ff0565b5f546001600160a01b0316331461147f5760405162461bcd60e51b81526004016108e890612541565b61148881611af4565b50565b6001600160a01b03165f9081526002602052604090205460ff1690565b5f81848411156114cb5760405162461bcd60e51b81526004016108e89190612359565b505f6114d78486612575565b95945050505050565b601e545f9060ff16156114ff576114f8848484611b5f565b9050610c09565b6001600160a01b0384165f9081526002602052604090205460ff1615801561153f57506001600160a01b0383165f9081526002602052604090205460ff16155b1561158d5760195460ff1661158d5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016108e8565b6001600160a01b0384165f9081526002602052604090205460ff161580156115cd57506001600160a01b0384165f908152600a602052604090205460ff16155b80156115f157506001600160a01b0383165f908152600a602052604090205460ff16155b801561162f57507f000000000000000000000000dc6b2c2dc744fd06c4f074bde90c99332d0fda516001600160a01b0316836001600160a01b031614155b156116a8576005546001600160a01b0384165f9081526006602052604090205461165a908490612588565b11156116a85760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d69742072656163686564000000000000000060448201526064016108e8565b600454821115806116d057506001600160a01b0384165f9081526009602052604090205460ff165b806116f257506001600160a01b0383165f9081526009602052604090205460ff165b6117365760405162461bcd60e51b815260206004820152601560248201527413585e08151608131a5b5a5d08115e18d959591959605a1b60448201526064016108e8565b61173e611c42565b1561174b5761174b611cac565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f9081526006909152919091205461179c9184906114a8565b6001600160a01b0385165f90815260066020908152604080832093909355600890529081205460ff16806117e757506001600160a01b0384165f9081526008602052604090205460ff165b6117fb576117f6858486612015565b6117fd565b825b6001600160a01b0385165f908152600660205260409020549091506118229082612143565b6001600160a01b038086165f8181526006602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118759085815260200190565b60405180910390a3506001949350505050565b60966118ac60646118a6601154600f546121a190919063ffffffff16565b9061221f565b11156118fa5760405162461bcd60e51b815260206004820152601f60248201527f427579207461782063616e6e6f74206265206d6f7265207468616e203135250060448201526064016108e8565b609661191860646118a6601054600f546121a190919063ffffffff16565b11156119665760405162461bcd60e51b815260206004820181905260248201527f53656c6c207461782063616e6e6f74206265206d6f7265207468616e2031352560448201526064016108e8565b60c861198960646118a66011546010546119809190612588565b600f54906121a1565b11156119e35760405162461bcd60e51b8152602060048201526024808201527f4275792b53656c6c207461782063616e6e6f74206265206d6f7265207468616e6044820152632032302560e01b60648201526084016108e8565b6064611a0160646118a6601254600f546121a190919063ffffffff16565b1115611a5b5760405162461bcd60e51b8152602060048201526024808201527f5472616e73666572205461782063616e6e6f74206265206d6f7265207468616e6044820152632031302560e01b60648201526084016108e8565b7f375884ed7f92283ee74d8884b39a803f4aee832b15766fe016b74fc791fc2ada611a9860646118a6601154600f546121a190919063ffffffff16565b611ab460646118a6601054600f546121a190919063ffffffff16565b611ad060646118a6601254600f546121a190919063ffffffff16565b6040805160ff94851681529284166020840152921691810191909152606001610b48565b6001600160a01b038116611b06575f80fd5b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152600690915291822054611baf9184906114a8565b6001600160a01b038086165f908152600660205260408082209390935590851681522054611bdd9083612143565b6001600160a01b038085165f8181526006602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c309086815260200190565b60405180910390a35060019392505050565b5f336001600160a01b037f000000000000000000000000dc6b2c2dc744fd06c4f074bde90c99332d0fda511614801590611c7f5750601e5460ff16155b8015611c8d5750601c5460ff165b8015610c7a575050601d54305f90815260066020526040902054101590565b601e805460ff19166001179055600f545f611cc88260026126bb565b600b54601d54611cd891906126bb565b611ce291906126d2565b90505f81601d54611cf39190612575565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f81518110611d2b57611d2b61252d565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110611d7f57611d7f61252d565b6001600160a01b03928316602091820292909201015260165460405163791ac94760e01b815291169063791ac94790611dc49085905f908690309042906004016126f1565b5f604051808303815f87803b158015611ddb575f80fd5b505af1158015611ded573d5f803e3d5ffd5b5050600b54479250611e0291506002906126d2565b611e0c9086612575565b94505f611e1a8660026126bb565b600b54611e2790846126bb565b611e3191906126d2565b90505f86600c5484611e4391906126bb565b611e4d91906126d2565b90505f87600d5485611e5f91906126bb565b611e6991906126d2565b90505f88600e5486611e7b91906126bb565b611e8591906126d2565b6013546040519192506001600160a01b03169084156108fc029085905f818181858888f19350505050158015611ebd573d5f803e3d5ffd5b506014546040516001600160a01b039091169083156108fc029084905f818181858888f19350505050158015611ef5573d5f803e3d5ffd5b506015546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611f2d573d5f803e3d5ffd5b5087156120005760165460405163f305d71960e01b81523060048201819052602482018b90525f60448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990869060c40160606040518083038185885af1158015611f9e573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611fc39190612762565b505060408051868152602081018b90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050601e805460ff1916905550505050505050565b5f8215806120235750600f54155b1561202f575081610c09565b6012546001600160a01b037f000000000000000000000000dc6b2c2dc744fd06c4f074bde90c99332d0fda5181169084160361206e57506010546120ac565b7f000000000000000000000000dc6b2c2dc744fd06c4f074bde90c99332d0fda516001600160a01b0316856001600160a01b0316036120ac57506011545b5f6120dc6120bd6103e860646126bb565b6118a6846120d6600f548a6121a190919063ffffffff16565b906121a1565b905043601b54601a546120ef9190612588565b111561212f5761212c6121056103e860646126bb565b6118a6846120d6606461211b6103e860636126bb565b61212591906126d2565b8a906121a1565b90505b6121398582612260565b9695505050505050565b5f8061214f8385612588565b905083811015610c095760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016108e8565b5f825f036121b057505f610a8a565b5f6121bb83856126bb565b9050826121c885836126d2565b14610c095760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016108e8565b5f610c0983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506122a1565b5f610c0983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506114a8565b5f81836122c15760405162461bcd60e51b81526004016108e89190612359565b505f6114d784866126d2565b8015158114611488575f80fd5b5f805f604084860312156122ec575f80fd5b833567ffffffffffffffff80821115612303575f80fd5b818601915086601f830112612316575f80fd5b813581811115612324575f80fd5b8760208260051b8501011115612338575f80fd5b6020928301955093505084013561234e816122cd565b809150509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b03811681146123a4575f80fd5b919050565b5f80604083850312156123ba575f80fd5b6123c38361238e565b946020939093013593505050565b5f805f606084860312156123e3575f80fd5b6123ec8461238e565b92506123fa6020850161238e565b9150604084013590509250925092565b5f6020828403121561241a575f80fd5b610c098261238e565b5f805f60608486031215612435575f80fd5b505081359360208301359350604090920135919050565b5f805f6060848603121561245e575f80fd5b6124678461238e565b92506124756020850161238e565b91506124836040850161238e565b90509250925092565b5f806040838503121561249d575f80fd5b6124a68361238e565b91506124b46020840161238e565b90509250929050565b5f80604083850312156124ce575f80fd5b82356123c3816122cd565b5f805f80608085870312156124ec575f80fd5b5050823594602084013594506040840135936060013592509050565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610a8a57610a8a612561565b80820180821115610a8a57610a8a612561565b5f602082840312156125ab575f80fd5b5051919050565b5f602082840312156125c2575f80fd5b8151610c09816122cd565b600181815b8085111561260757815f19048211156125ed576125ed612561565b808516156125fa57918102915b93841c93908002906125d2565b509250929050565b5f8261261d57506001610a8a565b8161262957505f610a8a565b816001811461263f576002811461264957612665565b6001915050610a8a565b60ff84111561265a5761265a612561565b50506001821b610a8a565b5060208310610133831016604e8410600b8410161715612688575081810a610a8a565b61269283836125cd565b805f19048211156126a5576126a5612561565b029392505050565b5f610c0960ff84168361260f565b8082028115828204841417610a8a57610a8a612561565b5f826126ec57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156127415784516001600160a01b03168352938301939183019160010161271c565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612774575f80fd5b835192506020840151915060408401519050925092509256fea26469706673582212208e1dc3aee220be44980a5fa78b7c867c678f3d585aa1e1e1b164af3496675b5664736f6c63430008190033

Deployed Bytecode Sourcemap

5501:12632:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14683:353;;;;;;;;;;-1:-1:-1;14683:353:0;;;;;:::i;:::-;;:::i;:::-;;7140:50;;;;;;;;;;;;;;;;;;;1038:25:1;;;1026:2;1011:18;7140:50:0;;;;;;;;8620:80;;;;;;;;;;-1:-1:-1;8692:5:0;;;;;;;;;;;;-1:-1:-1;;;8692:5:0;;;;8620:80;;;;;;;:::i;8928:216::-;;;;;;;;;;-1:-1:-1;8928:216:0;;;;;:::i;:::-;;:::i;:::-;;;2099:14:1;;2092:22;2074:41;;2062:2;2047:18;8928:216:0;1934:187:1;12844:249:0;;;;;;;;;;;;;:::i;6571:45::-;;;;;;;;;;;;6612:4;6571:45;;8350:88;;;;;;;;;;-1:-1:-1;8423:12:0;;8350:88;;6482:82;;;;;;;;;;;;;;;;9446:370;;;;;;;;;;-1:-1:-1;9446:370:0;;;;;:::i;:::-;;:::i;6775:34::-;;;;;;;;;;-1:-1:-1;6775:34:0;;;;-1:-1:-1;;;;;6775:34:0;;;;;;-1:-1:-1;;;;;2623:32:1;;;2605:51;;2593:2;2578:18;6775:34:0;2459:203:1;17482:138:0;;;;;;;;;;;;;:::i;3298:103::-;;;;;;;;;;-1:-1:-1;3298:103:0;;;;;:::i;:::-;3353:4;3388:5;-1:-1:-1;;;;;3377:16:0;;;3388:5;;3377:16;;3298:103;8444:80;;;;;;;;;;-1:-1:-1;8444:80:0;;5858:2;3000:36:1;;2988:2;2973:18;8444:80:0;2858:184:1;5869:55:0;;;;;;;;;;;;;;;;6158:44;;;;;;;;;;-1:-1:-1;6158:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6929:31;;;;;;;;;;-1:-1:-1;6929:31:0;;;;-1:-1:-1;;;;;6929:31:0;;;9152:122;;;;;;;;;;-1:-1:-1;9152:122:0;;;;;:::i;:::-;;:::i;6967:23::-;;;;;;;;;;;;;;;;6363:32;;;;;;;;;;;;;;;;15727:225;;;;;;;;;;-1:-1:-1;15727:225:0;;;;;:::i;:::-;;:::i;7103:30::-;;;;;;;;;;-1:-1:-1;7103:30:0;;;;;;;;6036:45;;;;;;;;;;-1:-1:-1;6036:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;3524:124;;;;;;;;;;;;;:::i;12263:550::-;;;;;;;;;;-1:-1:-1;12263:550:0;;;;;:::i;:::-;;:::i;5982:45::-;;;;;;;;;;;;;;;;5933:42;;;;;;;;;;;;;;;;8703:78;;;;;;;;;;-1:-1:-1;8755:7:0;8773:5;-1:-1:-1;;;;;8773:5:0;8703:78;;6209:48;;;;;;;;;;-1:-1:-1;6209:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8530:84;;;;;;;;;;-1:-1:-1;8604:7:0;;;;;;;;;;;;-1:-1:-1;;;8604:7:0;;;;8530:84;;6325:31;;;;;;;;;;;;;;;;6891:29;;;;;;;;;;;;;;;9282:156;;;;;;;;;;-1:-1:-1;9282:156:0;;;;;:::i;:::-;;:::i;6440:32::-;;;;;;;;;;;;;;;;6816:35;;;;;;;;;;-1:-1:-1;6816:35:0;;;;-1:-1:-1;;;;;6816:35:0;;;2940:138;;;;;;;;;;-1:-1:-1;2940:138:0;;;;;:::i;:::-;;:::i;7037:25::-;;;;;;;;;;;;;;;;6264:52;;;;;;;;;;-1:-1:-1;6264:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6402:31;;;;;;;;;;;;;;;;16384:708;;;;;;;;;;-1:-1:-1;16384:708:0;;;;;:::i;:::-;;:::i;8787:133::-;;;;;;;;;;-1:-1:-1;8787:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;8889:19:0;;;8871:7;8889:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;8787:133;17100:370;;;;;;;;;;-1:-1:-1;17100:370:0;;;;;:::i;:::-;;:::i;6733:35::-;;;;;;;;;;-1:-1:-1;6733:35:0;;;;-1:-1:-1;;;;;6733:35:0;;;15960:416;;;;;;;;;;-1:-1:-1;15960:416:0;;;;;:::i;:::-;;:::i;3086:204::-;;;;;;;;;;-1:-1:-1;3086:204:0;;;;;:::i;:::-;;:::i;3656:109::-;;;;;;;;;;-1:-1:-1;3656:109:0;;;;;:::i;:::-;;:::i;6860:24::-;;;;;;;;;;-1:-1:-1;6860:24:0;;;;-1:-1:-1;;;;;6860:24:0;;;7069:25;;;;;;;;;;;;;;;;3409:107;;;;;;;;;;-1:-1:-1;3409:107:0;;;;;:::i;:::-;;:::i;6999:31::-;;;;;;;;;;-1:-1:-1;6999:31:0;;;;;;;;14683:353;2881:24;2894:10;2881:12;:24::i;:::-;2873:48;;;;-1:-1:-1;;;2873:48:0;;;;;;;:::i;:::-;;;;;;;;;14810:3:::1;14791:22:::0;::::1;14783:71;;;::::0;-1:-1:-1;;;14783:71:0;;5671:2:1;14783:71:0::1;::::0;::::1;5653:21:1::0;5710:2;5690:18;;;5683:30;5749:34;5729:18;;;5722:62;-1:-1:-1;;;5800:18:1;;;5793:35;5845:19;;14783:71:0::1;5469:401:1::0;14783:71:0::1;14870:9;14865:164;14883:20:::0;;::::1;14865:164;;;14953:6;14925:11;:25;14937:9;;14947:1;14937:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14925:25:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;14925:25:0;:34;;-1:-1:-1;;14925:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14979:38:::1;14996:9:::0;;15006:1;14996:12;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;14979:38;::::0;;-1:-1:-1;;;;;6193:32:1;;;6175:51;;6269:14;;6262:22;6257:2;6242:18;;6235:50;6148:18;14979:38:0::1;;;;;;;14905:3;;14865:164;;;;14683:353:::0;;;:::o;8928:216::-;9032:10;9003:4;9020:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;9020:32:0;;;;;;;;;;:41;;;9077:37;9003:4;;9020:32;;9077:37;;;;9055:6;1038:25:1;;1026:2;1011:18;;892:177;9077:37:0;;;;;;;;-1:-1:-1;9132:4:0;8928:216;;;;;:::o;12844:249::-;3353:4;3388:5;-1:-1:-1;;;;;3388:5:0;2799:10;3377:16;2783:38;;;;-1:-1:-1;;;2783:38:0;;;;;;;:::i;:::-;12908:11:::1;::::0;::::1;;12907:12;12899:44;;;::::0;-1:-1:-1;;;12899:44:0;;6832:2:1;12899:44:0::1;::::0;::::1;6814:21:1::0;6871:2;6851:18;;;6844:30;-1:-1:-1;;;6890:18:1;;;6883:50;6950:18;;12899:44:0::1;6630:344:1::0;12899:44:0::1;12954:11;:18:::0;;-1:-1:-1;;12954:18:0::1;12968:4;12954:18:::0;;::::1;::::0;;;12983:10:::1;:14:::0;;;13021:15:::1;13008:10;:28:::0;13052:33:::1;::::0;2074:41:1;;;13052:33:0::1;::::0;2062:2:1;2047:18;13052:33:0::1;;;;;;;;12844:249::o:0;9446:370::-;-1:-1:-1;;;;;9566:19:0;;9546:4;9566:19;;;:11;:19;;;;;;;;9586:10;9566:31;;;;;;;;-1:-1:-1;;9566:52:0;9563:186;;9668:69;;;;;;;;;;;-1:-1:-1;;;9668:69:0;;;;;;;;-1:-1:-1;;;;;9668:19:0;;-1:-1:-1;9668:19:0;;;:11;:19;;;;;9688:10;9668:31;;;;;;;;;;:69;;9704:6;;9668:35;:69::i;:::-;-1:-1:-1;;;;;9634:19:0;;;;;;:11;:19;;;;;;;;9654:10;9634:31;;;;;;;:103;9563:186;9768:40;9782:6;9790:9;9801:6;9768:13;:40::i;:::-;9761:47;;9446:370;;;;;;:::o;17482:138::-;17596:9;:15;;;;5628:42;17535:7;17578:15;;;;;17563:12;;17535:7;;17596:15;17563:30;;17578:15;17563:30;:::i;:::-;:48;;;;:::i;:::-;17555:57;;17482:138;:::o;9152:122::-;9207:4;9231:35;9239:7;-1:-1:-1;;9231:7:0;:35::i;15727:225::-;2881:24;2894:10;2881:12;:24::i;:::-;2873:48;;;;-1:-1:-1;;;2873:48:0;;;;;;;:::i;:::-;15827:14:::1;:22:::0;;;15860:13:::1;:20:::0;;;15891:18:::1;:27:::0;;;15931:13:::1;:11;:13::i;:::-;15727:225:::0;;;:::o;3524:124::-;3353:4;3388:5;-1:-1:-1;;;;;3388:5:0;2799:10;3377:16;2783:38;;;;-1:-1:-1;;;2783:38:0;;;;;;;:::i;:::-;3605:5:::1;::::0;;3586:25:::1;::::0;-1:-1:-1;;;;;3605:5:0;;::::1;::::0;3586:25:::1;::::0;::::1;3638:1;3622:18:::0;;-1:-1:-1;;;;;;3622:18:0::1;::::0;;3524:124::o;12263:550::-;12355:12;2881:24;2894:10;2881:12;:24::i;:::-;2873:48;;;;-1:-1:-1;;;2873:48:0;;;;;;;:::i;:::-;12412:4:::1;-1:-1:-1::0;;;;;12388:29:0;::::1;::::0;12380:69:::1;;;::::0;-1:-1:-1;;;12380:69:0;;7446:2:1;12380:69:0::1;::::0;::::1;7428:21:1::0;7485:2;7465:18;;;7458:30;7524;7504:18;;;7497:58;7572:18;;12380:69:0::1;7244:352:1::0;12380:69:0::1;12479:4;-1:-1:-1::0;;;;;12463:20:0::1;:12;-1:-1:-1::0;;;;;12463:20:0::1;::::0;12460:119:::1;;12525:10;::::0;:21:::1;::::0;12538:8:::1;12525:21;:::i;:::-;12507:15;:39;12499:68;;;::::0;-1:-1:-1;;;12499:68:0;;7933:2:1;12499:68:0::1;::::0;::::1;7915:21:1::0;7972:2;7952:18;;;7945:30;-1:-1:-1;;;7991:18:1;;;7984:47;8048:18;;12499:68:0::1;7731:341:1::0;12499:68:0::1;12594:6;12604:1;12594:11:::0;12591:96:::1;;12630:45;::::0;-1:-1:-1;;;12630:45:0;;12669:4:::1;12630:45;::::0;::::1;2605:51:1::0;-1:-1:-1;;;;;12630:30:0;::::1;::::0;::::1;::::0;2578:18:1;;12630:45:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12621:54;;12591:96;12704:32;::::0;;-1:-1:-1;;;;;8458:32:1;;8440:51;;8522:2;8507:18;;8500:34;;;12704:32:0::1;::::0;8413:18:1;12704:32:0::1;;;;;;;12756:49;::::0;-1:-1:-1;;;12756:49:0;;12786:10:::1;12756:49;::::0;::::1;8440:51:1::0;8507:18;;;8500:34;;;-1:-1:-1;;;;;12756:29:0;::::1;::::0;::::1;::::0;8413:18:1;;12756:49:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;9282:156::-:0;9362:4;9386:44;9400:10;9412:9;9423:6;9386:13;:44::i;2940:138::-;3353:4;3388:5;-1:-1:-1;;;;;3388:5:0;2799:10;3377:16;2783:38;;;;-1:-1:-1;;;2783:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3002:19:0;::::1;;::::0;;;:14:::1;:19;::::0;;;;;;;;:26;;-1:-1:-1;;3002:26:0::1;3024:4;3002:26:::0;;::::1;::::0;;;3044;;6175:51:1;;;6242:18;;;6235:50;3044:26:0::1;::::0;6148:18:1;3044:26:0::1;;;;;;;;2940:138:::0;:::o;16384:708::-;2881:24;2894:10;2881:12;:24::i;:::-;2873:48;;;;-1:-1:-1;;;2873:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16540:35:0;::::1;16532:91;;;::::0;-1:-1:-1;;;16532:91:0;;8997:2:1;16532:91:0::1;::::0;::::1;8979:21:1::0;9036:2;9016:18;;;9009:30;9075:34;9055:18;;;9048:62;-1:-1:-1;;;9126:18:1;;;9119:42;9178:19;;16532:91:0::1;8795:408:1::0;16532:91:0::1;-1:-1:-1::0;;;;;16642:34:0;::::1;16634:89;;;::::0;-1:-1:-1;;;16634:89:0;;9410:2:1;16634:89:0::1;::::0;::::1;9392:21:1::0;9449:2;9429:18;;;9422:30;9488:34;9468:18;;;9461:62;-1:-1:-1;;;9539:18:1;;;9532:41;9590:19;;16634:89:0::1;9208:407:1::0;16634:89:0::1;-1:-1:-1::0;;;;;16742:35:0;::::1;16734:91;;;::::0;-1:-1:-1;;;16734:91:0;;9822:2:1;16734:91:0::1;::::0;::::1;9804:21:1::0;9861:2;9841:18;;;9834:30;9900:34;9880:18;;;9873:62;-1:-1:-1;;;9951:18:1;;;9944:42;10003:19;;16734:91:0::1;9620:408:1::0;16734:91:0::1;16838:20;:44:::0;;-1:-1:-1;;;;;16838:44:0;;::::1;-1:-1:-1::0;;;;;;16838:44:0;;::::1;::::0;::::1;::::0;;;16893:19:::1;:42:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;16946:20:::1;:44:::0;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;17008:76:::1;::::0;;10273:34:1;;;10338:2;10323:18;;10316:43;;;;10375:18;;;10368:43;17008:76:0::1;::::0;10223:2:1;10208:18;17008:76:0::1;;;;;;;16384:708:::0;;;:::o;17100:370::-;2881:24;2894:10;2881:12;:24::i;:::-;2873:48;;;;-1:-1:-1;;;2873:48:0;;;;;;;:::i;:::-;17215:13:::1;5858:2;17215;:13;:::i;:::-;17211:17;::::0;:1:::1;:17;:::i;:::-;17200:7;:28;;17192:70;;;::::0;-1:-1:-1;;;17192:70:0;;12174:2:1;17192:70:0::1;::::0;::::1;12156:21:1::0;12213:2;12193:18;;;12186:30;12252:31;12232:18;;;12225:59;12301:18;;17192:70:0::1;11972:353:1::0;17192:70:0::1;17305:2;17292:12;;:15;;;;:::i;:::-;17281:7;:27;17273:55;;;::::0;-1:-1:-1;;;17273:55:0;;12754:2:1;17273:55:0::1;::::0;::::1;12736:21:1::0;12793:2;12773:18;;;12766:30;-1:-1:-1;;;12812:18:1;;;12805:45;12867:18;;17273:55:0::1;12552:339:1::0;17273:55:0::1;17341:11;:22:::0;;-1:-1:-1;;17341:22:0::1;::::0;::::1;;::::0;;::::1;::::0;;;17374:13:::1;:23:::0;;;17415:47:::1;::::0;;13064:25:1;;;17341:22:0::1;17450:11:::0;;;13132:14:1;13125:22;13120:2;13105:18;;13098:50;17415:47:0::1;::::0;13037:18:1;17415:47:0::1;;;;;;;17100:370:::0;;:::o;15960:416::-;2881:24;2894:10;2881:12;:24::i;:::-;2873:48;;;;-1:-1:-1;;;2873:48:0;;;;;;;:::i;:::-;16109:12:::1;:28:::0;;;16148:12:::1;:28:::0;;;16187:11:::1;:26:::0;;;16224:12:::1;:28:::0;;;16239:13;16201:12;16274:29:::1;16163:13:::0;16124;16274:29:::1;:::i;:::-;:44;;;;:::i;:::-;:60;;;;:::i;:::-;16263:8;:71:::0;16355:13:::1;:11;:13::i;3086:204::-:0;3353:4;3388:5;-1:-1:-1;;;;;3388:5:0;2799:10;3377:16;2783:38;;;;-1:-1:-1;;;2783:38:0;;;;;;;:::i;:::-;3165:5:::1;::::0;-1:-1:-1;;;;;3165:5:0;;::::1;3158:12:::0;;::::1;::::0;3150:51:::1;;;::::0;-1:-1:-1;;;3150:51:0;;13361:2:1;3150:51:0::1;::::0;::::1;13343:21:1::0;13400:2;13380:18;;;13373:30;13439:28;13419:18;;;13412:56;13485:18;;3150:51:0::1;13159:350:1::0;3150:51:0::1;-1:-1:-1::0;;;;;3212:19:0;::::1;3234:5;3212:19:::0;;;:14:::1;:19;::::0;;;;;;;:27;;-1:-1:-1;;3212:27:0::1;::::0;;3255;;6175:51:1;;;6242:18;;;6235:50;;;;3255:27:0::1;::::0;6148:18:1;3255:27:0::1;6007:284:1::0;3656:109:0;3353:4;3388:5;-1:-1:-1;;;;;3388:5:0;2799:10;3377:16;2783:38;;;;-1:-1:-1;;;2783:38:0;;;;;;;:::i;:::-;3729:28:::1;3748:8;3729:18;:28::i;:::-;3656:109:::0;:::o;3409:107::-;-1:-1:-1;;;;;3489:19:0;3465:4;3489:19;;;:14;:19;;;;;;;;;3409:107::o;546:192::-;632:7;668:12;660:6;;;;652:29;;;;-1:-1:-1;;;652:29:0;;;;;;;;:::i;:::-;-1:-1:-1;692:9:0;704:5;708:1;704;:5;:::i;:::-;692:17;546:192;-1:-1:-1;;;;;546:192:0:o;9824:1158::-;9936:6;;9916:4;;9936:6;;9933:63;;;9952:41;9967:6;9975:9;9986:6;9952:14;:41::i;:::-;9945:48;;;;9933:63;-1:-1:-1;;;;;10012:22:0;;;;;;:14;:22;;;;;;;;10011:23;:53;;;;-1:-1:-1;;;;;;10039:25:0;;;;;;:14;:25;;;;;;;;10038:26;10011:53;10008:127;;;10088:11;;;;10080:43;;;;-1:-1:-1;;;10080:43:0;;13716:2:1;10080:43:0;;;13698:21:1;13755:2;13735:18;;;13728:30;-1:-1:-1;;;13774:18:1;;;13767:50;13834:18;;10080:43:0;13514:344:1;10080:43:0;-1:-1:-1;;;;;10152:22:0;;;;;;:14;:22;;;;;;;;10151:23;:55;;;;-1:-1:-1;;;;;;10179:27:0;;;;;;:19;:27;;;;;;;;10178:28;10151:55;:90;;;;-1:-1:-1;;;;;;10211:30:0;;;;;;:19;:30;;;;;;;;10210:31;10151:90;:111;;;;;10258:4;-1:-1:-1;;;;;10245:17:0;:9;-1:-1:-1;;;;;10245:17:0;;;10151:111;10147:230;;;10322:15;;-1:-1:-1;;;;;10288:20:0;;;;;;:9;:20;;;;;;:29;;10311:6;;10288:29;:::i;:::-;10287:50;;10279:86;;;;-1:-1:-1;;;10279:86:0;;14065:2:1;10279:86:0;;;14047:21:1;14104:2;14084:18;;;14077:30;14143:26;14123:18;;;14116:54;14187:18;;10279:86:0;13863:348:1;10279:86:0;10453:12;;10443:6;:22;;10442:51;;;-1:-1:-1;;;;;;10470:23:0;;;;;;:15;:23;;;;;;;;10442:51;:81;;;-1:-1:-1;;;;;;10497:26:0;;;;;;:15;:26;;;;;;;;10442:81;10434:115;;;;-1:-1:-1;;;10434:115:0;;14418:2:1;10434:115:0;;;14400:21:1;14457:2;14437:18;;;14430:30;-1:-1:-1;;;14476:18:1;;;14469:51;14537:18;;10434:115:0;14216:345:1;10434:115:0;10565:16;:14;:16::i;:::-;10562:35;;;10584:10;:8;:10::i;:::-;10629:53;;;;;;;;;;;-1:-1:-1;;;10629:53:0;;;;;;;;-1:-1:-1;;;;;10629:17:0;;-1:-1:-1;10629:17:0;;;:9;:17;;;;;;;;:53;;10651:6;;10629:21;:53::i;:::-;-1:-1:-1;;;;;10609:17:0;;;;;;:9;:17;;;;;;;;:73;;;;10721:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;10744:22:0;;;;;;:11;:22;;;;;;;;10721:45;10720:93;;10779:34;10787:6;10795;10803:9;10779:7;:34::i;:::-;10720:93;;;10770:6;10720:93;-1:-1:-1;;;;;10849:20:0;;;;;;:9;:20;;;;;;10695:118;;-1:-1:-1;10849:40:0;;10695:118;10849:24;:40::i;:::-;-1:-1:-1;;;;;10826:20:0;;;;;;;:9;:20;;;;;;;:63;;;;10909:43;;;;;;;;;;10937:14;1038:25:1;;1026:2;1011:18;;892:177;10909:43:0;;;;;;;;-1:-1:-1;10970:4:0;;9824:1158;-1:-1:-1;;;;9824:1158:0:o;15044:675::-;15135:3;15095:36;15127:3;15095:27;15108:13;;15095:8;;:12;;:27;;;;:::i;:::-;:31;;:36::i;:::-;:43;;15087:87;;;;-1:-1:-1;;;15087:87:0;;14768:2:1;15087:87:0;;;14750:21:1;14807:2;14787:18;;;14780:30;14846:33;14826:18;;;14819:61;14897:18;;15087:87:0;14566:355:1;15087:87:0;15234:3;15193:37;15226:3;15193:28;15206:14;;15193:8;;:12;;:28;;;;:::i;:37::-;:44;;15185:89;;;;-1:-1:-1;;;15185:89:0;;15128:2:1;15185:89:0;;;15110:21:1;;;15147:18;;;15140:30;15206:34;15186:18;;;15179:62;15258:18;;15185:89:0;14926:356:1;15185:89:0;15350:3;15293:53;15342:3;15293:44;15323:13;;15306:14;;:30;;;;:::i;:::-;15293:8;;;:12;:44::i;:53::-;:60;;15285:109;;;;-1:-1:-1;;;15285:109:0;;15489:2:1;15285:109:0;;;15471:21:1;15528:2;15508:18;;;15501:30;15567:34;15547:18;;;15540:62;-1:-1:-1;;;15618:18:1;;;15611:34;15662:19;;15285:109:0;15287:400:1;15285:109:0;15458:3;15413:41;15450:3;15413:32;15426:18;;15413:8;;:12;;:32;;;;:::i;:41::-;:48;;15405:97;;;;-1:-1:-1;;;15405:97:0;;15894:2:1;15405:97:0;;;15876:21:1;15933:2;15913:18;;;15906:30;15972:34;15952:18;;;15945:62;-1:-1:-1;;;16023:18:1;;;16016:34;16067:19;;15405:97:0;15692:400:1;15405:97:0;15520:191;15537:36;15569:3;15537:27;15550:13;;15537:8;;:12;;:27;;;;:::i;:36::-;15595:37;15628:3;15595:28;15608:14;;15595:8;;:12;;:28;;;;:::i;:37::-;15654:41;15691:3;15654:32;15667:18;;15654:8;;:12;;:32;;;;:::i;:41::-;15520:191;;;16317:4:1;16305:17;;;16287:36;;16359:17;;;16354:2;16339:18;;16332:45;16413:17;;16393:18;;;16386:45;;;;16275:2;16260:18;15520:191:0;16097:340:1;3773:185:0;-1:-1:-1;;;;;3847:22:0;;3839:31;;;;;;3907:5;;;3886:37;;-1:-1:-1;;;;;3886:37:0;;;;3907:5;;;3886:37;;;3934:5;:16;;-1:-1:-1;;;;;;3934:16:0;-1:-1:-1;;;;;3934:16:0;;;;;;;;;;3773:185::o;10994:330::-;11124:53;;;;;;;;;;;-1:-1:-1;;;11124:53:0;;;;;;;;-1:-1:-1;;;;;11124:17:0;;11087:4;11124:17;;;:9;:17;;;;;;;:53;;11146:6;;11124:21;:53::i;:::-;-1:-1:-1;;;;;11104:17:0;;;;;;;:9;:17;;;;;;:73;;;;11211:20;;;;;;;:32;;11236:6;11211:24;:32::i;:::-;-1:-1:-1;;;;;11188:20:0;;;;;;;:9;:20;;;;;;;:55;;;;11259:35;;;;;;;;;;11287:6;1038:25:1;;1026:2;1011:18;;892:177;11259:35:0;;;;;;;;-1:-1:-1;11312:4:0;10994:330;;;;;:::o;12058:197::-;12107:4;12131:10;-1:-1:-1;;;;;12145:4:0;12131:18;;;;;:38;;-1:-1:-1;12163:6:0;;;;12162:7;12131:38;:62;;;;-1:-1:-1;12182:11:0;;;;12131:62;:116;;;;-1:-1:-1;;12234:13:0;;12224:4;12206:24;;;;:9;:24;;;;;;:41;;;12058:197::o;13101:1574::-;7237:6;:13;;-1:-1:-1;;7237:13:0;7246:4;7237:13;;;13174:8:::1;::::0;7237:6;13253:15:::1;13174:8:::0;13267:1:::1;13253:15;:::i;:::-;13238:12;;13222:13;;:28;;;;:::i;:::-;13221:48;;;;:::i;:::-;13195:74;;13280:20;13319:15;13303:13;;:31;;;;:::i;:::-;13371:16;::::0;;13385:1:::1;13371:16:::0;;;;;::::1;::::0;;13280:54;;-1:-1:-1;13347:21:0::1;::::0;13371:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;13371:16:0::1;13347:40;;13416:4;13398;13403:1;13398:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;13398:23:0::1;;;-1:-1:-1::0;;;;;13398:23:0::1;;;::::0;::::1;13442:4;13432;13437:1;13432:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13432:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;13459:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;13459:188:0;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;13531:12;;13459:6:::1;::::0;13574:4;;13601::::1;::::0;13621:15:::1;::::0;13459:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;13743:12:0::1;::::0;13680:21:::1;::::0;-1:-1:-1;13743:16:0::1;::::0;-1:-1:-1;13758:1:0::1;::::0;13743:16:::1;:::i;:::-;13728:32;::::0;:11;:32:::1;:::i;:::-;13714:46:::0;-1:-1:-1;13781:26:0::1;13840:15;13714:46:::0;13854:1:::1;13840:15;:::i;:::-;13823:12;::::0;13811:24:::1;::::0;:9;:24:::1;:::i;:::-;13810:46;;;;:::i;:::-;13781:75;;13867:26;13925:11;13909:12;;13897:9;:24;;;;:::i;:::-;13896:40;;;;:::i;:::-;13867:69;;13947:25;14003:11;13988;;13976:9;:23;;;;:::i;:::-;13975:39;;;;:::i;:::-;13947:67;;14025:26;14083:11;14067:12;;14055:9;:24;;;;:::i;:::-;14054:40;;;;:::i;:::-;14115:20;::::0;14107:58:::1;::::0;14025:69;;-1:-1:-1;;;;;;14115:20:0::1;::::0;14107:58;::::1;;;::::0;14146:18;;14115:20:::1;14107:58:::0;14115:20;14107:58;14146:18;14115:20;14107:58;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;14184:19:0::1;::::0;14176:56:::1;::::0;-1:-1:-1;;;;;14184:19:0;;::::1;::::0;14176:56;::::1;;;::::0;14214:17;;14184:19:::1;14176:56:::0;14184:19;14176:56;14214:17;14184:19;14176:56;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;14251:20:0::1;::::0;14243:58:::1;::::0;-1:-1:-1;;;;;14251:20:0;;::::1;::::0;14243:58;::::1;;;::::0;14282:18;;14251:20:::1;14243:58:::0;14251:20;14243:58;14282:18;14251:20;14243:58;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;14317:19:0;;14314:354:::1;;14352:6;::::0;:236:::1;::::0;-1:-1:-1;;;14352:236:0;;14428:4:::1;14352:236;::::0;::::1;17900:34:1::0;;;17950:18;;;17943:34;;;14352:6:0::1;17993:18:1::0;;;17986:34;;;18036:18;;;18029:34;18079:19;;;18072:44;14558:15:0::1;18132:19:1::0;;;18125:35;-1:-1:-1;;;;;14352:6:0;;::::1;::::0;:22:::1;::::0;14382:18;;17834:19:1;;14352:236:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;14608:48:0::1;::::0;;18656:25:1;;;18712:2;18697:18;;18690:34;;;14608:48:0::1;::::0;-1:-1:-1;18629:18:1;14608:48:0::1;;;;;;;14314:354;-1:-1:-1::0;;7255:6:0;:14;;-1:-1:-1;;7255:14:0;;;-1:-1:-1;;;;;;;13101:1574:0:o;11332:718::-;11423:7;11446:11;;;:28;;-1:-1:-1;11461:8:0;;:13;11446:28;11443:72;;;-1:-1:-1;11497:6:0;11490:13;;11443:72;11548:18;;-1:-1:-1;;;;;11595:4:0;11582:17;;;;;;11579:154;;-1:-1:-1;11629:14:0;;11579:154;;;11674:4;-1:-1:-1;;;;;11664:14:0;:6;-1:-1:-1;;;;;11664:14:0;;11661:72;;-1:-1:-1;11708:13:0;;11661:72;11745:17;11765:62;11806:20;6612:4;11823:3;11806:20;:::i;:::-;11765:36;11790:10;11765:20;11776:8;;11765:6;:10;;:20;;;;:::i;:::-;:24;;:36::i;:62::-;11745:82;;11871:12;11857:10;;11844;;:23;;;;:::i;:::-;11843:40;11840:162;;;11911:79;11969:20;6612:4;11986:3;11969:20;:::i;:::-;11911:53;11953:10;11911:37;11944:3;11922:19;6612:4;11922:2;:19;:::i;:::-;:25;;;;:::i;:::-;11911:6;;:10;:37::i;:79::-;11899:91;;11840:162;12021:21;:6;12032:9;12021:10;:21::i;:::-;12014:28;11332:718;-1:-1:-1;;;;;;11332:718:0:o;217:181::-;275:7;;307:5;311:1;307;:5;:::i;:::-;295:17;;336:1;331;:6;;323:46;;;;-1:-1:-1;;;323:46:0;;18937:2:1;323:46:0;;;18919:21:1;18976:2;18956:18;;;18949:30;19015:29;18995:18;;;18988:57;19062:18;;323:46:0;18735:351:1;744:250:0;802:7;826:1;831;826:6;822:47;;-1:-1:-1;856:1:0;849:8;;822:47;881:9;893:5;897:1;893;:5;:::i;:::-;881:17;-1:-1:-1;926:1:0;917:5;921:1;881:17;917:5;:::i;:::-;:10;909:56;;;;-1:-1:-1;;;909:56:0;;19293:2:1;909:56:0;;;19275:21:1;19332:2;19312:18;;;19305:30;19371:34;19351:18;;;19344:62;-1:-1:-1;;;19422:18:1;;;19415:31;19463:19;;909:56:0;19091:397:1;1000:132:0;1058:7;1085:39;1089:1;1092;1085:39;;;;;;;;;;;;;;;;;:3;:39::i;404:136::-;462:7;489:43;493:1;496;489:43;;;;;;;;;;;;;;;;;:3;:43::i;1138:189::-;1224:7;1259:12;1252:5;1244:28;;;;-1:-1:-1;;;1244:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1283:9:0;1295:5;1299:1;1295;:5;:::i;14:118:1:-;100:5;93:13;86:21;79:5;76:32;66:60;;122:1;119;112:12;137:750;229:6;237;245;298:2;286:9;277:7;273:23;269:32;266:52;;;314:1;311;304:12;266:52;354:9;341:23;383:18;424:2;416:6;413:14;410:34;;;440:1;437;430:12;410:34;478:6;467:9;463:22;453:32;;523:7;516:4;512:2;508:13;504:27;494:55;;545:1;542;535:12;494:55;585:2;572:16;611:2;603:6;600:14;597:34;;;627:1;624;617:12;597:34;682:7;675:4;665:6;662:1;658:14;654:2;650:23;646:34;643:47;640:67;;;703:1;700;693:12;640:67;734:4;726:13;;;;-1:-1:-1;758:6:1;-1:-1:-1;;799:20:1;;786:34;829:28;786:34;829:28;:::i;:::-;876:5;866:15;;;137:750;;;;;:::o;1074:418::-;1223:2;1212:9;1205:21;1186:4;1255:6;1249:13;1298:6;1293:2;1282:9;1278:18;1271:34;1357:6;1352:2;1344:6;1340:15;1335:2;1324:9;1320:18;1314:50;1413:1;1408:2;1399:6;1388:9;1384:22;1380:31;1373:42;1483:2;1476;1472:7;1467:2;1459:6;1455:15;1451:29;1440:9;1436:45;1432:54;1424:62;;;1074:418;;;;:::o;1497:173::-;1565:20;;-1:-1:-1;;;;;1614:31:1;;1604:42;;1594:70;;1660:1;1657;1650:12;1594:70;1497:173;;;:::o;1675:254::-;1743:6;1751;1804:2;1792:9;1783:7;1779:23;1775:32;1772:52;;;1820:1;1817;1810:12;1772:52;1843:29;1862:9;1843:29;:::i;:::-;1833:39;1919:2;1904:18;;;;1891:32;;-1:-1:-1;;;1675:254:1:o;2126:328::-;2203:6;2211;2219;2272:2;2260:9;2251:7;2247:23;2243:32;2240:52;;;2288:1;2285;2278:12;2240:52;2311:29;2330:9;2311:29;:::i;:::-;2301:39;;2359:38;2393:2;2382:9;2378:18;2359:38;:::i;:::-;2349:48;;2444:2;2433:9;2429:18;2416:32;2406:42;;2126:328;;;;;:::o;2667:186::-;2726:6;2779:2;2767:9;2758:7;2754:23;2750:32;2747:52;;;2795:1;2792;2785:12;2747:52;2818:29;2837:9;2818:29;:::i;3274:316::-;3351:6;3359;3367;3420:2;3408:9;3399:7;3395:23;3391:32;3388:52;;;3436:1;3433;3426:12;3388:52;-1:-1:-1;;3459:23:1;;;3529:2;3514:18;;3501:32;;-1:-1:-1;3580:2:1;3565:18;;;3552:32;;3274:316;-1:-1:-1;3274:316:1:o;3595:334::-;3672:6;3680;3688;3741:2;3729:9;3720:7;3716:23;3712:32;3709:52;;;3757:1;3754;3747:12;3709:52;3780:29;3799:9;3780:29;:::i;:::-;3770:39;;3828:38;3862:2;3851:9;3847:18;3828:38;:::i;:::-;3818:48;;3885:38;3919:2;3908:9;3904:18;3885:38;:::i;:::-;3875:48;;3595:334;;;;;:::o;3934:260::-;4002:6;4010;4063:2;4051:9;4042:7;4038:23;4034:32;4031:52;;;4079:1;4076;4069:12;4031:52;4102:29;4121:9;4102:29;:::i;:::-;4092:39;;4150:38;4184:2;4173:9;4169:18;4150:38;:::i;:::-;4140:48;;3934:260;;;;;:::o;4199:309::-;4264:6;4272;4325:2;4313:9;4304:7;4300:23;4296:32;4293:52;;;4341:1;4338;4331:12;4293:52;4380:9;4367:23;4399:28;4421:5;4399:28;:::i;4513:385::-;4599:6;4607;4615;4623;4676:3;4664:9;4655:7;4651:23;4647:33;4644:53;;;4693:1;4690;4683:12;4644:53;-1:-1:-1;;4716:23:1;;;4786:2;4771:18;;4758:32;;-1:-1:-1;4837:2:1;4822:18;;4809:32;;4888:2;4873:18;4860:32;;-1:-1:-1;4513:385:1;-1:-1:-1;4513:385:1:o;5129:335::-;5331:2;5313:21;;;5370:2;5350:18;;;5343:30;-1:-1:-1;;;5404:2:1;5389:18;;5382:41;5455:2;5440:18;;5129:335::o;5875:127::-;5936:10;5931:3;5927:20;5924:1;5917:31;5967:4;5964:1;5957:15;5991:4;5988:1;5981:15;6296:329;6498:2;6480:21;;;6537:1;6517:18;;;6510:29;-1:-1:-1;;;6570:2:1;6555:18;;6548:36;6616:2;6601:18;;6296:329::o;6979:127::-;7040:10;7035:3;7031:20;7028:1;7021:31;7071:4;7068:1;7061:15;7095:4;7092:1;7085:15;7111:128;7178:9;;;7199:11;;;7196:37;;;7213:18;;:::i;7601:125::-;7666:9;;;7687:10;;;7684:36;;;7700:18;;:::i;8077:184::-;8147:6;8200:2;8188:9;8179:7;8175:23;8171:32;8168:52;;;8216:1;8213;8206:12;8168:52;-1:-1:-1;8239:16:1;;8077:184;-1:-1:-1;8077:184:1:o;8545:245::-;8612:6;8665:2;8653:9;8644:7;8640:23;8636:32;8633:52;;;8681:1;8678;8671:12;8633:52;8713:9;8707:16;8732:28;8754:5;8732:28;:::i;10422:416::-;10511:1;10548:5;10511:1;10562:270;10583:7;10573:8;10570:21;10562:270;;;10642:4;10638:1;10634:6;10630:17;10624:4;10621:27;10618:53;;;10651:18;;:::i;:::-;10701:7;10691:8;10687:22;10684:55;;;10721:16;;;;10684:55;10800:22;;;;10760:15;;;;10562:270;;;10566:3;10422:416;;;;;:::o;10843:806::-;10892:5;10922:8;10912:80;;-1:-1:-1;10963:1:1;10977:5;;10912:80;11011:4;11001:76;;-1:-1:-1;11048:1:1;11062:5;;11001:76;11093:4;11111:1;11106:59;;;;11179:1;11174:130;;;;11086:218;;11106:59;11136:1;11127:10;;11150:5;;;11174:130;11211:3;11201:8;11198:17;11195:43;;;11218:18;;:::i;:::-;-1:-1:-1;;11274:1:1;11260:16;;11289:5;;11086:218;;11388:2;11378:8;11375:16;11369:3;11363:4;11360:13;11356:36;11350:2;11340:8;11337:16;11332:2;11326:4;11323:12;11319:35;11316:77;11313:159;;;-1:-1:-1;11425:19:1;;;11457:5;;11313:159;11504:34;11529:8;11523:4;11504:34;:::i;:::-;11574:6;11570:1;11566:6;11562:19;11553:7;11550:32;11547:58;;;11585:18;;:::i;:::-;11623:20;;10843:806;-1:-1:-1;;;10843:806:1:o;11654:140::-;11712:5;11741:47;11782:4;11772:8;11768:19;11762:4;11741:47;:::i;11799:168::-;11872:9;;;11903;;11920:15;;;11914:22;;11900:37;11890:71;;11941:18;;:::i;12330:217::-;12370:1;12396;12386:132;;12440:10;12435:3;12431:20;12428:1;12421:31;12475:4;12472:1;12465:15;12503:4;12500:1;12493:15;12386:132;-1:-1:-1;12532:9:1;;12330:217::o;16574:980::-;16836:4;16884:3;16873:9;16869:19;16915:6;16904:9;16897:25;16941:2;16979:6;16974:2;16963:9;16959:18;16952:34;17022:3;17017:2;17006:9;17002:18;16995:31;17046:6;17081;17075:13;17112:6;17104;17097:22;17150:3;17139:9;17135:19;17128:26;;17189:2;17181:6;17177:15;17163:29;;17210:1;17220:195;17234:6;17231:1;17228:13;17220:195;;;17299:13;;-1:-1:-1;;;;;17295:39:1;17283:52;;17390:15;;;;17355:12;;;;17331:1;17249:9;17220:195;;;-1:-1:-1;;;;;;;17471:32:1;;;;17466:2;17451:18;;17444:60;-1:-1:-1;;;17535:3:1;17520:19;17513:35;17432:3;16574:980;-1:-1:-1;;;16574:980:1:o;18171:306::-;18259:6;18267;18275;18328:2;18316:9;18307:7;18303:23;18299:32;18296:52;;;18344:1;18341;18334:12;18296:52;18373:9;18367:16;18357:26;;18423:2;18412:9;18408:18;18402:25;18392:35;;18467:2;18456:9;18452:18;18446:25;18436:35;;18171:306;;;;;:::o

Swarm Source

ipfs://8e1dc3aee220be44980a5fa78b7c867c678f3d585aa1e1e1b164af3496675b56
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.