ETH Price: $2,432.75 (+1.50%)
 

Overview

Max Total Supply

1,000,000,000 KORAT

Holders

13

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
5,713,691.849079697467706415 KORAT

Value
$0.00
0x0Db3101a3853dBb6485024B72A4aE318230E3c95
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

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

Contract Name:
ERC20AppContract

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/*

  https://koratcoin.com

*/

// SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.21;

abstract contract Context {
    function _msgSender() internal view returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);
    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
    function factory() external view returns (address);
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    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;
}

contract ERC20AppContract is Context, IERC20 {
    // Ownership moved to in-contract for customizability.
    address public _owner;

    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public isExcludedFromMaxWalletRestrictions;
    mapping (address => bool) private _isblacklisted;


    bool private sameBlockActive = false;
    mapping (address => uint256) private lastTrade;   

    bool private isInitialized = false;
    
    mapping (address => uint256) firstBuy;
    
    uint256 private startingSupply;

    string private _name;
    string private _symbol;
//==========================
    // FEES
    struct taxes {
    uint buyFee;
    uint sellFee;
    uint transferFee;
    }

    taxes public Fees = taxes(
    {buyFee: 500, sellFee: 4000, transferFee: 2000});
//==========================
    // Max Limits

    struct MaxLimits {
    uint maxBuy;
    uint maxSell;
    uint maxTransfer;
    }

    MaxLimits public maxFees = MaxLimits(
    {maxBuy: 9999, maxSell: 9999, maxTransfer: 9999});
//==========================    
    //Proportions of Taxes
    struct feeProportions {
    uint liquidity;
    uint developer;
    }

    feeProportions public Ratios = feeProportions(
    { liquidity: 1, developer: 99});

    uint256 private constant masterTaxDivisor = 10000;
    uint256 private constant MAX = ~uint256(0);
    uint8 private _decimals;
 
    uint256 private _tTotal = startingSupply * 10**_decimals;
    uint256 private _tFeeTotal;

    IUniswapV2Router02 public dexRouter;
    address public lpPair;


    address constant private _routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD; // Receives tokens, deflates supply, increases price floor.
    
    address public _devWallet;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = false;
    
    uint256 private maxTxPercent;
    uint256 private maxTxDivisor;
    uint256 private _maxTxAmount;
    
    uint256 private maxWalletPercent;
    uint256 private maxWalletDivisor;
    uint256 private _maxWalletSize;

    uint256 private swapThreshold;
    uint256 private swapAmount;

    bool public _hasLiqBeenAdded = false;
    
    uint256 private _liqAddStatus = 0;
    uint256 private _liqAddBlock = 0;
    uint256 private _liqAddStamp = 0;
    uint256 private _initialLiquidityAmount = 0; // make constant

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Caller != owner.");
        _;
    }
    
    constructor () {
        _owner = msg.sender;
    }

    receive() external payable {}

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and renouncements.
    // This allows for removal of ownership privelages from the owner once renounced or transferred.
    function owner() public view returns (address) {
        return _owner;
    }

    function transferOwner(address newOwner) external onlyOwner() {
        require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address.");
        require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address.");
        setExcludedFromFees(_owner, false);
        setExcludedFromFees(newOwner, true);
        
        if (_devWallet == payable(_owner))
            _devWallet = payable(newOwner);
        
        _allowances[_owner][newOwner] = balanceOf(_owner);
        if(balanceOf(_owner) > 0) {
            _transfer(_owner, newOwner, balanceOf(_owner));
        }
        
        _owner = newOwner;
        emit OwnershipTransferred(_owner, newOwner);
        
    }

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

    function totalSupply() external view override returns (uint256) { return _tTotal; }
    function decimals() external view override returns (uint8) { return _decimals; }
    function symbol() external view override returns (string memory) { return _symbol; }
    function name() external view 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 balanceOf(address account) public view override returns (uint256) {
        return _tOwned[account];
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function _approve(address sender, address spender, uint256 amount) private {
        require(sender != address(0), "ERC20: Zero Address");
        require(spender != address(0), "ERC20: Zero Address");

        _allowances[sender][spender] = amount;
        emit Approval(sender, spender, amount);
    }

    function approveMax(address spender) public returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function getFirstBuy(address account) public view returns (uint256) {
        return firstBuy[account];
    }

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

        return _transfer(sender, recipient, amount);
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue);
        return true;
    }

    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }
    
    function setNewRouter(address newRouter) public onlyOwner() {
        IUniswapV2Router02 _newRouter = IUniswapV2Router02(newRouter);
        address get_pair = IUniswapV2Factory(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (get_pair == address(0)) {
            lpPair = IUniswapV2Factory(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
    }

    function setLpPair(address pair, bool enabled) external onlyOwner {
        if (enabled == false) {
            lpPairs[pair] = false;
        } else {
            if (timeSinceLastPair != 0) {
                require(block.timestamp - timeSinceLastPair > 1 weeks, "One week cooldown.");
            }
            lpPairs[pair] = true;
            timeSinceLastPair = block.timestamp;
        }
    }

    function setupComplete(uint256 rInitializer) private  {
        require (_liqAddStatus == 0, "Error.");
        _liqAddStatus = rInitializer;
    }


    function intializeContract() external onlyOwner payable {
        require(!isInitialized, "Contract already initialized.");
        require(_liqAddStatus == 0);
        
        _name = "Korat Coin";
        _symbol = "KORAT";
        _decimals = 18;
        startingSupply = 1_000_000_000;
        _tTotal = startingSupply * 10**_decimals;

        dexRouter = IUniswapV2Router02(_routerAddress);
        lpPair = IUniswapV2Factory(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;
        _allowances[address(this)][address(dexRouter)] = type(uint256).max;

        _devWallet = address(owner());

        maxTxPercent = 200; // Max Transaction Amount: 100 = 1%
        maxTxDivisor = 10000;
        _maxTxAmount = (_tTotal * maxTxPercent) / maxTxDivisor;
        
        maxWalletPercent = 400; //Max Wallet 100: 1%
        maxWalletDivisor = 10000;
        _maxWalletSize = (_tTotal * maxWalletPercent) / maxWalletDivisor;
        
        swapThreshold = (_tTotal * 5) / 10_000;
        swapAmount = (_tTotal * 5) / 1_000;

        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[DEAD] = true;
        _liquidityHolders[owner()] = true;


        approve(_routerAddress, type(uint256).max);
        approve(owner(), type(uint256).max);


        isInitialized = true;
        _tOwned[owner()] = _tTotal;
        _approve(owner(), _routerAddress, _tTotal);
        emit Transfer(address(0), owner(), _tTotal);
 
        _approve(_owner, address(dexRouter), type(uint256).max);
        _approve(address(this), address(dexRouter), type(uint256).max);

    
        _transfer(_owner, address(this), balanceOf(_owner));

        dexRouter.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
        setupComplete(1);
    }

    function setExcludedFromFees(address account, bool enabled) public onlyOwner {
        _isExcludedFromFees[account] = enabled;
    }


    function excludeFromWalletRestrictions(address excludedAddress) public onlyOwner{
        isExcludedFromMaxWalletRestrictions[excludedAddress] = true;
    }

    function revokeExcludedFromWalletRestrictions(address excludedAddress) public onlyOwner{
        isExcludedFromMaxWalletRestrictions[excludedAddress] = false;
    }
    

    function setTaxRatios(uint _liquidity, uint _developer) external onlyOwner {
        require ( (_liquidity+_developer) == 1100, "limit taxes");
        Ratios.liquidity = _liquidity;
        Ratios.developer = _developer;
        }


    function setFeeTaxes(uint _buyFee, uint _sellFee, uint _transferFee) external onlyOwner {
        require(_buyFee <= maxFees.maxBuy
                && _sellFee <= maxFees.maxSell
                && _transferFee <= maxFees.maxTransfer,
                "Cannot exceed maximums.");
         Fees.buyFee = _buyFee;
         Fees.sellFee = _sellFee;
         Fees.transferFee = _transferFee;

    }

    function setMaxTxPercent(uint percent, uint divisor) external onlyOwner {
        uint256 check = (_tTotal * percent) / divisor;
        require(check >= (_tTotal / 300), "Must be above 0.33~% of total supply.");
        _maxTxAmount = check;
    }

    function setMaxWalletPercent(uint percent, uint divisor) external onlyOwner {
        uint256 check = (_tTotal * percent) / divisor;
        require(check >= (_tTotal / 300), "Must be above 0.33~% of total supply.");
        _maxWalletSize = check;

    }

    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
    }

    function setFeeDivWallets(address payable developerWallet) external onlyOwner {
        _devWallet = payable(developerWallet);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }
     
    function updateBlist(address[] memory blacklisted_, bool status_) public onlyOwner {
        for (uint i = 0; i < blacklisted_.length; i++) {
            if (!lpPairs[blacklisted_[i]] && blacklisted_[i] != address(_routerAddress)) {
                _isblacklisted[blacklisted_[i]] = status_;
            }
        }
    }

    function _areLimits(address from, address to) private view returns (bool) {
        return from != owner()
            && to != owner()
            && !_liquidityHolders[to]
            && !_liquidityHolders[from]
            && to != DEAD
            && to != address(0)
            && from != address(this);
    }

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        require(from != address(0), "ERC20: Zero address.");
        require(to != address(0), "ERC20: Zero address.");
        require(amount > 0, "Must >0.");
        require(!_isblacklisted[to] && !_isblacklisted[from],"unable to trade");
        if(_areLimits(from, to)) {
            if (sameBlockActive) {
                if (lpPairs[from]){
                    require(lastTrade[to] != block.number);
                    lastTrade[to] = block.number;
                    } 
                else {
                    require(lastTrade[from] != block.number);
                    lastTrade[from] = block.number;
                    }
            }
            if(!(isExcludedFromMaxWalletRestrictions[from] || isExcludedFromMaxWalletRestrictions[to])) {
                if(lpPairs[from] || lpPairs[to]){
                require(amount <= _maxTxAmount, "Exceeds the maxTxAmount.");
                }
                if(to != _routerAddress && !lpPairs[to]) {
                    require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                }

            }
            
        }

        if (_tOwned[to] == 0) {
            firstBuy[to] = block.timestamp;
        }

        bool takeFee = true;
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;
        }

        if (lpPairs[to]) {
            if (!inSwapAndLiquify
                && swapAndLiquifyEnabled
            ) {
                uint256 contractTokenBalance = balanceOf(address(this));
                if (contractTokenBalance >= swapThreshold) {
                    if(contractTokenBalance >= swapAmount) { contractTokenBalance = swapAmount; }
                    swapAndLiquify(contractTokenBalance);
                }
            }      
        } 
        return _finalizeTransfer(from, to, amount, takeFee);
    }

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        if (Ratios.liquidity + Ratios.developer == 0)
            return;
        uint256 toLiquify = ((contractTokenBalance * Ratios.liquidity) / (Ratios.liquidity + Ratios.developer) ) / 2;

        uint256 toSwapForEth = contractTokenBalance - toLiquify;
        swapTokensForEth(toSwapForEth);

        uint256 currentBalance = address(this).balance;
        uint256 liquidityBalance = ((currentBalance * Ratios.liquidity) / (Ratios.liquidity + Ratios.developer) ) / 2;

        if (toLiquify > 0) {
            addLiquidity(toLiquify, liquidityBalance);
            emit SwapAndLiquify(toLiquify, liquidityBalance, toLiquify);
        }
        if (address(this).balance > 0) {
            bool success = true;
            (success,) = address(_devWallet).call{value: address(this).balance}("");
        }
    }

    function swapTokensForEth(uint256 tokenAmount) internal {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        dexRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
    }

    function _checkLiquidityAdd(address from, address to) private {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_areLimits(from, to) && to == lpPair) {
                _liqAddBlock = block.number;

            _liquidityHolders[from] = true;
            _hasLiqBeenAdded = true;
            _liqAddStamp = block.timestamp;

            swapAndLiquifyEnabled = true;
            emit SwapAndLiquifyEnabledUpdated(true);
        }
    }

    function _finalizeTransfer(address from, address to, uint256 amount, bool takeFee) private returns (bool) {
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _areLimits(from, to)) {
                revert("Only owner can transfer at this time.");
            }
        } 
        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxFees(from, to, amount) : amount; //A
        _tOwned[to] += amountReceived;

        emit Transfer(from, to, amountReceived);
        return true;
    }

    function takeTaxFees(address from, address to, uint256 amount) internal returns (uint256) {
        uint256 currentFee;

        if (to == lpPair) {
            currentFee=Fees.sellFee;
            } 

        else if (from == lpPair) {currentFee = Fees.buyFee;} 

        else {currentFee = Fees.transferFee;}

        if (_areLimits(from, to)){
            if (_liqAddStatus == 0 || _liqAddStatus != (1)) {
                revert();
            }
        }
        uint256 feeAmount = (amount * currentFee / masterTaxDivisor);
        _tOwned[address(this)] += (feeAmount);
        emit Transfer(from, address(this), feeAmount);
        return amount - feeAmount;
    }

    function recoverStuckETH() external onlyOwner {
        bool success;
         (success, ) = address(msg.sender).call{
            value: address(this).balance
        }("");
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Fees","outputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"},{"internalType":"uint256","name":"transferFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Ratios","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"developer","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"excludedAddress","type":"address"}],"name":"excludeFromWalletRestrictions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getFirstBuy","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":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"intializeContract","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromMaxWalletRestrictions","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxFees","outputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"uint256","name":"maxSell","type":"uint256"},{"internalType":"uint256","name":"maxTransfer","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recoverStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"excludedAddress","type":"address"}],"name":"revokeExcludedFromWalletRestrictions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"developerWallet","type":"address"}],"name":"setFeeDivWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"},{"internalType":"uint256","name":"_transferFee","type":"uint256"}],"name":"setFeeTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_developer","type":"uint256"}],"name":"setTaxRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"blacklisted_","type":"address[]"},{"internalType":"bool","name":"status_","type":"bool"}],"name":"updateBlist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

5f6003556009805460ff19908116909155600b805490911690556101f46080819052610fa060a08190526107d060c081905260109290925560115560125561270f60e08190526101008190526101208190526013819055601481905560155561018060405260016101408190526063610160819052601691909155601755601854620000909060ff16600a620001ff565b600d546200009f919062000216565b601955601d805460ff60a81b191690556026805460ff191690555f602781905560288190556029819055602a55348015620000d8575f80fd5b505f80546001600160a01b0319163317905562000230565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200014457815f1904821115620001285762000128620000f0565b808516156200013657918102915b93841c939080029062000109565b509250929050565b5f826200015c57506001620001f9565b816200016a57505f620001f9565b81600181146200018357600281146200018e57620001ae565b6001915050620001f9565b60ff841115620001a257620001a2620000f0565b50506001821b620001f9565b5060208310610133831016604e8410600b8410161715620001d3575081810a620001f9565b620001df838362000104565b805f1904821115620001f557620001f5620000f0565b0290505b92915050565b5f6200020f60ff8416836200014c565b9392505050565b8082028115828204841417620001f957620001f9620000f0565b6130c6806200023e5f395ff3fe608060405260043610610262575f3560e01c8063715018a61161013f578063b2bdfa7b116100b3578063dd62ed3e11610078578063dd62ed3e14610735578063e0f4904514610779578063e6dd4c8314610798578063e83e34b1146107b7578063eafb5a3c146107d5578063fb78680d146107f4575f80fd5b8063b2bdfa7b1461068b578063b5f7bfa2146106a9578063bc1323e8146106d8578063c49b9a80146106f7578063ce8b79c914610716575f80fd5b80638c7321ad116101045780638c7321ad146105d75780638da5cb5b146105bb57806395d89b4114610605578063a13ce2c614610619578063a457c2d71461064d578063a9059cbb1461066c575f80fd5b8063715018a61461056c5780637ed57c8b1461058057806380c581d11461058857806381a16445146105a7578063893d20e8146105bb575f80fd5b80633f3cf56c116101d657806350a8e0161161019b57806350a8e016146104b8578063571ac8b0146104d1578063590ffdce146104f05780636359f1931461050f57806367fd6b211461052e57806370a082311461054d575f80fd5b80633f3cf56c14610404578063452ed4f1146104235780634a74bb02146104425780634fb2e45d146104625780634fbee19314610481575f80fd5b806318160ddd1161022757806318160ddd1461032d57806323b872dd1461034b578063301102e81461036a578063313ce5671461038b57806339509351146103ac5780633aaa36e6146103cb575f80fd5b806303fd2a451461026d57806306fdde031461029f5780630758d924146102c0578063095ea7b3146102df57806311a63e171461030e575f80fd5b3661026957005b5f80fd5b348015610278575f80fd5b5061028261dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102aa575f80fd5b506102b3610813565b604051610296919061292c565b3480156102cb575f80fd5b50601b54610282906001600160a01b031681565b3480156102ea575f80fd5b506102fe6102f936600461299e565b6108a3565b6040519015158152602001610296565b348015610319575f80fd5b50601d54610282906001600160a01b031681565b348015610338575f80fd5b506019545b604051908152602001610296565b348015610356575f80fd5b506102fe6103653660046129c8565b6108b9565b348015610375575f80fd5b50610389610384366004612a06565b61092e565b005b348015610396575f80fd5b5060185460405160ff9091168152602001610296565b3480156103b7575f80fd5b506102fe6103c636600461299e565b6109dc565b3480156103d6575f80fd5b506010546011546012546103e992919083565b60408051938452602084019290925290820152606001610296565b34801561040f575f80fd5b5061038961041e366004612a2f565b610a17565b34801561042e575f80fd5b50601c54610282906001600160a01b031681565b34801561044d575f80fd5b50601d546102fe90600160a81b900460ff1681565b34801561046d575f80fd5b5061038961047c366004612a4f565b610a92565b34801561048c575f80fd5b506102fe61049b366004612a4f565b6001600160a01b03165f9081526006602052604090205460ff1690565b3480156104c3575f80fd5b506026546102fe9060ff1681565b3480156104dc575f80fd5b506102fe6104eb366004612a4f565b610c1e565b3480156104fb575f80fd5b5061038961050a366004612a79565b610c2a565b34801561051a575f80fd5b50610389610529366004612a2f565b610c7d565b348015610539575f80fd5b50610389610548366004612a4f565b610cf8565b348015610558575f80fd5b5061033d610567366004612a4f565b610d43565b348015610577575f80fd5b50610389610d5d565b610389610dd9565b348015610593575f80fd5b506103896105a2366004612a79565b611412565b3480156105b2575f80fd5b506103896114ec565b3480156105c6575f80fd5b505f546001600160a01b0316610282565b3480156105e2575f80fd5b506102fe6105f1366004612a4f565b60076020525f908152604090205460ff1681565b348015610610575f80fd5b506102b361155f565b348015610624575f80fd5b5061033d610633366004612a4f565b6001600160a01b03165f908152600c602052604090205490565b348015610658575f80fd5b506102fe61066736600461299e565b61156e565b348015610677575f80fd5b506102fe61068636600461299e565b6115a4565b348015610696575f80fd5b505f54610282906001600160a01b031681565b3480156106b4575f80fd5b506016546017546106c3919082565b60408051928352602083019190915201610296565b3480156106e3575f80fd5b506103896106f2366004612a4f565b6115ba565b348015610702575f80fd5b50610389610711366004612aac565b611603565b348015610721575f80fd5b50610389610730366004612a4f565b611684565b348015610740575f80fd5b5061033d61074f366004612ac5565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b348015610784575f80fd5b50610389610793366004612b10565b6116d0565b3480156107a3575f80fd5b506103896107b2366004612a2f565b6117fb565b3480156107c2575f80fd5b506013546014546015546103e992919083565b3480156107e0575f80fd5b506103896107ef366004612a4f565b611877565b3480156107ff575f80fd5b5061038961080e366004612be2565b611b93565b6060600e805461082290612c11565b80601f016020809104026020016040519081016040528092919081815260200182805461084e90612c11565b80156108995780601f1061087057610100808354040283529160200191610899565b820191905f5260205f20905b81548152906001019060200180831161087c57829003601f168201915b5050505050905090565b5f6108af338484611bfb565b5060015b92915050565b6001600160a01b0383165f9081526004602090815260408083203384529091528120545f191461091b576001600160a01b0384165f90815260046020908152604080832033845290915281208054849290610915908490612c5d565b90915550505b610926848484611cf3565b949350505050565b5f546001600160a01b031633146109605760405162461bcd60e51b815260040161095790612c70565b60405180910390fd5b601354831180159061097457506014548211155b801561098257506015548111155b6109ce5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610957565b601092909255601155601255565b335f8181526004602090815260408083206001600160a01b038716845290915281205490916108af918590610a12908690612c9a565b611bfb565b5f546001600160a01b03163314610a405760405162461bcd60e51b815260040161095790612c70565b5f8183601954610a509190612cad565b610a5a9190612cc4565b905061012c601954610a6c9190612cc4565b811015610a8b5760405162461bcd60e51b815260040161095790612ce3565b6020555050565b5f546001600160a01b03163314610abb5760405162461bcd60e51b815260040161095790612c70565b6001600160a01b038116610ae15760405162461bcd60e51b815260040161095790612d28565b61deac196001600160a01b03821601610b0c5760405162461bcd60e51b815260040161095790612d28565b5f8054610b24916001600160a01b0390911690610c2a565b610b2f816001610c2a565b5f54601d546001600160a01b03918216911603610b6257601d80546001600160a01b0319166001600160a01b0383161790555b5f54610b76906001600160a01b0316610d43565b5f80546001600160a01b039081168252600460209081526040808420868416855290915282209290925580549091610bae9116610d43565b1115610bd4575f54610bd2906001600160a01b031682610bcd82610d43565b611cf3565b505b5f80546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b5f6108b3825f196108a3565b5f546001600160a01b03163314610c535760405162461bcd60e51b815260040161095790612c70565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610ca65760405162461bcd60e51b815260040161095790612c70565b5f8183601954610cb69190612cad565b610cc09190612cc4565b905061012c601954610cd29190612cc4565b811015610cf15760405162461bcd60e51b815260040161095790612ce3565b6023555050565b5f546001600160a01b03163314610d215760405162461bcd60e51b815260040161095790612c70565b601d80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03165f9081526001602052604090205490565b5f546001600160a01b03163314610d865760405162461bcd60e51b815260040161095790612c70565b5f8054610d9e916001600160a01b0390911690610c2a565b5f80546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b5f546001600160a01b03163314610e025760405162461bcd60e51b815260040161095790612c70565b600b5460ff1615610e555760405162461bcd60e51b815260206004820152601d60248201527f436f6e747261637420616c726561647920696e697469616c697a65642e0000006044820152606401610957565b60275415610e61575f80fd5b60408051808201909152600a81526925b7b930ba1021b7b4b760b11b6020820152600e90610e8f9082612dca565b5060408051808201909152600581526412d3d4905560da1b6020820152600f90610eb99082612dca565b506018805460ff19166012908117909155633b9aca00600d55610edd90600a612f66565b600d54610eea9190612cad565b601955601b80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015610f4f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f739190612f74565b6001600160a01b031663c9c65396601b5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fd1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff59190612f74565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303815f875af115801561103e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110629190612f74565b601c80546001600160a01b03199081166001600160a01b039384169081179092555f918252600260209081526040808420805460ff1916600117905530845260048252808420601b548616855290915282205f1990559054601d805491909316911617905560c8601e819055612710601f81905560195490916110e491612cad565b6110ee9190612cc4565b60205561019060218190556127106022819055601954909161110f91612cad565b6111199190612cc4565b6023556019546127109061112e906005612cad565b6111389190612cc4565b6024556019546103e89061114d906005612cad565b6111579190612cc4565b602555600160065f6111705f546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081015f908120805494151560ff199586161790553081526006909252812080548316600190811790915561dead82527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22805490931681179092556005906111f55f546001600160a01b031690565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905561123b737a250d5630b4cf539739df2c5dacb4c659f2488d5f196108a3565b506112576112505f546001600160a01b031690565b5f196108a3565b50600b805460ff19166001908117909155601954905f61127e5f546001600160a01b031690565b6001600160a01b0316815260208101919091526040015f20556112c86112ab5f546001600160a01b031690565b737a250d5630b4cf539739df2c5dacb4c659f2488d601954611bfb565b5f546001600160a01b03166001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60195460405161131991815260200190565b60405180910390a35f54601b5461133e916001600160a01b0390811691165f19611bfb565b601b546113579030906001600160a01b03165f19611bfb565b5f54611370906001600160a01b031630610bcd82610d43565b50601b546001600160a01b031663f305d719473061138d81610d43565b5f806113a05f546001600160a01b031690565b426040518863ffffffff1660e01b81526004016113c296959493929190612f8f565b60606040518083038185885af11580156113de573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906114039190612fca565b5050506114106001612190565b565b5f546001600160a01b0316331461143b5760405162461bcd60e51b815260040161095790612c70565b8015155f0361146557506001600160a01b03165f908152600260205260409020805460ff19169055565b600354156114c15762093a806003544261147f9190612c5d565b116114c15760405162461bcd60e51b815260206004820152601260248201527127b732903bb2b2b59031b7b7b63237bbb71760711b6044820152606401610957565b6001600160a01b0382165f908152600260205260409020805460ff19166001179055426003555b5050565b5f546001600160a01b031633146115155760405162461bcd60e51b815260040161095790612c70565b6040515f90339047908381818185875af1925050503d805f8114611554576040519150601f19603f3d011682016040523d82523d5f602084013e611559565b606091505b50505050565b6060600f805461082290612c11565b335f8181526004602090815260408083206001600160a01b038716845290915281205490916108af918590610a12908690612c5d565b5f6115b0338484611cf3565b5060019392505050565b5f546001600160a01b031633146115e35760405162461bcd60e51b815260040161095790612c70565b6001600160a01b03165f908152600760205260409020805460ff19169055565b5f546001600160a01b0316331461162c5760405162461bcd60e51b815260040161095790612c70565b601d8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061167990831515815260200190565b60405180910390a150565b5f546001600160a01b031633146116ad5760405162461bcd60e51b815260040161095790612c70565b6001600160a01b03165f908152600760205260409020805460ff19166001179055565b5f546001600160a01b031633146116f95760405162461bcd60e51b815260040161095790612c70565b5f5b82518110156117f65760025f84838151811061171957611719612ff5565b6020908102919091018101516001600160a01b031682528101919091526040015f205460ff1615801561178b5750737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031683828151811061177757611777612ff5565b60200260200101516001600160a01b031614155b156117e4578160085f8584815181106117a6576117a6612ff5565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b806117ee81613009565b9150506116fb565b505050565b5f546001600160a01b031633146118245760405162461bcd60e51b815260040161095790612c70565b61182e8183612c9a565b61044c1461186c5760405162461bcd60e51b815260206004820152600b60248201526a6c696d697420746178657360a81b6044820152606401610957565b601691909155601755565b5f546001600160a01b031633146118a05760405162461bcd60e51b815260040161095790612c70565b5f8190505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118e1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119059190612f74565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611950573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119749190612f74565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156119bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119e19190612f74565b90506001600160a01b038116611b5357816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a2d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a519190612f74565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a9c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ac09190612f74565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015611b0a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b2e9190612f74565b601c80546001600160a01b0319166001600160a01b0392909216919091179055611b6f565b601c80546001600160a01b0319166001600160a01b0383161790555b50601b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f546001600160a01b03163314611bbc5760405162461bcd60e51b815260040161095790612c70565b8284601954611bcb9190612cad565b611bd59190612cc4565b6024556019548190611be8908490612cad565b611bf29190612cc4565b60255550505050565b6001600160a01b038316611c475760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610957565b6001600160a01b038216611c935760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610957565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b038416611d415760405162461bcd60e51b815260206004820152601460248201527322a92199181d102d32b9379030b2323932b9b99760611b6044820152606401610957565b6001600160a01b038316611d8e5760405162461bcd60e51b815260206004820152601460248201527322a92199181d102d32b9379030b2323932b9b99760611b6044820152606401610957565b5f8211611dc85760405162461bcd60e51b815260206004820152600860248201526726bab9ba101f181760c11b6044820152606401610957565b6001600160a01b0383165f9081526008602052604090205460ff16158015611e0857506001600160a01b0384165f9081526008602052604090205460ff16155b611e465760405162461bcd60e51b815260206004820152600f60248201526e756e61626c6520746f20747261646560881b6044820152606401610957565b611e5084846121ce565b156120845760095460ff1615611f00576001600160a01b0384165f9081526002602052604090205460ff1615611ec2576001600160a01b0383165f908152600a6020526040902054439003611ea3575f80fd5b6001600160a01b0383165f908152600a60205260409020439055611f00565b6001600160a01b0384165f908152600a6020526040902054439003611ee5575f80fd5b6001600160a01b0384165f908152600a602052604090204390555b6001600160a01b0384165f9081526007602052604090205460ff1680611f3d57506001600160a01b0383165f9081526007602052604090205460ff165b612084576001600160a01b0384165f9081526002602052604090205460ff1680611f7e57506001600160a01b0383165f9081526002602052604090205460ff165b15611fd557602054821115611fd55760405162461bcd60e51b815260206004820152601860248201527f4578636565647320746865206d61785478416d6f756e742e00000000000000006044820152606401610957565b6001600160a01b038316737a250d5630b4cf539739df2c5dacb4c659f2488d1480159061201a57506001600160a01b0383165f9081526002602052604090205460ff16155b15612084576023548261202c85610d43565b6120369190612c9a565b11156120845760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610957565b6001600160a01b0383165f9081526001602052604081205490036120bd576001600160a01b0383165f908152600c602052604090204290555b6001600160a01b0384165f9081526006602052604090205460019060ff16806120fd57506001600160a01b0384165f9081526006602052604090205460ff165b1561210557505f5b6001600160a01b0384165f9081526002602052604090205460ff161561217b57601d54600160a01b900460ff161580156121485750601d54600160a81b900460ff165b1561217b575f61215730610d43565b9050602454811061217957602554811061217057506025545b61217981612288565b505b612187858585846123f9565b95945050505050565b602754156121c95760405162461bcd60e51b815260206004820152600660248201526522b93937b91760d11b6044820152606401610957565b602755565b5f80546001600160a01b038481169116148015906121f957505f546001600160a01b03838116911614155b801561221d57506001600160a01b0382165f9081526005602052604090205460ff16155b801561224157506001600160a01b0383165f9081526005602052604090205460ff16155b801561225857506001600160a01b03821661dead14155b801561226c57506001600160a01b03821615155b801561228157506001600160a01b0383163014155b9392505050565b601d805460ff60a01b1916600160a01b1790556017546016546122ab9190612c9a565b156123e9576017546016545f916002916122c59190612c9a565b6016546122d29085612cad565b6122dc9190612cc4565b6122e69190612cc4565b90505f6122f38284612c5d565b90506122fe81612552565b60175460165447915f9160029161231491612c9a565b6016546123219085612cad565b61232b9190612cc4565b6123359190612cc4565b90508315612389576123478482612689565b60408051858152602081018390529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b47156123e457601d546040516001916001600160a01b03169047905f81818185875af1925050503d805f81146123da576040519150601f19603f3d011682016040523d82523d5f602084013e6123df565b606091505b505050505b505050505b50601d805460ff60a01b19169055565b6026545f9060ff166124825761240f858561271a565b60265460ff16158015612427575061242785856121ce565b156124825760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b6064820152608401610957565b6001600160a01b0385165f90815260016020526040812080548592906124a9908490612c5d565b909155505f9050826124bb57836124c6565b6124c6868686612827565b6001600160a01b0386165f908152600160205260408120805492935083929091906124f2908490612c9a565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161253e91815260200190565b60405180910390a350600195945050505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061258557612585612ff5565b6001600160a01b03928316602091820292909201810191909152601b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156125dc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126009190612f74565b8160018151811061261357612613612ff5565b6001600160a01b039283166020918202929092010152601b5460405163791ac94760e01b815291169063791ac947906126589085905f90869030904290600401613021565b5f604051808303815f87803b15801561266f575f80fd5b505af1158015612681573d5f803e3d5ffd5b505050505050565b601b546001600160a01b031663f305d7198230855f806126b05f546001600160a01b031690565b426040518863ffffffff1660e01b81526004016126d296959493929190612f8f565b60606040518083038185885af11580156126ee573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906127139190612fca565b5050505050565b60265460ff16156127795760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610957565b61278382826121ce565b15801561279d5750601c546001600160a01b038281169116145b156114e857436028556001600160a01b0382165f90815260056020908152604091829020805460ff199081166001908117909255602680549091168217905542602955601d805460ff60a81b1916600160a81b17905591519182527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159910160405180910390a15050565b601c545f9081906001600160a01b039081169085160361284a575060115461286e565b601c546001600160a01b0390811690861603612869575060105461286e565b506012545b61287885856121ce565b1561289857602754158061288f5750602754600114155b15612898575f80fd5b5f6127106128a68386612cad565b6128b09190612cc4565b305f908152600160205260408120805492935083929091906128d3908490612c9a565b909155505060405181815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36129228185612c5d565b9695505050505050565b5f6020808352835180828501525f5b818110156129575785810183015185820160400152820161293b565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461298b575f80fd5b50565b803561299981612977565b919050565b5f80604083850312156129af575f80fd5b82356129ba81612977565b946020939093013593505050565b5f805f606084860312156129da575f80fd5b83356129e581612977565b925060208401356129f581612977565b929592945050506040919091013590565b5f805f60608486031215612a18575f80fd5b505081359360208301359350604090920135919050565b5f8060408385031215612a40575f80fd5b50508035926020909101359150565b5f60208284031215612a5f575f80fd5b813561228181612977565b80358015158114612999575f80fd5b5f8060408385031215612a8a575f80fd5b8235612a9581612977565b9150612aa360208401612a6a565b90509250929050565b5f60208284031215612abc575f80fd5b61228182612a6a565b5f8060408385031215612ad6575f80fd5b8235612ae181612977565b91506020830135612af181612977565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f8060408385031215612b21575f80fd5b823567ffffffffffffffff80821115612b38575f80fd5b818501915085601f830112612b4b575f80fd5b8135602082821115612b5f57612b5f612afc565b8160051b604051601f19603f83011681018181108682111715612b8457612b84612afc565b604052928352818301935084810182019289841115612ba1575f80fd5b948201945b83861015612bc657612bb78661298e565b85529482019493820193612ba6565b9650612bd59050878201612a6a565b9450505050509250929050565b5f805f8060808587031215612bf5575f80fd5b5050823594602084013594506040840135936060013592509050565b600181811c90821680612c2557607f821691505b602082108103612c4357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156108b3576108b3612c49565b60208082526010908201526f21b0b63632b910109e9037bbb732b91760811b604082015260600190565b808201808211156108b3576108b3612c49565b80820281158282048414176108b3576108b3612c49565b5f82612cde57634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526025908201527f4d7573742062652061626f766520302e33337e25206f6620746f74616c2073756040820152643838363c9760d91b606082015260800190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b601f8211156117f6575f81815260208120601f850160051c81016020861015612dab5750805b601f850160051c820191505b8181101561268157828155600101612db7565b815167ffffffffffffffff811115612de457612de4612afc565b612df881612df28454612c11565b84612d85565b602080601f831160018114612e2b575f8415612e145750858301515b5f19600386901b1c1916600185901b178555612681565b5f85815260208120601f198616915b82811015612e5957888601518255948401946001909101908401612e3a565b5085821015612e7657878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b600181815b80851115612ec057815f1904821115612ea657612ea6612c49565b80851615612eb357918102915b93841c9390800290612e8b565b509250929050565b5f82612ed6575060016108b3565b81612ee257505f6108b3565b8160018114612ef85760028114612f0257612f1e565b60019150506108b3565b60ff841115612f1357612f13612c49565b50506001821b6108b3565b5060208310610133831016604e8410600b8410161715612f41575081810a6108b3565b612f4b8383612e86565b805f1904821115612f5e57612f5e612c49565b029392505050565b5f61228160ff841683612ec8565b5f60208284031215612f84575f80fd5b815161228181612977565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b5f805f60608486031215612fdc575f80fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b5f52603260045260245ffd5b5f6001820161301a5761301a612c49565b5060010190565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561306f5784516001600160a01b03168352938301939183019160010161304a565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220dc51eb792f0c101237419b27015bed47750b2af21249aa44bab22aba89812c6464736f6c63430008150033

Deployed Bytecode

0x608060405260043610610262575f3560e01c8063715018a61161013f578063b2bdfa7b116100b3578063dd62ed3e11610078578063dd62ed3e14610735578063e0f4904514610779578063e6dd4c8314610798578063e83e34b1146107b7578063eafb5a3c146107d5578063fb78680d146107f4575f80fd5b8063b2bdfa7b1461068b578063b5f7bfa2146106a9578063bc1323e8146106d8578063c49b9a80146106f7578063ce8b79c914610716575f80fd5b80638c7321ad116101045780638c7321ad146105d75780638da5cb5b146105bb57806395d89b4114610605578063a13ce2c614610619578063a457c2d71461064d578063a9059cbb1461066c575f80fd5b8063715018a61461056c5780637ed57c8b1461058057806380c581d11461058857806381a16445146105a7578063893d20e8146105bb575f80fd5b80633f3cf56c116101d657806350a8e0161161019b57806350a8e016146104b8578063571ac8b0146104d1578063590ffdce146104f05780636359f1931461050f57806367fd6b211461052e57806370a082311461054d575f80fd5b80633f3cf56c14610404578063452ed4f1146104235780634a74bb02146104425780634fb2e45d146104625780634fbee19314610481575f80fd5b806318160ddd1161022757806318160ddd1461032d57806323b872dd1461034b578063301102e81461036a578063313ce5671461038b57806339509351146103ac5780633aaa36e6146103cb575f80fd5b806303fd2a451461026d57806306fdde031461029f5780630758d924146102c0578063095ea7b3146102df57806311a63e171461030e575f80fd5b3661026957005b5f80fd5b348015610278575f80fd5b5061028261dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102aa575f80fd5b506102b3610813565b604051610296919061292c565b3480156102cb575f80fd5b50601b54610282906001600160a01b031681565b3480156102ea575f80fd5b506102fe6102f936600461299e565b6108a3565b6040519015158152602001610296565b348015610319575f80fd5b50601d54610282906001600160a01b031681565b348015610338575f80fd5b506019545b604051908152602001610296565b348015610356575f80fd5b506102fe6103653660046129c8565b6108b9565b348015610375575f80fd5b50610389610384366004612a06565b61092e565b005b348015610396575f80fd5b5060185460405160ff9091168152602001610296565b3480156103b7575f80fd5b506102fe6103c636600461299e565b6109dc565b3480156103d6575f80fd5b506010546011546012546103e992919083565b60408051938452602084019290925290820152606001610296565b34801561040f575f80fd5b5061038961041e366004612a2f565b610a17565b34801561042e575f80fd5b50601c54610282906001600160a01b031681565b34801561044d575f80fd5b50601d546102fe90600160a81b900460ff1681565b34801561046d575f80fd5b5061038961047c366004612a4f565b610a92565b34801561048c575f80fd5b506102fe61049b366004612a4f565b6001600160a01b03165f9081526006602052604090205460ff1690565b3480156104c3575f80fd5b506026546102fe9060ff1681565b3480156104dc575f80fd5b506102fe6104eb366004612a4f565b610c1e565b3480156104fb575f80fd5b5061038961050a366004612a79565b610c2a565b34801561051a575f80fd5b50610389610529366004612a2f565b610c7d565b348015610539575f80fd5b50610389610548366004612a4f565b610cf8565b348015610558575f80fd5b5061033d610567366004612a4f565b610d43565b348015610577575f80fd5b50610389610d5d565b610389610dd9565b348015610593575f80fd5b506103896105a2366004612a79565b611412565b3480156105b2575f80fd5b506103896114ec565b3480156105c6575f80fd5b505f546001600160a01b0316610282565b3480156105e2575f80fd5b506102fe6105f1366004612a4f565b60076020525f908152604090205460ff1681565b348015610610575f80fd5b506102b361155f565b348015610624575f80fd5b5061033d610633366004612a4f565b6001600160a01b03165f908152600c602052604090205490565b348015610658575f80fd5b506102fe61066736600461299e565b61156e565b348015610677575f80fd5b506102fe61068636600461299e565b6115a4565b348015610696575f80fd5b505f54610282906001600160a01b031681565b3480156106b4575f80fd5b506016546017546106c3919082565b60408051928352602083019190915201610296565b3480156106e3575f80fd5b506103896106f2366004612a4f565b6115ba565b348015610702575f80fd5b50610389610711366004612aac565b611603565b348015610721575f80fd5b50610389610730366004612a4f565b611684565b348015610740575f80fd5b5061033d61074f366004612ac5565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b348015610784575f80fd5b50610389610793366004612b10565b6116d0565b3480156107a3575f80fd5b506103896107b2366004612a2f565b6117fb565b3480156107c2575f80fd5b506013546014546015546103e992919083565b3480156107e0575f80fd5b506103896107ef366004612a4f565b611877565b3480156107ff575f80fd5b5061038961080e366004612be2565b611b93565b6060600e805461082290612c11565b80601f016020809104026020016040519081016040528092919081815260200182805461084e90612c11565b80156108995780601f1061087057610100808354040283529160200191610899565b820191905f5260205f20905b81548152906001019060200180831161087c57829003601f168201915b5050505050905090565b5f6108af338484611bfb565b5060015b92915050565b6001600160a01b0383165f9081526004602090815260408083203384529091528120545f191461091b576001600160a01b0384165f90815260046020908152604080832033845290915281208054849290610915908490612c5d565b90915550505b610926848484611cf3565b949350505050565b5f546001600160a01b031633146109605760405162461bcd60e51b815260040161095790612c70565b60405180910390fd5b601354831180159061097457506014548211155b801561098257506015548111155b6109ce5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610957565b601092909255601155601255565b335f8181526004602090815260408083206001600160a01b038716845290915281205490916108af918590610a12908690612c9a565b611bfb565b5f546001600160a01b03163314610a405760405162461bcd60e51b815260040161095790612c70565b5f8183601954610a509190612cad565b610a5a9190612cc4565b905061012c601954610a6c9190612cc4565b811015610a8b5760405162461bcd60e51b815260040161095790612ce3565b6020555050565b5f546001600160a01b03163314610abb5760405162461bcd60e51b815260040161095790612c70565b6001600160a01b038116610ae15760405162461bcd60e51b815260040161095790612d28565b61deac196001600160a01b03821601610b0c5760405162461bcd60e51b815260040161095790612d28565b5f8054610b24916001600160a01b0390911690610c2a565b610b2f816001610c2a565b5f54601d546001600160a01b03918216911603610b6257601d80546001600160a01b0319166001600160a01b0383161790555b5f54610b76906001600160a01b0316610d43565b5f80546001600160a01b039081168252600460209081526040808420868416855290915282209290925580549091610bae9116610d43565b1115610bd4575f54610bd2906001600160a01b031682610bcd82610d43565b611cf3565b505b5f80546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b5f6108b3825f196108a3565b5f546001600160a01b03163314610c535760405162461bcd60e51b815260040161095790612c70565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610ca65760405162461bcd60e51b815260040161095790612c70565b5f8183601954610cb69190612cad565b610cc09190612cc4565b905061012c601954610cd29190612cc4565b811015610cf15760405162461bcd60e51b815260040161095790612ce3565b6023555050565b5f546001600160a01b03163314610d215760405162461bcd60e51b815260040161095790612c70565b601d80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03165f9081526001602052604090205490565b5f546001600160a01b03163314610d865760405162461bcd60e51b815260040161095790612c70565b5f8054610d9e916001600160a01b0390911690610c2a565b5f80546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b5f546001600160a01b03163314610e025760405162461bcd60e51b815260040161095790612c70565b600b5460ff1615610e555760405162461bcd60e51b815260206004820152601d60248201527f436f6e747261637420616c726561647920696e697469616c697a65642e0000006044820152606401610957565b60275415610e61575f80fd5b60408051808201909152600a81526925b7b930ba1021b7b4b760b11b6020820152600e90610e8f9082612dca565b5060408051808201909152600581526412d3d4905560da1b6020820152600f90610eb99082612dca565b506018805460ff19166012908117909155633b9aca00600d55610edd90600a612f66565b600d54610eea9190612cad565b601955601b80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015610f4f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f739190612f74565b6001600160a01b031663c9c65396601b5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fd1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff59190612f74565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303815f875af115801561103e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110629190612f74565b601c80546001600160a01b03199081166001600160a01b039384169081179092555f918252600260209081526040808420805460ff1916600117905530845260048252808420601b548616855290915282205f1990559054601d805491909316911617905560c8601e819055612710601f81905560195490916110e491612cad565b6110ee9190612cc4565b60205561019060218190556127106022819055601954909161110f91612cad565b6111199190612cc4565b6023556019546127109061112e906005612cad565b6111389190612cc4565b6024556019546103e89061114d906005612cad565b6111579190612cc4565b602555600160065f6111705f546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081015f908120805494151560ff199586161790553081526006909252812080548316600190811790915561dead82527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22805490931681179092556005906111f55f546001600160a01b031690565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905561123b737a250d5630b4cf539739df2c5dacb4c659f2488d5f196108a3565b506112576112505f546001600160a01b031690565b5f196108a3565b50600b805460ff19166001908117909155601954905f61127e5f546001600160a01b031690565b6001600160a01b0316815260208101919091526040015f20556112c86112ab5f546001600160a01b031690565b737a250d5630b4cf539739df2c5dacb4c659f2488d601954611bfb565b5f546001600160a01b03166001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60195460405161131991815260200190565b60405180910390a35f54601b5461133e916001600160a01b0390811691165f19611bfb565b601b546113579030906001600160a01b03165f19611bfb565b5f54611370906001600160a01b031630610bcd82610d43565b50601b546001600160a01b031663f305d719473061138d81610d43565b5f806113a05f546001600160a01b031690565b426040518863ffffffff1660e01b81526004016113c296959493929190612f8f565b60606040518083038185885af11580156113de573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906114039190612fca565b5050506114106001612190565b565b5f546001600160a01b0316331461143b5760405162461bcd60e51b815260040161095790612c70565b8015155f0361146557506001600160a01b03165f908152600260205260409020805460ff19169055565b600354156114c15762093a806003544261147f9190612c5d565b116114c15760405162461bcd60e51b815260206004820152601260248201527127b732903bb2b2b59031b7b7b63237bbb71760711b6044820152606401610957565b6001600160a01b0382165f908152600260205260409020805460ff19166001179055426003555b5050565b5f546001600160a01b031633146115155760405162461bcd60e51b815260040161095790612c70565b6040515f90339047908381818185875af1925050503d805f8114611554576040519150601f19603f3d011682016040523d82523d5f602084013e611559565b606091505b50505050565b6060600f805461082290612c11565b335f8181526004602090815260408083206001600160a01b038716845290915281205490916108af918590610a12908690612c5d565b5f6115b0338484611cf3565b5060019392505050565b5f546001600160a01b031633146115e35760405162461bcd60e51b815260040161095790612c70565b6001600160a01b03165f908152600760205260409020805460ff19169055565b5f546001600160a01b0316331461162c5760405162461bcd60e51b815260040161095790612c70565b601d8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061167990831515815260200190565b60405180910390a150565b5f546001600160a01b031633146116ad5760405162461bcd60e51b815260040161095790612c70565b6001600160a01b03165f908152600760205260409020805460ff19166001179055565b5f546001600160a01b031633146116f95760405162461bcd60e51b815260040161095790612c70565b5f5b82518110156117f65760025f84838151811061171957611719612ff5565b6020908102919091018101516001600160a01b031682528101919091526040015f205460ff1615801561178b5750737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031683828151811061177757611777612ff5565b60200260200101516001600160a01b031614155b156117e4578160085f8584815181106117a6576117a6612ff5565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b806117ee81613009565b9150506116fb565b505050565b5f546001600160a01b031633146118245760405162461bcd60e51b815260040161095790612c70565b61182e8183612c9a565b61044c1461186c5760405162461bcd60e51b815260206004820152600b60248201526a6c696d697420746178657360a81b6044820152606401610957565b601691909155601755565b5f546001600160a01b031633146118a05760405162461bcd60e51b815260040161095790612c70565b5f8190505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118e1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119059190612f74565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611950573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119749190612f74565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156119bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119e19190612f74565b90506001600160a01b038116611b5357816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a2d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a519190612f74565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a9c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ac09190612f74565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015611b0a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b2e9190612f74565b601c80546001600160a01b0319166001600160a01b0392909216919091179055611b6f565b601c80546001600160a01b0319166001600160a01b0383161790555b50601b80546001600160a01b0319166001600160a01b039290921691909117905550565b5f546001600160a01b03163314611bbc5760405162461bcd60e51b815260040161095790612c70565b8284601954611bcb9190612cad565b611bd59190612cc4565b6024556019548190611be8908490612cad565b611bf29190612cc4565b60255550505050565b6001600160a01b038316611c475760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610957565b6001600160a01b038216611c935760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610957565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b038416611d415760405162461bcd60e51b815260206004820152601460248201527322a92199181d102d32b9379030b2323932b9b99760611b6044820152606401610957565b6001600160a01b038316611d8e5760405162461bcd60e51b815260206004820152601460248201527322a92199181d102d32b9379030b2323932b9b99760611b6044820152606401610957565b5f8211611dc85760405162461bcd60e51b815260206004820152600860248201526726bab9ba101f181760c11b6044820152606401610957565b6001600160a01b0383165f9081526008602052604090205460ff16158015611e0857506001600160a01b0384165f9081526008602052604090205460ff16155b611e465760405162461bcd60e51b815260206004820152600f60248201526e756e61626c6520746f20747261646560881b6044820152606401610957565b611e5084846121ce565b156120845760095460ff1615611f00576001600160a01b0384165f9081526002602052604090205460ff1615611ec2576001600160a01b0383165f908152600a6020526040902054439003611ea3575f80fd5b6001600160a01b0383165f908152600a60205260409020439055611f00565b6001600160a01b0384165f908152600a6020526040902054439003611ee5575f80fd5b6001600160a01b0384165f908152600a602052604090204390555b6001600160a01b0384165f9081526007602052604090205460ff1680611f3d57506001600160a01b0383165f9081526007602052604090205460ff165b612084576001600160a01b0384165f9081526002602052604090205460ff1680611f7e57506001600160a01b0383165f9081526002602052604090205460ff165b15611fd557602054821115611fd55760405162461bcd60e51b815260206004820152601860248201527f4578636565647320746865206d61785478416d6f756e742e00000000000000006044820152606401610957565b6001600160a01b038316737a250d5630b4cf539739df2c5dacb4c659f2488d1480159061201a57506001600160a01b0383165f9081526002602052604090205460ff16155b15612084576023548261202c85610d43565b6120369190612c9a565b11156120845760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610957565b6001600160a01b0383165f9081526001602052604081205490036120bd576001600160a01b0383165f908152600c602052604090204290555b6001600160a01b0384165f9081526006602052604090205460019060ff16806120fd57506001600160a01b0384165f9081526006602052604090205460ff165b1561210557505f5b6001600160a01b0384165f9081526002602052604090205460ff161561217b57601d54600160a01b900460ff161580156121485750601d54600160a81b900460ff165b1561217b575f61215730610d43565b9050602454811061217957602554811061217057506025545b61217981612288565b505b612187858585846123f9565b95945050505050565b602754156121c95760405162461bcd60e51b815260206004820152600660248201526522b93937b91760d11b6044820152606401610957565b602755565b5f80546001600160a01b038481169116148015906121f957505f546001600160a01b03838116911614155b801561221d57506001600160a01b0382165f9081526005602052604090205460ff16155b801561224157506001600160a01b0383165f9081526005602052604090205460ff16155b801561225857506001600160a01b03821661dead14155b801561226c57506001600160a01b03821615155b801561228157506001600160a01b0383163014155b9392505050565b601d805460ff60a01b1916600160a01b1790556017546016546122ab9190612c9a565b156123e9576017546016545f916002916122c59190612c9a565b6016546122d29085612cad565b6122dc9190612cc4565b6122e69190612cc4565b90505f6122f38284612c5d565b90506122fe81612552565b60175460165447915f9160029161231491612c9a565b6016546123219085612cad565b61232b9190612cc4565b6123359190612cc4565b90508315612389576123478482612689565b60408051858152602081018390529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b47156123e457601d546040516001916001600160a01b03169047905f81818185875af1925050503d805f81146123da576040519150601f19603f3d011682016040523d82523d5f602084013e6123df565b606091505b505050505b505050505b50601d805460ff60a01b19169055565b6026545f9060ff166124825761240f858561271a565b60265460ff16158015612427575061242785856121ce565b156124825760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b6064820152608401610957565b6001600160a01b0385165f90815260016020526040812080548592906124a9908490612c5d565b909155505f9050826124bb57836124c6565b6124c6868686612827565b6001600160a01b0386165f908152600160205260408120805492935083929091906124f2908490612c9a565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161253e91815260200190565b60405180910390a350600195945050505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061258557612585612ff5565b6001600160a01b03928316602091820292909201810191909152601b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156125dc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126009190612f74565b8160018151811061261357612613612ff5565b6001600160a01b039283166020918202929092010152601b5460405163791ac94760e01b815291169063791ac947906126589085905f90869030904290600401613021565b5f604051808303815f87803b15801561266f575f80fd5b505af1158015612681573d5f803e3d5ffd5b505050505050565b601b546001600160a01b031663f305d7198230855f806126b05f546001600160a01b031690565b426040518863ffffffff1660e01b81526004016126d296959493929190612f8f565b60606040518083038185885af11580156126ee573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906127139190612fca565b5050505050565b60265460ff16156127795760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610957565b61278382826121ce565b15801561279d5750601c546001600160a01b038281169116145b156114e857436028556001600160a01b0382165f90815260056020908152604091829020805460ff199081166001908117909255602680549091168217905542602955601d805460ff60a81b1916600160a81b17905591519182527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159910160405180910390a15050565b601c545f9081906001600160a01b039081169085160361284a575060115461286e565b601c546001600160a01b0390811690861603612869575060105461286e565b506012545b61287885856121ce565b1561289857602754158061288f5750602754600114155b15612898575f80fd5b5f6127106128a68386612cad565b6128b09190612cc4565b305f908152600160205260408120805492935083929091906128d3908490612c9a565b909155505060405181815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36129228185612c5d565b9695505050505050565b5f6020808352835180828501525f5b818110156129575785810183015185820160400152820161293b565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461298b575f80fd5b50565b803561299981612977565b919050565b5f80604083850312156129af575f80fd5b82356129ba81612977565b946020939093013593505050565b5f805f606084860312156129da575f80fd5b83356129e581612977565b925060208401356129f581612977565b929592945050506040919091013590565b5f805f60608486031215612a18575f80fd5b505081359360208301359350604090920135919050565b5f8060408385031215612a40575f80fd5b50508035926020909101359150565b5f60208284031215612a5f575f80fd5b813561228181612977565b80358015158114612999575f80fd5b5f8060408385031215612a8a575f80fd5b8235612a9581612977565b9150612aa360208401612a6a565b90509250929050565b5f60208284031215612abc575f80fd5b61228182612a6a565b5f8060408385031215612ad6575f80fd5b8235612ae181612977565b91506020830135612af181612977565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f8060408385031215612b21575f80fd5b823567ffffffffffffffff80821115612b38575f80fd5b818501915085601f830112612b4b575f80fd5b8135602082821115612b5f57612b5f612afc565b8160051b604051601f19603f83011681018181108682111715612b8457612b84612afc565b604052928352818301935084810182019289841115612ba1575f80fd5b948201945b83861015612bc657612bb78661298e565b85529482019493820193612ba6565b9650612bd59050878201612a6a565b9450505050509250929050565b5f805f8060808587031215612bf5575f80fd5b5050823594602084013594506040840135936060013592509050565b600181811c90821680612c2557607f821691505b602082108103612c4357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156108b3576108b3612c49565b60208082526010908201526f21b0b63632b910109e9037bbb732b91760811b604082015260600190565b808201808211156108b3576108b3612c49565b80820281158282048414176108b3576108b3612c49565b5f82612cde57634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526025908201527f4d7573742062652061626f766520302e33337e25206f6620746f74616c2073756040820152643838363c9760d91b606082015260800190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b601f8211156117f6575f81815260208120601f850160051c81016020861015612dab5750805b601f850160051c820191505b8181101561268157828155600101612db7565b815167ffffffffffffffff811115612de457612de4612afc565b612df881612df28454612c11565b84612d85565b602080601f831160018114612e2b575f8415612e145750858301515b5f19600386901b1c1916600185901b178555612681565b5f85815260208120601f198616915b82811015612e5957888601518255948401946001909101908401612e3a565b5085821015612e7657878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b600181815b80851115612ec057815f1904821115612ea657612ea6612c49565b80851615612eb357918102915b93841c9390800290612e8b565b509250929050565b5f82612ed6575060016108b3565b81612ee257505f6108b3565b8160018114612ef85760028114612f0257612f1e565b60019150506108b3565b60ff841115612f1357612f13612c49565b50506001821b6108b3565b5060208310610133831016604e8410600b8410161715612f41575081810a6108b3565b612f4b8383612e86565b805f1904821115612f5e57612f5e612c49565b029392505050565b5f61228160ff841683612ec8565b5f60208284031215612f84575f80fd5b815161228181612977565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b5f805f60608486031215612fdc575f80fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b5f52603260045260245ffd5b5f6001820161301a5761301a612c49565b5060010190565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561306f5784516001600160a01b03168352938301939183019160010161304a565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220dc51eb792f0c101237419b27015bed47750b2af21249aa44bab22aba89812c6464736f6c63430008150033

Deployed Bytecode Sourcemap

3675:19776:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5678:73;;;;;;;;;;;;5709:42;5678:73;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;5678:73:0;;;;;;;;9369:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;5507:35::-;;;;;;;;;;-1:-1:-1;5507:35:0;;;;-1:-1:-1;;;;;5507:35:0;;;9982:161;;;;;;;;;;-1:-1:-1;9982:161:0;;;;;:::i;:::-;;:::i;:::-;;;1769:14:1;;1762:22;1744:41;;1732:2;1717:18;9982:161:0;1604:187:1;5824:25:0;;;;;;;;;;-1:-1:-1;5824:25:0;;;;-1:-1:-1;;;;;5824:25:0;;;9104:83;;;;;;;;;;-1:-1:-1;9177:7:0;;9104:83;;;1942:25:1;;;1930:2;1915:18;9104:83:0;1796:177:1;10715:306:0;;;;;;;;;;-1:-1:-1;10715:306:0;;;;;:::i;:::-;;:::i;15553:402::-;;;;;;;;;;-1:-1:-1;15553:402:0;;;;;:::i;:::-;;:::i;:::-;;9193:80;;;;;;;;;;-1:-1:-1;9261:9:0;;9193:80;;9261:9;;;;2902:36:1;;2890:2;2875:18;9193:80:0;2760:184:1;11029:215:0;;;;;;;;;;-1:-1:-1;11029:215:0;;;;;:::i;:::-;;:::i;4707:80::-;;;;;;;;;;-1:-1:-1;4707:80:0;;;;;;;;;;;;;;;;3151:25:1;;;3207:2;3192:18;;3185:34;;;;3235:18;;;3228:34;3139:2;3124:18;4707:80:0;2949:319:1;15963:252:0;;;;;;;;;;-1:-1:-1;15963:252:0;;;;;:::i;:::-;;:::i;5549:21::-;;;;;;;;;;-1:-1:-1;5549:21:0;;;;-1:-1:-1;;;;;5549:21:0;;;5890:41;;;;;;;;;;-1:-1:-1;5890:41:0;;;;-1:-1:-1;;;5890:41:0;;;;;;7793:749;;;;;;;;;;-1:-1:-1;7793:749:0;;;;;:::i;:::-;;:::i;11485:125::-;;;;;;;;;;-1:-1:-1;11485:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;11574:28:0;11550:4;11574:28;;;:19;:28;;;;;;;;;11485:125;6243:36;;;;;;;;;;-1:-1:-1;6243:36:0;;;;;;;;10468:120;;;;;;;;;;-1:-1:-1;10468:120:0;;;;;:::i;:::-;;:::i;14818:134::-;;;;;;;;;;-1:-1:-1;14818:134:0;;;;;:::i;:::-;;:::i;16223:260::-;;;;;;;;;;-1:-1:-1;16223:260:0;;;;;:::i;:::-;;:::i;16788:134::-;;;;;;;;;;-1:-1:-1;16788:134:0;;;;;:::i;:::-;;:::i;9682:117::-;;;;;;;;;;-1:-1:-1;9682:117:0;;;;;:::i;:::-;;:::i;8550:195::-;;;;;;;;;;;;;:::i;12709:2101::-;;;:::i;12131:410::-;;;;;;;;;;-1:-1:-1;12131:410:0;;;;;:::i;:::-;;:::i;23263:185::-;;;;;;;;;;;;;:::i;9455:80::-;;;;;;;;;;-1:-1:-1;9507:7:0;7771:6;-1:-1:-1;;;;;7771:6:0;9455:80;;4148:68;;;;;;;;;;-1:-1:-1;4148:68:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9279:84;;;;;;;;;;;;;:::i;10596:111::-;;;;;;;;;;-1:-1:-1;10596:111:0;;;;;:::i;:::-;-1:-1:-1;;;;;10682:17:0;10655:7;10682:17;;;:8;:17;;;;;;;10596:111;11252:225;;;;;;;;;;-1:-1:-1;11252:225:0;;;;;:::i;:::-;;:::i;9807:167::-;;;;;;;;;;-1:-1:-1;9807:167:0;;;;;:::i;:::-;;:::i;3787:21::-;;;;;;;;;;-1:-1:-1;3787:21:0;;;;-1:-1:-1;;;;;3787:21:0;;;5179:83;;;;;;;;;;-1:-1:-1;5179:83:0;;;;;;;;;;;;;4697:25:1;;;4753:2;4738:18;;4731:34;;;;4670:18;5179:83:0;4523:248:1;15128:166:0;;;;;;;;;;-1:-1:-1;15128:166:0;;;;;:::i;:::-;;:::i;16930:171::-;;;;;;;;;;-1:-1:-1;16930:171:0;;;;;:::i;:::-;;:::i;14962:158::-;;;;;;;;;;-1:-1:-1;14962:158:0;;;;;:::i;:::-;;:::i;9541:133::-;;;;;;;;;;-1:-1:-1;9541:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;9643:19:0;;;9625:7;9643:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;9541:133;17114:327;;;;;;;;;;-1:-1:-1;17114:327:0;;;;;:::i;:::-;;:::i;15308:235::-;;;;;;;;;;-1:-1:-1;15308:235:0;;;;;:::i;:::-;;:::i;4938:92::-;;;;;;;;;;-1:-1:-1;4938:92:0;;;;;;;;;;;;11622:501;;;;;;;;;;-1:-1:-1;11622:501:0;;;;;:::i;:::-;;:::i;16491:289::-;;;;;;;;;;-1:-1:-1;16491:289:0;;;;;:::i;:::-;;:::i;9369:80::-;9417:13;9441:5;9434:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9369:80;:::o;9982:161::-;10057:4;10074:39;227:10;10097:7;10106:6;10074:8;:39::i;:::-;-1:-1:-1;10131:4:0;9982:161;;;;;:::o;10715:306::-;-1:-1:-1;;;;;10836:19:0;;10815:4;10836:19;;;:11;:19;;;;;;;;10856:10;10836:31;;;;;;;;-1:-1:-1;;10836:52:0;10832:126;;-1:-1:-1;;;;;10905:19:0;;;;;;:11;:19;;;;;;;;10925:10;10905:31;;;;;;;:41;;10940:6;;10905:19;:41;;10940:6;;10905:41;:::i;:::-;;;;-1:-1:-1;;10832:126:0;10977:36;10987:6;10995:9;11006:6;10977:9;:36::i;:::-;10970:43;10715:306;-1:-1:-1;;;;10715:306:0:o;15553:402::-;6989:6;;-1:-1:-1;;;;;6989:6:0;227:10;6989:22;6981:51;;;;-1:-1:-1;;;6981:51:0;;;;;;;:::i;:::-;;;;;;;;;15671:7:::1;:14:::0;15660:25;::::1;::::0;::::1;::::0;:73:::1;;-1:-1:-1::0;15718:15:0;;15706:27;::::1;;15660:73;:129;;;;-1:-1:-1::0;15770:19:0;;15754:35;::::1;;15660:129;15652:182;;;::::0;-1:-1:-1;;;15652:182:0;;8269:2:1;15652:182:0::1;::::0;::::1;8251:21:1::0;8308:2;8288:18;;;8281:30;8347:25;8327:18;;;8320:53;8390:18;;15652:182:0::1;8067:347:1::0;15652:182:0::1;15846:4;:21:::0;;;;15879:12;:23;15914:16;:31;15553:402::o;11029:215::-;227:10;11117:4;11166:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11166:34:0;;;;;;;;;;11117:4;;11134:80;;11157:7;;11166:47;;11203:10;;11166:47;:::i;:::-;11134:8;:80::i;15963:252::-;6989:6;;-1:-1:-1;;;;;6989:6:0;227:10;6989:22;6981:51;;;;-1:-1:-1;;;6981:51:0;;;;;;;:::i;:::-;16046:13:::1;16084:7;16073;16063;;:17;;;;:::i;:::-;16062:29;;;;:::i;:::-;16046:45;;16130:3;16120:7;;:13;;;;:::i;:::-;16110:5;:24;;16102:74;;;;-1:-1:-1::0;;;16102:74:0::1;;;;;;;:::i;:::-;16187:12;:20:::0;-1:-1:-1;;15963:252:0:o;7793:749::-;6989:6;;-1:-1:-1;;;;;6989:6:0;227:10;6989:22;6981:51;;;;-1:-1:-1;;;6981:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7874:22:0;::::1;7866:96;;;;-1:-1:-1::0;;;7866:96:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;;7981:16:0;::::1;::::0;7973:90:::1;;;;-1:-1:-1::0;;;7973:90:0::1;;;;;;;:::i;:::-;8094:6;::::0;;8074:34:::1;::::0;-1:-1:-1;;;;;8094:6:0;;::::1;::::0;8074:19:::1;:34::i;:::-;8119:35;8139:8;8149:4;8119:19;:35::i;:::-;8201:6;::::0;8179:10:::1;::::0;-1:-1:-1;;;;;8201:6:0;;::::1;8179:10:::0;::::1;:29:::0;8175:78:::1;;8223:10;:30:::0;;-1:-1:-1;;;;;;8223:30:0::1;-1:-1:-1::0;;;;;8223:30:0;::::1;;::::0;;8175:78:::1;8316:6;::::0;8306:17:::1;::::0;-1:-1:-1;;;;;8316:6:0::1;8306:9;:17::i;:::-;8274:19;8286:6:::0;;-1:-1:-1;;;;;8286:6:0;;::::1;8274:19:::0;;:11:::1;:19;::::0;;;;;;;:29;;::::1;::::0;;;;;;;:49;;;;8347:6;;8274:19;;8337:17:::1;::::0;8347:6:::1;8337:9;:17::i;:::-;:21;8334:99;;;8385:6;::::0;8375:46:::1;::::0;-1:-1:-1;;;;;8385:6:0::1;8393:8:::0;8403:17:::1;8385:6:::0;8403:9:::1;:17::i;:::-;8375:9;:46::i;:::-;;8334:99;8453:6;:17:::0;;-1:-1:-1;;;;;;8453:17:0::1;-1:-1:-1::0;;;;;8453:17:0;::::1;::::0;;::::1;::::0;;8486:38:::1;::::0;8453:17;;;;8486:38:::1;::::0;8453:6;8486:38:::1;7793:749:::0;:::o;10468:120::-;10521:4;10545:35;10553:7;-1:-1:-1;;10545:7:0;:35::i;14818:134::-;6989:6;;-1:-1:-1;;;;;6989:6:0;227:10;6989:22;6981:51;;;;-1:-1:-1;;;6981:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14906:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;14906:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14818:134::o;16223:260::-;6989:6;;-1:-1:-1;;;;;6989:6:0;227:10;6989:22;6981:51;;;;-1:-1:-1;;;6981:51:0;;;;;;;:::i;:::-;16310:13:::1;16348:7;16337;16327;;:17;;;;:::i;:::-;16326:29;;;;:::i;:::-;16310:45;;16394:3;16384:7;;:13;;;;:::i;:::-;16374:5;:24;;16366:74;;;;-1:-1:-1::0;;;16366:74:0::1;;;;;;;:::i;:::-;16451:14;:22:::0;-1:-1:-1;;16223:260:0:o;16788:134::-;6989:6;;-1:-1:-1;;;;;6989:6:0;227:10;6989:22;6981:51;;;;-1:-1:-1;;;6981:51:0;;;;;;;:::i;:::-;16877:10:::1;:37:::0;;-1:-1:-1;;;;;;16877:37:0::1;-1:-1:-1::0;;;;;16877:37:0;;;::::1;::::0;;;::::1;::::0;;16788:134::o;9682:117::-;-1:-1:-1;;;;;9775:16:0;9748:7;9775:16;;;:7;:16;;;;;;;9682:117::o;8550:195::-;6989:6;;-1:-1:-1;;;;;6989:6:0;227:10;6989:22;6981:51;;;;-1:-1:-1;;;6981:51:0;;;;;;;:::i;:::-;8637:6:::1;::::0;;8617:34:::1;::::0;-1:-1:-1;;;;;8637:6:0;;::::1;::::0;8617:19:::1;:34::i;:::-;8679:1;8662:19:::0;;-1:-1:-1;;;;;;8662:19:0::1;::::0;;8697:40:::1;::::0;8679:1;;8697:40:::1;::::0;8679:1;;8697:40:::1;8550:195::o:0;12709:2101::-;6989:6;;-1:-1:-1;;;;;6989:6:0;227:10;6989:22;6981:51;;;;-1:-1:-1;;;6981:51:0;;;;;;;:::i;:::-;12785:13:::1;::::0;::::1;;12784:14;12776:56;;;::::0;-1:-1:-1;;;12776:56:0;;9982:2:1;12776:56:0::1;::::0;::::1;9964:21:1::0;10021:2;10001:18;;;9994:30;10060:31;10040:18;;;10033:59;10109:18;;12776:56:0::1;9780:353:1::0;12776:56:0::1;12851:13;::::0;:18;12843:27:::1;;;::::0;::::1;;12891:20;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;12891:20:0::1;::::0;::::1;::::0;:5:::1;::::0;:20:::1;::::0;:5;:20:::1;:::i;:::-;-1:-1:-1::0;12922:17:0::1;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;12922:17:0::1;::::0;::::1;::::0;:7:::1;::::0;:17:::1;::::0;:7;:17:::1;:::i;:::-;-1:-1:-1::0;12950:9:0::1;:14:::0;;-1:-1:-1;;12950:14:0::1;12962:2;12950:14:::0;;::::1;::::0;;;12992:13:::1;12975:14;:30:::0;13043:13:::1;::::0;:2:::1;:13;:::i;:::-;13026:14;;:30;;;;:::i;:::-;13016:7;:40:::0;13069:9:::1;:46:::0;;-1:-1:-1;;;;;;13069:46:0::1;5623:42;13069:46:::0;;::::1;::::0;;;13153:19:::1;::::0;;-1:-1:-1;;;13153:19:0;;;;:17:::1;::::0;:19:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;5623:42;13153:19:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13135:49:0::1;;13185:9;;;;;;;;;-1:-1:-1::0;;;;;13185:9:0::1;-1:-1:-1::0;;;;;13185:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13135:82;::::0;-1:-1:-1;;;;;;13135:82:0::1;::::0;;;;;;-1:-1:-1;;;;;14211:15:1;;;13135:82:0::1;::::0;::::1;14193:34:1::0;13211:4:0::1;14243:18:1::0;;;14236:43;14128:18;;13135:82:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13126:6;:91:::0;;-1:-1:-1;;;;;;13126:91:0;;::::1;-1:-1:-1::0;;;;;13126:91:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;13228:15:0;;;:7:::1;:15;::::0;;;;;;;:22;;-1:-1:-1;;13228:22:0::1;-1:-1:-1::0;13228:22:0::1;::::0;;13281:4:::1;13261:26:::0;;:11:::1;:26:::0;;;;;13296:9:::1;::::0;;::::1;13261:46:::0;;;;;;;-1:-1:-1;;13261:66:0;;7771:6;;13340:10:::1;:29:::0;;7771:6;;;;13340:29;::::1;;::::0;;13397:3:::1;13382:12;:18:::0;;;13462:5:::1;13447:12;:20:::0;;;13494:7:::1;::::0;13462:5;;13494:22:::1;::::0;::::1;:::i;:::-;13493:39;;;;:::i;:::-;13478:12;:54:::0;13572:3:::1;13553:16;:22:::0;;;13626:5:::1;13607:16;:24:::0;;;13660:7:::1;::::0;13626:5;;13660:26:::1;::::0;::::1;:::i;:::-;13659:47;;;;:::i;:::-;13642:14;:64:::0;13744:7:::1;::::0;13759:6:::1;::::0;13744:11:::1;::::0;13754:1:::1;13744:11;:::i;:::-;13743:22;;;;:::i;:::-;13727:13;:38:::0;13790:7:::1;::::0;13805:5:::1;::::0;13790:11:::1;::::0;13800:1:::1;13790:11;:::i;:::-;13789:21;;;;:::i;:::-;13776:10;:34:::0;13854:4:::1;13823:19;:28;13843:7;7744::::0;7771:6;-1:-1:-1;;;;;7771:6:0;;7706:79;13843:7:::1;-1:-1:-1::0;;;;;13823:28:0::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;13823:28:0;;;:35;;;::::1;;-1:-1:-1::0;;13823:35:0;;::::1;;::::0;;13897:4:::1;13869:34:::0;;:19:::1;:34:::0;;;;;:41;;;::::1;13823:35:::0;13869:41;;::::1;::::0;;;5709:42:::1;13921:25:::0;;;:32;;;;::::1;::::0;::::1;::::0;;;13964:17:::1;::::0;13982:7:::1;7744::::0;7771:6;-1:-1:-1;;;;;7771:6:0;;7706:79;13982:7:::1;-1:-1:-1::0;;;;;13964:26:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;13964:26:0;:33;;-1:-1:-1;;13964:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14012:42:::1;5623;-1:-1:-1::0;;14012:7:0::1;:42::i;:::-;;14065:35;14073:7;7744::::0;7771:6;-1:-1:-1;;;;;7771:6:0;;7706:79;14073:7:::1;-1:-1:-1::0;;14065:7:0::1;:35::i;:::-;-1:-1:-1::0;14115:13:0::1;:20:::0;;-1:-1:-1;;14115:20:0::1;14131:4;14115:20:::0;;::::1;::::0;;;14165:7:::1;::::0;;14115:13:::1;14154:7;7744::::0;7771:6;-1:-1:-1;;;;;7771:6:0;;7706:79;14154:7:::1;-1:-1:-1::0;;;;;14146:16:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;14146:16:0;:26;14183:42:::1;14192:7;7744::::0;7771:6;-1:-1:-1;;;;;7771:6:0;;7706:79;14192:7:::1;5623:42;14217:7;;14183:8;:42::i;:::-;7744:7:::0;7771:6;-1:-1:-1;;;;;7771:6:0;-1:-1:-1;;;;;14241:38:0::1;14258:1;-1:-1:-1::0;;;;;14241:38:0::1;;14271:7;;14241:38;;;;1942:25:1::0;;1930:2;1915:18;;1796:177;14241:38:0::1;;;;;;;;14302:6;::::0;14318:9:::1;::::0;14293:55:::1;::::0;-1:-1:-1;;;;;14302:6:0;;::::1;::::0;14318:9:::1;-1:-1:-1::0;;14293:8:0::1;:55::i;:::-;14391:9;::::0;14359:62:::1;::::0;14376:4:::1;::::0;-1:-1:-1;;;;;14391:9:0::1;-1:-1:-1::0;;14359:8:0::1;:62::i;:::-;14450:6;::::0;14440:51:::1;::::0;-1:-1:-1;;;;;14450:6:0::1;14466:4;14473:17;14450:6:::0;14473:9:::1;:17::i;14440:51::-;-1:-1:-1::0;14504:9:0::1;::::0;-1:-1:-1;;;;;14504:9:0::1;:25;14537:21;14582:4;14602:24;14582:4:::0;14602:9:::1;:24::i;:::-;14641:1;14684::::0;14727:7:::1;7744::::0;7771:6;-1:-1:-1;;;;;7771:6:0;;7706:79;14727:7:::1;14749:15;14504:271;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14786:16;14800:1;14786:13;:16::i;:::-;12709:2101::o:0;12131:410::-;6989:6;;-1:-1:-1;;;;;6989:6:0;227:10;6989:22;6981:51;;;;-1:-1:-1;;;6981:51:0;;;;;;;:::i;:::-;12212:16;::::1;;12223:5;12212:16:::0;12208:326:::1;;-1:-1:-1::0;;;;;;12245:13:0::1;12261:5;12245:13:::0;;;:7:::1;:13;::::0;;;;:21;;-1:-1:-1;;12245:21:0::1;::::0;;12131:410::o;12208:326::-:1;12303:17;::::0;:22;12299:139:::1;;12392:7;12372:17;;12354:15;:35;;;;:::i;:::-;:45;12346:76;;;::::0;-1:-1:-1;;;12346:76:0;;15415:2:1;12346:76:0::1;::::0;::::1;15397:21:1::0;15454:2;15434:18;;;15427:30;-1:-1:-1;;;15473:18:1;;;15466:48;15531:18;;12346:76:0::1;15213:342:1::0;12346:76:0::1;-1:-1:-1::0;;;;;12452:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;:20;;-1:-1:-1;;12452:20:0::1;12468:4;12452:20;::::0;;12507:15:::1;12487:17;:35:::0;12208:326:::1;12131:410:::0;;:::o;23263:185::-;6989:6;;-1:-1:-1;;;;;6989:6:0;227:10;6989:22;6981:51;;;;-1:-1:-1;;;6981:51:0;;;;;;;:::i;:::-;23358:82:::1;::::0;23320:12:::1;::::0;23366:10:::1;::::0;23404:21:::1;::::0;23320:12;23358:82;23320:12;23358:82;23404:21;23366:10;23358:82:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;23263:185:0:o;9279:84::-;9329:13;9353:7;9346:14;;;;;:::i;11252:225::-;227:10;11345:4;11394:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11394:34:0;;;;;;;;;;11345:4;;11362:85;;11385:7;;11394:52;;11431:15;;11394:52;:::i;9807:167::-;9885:4;9902:42;227:10;9926:9;9937:6;9902:9;:42::i;:::-;-1:-1:-1;9962:4:0;;9807:167;-1:-1:-1;;;9807:167:0:o;15128:166::-;6989:6;;-1:-1:-1;;;;;6989:6:0;227:10;6989:22;6981:51;;;;-1:-1:-1;;;6981:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15226:52:0::1;15281:5;15226:52:::0;;;:35:::1;:52;::::0;;;;:60;;-1:-1:-1;;15226:60:0::1;::::0;;15128:166::o;16930:171::-;6989:6;;-1:-1:-1;;;;;6989:6:0;227:10;6989:22;6981:51;;;;-1:-1:-1;;;6981:51:0;;;;;;;:::i;:::-;17007:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;17007:32:0::1;-1:-1:-1::0;;;;17007:32:0;;::::1;;::::0;;17055:38:::1;::::0;::::1;::::0;::::1;::::0;17031:8;1769:14:1;1762:22;1744:41;;1732:2;1717:18;;1604:187;17055:38:0::1;;;;;;;;16930:171:::0;:::o;14962:158::-;6989:6;;-1:-1:-1;;;;;6989:6:0;227:10;6989:22;6981:51;;;;-1:-1:-1;;;6981:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15053:52:0::1;;::::0;;;:35:::1;:52;::::0;;;;:59;;-1:-1:-1;;15053:59:0::1;15108:4;15053:59;::::0;;14962:158::o;17114:327::-;6989:6;;-1:-1:-1;;;;;6989:6:0;227:10;6989:22;6981:51;;;;-1:-1:-1;;;6981:51:0;;;;;;;:::i;:::-;17213:6:::1;17208:226;17229:12;:19;17225:1;:23;17208:226;;;17275:7;:24;17283:12;17296:1;17283:15;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;17275:24:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;17275:24:0;;::::1;;17274:25;:71:::0;::::1;;;;5623:42;-1:-1:-1::0;;;;;17303:42:0::1;:12;17316:1;17303:15;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;17303:42:0::1;;;17274:71;17270:153;;;17400:7;17366:14;:31;17381:12;17394:1;17381:15;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;17366:31:0::1;-1:-1:-1::0;;;;;17366:31:0::1;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;17270:153;17250:3:::0;::::1;::::0;::::1;:::i;:::-;;;;17208:226;;;;17114:327:::0;;:::o;15308:235::-;6989:6;;-1:-1:-1;;;;;6989:6:0;227:10;6989:22;6981:51;;;;-1:-1:-1;;;6981:51:0;;;;;;;:::i;:::-;15405:21:::1;15416:10:::0;15405;:21:::1;:::i;:::-;15431:4;15404:31;15394:57;;;::::0;-1:-1:-1;;;15394:57:0;;16244:2:1;15394:57:0::1;::::0;::::1;16226:21:1::0;16283:2;16263:18;;;16256:30;-1:-1:-1;;;16302:18:1;;;16295:41;16353:18;;15394:57:0::1;16042:335:1::0;15394:57:0::1;15462:6;:29:::0;;;;15502:16;:29;15308:235::o;11622:501::-;6989:6;;-1:-1:-1;;;;;6989:6:0;227:10;6989:22;6981:51;;;;-1:-1:-1;;;6981:51:0;;;;;;;:::i;:::-;11693:29:::1;11744:9;11693:61;;11765:16;11802:10;-1:-1:-1::0;;;;;11802:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11784:47:0::1;;11840:4;11847:10;-1:-1:-1::0;;;;;11847:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11784:81;::::0;-1:-1:-1;;;;;;11784:81:0::1;::::0;;;;;;-1:-1:-1;;;;;14211:15:1;;;11784:81:0::1;::::0;::::1;14193:34:1::0;14263:15;;14243:18;;;14236:43;14128:18;;11784:81:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11765:100:::0;-1:-1:-1;;;;;;11880:22:0;::::1;11876:207;;11946:10;-1:-1:-1::0;;;;;11946:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11928:50:0::1;;11987:4;11994:10;-1:-1:-1::0;;;;;11994:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11928:84;::::0;-1:-1:-1;;;;;;11928:84:0::1;::::0;;;;;;-1:-1:-1;;;;;14211:15:1;;;11928:84:0::1;::::0;::::1;14193:34:1::0;14263:15;;14243:18;;;14236:43;14128:18;;11928:84:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11919:6;:93:::0;;-1:-1:-1;;;;;;11919:93:0::1;-1:-1:-1::0;;;;;11919:93:0;;;::::1;::::0;;;::::1;::::0;;11876:207:::1;;;12054:6;:17:::0;;-1:-1:-1;;;;;;12054:17:0::1;-1:-1:-1::0;;;;;12054:17:0;::::1;;::::0;;11876:207:::1;-1:-1:-1::0;12093:9:0::1;:22:::0;;-1:-1:-1;;;;;;12093:22:0::1;-1:-1:-1::0;;;;;12093:22:0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;11622:501:0:o;16491:289::-;6989:6;;-1:-1:-1;;;;;6989:6:0;227:10;6989:22;6981:51;;;;-1:-1:-1;;;6981:51:0;;;;;;;:::i;:::-;16691:16:::1;16671;16661:7;;:26;;;;:::i;:::-;16660:47;;;;:::i;:::-;16644:13;:63:::0;16732:7:::1;::::0;16759:13;;16732:23:::1;::::0;16742:13;;16732:23:::1;:::i;:::-;16731:41;;;;:::i;:::-;16718:10;:54:::0;-1:-1:-1;;;;16491:289:0:o;10151:309::-;-1:-1:-1;;;;;10245:20:0;;10237:52;;;;-1:-1:-1;;;10237:52:0;;16584:2:1;10237:52:0;;;16566:21:1;16623:2;16603:18;;;16596:30;-1:-1:-1;;;16642:18:1;;;16635:49;16701:18;;10237:52:0;16382:343:1;10237:52:0;-1:-1:-1;;;;;10308:21:0;;10300:53;;;;-1:-1:-1;;;10300:53:0;;16584:2:1;10300:53:0;;;16566:21:1;16623:2;16603:18;;;16596:30;-1:-1:-1;;;16642:18:1;;;16635:49;16701:18;;10300:53:0;16382:343:1;10300:53:0;-1:-1:-1;;;;;10366:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;10419:33;;1942:25:1;;;10419:33:0;;1915:18:1;10419:33:0;;;;;;;10151:309;;;:::o;17780:2003::-;17859:4;-1:-1:-1;;;;;17884:18:0;;17876:51;;;;-1:-1:-1;;;17876:51:0;;16932:2:1;17876:51:0;;;16914:21:1;16971:2;16951:18;;;16944:30;-1:-1:-1;;;16990:18:1;;;16983:50;17050:18;;17876:51:0;16730:344:1;17876:51:0;-1:-1:-1;;;;;17946:16:0;;17938:49;;;;-1:-1:-1;;;17938:49:0;;16932:2:1;17938:49:0;;;16914:21:1;16971:2;16951:18;;;16944:30;-1:-1:-1;;;16990:18:1;;;16983:50;17050:18;;17938:49:0;16730:344:1;17938:49:0;18015:1;18006:6;:10;17998:31;;;;-1:-1:-1;;;17998:31:0;;17281:2:1;17998:31:0;;;17263:21:1;17320:1;17300:18;;;17293:29;-1:-1:-1;;;17338:18:1;;;17331:38;17386:18;;17998:31:0;17079:331:1;17998:31:0;-1:-1:-1;;;;;18049:18:0;;;;;;:14;:18;;;;;;;;18048:19;:44;;;;-1:-1:-1;;;;;;18072:20:0;;;;;;:14;:20;;;;;;;;18071:21;18048:44;18040:71;;;;-1:-1:-1;;;18040:71:0;;17617:2:1;18040:71:0;;;17599:21:1;17656:2;17636:18;;;17629:30;-1:-1:-1;;;17675:18:1;;;17668:45;17730:18;;18040:71:0;17415:339:1;18040:71:0;18125:20;18136:4;18142:2;18125:10;:20::i;:::-;18122:891;;;18166:15;;;;18162:373;;;-1:-1:-1;;;;;18206:13:0;;;;;;:7;:13;;;;;;;;18202:318;;;-1:-1:-1;;;;;18251:13:0;;;;;;:9;:13;;;;;;18268:12;18251:29;;18243:38;;;;;;-1:-1:-1;;;;;18304:13:0;;;;;;:9;:13;;;;;18320:12;18304:28;;18202:318;;;-1:-1:-1;;;;;18411:15:0;;;;;;:9;:15;;;;;;18430:12;18411:31;;18403:40;;;;;;-1:-1:-1;;;;;18466:15:0;;;;;;:9;:15;;;;;18484:12;18466:30;;18202:318;-1:-1:-1;;;;;18554:41:0;;;;;;:35;:41;;;;;;;;;:84;;-1:-1:-1;;;;;;18599:39:0;;;;;;:35;:39;;;;;;;;18554:84;18549:439;;-1:-1:-1;;;;;18663:13:0;;;;;;:7;:13;;;;;;;;;:28;;-1:-1:-1;;;;;;18680:11:0;;;;;;:7;:11;;;;;;;;18663:28;18660:130;;;18729:12;;18719:6;:22;;18711:59;;;;-1:-1:-1;;;18711:59:0;;17961:2:1;18711:59:0;;;17943:21:1;18000:2;17980:18;;;17973:30;18039:26;18019:18;;;18012:54;18083:18;;18711:59:0;17759:348:1;18711:59:0;-1:-1:-1;;;;;18811:20:0;;5623:42;18811:20;;;;:36;;-1:-1:-1;;;;;;18836:11:0;;;;;;:7;:11;;;;;;;;18835:12;18811:36;18808:163;;;18906:14;;18896:6;18880:13;18890:2;18880:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;18872:79;;;;-1:-1:-1;;;18872:79:0;;18314:2:1;18872:79:0;;;18296:21:1;18353:2;18333:18;;;18326:30;18392:28;18372:18;;;18365:56;18438:18;;18872:79:0;18112:350:1;18872:79:0;-1:-1:-1;;;;;19029:11:0;;;;;;:7;:11;;;;;;:16;;19025:79;;-1:-1:-1;;;;;19062:12:0;;;;;;:8;:12;;;;;19077:15;19062:30;;19025:79;-1:-1:-1;;;;;19149:25:0;;19116:12;19149:25;;;:19;:25;;;;;;19131:4;;19149:25;;;:52;;-1:-1:-1;;;;;;19178:23:0;;;;;;:19;:23;;;;;;;;19149:52;19146:98;;;-1:-1:-1;19227:5:0;19146:98;-1:-1:-1;;;;;19260:11:0;;;;;;:7;:11;;;;;;;;19256:457;;;19293:16;;-1:-1:-1;;;19293:16:0;;;;19292:17;:59;;;;-1:-1:-1;19330:21:0;;-1:-1:-1;;;19330:21:0;;;;19292:59;19288:408;;;19386:28;19417:24;19435:4;19417:9;:24::i;:::-;19386:55;;19488:13;;19464:20;:37;19460:221;;19553:10;;19529:20;:34;19526:77;;-1:-1:-1;19590:10:0;;19526:77;19625:36;19640:20;19625:14;:36::i;:::-;19367:329;19288:408;19731:44;19749:4;19755:2;19759:6;19767:7;19731:17;:44::i;:::-;19724:51;17780:2003;-1:-1:-1;;;;;17780:2003:0:o;12549:150::-;12623:13;;:18;12614:38;;;;-1:-1:-1;;;12614:38:0;;18669:2:1;12614:38:0;;;18651:21:1;18708:1;18688:18;;;18681:29;-1:-1:-1;;;18726:18:1;;;18719:36;18772:18;;12614:38:0;18467:329:1;12614:38:0;12663:13;:28;12549:150::o;17449:323::-;17517:4;7771:6;;-1:-1:-1;;;;;17541:15:0;;;7771:6;;17541:15;;;;:45;;-1:-1:-1;7744:7:0;7771:6;-1:-1:-1;;;;;17573:13:0;;;7771:6;;17573:13;;17541:45;:84;;;;-1:-1:-1;;;;;;17604:21:0;;;;;;:17;:21;;;;;;;;17603:22;17541:84;:125;;;;-1:-1:-1;;;;;;17643:23:0;;;;;;:17;:23;;;;;;;;17642:24;17541:125;:152;;;;-1:-1:-1;;;;;;17683:10:0;;5709:42;17683:10;;17541:152;:185;;;;-1:-1:-1;;;;;;17710:16:0;;;;17541:185;:223;;;;-1:-1:-1;;;;;;17743:21:0;;17759:4;17743:21;;17541:223;17534:230;17449:323;-1:-1:-1;;;17449:323:0:o;19791:911::-;6863:16;:23;;-1:-1:-1;;;;6863:23:0;-1:-1:-1;;;6863:23:0;;;19899:16;;:6:::1;19880:16:::0;:35:::1;::::0;19899:16;19880:35:::1;:::i;:::-;19876:66:::0;19935:7:::1;19876:66;20037:16:::0;;:6:::1;20018:16:::0;19952:17:::1;::::0;20059:1:::1;::::0;20018:35:::1;::::0;20037:16;20018:35:::1;:::i;:::-;19997:6;:16:::0;19974:39:::1;::::0;:20;:39:::1;:::i;:::-;19973:81;;;;:::i;:::-;19972:88;;;;:::i;:::-;19952:108:::0;-1:-1:-1;20073:20:0::1;20096:32;19952:108:::0;20096:20;:32:::1;:::i;:::-;20073:55;;20139:30;20156:12;20139:16;:30::i;:::-;20325:16:::0;;:6:::1;20306:16:::0;20207:21:::1;::::0;20182:22:::1;::::0;20347:1:::1;::::0;20306:35:::1;::::0;::::1;:::i;:::-;20285:6;:16:::0;20268:33:::1;::::0;:14;:33:::1;:::i;:::-;20267:75;;;;:::i;:::-;20266:82;;;;:::i;:::-;20239:109:::0;-1:-1:-1;20365:13:0;;20361:161:::1;;20395:41;20408:9;20419:16;20395:12;:41::i;:::-;20456:54;::::0;;3151:25:1;;;3207:2;3192:18;;3185:34;;;3235:18;;;3228:34;;;20456:54:0::1;::::0;3139:2:1;3124:18;20456:54:0::1;;;;;;;20361:161;20536:21;:25:::0;20532:163:::1;;20633:10;::::0;20625:58:::1;::::0;20593:4:::1;::::0;-1:-1:-1;;;;;20633:10:0::1;::::0;20657:21:::1;::::0;20625:58:::1;::::0;;;20657:21;20633:10;20625:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;20532:163:0::1;19865:837;;;;6897:1;-1:-1:-1::0;6909:16:0;:24;;-1:-1:-1;;;;6909:24:0;;;19791:911::o;21972:584::-;22094:16;;22072:4;;22094:16;;22089:221;;22127:28;22146:4;22152:2;22127:18;:28::i;:::-;22175:16;;;;22174:17;:41;;;;;22195:20;22206:4;22212:2;22195:10;:20::i;:::-;22170:129;;;22236:47;;-1:-1:-1;;;22236:47:0;;19003:2:1;22236:47:0;;;18985:21:1;19042:2;19022:18;;;19015:30;19081:34;19061:18;;;19054:62;-1:-1:-1;;;19132:18:1;;;19125:35;19177:19;;22236:47:0;18801:401:1;22170:129:0;-1:-1:-1;;;;;22321:13:0;;;;;;:7;:13;;;;;:23;;22338:6;;22321:13;:23;;22338:6;;22321:23;:::i;:::-;;;;-1:-1:-1;22355:22:0;;-1:-1:-1;22381:7:0;22380:50;;22424:6;22380:50;;;22392:29;22404:4;22410:2;22414:6;22392:11;:29::i;:::-;-1:-1:-1;;;;;22445:11:0;;;;;;:7;:11;;;;;:29;;22355:75;;-1:-1:-1;22355:75:0;;22445:11;;;:29;;22355:75;;22445:29;:::i;:::-;;;;;;;;22507:2;-1:-1:-1;;;;;22492:34:0;22501:4;-1:-1:-1;;;;;22492:34:0;;22511:14;22492:34;;;;1942:25:1;;1930:2;1915:18;;1796:177;22492:34:0;;;;;;;;-1:-1:-1;22544:4:0;;21972:584;-1:-1:-1;;;;;21972:584:0:o;20710:417::-;20801:16;;;20815:1;20801:16;;;;;;;;20777:21;;20801:16;;;;;;;;;;-1:-1:-1;20801:16:0;20777:40;;20846:4;20828;20833:1;20828:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20828:23:0;;;:7;;;;;;;;;;:23;;;;20872:9;;:16;;;-1:-1:-1;;;20872:16:0;;;;:9;;;;;:14;;:16;;;;;20828:7;;20872:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20862:4;20867:1;20862:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20862:26:0;;;:7;;;;;;;;;:26;20901:9;;:218;;-1:-1:-1;;;20901:218:0;;:9;;;:60;;:218;;20976:11;;20901:9;;21046:4;;21073;;21093:15;;20901:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20766:361;20710:417;:::o;21135:335::-;21216:9;;-1:-1:-1;;;;;21216:9:0;:25;21249:9;21282:4;21302:11;21216:9;;21414:7;7744;7771:6;-1:-1:-1;;;;;7771:6:0;;7706:79;21414:7;21436:15;21216:246;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21135:335;;:::o;21478:486::-;21560:16;;;;21559:17;21551:65;;;;-1:-1:-1;;;21551:65:0;;20394:2:1;21551:65:0;;;20376:21:1;20433:2;20413:18;;;20406:30;20472:34;20452:18;;;20445:62;-1:-1:-1;;;20523:18:1;;;20516:33;20566:19;;21551:65:0;20192:399:1;21551:65:0;21632:20;21643:4;21649:2;21632:10;:20::i;:::-;21631:21;:37;;;;-1:-1:-1;21662:6:0;;-1:-1:-1;;;;;21656:12:0;;;21662:6;;21656:12;21631:37;21627:330;;;21704:12;21689;:27;-1:-1:-1;;;;;21733:23:0;;;;;;:17;:23;;;;;;;;;:30;;-1:-1:-1;;21733:30:0;;;21759:4;21733:30;;;;;;21778:16;:23;;;;;;;;;21831:15;21816:12;:30;21863:21;:28;;-1:-1:-1;;;;21863:28:0;-1:-1:-1;;;21863:28:0;;;21911:34;;1744:41:1;;;21911:34:0;;1717:18:1;21911:34:0;;;;;;;21478:486;;:::o;22564:691::-;22706:6;;22645:7;;;;-1:-1:-1;;;;;22706:6:0;;;22700:12;;;;22696:187;;-1:-1:-1;22740:12:0;;22696:187;;;22798:6;;-1:-1:-1;;;;;22798:6:0;;;22790:14;;;;22786:97;;-1:-1:-1;22820:4:0;:11;22786:97;;;-1:-1:-1;22865:16:0;;22786:97;22899:20;22910:4;22916:2;22899:10;:20::i;:::-;22895:142;;;22939:13;;:18;;:42;;;22961:13;;22979:1;22961:20;;22939:42;22935:91;;;23002:8;;;22935:91;23047:17;5315:5;23068:19;23077:10;23068:6;:19;:::i;:::-;:38;;;;:::i;:::-;23134:4;23118:22;;;;:7;:22;;;;;:37;;23047:60;;-1:-1:-1;23047:60:0;;23118:22;;;:37;;23047:60;;23118:37;:::i;:::-;;;;-1:-1:-1;;23171:40:0;;1942:25:1;;;23194:4:0;;-1:-1:-1;;;;;23171:40:0;;;;;1930:2:1;1915:18;23171:40:0;;;;;;;23229:18;23238:9;23229:6;:18;:::i;:::-;23222:25;22564:691;-1:-1:-1;;;;;;22564:691:0:o;222:548:1:-;334:4;363:2;392;381:9;374:21;424:6;418:13;467:6;462:2;451:9;447:18;440:34;492:1;502:140;516:6;513:1;510:13;502:140;;;611:14;;;607:23;;601:30;577:17;;;596:2;573:26;566:66;531:10;;502:140;;;506:3;691:1;686:2;677:6;666:9;662:22;658:31;651:42;761:2;754;750:7;745:2;737:6;733:15;729:29;718:9;714:45;710:54;702:62;;;;222:548;;;;:::o;1009:131::-;-1:-1:-1;;;;;1084:31:1;;1074:42;;1064:70;;1130:1;1127;1120:12;1064:70;1009:131;:::o;1145:134::-;1213:20;;1242:31;1213:20;1242:31;:::i;:::-;1145:134;;;:::o;1284:315::-;1352:6;1360;1413:2;1401:9;1392:7;1388:23;1384:32;1381:52;;;1429:1;1426;1419:12;1381:52;1468:9;1455:23;1487:31;1512:5;1487:31;:::i;:::-;1537:5;1589:2;1574:18;;;;1561:32;;-1:-1:-1;;;1284:315:1:o;1978:456::-;2055:6;2063;2071;2124:2;2112:9;2103:7;2099:23;2095:32;2092:52;;;2140:1;2137;2130:12;2092:52;2179:9;2166:23;2198:31;2223:5;2198:31;:::i;:::-;2248:5;-1:-1:-1;2305:2:1;2290:18;;2277:32;2318:33;2277:32;2318:33;:::i;:::-;1978:456;;2370:7;;-1:-1:-1;;;2424:2:1;2409:18;;;;2396:32;;1978:456::o;2439:316::-;2516:6;2524;2532;2585:2;2573:9;2564:7;2560:23;2556:32;2553:52;;;2601:1;2598;2591:12;2553:52;-1:-1:-1;;2624:23:1;;;2694:2;2679:18;;2666:32;;-1:-1:-1;2745:2:1;2730:18;;;2717:32;;2439:316;-1:-1:-1;2439:316:1:o;3273:248::-;3341:6;3349;3402:2;3390:9;3381:7;3377:23;3373:32;3370:52;;;3418:1;3415;3408:12;3370:52;-1:-1:-1;;3441:23:1;;;3511:2;3496:18;;;3483:32;;-1:-1:-1;3273:248:1:o;3526:247::-;3585:6;3638:2;3626:9;3617:7;3613:23;3609:32;3606:52;;;3654:1;3651;3644:12;3606:52;3693:9;3680:23;3712:31;3737:5;3712:31;:::i;3778:160::-;3843:20;;3899:13;;3892:21;3882:32;;3872:60;;3928:1;3925;3918:12;3943:315;4008:6;4016;4069:2;4057:9;4048:7;4044:23;4040:32;4037:52;;;4085:1;4082;4075:12;4037:52;4124:9;4111:23;4143:31;4168:5;4143:31;:::i;:::-;4193:5;-1:-1:-1;4217:35:1;4248:2;4233:18;;4217:35;:::i;:::-;4207:45;;3943:315;;;;;:::o;4776:180::-;4832:6;4885:2;4873:9;4864:7;4860:23;4856:32;4853:52;;;4901:1;4898;4891:12;4853:52;4924:26;4940:9;4924:26;:::i;4961:388::-;5029:6;5037;5090:2;5078:9;5069:7;5065:23;5061:32;5058:52;;;5106:1;5103;5096:12;5058:52;5145:9;5132:23;5164:31;5189:5;5164:31;:::i;:::-;5214:5;-1:-1:-1;5271:2:1;5256:18;;5243:32;5284:33;5243:32;5284:33;:::i;:::-;5336:7;5326:17;;;4961:388;;;;;:::o;5354:127::-;5415:10;5410:3;5406:20;5403:1;5396:31;5446:4;5443:1;5436:15;5470:4;5467:1;5460:15;5486:1191;5576:6;5584;5637:2;5625:9;5616:7;5612:23;5608:32;5605:52;;;5653:1;5650;5643:12;5605:52;5693:9;5680:23;5722:18;5763:2;5755:6;5752:14;5749:34;;;5779:1;5776;5769:12;5749:34;5817:6;5806:9;5802:22;5792:32;;5862:7;5855:4;5851:2;5847:13;5843:27;5833:55;;5884:1;5881;5874:12;5833:55;5920:2;5907:16;5942:4;5965:2;5961;5958:10;5955:36;;;5971:18;;:::i;:::-;6017:2;6014:1;6010:10;6049:2;6043:9;6112:2;6108:7;6103:2;6099;6095:11;6091:25;6083:6;6079:38;6167:6;6155:10;6152:22;6147:2;6135:10;6132:18;6129:46;6126:72;;;6178:18;;:::i;:::-;6214:2;6207:22;6264:18;;;6298:15;;;;-1:-1:-1;6340:11:1;;;6336:20;;;6368:19;;;6365:39;;;6400:1;6397;6390:12;6365:39;6424:11;;;;6444:148;6460:6;6455:3;6452:15;6444:148;;;6526:23;6545:3;6526:23;:::i;:::-;6514:36;;6477:12;;;;6570;;;;6444:148;;;6611:6;-1:-1:-1;6636:35:1;;-1:-1:-1;6652:18:1;;;6636:35;:::i;:::-;6626:45;;;;;;5486:1191;;;;;:::o;6682:385::-;6768:6;6776;6784;6792;6845:3;6833:9;6824:7;6820:23;6816:33;6813:53;;;6862:1;6859;6852:12;6813:53;-1:-1:-1;;6885:23:1;;;6955:2;6940:18;;6927:32;;-1:-1:-1;7006:2:1;6991:18;;6978:32;;7057:2;7042:18;7029:32;;-1:-1:-1;6682:385:1;-1:-1:-1;6682:385:1:o;7072:380::-;7151:1;7147:12;;;;7194;;;7215:61;;7269:4;7261:6;7257:17;7247:27;;7215:61;7322:2;7314:6;7311:14;7291:18;7288:38;7285:161;;7368:10;7363:3;7359:20;7356:1;7349:31;7403:4;7400:1;7393:15;7431:4;7428:1;7421:15;7285:161;;7072:380;;;:::o;7457:127::-;7518:10;7513:3;7509:20;7506:1;7499:31;7549:4;7546:1;7539:15;7573:4;7570:1;7563:15;7589:128;7656:9;;;7677:11;;;7674:37;;;7691:18;;:::i;7722:340::-;7924:2;7906:21;;;7963:2;7943:18;;;7936:30;-1:-1:-1;;;7997:2:1;7982:18;;7975:46;8053:2;8038:18;;7722:340::o;8419:125::-;8484:9;;;8505:10;;;8502:36;;;8518:18;;:::i;8549:168::-;8622:9;;;8653;;8670:15;;;8664:22;;8650:37;8640:71;;8691:18;;:::i;8722:217::-;8762:1;8788;8778:132;;8832:10;8827:3;8823:20;8820:1;8813:31;8867:4;8864:1;8857:15;8895:4;8892:1;8885:15;8778:132;-1:-1:-1;8924:9:1;;8722:217::o;8944:401::-;9146:2;9128:21;;;9185:2;9165:18;;;9158:30;9224:34;9219:2;9204:18;;9197:62;-1:-1:-1;;;9290:2:1;9275:18;;9268:35;9335:3;9320:19;;8944:401::o;9350:425::-;9552:2;9534:21;;;9591:2;9571:18;;;9564:30;9630:34;9625:2;9610:18;;9603:62;9701:31;9696:2;9681:18;;9674:59;9765:3;9750:19;;9350:425::o;10264:545::-;10366:2;10361:3;10358:11;10355:448;;;10402:1;10427:5;10423:2;10416:17;10472:4;10468:2;10458:19;10542:2;10530:10;10526:19;10523:1;10519:27;10513:4;10509:38;10578:4;10566:10;10563:20;10560:47;;;-1:-1:-1;10601:4:1;10560:47;10656:2;10651:3;10647:12;10644:1;10640:20;10634:4;10630:31;10620:41;;10711:82;10729:2;10722:5;10719:13;10711:82;;;10774:17;;;10755:1;10744:13;10711:82;;10985:1352;11111:3;11105:10;11138:18;11130:6;11127:30;11124:56;;;11160:18;;:::i;:::-;11189:97;11279:6;11239:38;11271:4;11265:11;11239:38;:::i;:::-;11233:4;11189:97;:::i;:::-;11341:4;;11405:2;11394:14;;11422:1;11417:663;;;;12124:1;12141:6;12138:89;;;-1:-1:-1;12193:19:1;;;12187:26;12138:89;-1:-1:-1;;10942:1:1;10938:11;;;10934:24;10930:29;10920:40;10966:1;10962:11;;;10917:57;12240:81;;11387:944;;11417:663;10211:1;10204:14;;;10248:4;10235:18;;-1:-1:-1;;11453:20:1;;;11571:236;11585:7;11582:1;11579:14;11571:236;;;11674:19;;;11668:26;11653:42;;11766:27;;;;11734:1;11722:14;;;;11601:19;;11571:236;;;11575:3;11835:6;11826:7;11823:19;11820:201;;;11896:19;;;11890:26;-1:-1:-1;;11979:1:1;11975:14;;;11991:3;11971:24;11967:37;11963:42;11948:58;11933:74;;11820:201;-1:-1:-1;;;;;12067:1:1;12051:14;;;12047:22;12034:36;;-1:-1:-1;10985:1352:1:o;12342:422::-;12431:1;12474:5;12431:1;12488:270;12509:7;12499:8;12496:21;12488:270;;;12568:4;12564:1;12560:6;12556:17;12550:4;12547:27;12544:53;;;12577:18;;:::i;:::-;12627:7;12617:8;12613:22;12610:55;;;12647:16;;;;12610:55;12726:22;;;;12686:15;;;;12488:270;;;12492:3;12342:422;;;;;:::o;12769:806::-;12818:5;12848:8;12838:80;;-1:-1:-1;12889:1:1;12903:5;;12838:80;12937:4;12927:76;;-1:-1:-1;12974:1:1;12988:5;;12927:76;13019:4;13037:1;13032:59;;;;13105:1;13100:130;;;;13012:218;;13032:59;13062:1;13053:10;;13076:5;;;13100:130;13137:3;13127:8;13124:17;13121:43;;;13144:18;;:::i;:::-;-1:-1:-1;;13200:1:1;13186:16;;13215:5;;13012:218;;13314:2;13304:8;13301:16;13295:3;13289:4;13286:13;13282:36;13276:2;13266:8;13263:16;13258:2;13252:4;13249:12;13245:35;13242:77;13239:159;;;-1:-1:-1;13351:19:1;;;13383:5;;13239:159;13430:34;13455:8;13449:4;13430:34;:::i;:::-;13500:6;13496:1;13492:6;13488:19;13479:7;13476:32;13473:58;;;13511:18;;:::i;:::-;13549:20;;12769:806;-1:-1:-1;;;12769:806:1:o;13580:140::-;13638:5;13667:47;13708:4;13698:8;13694:19;13688:4;13667:47;:::i;13725:251::-;13795:6;13848:2;13836:9;13827:7;13823:23;13819:32;13816:52;;;13864:1;13861;13854:12;13816:52;13896:9;13890:16;13915:31;13940:5;13915:31;:::i;14290:607::-;-1:-1:-1;;;;;14649:15:1;;;14631:34;;14696:2;14681:18;;14674:34;;;;14739:2;14724:18;;14717:34;;;;14782:2;14767:18;;14760:34;;;;14831:15;;;14825:3;14810:19;;14803:44;14611:3;14863:19;;14856:35;;;;14580:3;14565:19;;14290:607::o;14902:306::-;14990:6;14998;15006;15059:2;15047:9;15038:7;15034:23;15030:32;15027:52;;;15075:1;15072;15065:12;15027:52;15104:9;15098:16;15088:26;;15154:2;15143:9;15139:18;15133:25;15123:35;;15198:2;15187:9;15183:18;15177:25;15167:35;;14902:306;;;;;:::o;15770:127::-;15831:10;15826:3;15822:20;15819:1;15812:31;15862:4;15859:1;15852:15;15886:4;15883:1;15876:15;15902:135;15941:3;15962:17;;;15959:43;;15982:18;;:::i;:::-;-1:-1:-1;16029:1:1;16018:13;;15902:135::o;19207:980::-;19469:4;19517:3;19506:9;19502:19;19548:6;19537:9;19530:25;19574:2;19612:6;19607:2;19596:9;19592:18;19585:34;19655:3;19650:2;19639:9;19635:18;19628:31;19679:6;19714;19708:13;19745:6;19737;19730:22;19783:3;19772:9;19768:19;19761:26;;19822:2;19814:6;19810:15;19796:29;;19843:1;19853:195;19867:6;19864:1;19861:13;19853:195;;;19932:13;;-1:-1:-1;;;;;19928:39:1;19916:52;;20023:15;;;;19988:12;;;;19964:1;19882:9;19853:195;;;-1:-1:-1;;;;;;;20104:32:1;;;;20099:2;20084:18;;20077:60;-1:-1:-1;;;20168:3:1;20153:19;20146:35;20065:3;19207:980;-1:-1:-1;;;19207:980:1:o

Swarm Source

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