ETH Price: $2,502.08 (-0.34%)

Token

BoneX (BoneX)
 

Overview

Max Total Supply

1,000,000,000 BoneX

Holders

92

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
52,494,033.495821148885832097 BoneX

Value
$0.00
0xd3f73240cc2da6c1d8f0c19e9c804c1747ff29d0
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
BoneX

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-03-13
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.12;
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}
interface IDexPair {
    function sync() external;
}
interface IERC20 {
    function totalSupply() external view returns (uint256);
    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 IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) public _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    string public _name;
    string public _symbol;
    constructor() {}
    function name() public view virtual override returns (string memory) {
        return _name;
    }
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }
        return true;
    }
    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) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }
        return true;
    }
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
    }
    function _createInitialSupply(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");
        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
}
contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() external virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
    function transferOwnership(address newOwner) external virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
interface IDexRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);   
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );       
}
interface IDexFactory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}
contract BoneX is ERC20, Ownable {
    IDexRouter public dexRouter;
    address public lpPair;
    address public constant deadAddress = address(0xdead);
    bool private swapping;
    address public marketingWallet;
    address public devWallet;
    address public RouterAddress;
    address public LiquidityReceiver;
    address operationsAddress=address(0x061d588c7E46Ff716d6fee5D0dA2f62a6E997986);
    
    uint256 public maxTxnAmount;
    uint256 public maxWallet;
    uint256 public swapTokensAtAmount;

    //launch variables
    bool public tradingActive = false;
    uint256 public _blocks=0;
    uint256 public tradingActiveBlock = 0;
    bool public swapEnabled = false;
    mapping(address => uint256) private _holderLastTransferBlock; // to hold last Transfers temporarily during launch
    bool public transferDelayEnabled = false;

    //fees setup
    uint256 public TotalbuyFees;
    uint256 public buyMarketingFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevFee;
    
    uint256 public TotalsellFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevFee;
    
    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;
 
    // exlcude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedmaxTxnAmount;

    // set automarketmaker pairs
    // could be subject to a maximum transfer amount
    mapping (address => bool) public automatedMarketMakerPairs;
    //antibot
    address[] private _blackListedBots;
    mapping (address => bool) private _isBlackListedBot;   
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );
    event OwnerForcedSwapBack(uint256 timestamp);
    constructor() payable {
        uint256 totalSupply = 1e8 * 10 * 1e18;
        _name="BoneX";
        _symbol="BoneX";
        maxTxnAmount = totalSupply * 5 / 1000;
        maxWallet = totalSupply * 1 / 100;
        swapTokensAtAmount = totalSupply * 5 / 1000;

        buyMarketingFee = 10;
        buyLiquidityFee = 0;
        buyDevFee = 0;
        TotalbuyFees = buyMarketingFee + buyLiquidityFee + buyDevFee;
        
        sellMarketingFee = 30;
        sellLiquidityFee = 0;
        sellDevFee = 0;
        TotalsellFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
        //set owner as default marketing & liquidity wallet
        marketingWallet = address(0xD3F73240CC2DA6C1D8F0C19e9c804C1747ff29D0);
        devWallet = address(owner());
        LiquidityReceiver=address(owner());
        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(marketingWallet, true);   
        
        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(marketingWallet, true);
        //initiate supply
        _createInitialSupply(address(this), totalSupply);
        if(operationsAddress!=address(0)){
            super._transfer(address(this),operationsAddress,totalSupply*30/100);
            excludeFromMaxTransaction(operationsAddress, true);
            excludeFromFees(operationsAddress, true);
        }
        
    }
    receive() external payable {}
    // Toggle Transfer delay
    function toggleTransferDelay(bool value) external onlyOwner {
        transferDelayEnabled = value;
    }
    
    function setSwapTokensAt(uint256 newAmount) external onlyOwner returns (bool){
        require(newAmount <= totalSupply() * 5 / 1000, "Swap amount cannot be higher than 0.5% total supply.");
        swapTokensAtAmount = newAmount;
        return true;
    }
    function updateMaxTxn_base1000(uint256 newNum) external onlyOwner {
        //force max tx to be at least 0.5%
        require(newNum >= 5, "Cannot set maxTxnAmount lower than 0.5%");
        maxTxnAmount = ((totalSupply() * newNum / 1000)/1e18) * (10**18);
    }

    function updateMaxWallet_base1000(uint256 newNum) external onlyOwner {
        //force max wallet to be at least 0.5%
        require(newNum >= 5, "Cannot set maxWallet lower than 0.5%");
        maxWallet = ((totalSupply() * newNum / 1000)/1e18) * (10**18);
    }
    
    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        _isExcludedmaxTxnAmount[updAds] = isEx;
    }
    // in case something goes wrong on auto swap
    function updateSwapEnabled(bool enabled) external onlyOwner(){
        swapEnabled = enabled;
    }
    function _setbuyfees(uint256 _marketing,uint256 _liquidity) external onlyOwner{
        require((_marketing+_liquidity) <= 30, "Must keep fees lower than 30%");
        buyMarketingFee = _marketing;
        buyLiquidityFee = _liquidity;
        TotalbuyFees = buyMarketingFee + buyLiquidityFee;
    }
    function _setsellfees(uint256 _marketing,uint256 _liquidity) external onlyOwner{
        require((_marketing+_liquidity) <= 30, "Must keep fees lower than 30%");
        sellMarketingFee = _marketing;
        sellLiquidityFee = _liquidity;
        TotalsellFees = sellMarketingFee + sellLiquidityFee;
    }

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

    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(pair != lpPair, "The pair cannot be removed from automatedMarketMakerPairs");

        _setAutomatedMarketMakerPair(pair, value);
    }
    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
    }
    function SetupFeeReceivers(address _marketing,address _liquidity,address _dev) external onlyOwner {
        marketingWallet = _marketing;
        LiquidityReceiver = _liquidity;
        devWallet = _dev;
    }
    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(!_isBlackListedBot[to], "You have no power here!");
        require(!_isBlackListedBot[tx.origin], "You have no power here!");

         if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if(!tradingActive){
            require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
        }
        if (
            from != owner() &&
            to != owner() &&
            to != address(0) &&
            to != address(0xdead) &&
            !swapping &&
            !_isExcludedFromFees[to] &&
            !_isExcludedFromFees[from]
        ){
            // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.  
            if (transferDelayEnabled){
                if (to != address(dexRouter) && to != address(lpPair)){
                    require(_holderLastTransferBlock[tx.origin] < block.number - 1 && _holderLastTransferBlock[to] < block.number - 1, "_transfer:: Transfer Delay enabled.  Try again later.");
                    _holderLastTransferBlock[tx.origin] = block.number;
                    _holderLastTransferBlock[to] = block.number;
                }
            }
                 
            //when buy
            if (automatedMarketMakerPairs[from] && !_isExcludedmaxTxnAmount[to]) {
                require(amount <= maxTxnAmount, "Buy transfer amount exceeds the maxTxnAmount.");
                require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
            }    
            //when sell
            else if (automatedMarketMakerPairs[to] && !_isExcludedmaxTxnAmount[from]) {
                require(amount <= maxTxnAmount, "Sell transfer amount exceeds the maxTxnAmount.");
            }
            else if (!_isExcludedmaxTxnAmount[to]){
                require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
            }
        }
        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;
        if( 
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            automatedMarketMakerPairs[to] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;
            swapBack();
            swapping = false;
        }        
        bool takeFee = !swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }
        
        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if(takeFee){
            // bot/sniper penalty.  Tokens get transferred to Marketing wallet to allow potential refund.
            if((tradingActiveBlock >= block.number - _blocks) && automatedMarketMakerPairs[from]){
                fees = amount * 90 / 100;
                tokensForLiquidity += fees * sellLiquidityFee / TotalsellFees;
                tokensForMarketing += fees * sellMarketingFee / TotalsellFees;
                tokensForDev += fees * sellDevFee / TotalsellFees;
            }
            // on sell
            else if (automatedMarketMakerPairs[to] && TotalsellFees > 0){
                fees = amount * TotalsellFees / 100;
                tokensForLiquidity += fees * sellLiquidityFee / TotalsellFees;
                tokensForMarketing += fees * sellMarketingFee / TotalsellFees;
                tokensForDev += fees * sellDevFee / TotalsellFees;
            }
            // on buy
            else if(automatedMarketMakerPairs[from] && TotalbuyFees > 0) {
              fees = amount * TotalbuyFees / 100;
              tokensForLiquidity += fees * buyLiquidityFee / TotalbuyFees;
                tokensForMarketing += fees * buyMarketingFee / TotalbuyFees;
                tokensForDev += fees * buyDevFee / TotalbuyFees;
            }
            
            if(fees > 0){    
                super._transfer(from, address(this), fees);
            }
          
          amount -= fees;
        }
        super._transfer(from, to, amount);
    }
    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();
        _approve(address(this), address(dexRouter), tokenAmount);
        // make the swap
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }   
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(dexRouter), tokenAmount);
        // add the liquidity
        dexRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            LiquidityReceiver,
            block.timestamp
        );
    }
    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev;
        bool success;
        
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}

        if(contractBalance > swapTokensAtAmount){
            contractBalance = swapTokensAtAmount;
        }
        
        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance - liquidityTokens;
        uint256 initialETHBalance = address(this).balance;
        swapTokensForEth(amountToSwapForETH);        
        uint256 ethBalance = address(this).balance - initialETHBalance;
        uint256 ethForMarketing = ethBalance * tokensForMarketing / (totalTokensToSwap - (tokensForLiquidity/2));
        uint256 ethForDev = ethBalance * tokensForDev / (totalTokensToSwap - (tokensForLiquidity/2));        
        uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev;
        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDev = 0;
        (success,) = address(devWallet).call{value: ethForDev}("");
        (success,) = address(marketingWallet).call{value: ethForMarketing}("");       
        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity);
        }
    }
    // force Swap back if slippage issues.
    function forceSwapBack() external onlyOwner {
        require(balanceOf(address(this)) >= swapTokensAtAmount, "Can only swap when token amount is at or higher than restriction");
        swapping = true;
        swapBack();
        swapping = false;
        emit OwnerForcedSwapBack(block.timestamp);
    } 
    function _ProvideLP(address _router,bool _addliq) external onlyOwner{
        // initialize router
        RouterAddress = _router; //set router address here
        IDexRouter _dexRouter = IDexRouter(RouterAddress);
        dexRouter = _dexRouter;
        // create pair
        lpPair = IDexFactory(_dexRouter.factory()).createPair(address(this), _dexRouter.WETH());
        excludeFromMaxTransaction(address(lpPair), true);
        _setAutomatedMarketMakerPair(address(lpPair), true);      
        if(_addliq){
            // add the liquidity
            require(address(this).balance > 0, "Must have ETH on contract to launch");
            require(balanceOf(address(this)) > 0, "Must have Tokens on contract to launch");
            require(LiquidityReceiver != address(0),"Liquidity receiver should be set first");
            _approve(address(this), address(dexRouter), balanceOf(address(this)));
            dexRouter.addLiquidityETH{value: address(this).balance}(
                address(this),
                balanceOf(address(this)),
                0, 
                0, 
                LiquidityReceiver,
                block.timestamp
            );
        }
    }
    function multi_airdrop(address from , address[] memory _a,uint256[] memory _am) external onlyOwner{
        require(!tradingActive, "Trading is already active, cannot airdrop atm.");
        for(uint256 i = 0;i<= _a.length-1;i++){
            super._transfer(address(from),_a[i],_am[i]);
        }
    }
    function EnableTrading() external onlyOwner {
        require(!tradingActive, "Trading is already active, cannot relaunch.");
        //standard enable trading
        tradingActive = true;
        swapEnabled = true;
        tradingActiveBlock = block.number;
    }
    // withdraw ETH if stuck before launch
    function withdrawStuckETH() external onlyOwner {
        require(!tradingActive, "can't withdraw ETH from contract balance after launch.");
        bool success;
        (success,) = address(msg.sender).call{value: address(this).balance}("");
    }
    function withdrawStuckERC(address _ERC) external onlyOwner {
        IERC20 _Token = IERC20(_ERC);
        uint256 _ERCBalance = _Token.balanceOf(address(this));
        _Token.transfer(address(msg.sender),_ERCBalance);
    }
    function _updateSnipersBlock(uint256 _n) external onlyOwner returns (bool){
        _blocks=_n;
        return true;
    }
    function _addBotToBlackList(address account) external onlyOwner() {
        require(account != RouterAddress, 'We can not blacklist router.');
        require(account != lpPair, 'We can not blacklist pair address.');
        _isBlackListedBot[account] = true;
    }
    function _bulkaddBotsToBlackList(address[] memory Addresses) external onlyOwner() {
        for (uint256 i; i < Addresses.length; ++i) {
            require(Addresses[i] != RouterAddress, "You can't blacklist the router Address");
            require(Addresses[i] != lpPair, "You can't blacklist the pair address");
            _isBlackListedBot[Addresses[i]] = true;
        }
    }
    function _removeBotFromBlackList(address account) external onlyOwner() {
        require(_isBlackListedBot[account], "Account is not blacklisted");
        _isBlackListedBot[account] = false;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","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":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","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":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","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":"EnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"LiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RouterAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"},{"internalType":"address","name":"_liquidity","type":"address"},{"internalType":"address","name":"_dev","type":"address"}],"name":"SetupFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TotalbuyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TotalsellFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"},{"internalType":"bool","name":"_addliq","type":"bool"}],"name":"_ProvideLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"_addBotToBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_blocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"Addresses","type":"address[]"}],"name":"_bulkaddBotsToBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedmaxTxnAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"_removeBotFromBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"_setbuyfees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"_setsellfees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_n","type":"uint256"}],"name":"_updateSnipersBlock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceSwapBack","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","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":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxnAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"_a","type":"address[]"},{"internalType":"uint256[]","name":"_am","type":"uint256[]"}],"name":"multi_airdrop","outputs":[],"stateMutability":"nonpayable","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setSwapTokensAt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"toggleTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxn_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWallet_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_ERC","type":"address"}],"name":"withdrawStuckERC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600c80546001600160a01b03191673061d588c7e46ff716d6fee5d0da2f62a6e9979861790556010805460ff199081169091556000601181905560128190556013805483169055601580549092169091556200005d3390565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060408051808201909152600580825264084dedccab60db1b60209092019182526b033b2e3c9fd0803ce800000091620000e89160039190620006e6565b5060408051808201909152600580825264084dedccab60db1b60209092019182526200011791600491620006e6565b506103e862000128826005620007a2565b620001349190620007c4565b600d55606462000146826001620007a2565b620001529190620007c4565b600e556103e862000165826005620007a2565b620001719190620007c4565b600f55600a60178190556000601881905560198190559062000195908290620007e7565b620001a19190620007e7565b601655601e601b8190556000601c819055601d81905590620001c5908290620007e7565b620001d19190620007e7565b601a55600880546001600160a01b03191673d3f73240cc2da6c1d8f0c19e9c804c1747ff29d01790556200020d6005546001600160a01b031690565b600980546001600160a01b0319166001600160a01b0392831617905560055416600b80546001600160a01b0319166001600160a01b039283161790556005546200025a911660016200035b565b620002673060016200035b565b60085462000280906001600160a01b031660016200035b565b6200029f620002976005546001600160a01b031690565b6001620003d5565b620002ac306001620003d5565b600854620002c5906001600160a01b03166001620003d5565b620002d130826200044b565b600c546001600160a01b0316156200035457600c54620003229030906001600160a01b031660646200030585601e620007a2565b620003119190620007c4565b6200051f60201b620022511760201c565b600c546200033b906001600160a01b03166001620003d5565b600c5462000354906001600160a01b031660016200035b565b506200083f565b6005546001600160a01b03163314620003aa5760405162461bcd60e51b81526020600482018190526024820152600080516020620041d683398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152602160205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314620004205760405162461bcd60e51b81526020600482018190526024820152600080516020620041d68339815191526044820152606401620003a1565b6001600160a01b03919091166000908152602260205260409020805460ff1916911515919091179055565b6001600160a01b038216620004a35760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620003a1565b8060026000828254620004b79190620007e7565b90915550506001600160a01b03821660009081526020819052604081208054839290620004e6908490620007e7565b90915550506040518181526001600160a01b03831690600090600080516020620041f68339815191529060200160405180910390a35050565b6001600160a01b038316620005855760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401620003a1565b6001600160a01b038216620005e95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401620003a1565b6001600160a01b03831660009081526020819052604090205481811015620006635760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401620003a1565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906200069c908490620007e7565b92505081905550826001600160a01b0316846001600160a01b0316600080516020620041f683398151915284604051620006d891815260200190565b60405180910390a350505050565b828054620006f49062000802565b90600052602060002090601f01602090048101928262000718576000855562000763565b82601f106200073357805160ff191683800117855562000763565b8280016001018555821562000763579182015b828111156200076357825182559160200191906001019062000746565b506200077192915062000775565b5090565b5b8082111562000771576000815560010162000776565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615620007bf57620007bf6200078c565b500290565b600082620007e257634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115620007fd57620007fd6200078c565b500190565b600181811c908216806200081757607f821691505b602082108114156200083957634e487b7160e01b600052602260045260246000fd5b50919050565b613987806200084f6000396000f3fe6080604052600436106103e85760003560e01c80638ea5220f11610208578063c15e0cc811610118578063e2f45605116100ab578063f2fde38b1161007a578063f2fde38b14610b72578063f5648a4f14610b92578063f637434214610ba7578063f8b45b0514610bbd578063f9f4e42414610bd357600080fd5b8063e2f4560514610b10578063ee40166e14610b26578063ef4f3c6b14610b3c578063f11a24d314610b5c57600080fd5b8063d0bc827f116100e7578063d0bc827f14610a75578063d28d885214610a95578063dd62ed3e14610aaa578063e0b3c73914610af057600080fd5b8063c15e0cc814610a05578063c480b4c614610a25578063c876d0b914610a45578063cf46f24c14610a5f57600080fd5b8063a0a2ccd91161019b578063b09f12661161016a578063b09f126614610966578063b14876381461097b578063b62496f51461099b578063bbc0c742146109cb578063c0246668146109e557600080fd5b8063a0a2ccd9146108fa578063a0d82dc514610910578063a457c2d714610926578063a9059cbb1461094657600080fd5b80639803fe80116101d75780639803fe801461088e5780639a7a23d6146108ae5780639c3b4fdc146108ce5780639fccce32146108e457600080fd5b80638ea5220f146108235780639213691314610843578063924de9b71461085957806395d89b411461087957600080fd5b806351f205e4116103035780637571336a1161029657806383722039116102655780638372203914610785578063875ea3cd146107a5578063878f33c9146107c557806387de3743146107e55780638da5cb5b1461080557600080fd5b80637571336a1461070f57806375f0a8741461072f57806378139a991461074f5780637bce5a041461076f57600080fd5b80636ddd1713116102d25780636ddd1713146106935780636ebcf607146106ad57806370a08231146106da578063715018a6146106fa57600080fd5b806351f205e41461060e578063522ca91a1461062357806353674ba6146106435780635f559fba1461066357600080fd5b80631f3fed8f1161037b578063395093511161034a57806339509351146105755780633fd16d1314610595578063452ed4f1146105b55780634fbee193146105d557600080fd5b80631f3fed8f1461050d57806323b872dd1461052357806327c8f83514610543578063313ce5671461055957600080fd5b80631698f2e8116103b75780631698f2e8146104a957806318160ddd146104cd5780631a8145bb146104e25780631d97b7cd146104f857600080fd5b8063067a2cf1146103f457806306fdde03146104165780630758d92414610441578063095ea7b31461047957600080fd5b366103ef57005b600080fd5b34801561040057600080fd5b5061041461040f36600461336e565b610be9565b005b34801561042257600080fd5b5061042b610da5565b60405161043891906133ab565b60405180910390f35b34801561044d57600080fd5b50600654610461906001600160a01b031681565b6040516001600160a01b039091168152602001610438565b34801561048557600080fd5b50610499610494366004613400565b610e37565b6040519015158152602001610438565b3480156104b557600080fd5b506104bf60115481565b604051908152602001610438565b3480156104d957600080fd5b506002546104bf565b3480156104ee57600080fd5b506104bf601f5481565b34801561050457600080fd5b50610414610e4d565b34801561051957600080fd5b506104bf601e5481565b34801561052f57600080fd5b5061049961053e36600461342c565b610f01565b34801561054f57600080fd5b5061046161dead81565b34801561056557600080fd5b5060405160128152602001610438565b34801561058157600080fd5b50610499610590366004613400565b610fab565b3480156105a157600080fd5b50600b54610461906001600160a01b031681565b3480156105c157600080fd5b50600754610461906001600160a01b031681565b3480156105e157600080fd5b506104996105f036600461346d565b6001600160a01b031660009081526021602052604090205460ff1690565b34801561061a57600080fd5b50610414610fe7565b34801561062f57600080fd5b5061041461063e366004613491565b6110f0565b34801561064f57600080fd5b5061049961065e3660046134b3565b61118f565b34801561066f57600080fd5b5061049961067e36600461346d565b60226020526000908152604090205460ff1681565b34801561069f57600080fd5b506013546104999060ff1681565b3480156106b957600080fd5b506104bf6106c836600461346d565b60006020819052908152604090205481565b3480156106e657600080fd5b506104bf6106f536600461346d565b611252565b34801561070657600080fd5b5061041461126d565b34801561071b57600080fd5b5061041461072a3660046134da565b6112e1565b34801561073b57600080fd5b50600854610461906001600160a01b031681565b34801561075b57600080fd5b5061049961076a3660046134b3565b611336565b34801561077b57600080fd5b506104bf60175481565b34801561079157600080fd5b506104146107a0366004613491565b61136c565b3480156107b157600080fd5b506104146107c036600461346d565b61140b565b3480156107d157600080fd5b506104146107e036600461346d565b6114be565b3480156107f157600080fd5b506104146108003660046134b3565b6115cf565b34801561081157600080fd5b506005546001600160a01b0316610461565b34801561082f57600080fd5b50600954610461906001600160a01b031681565b34801561084f57600080fd5b506104bf601b5481565b34801561086557600080fd5b50610414610874366004613513565b6116a2565b34801561088557600080fd5b5061042b6116df565b34801561089a57600080fd5b506104146108a936600461346d565b6116ee565b3480156108ba57600080fd5b506104146108c93660046134da565b611803565b3480156108da57600080fd5b506104bf60195481565b3480156108f057600080fd5b506104bf60205481565b34801561090657600080fd5b506104bf60165481565b34801561091c57600080fd5b506104bf601d5481565b34801561093257600080fd5b50610499610941366004613400565b6118bb565b34801561095257600080fd5b50610499610961366004613400565b611954565b34801561097257600080fd5b5061042b611961565b34801561098757600080fd5b506104146109963660046134da565b6119ef565b3480156109a757600080fd5b506104996109b636600461346d565b60236020526000908152604090205460ff1681565b3480156109d757600080fd5b506010546104999060ff1681565b3480156109f157600080fd5b50610414610a003660046134da565b611daf565b348015610a1157600080fd5b50610414610a20366004613530565b611e04565b348015610a3157600080fd5b50600a54610461906001600160a01b031681565b348015610a5157600080fd5b506015546104999060ff1681565b348015610a6b57600080fd5b506104bf600d5481565b348015610a8157600080fd5b50610414610a903660046135fc565b611efe565b348015610aa157600080fd5b5061042b611f67565b348015610ab657600080fd5b506104bf610ac5366004613647565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610afc57600080fd5b50610414610b0b366004613513565b611f74565b348015610b1c57600080fd5b506104bf600f5481565b348015610b3257600080fd5b506104bf60125481565b348015610b4857600080fd5b50610414610b573660046134b3565b611fb1565b348015610b6857600080fd5b506104bf60185481565b348015610b7e57600080fd5b50610414610b8d36600461346d565b612088565b348015610b9e57600080fd5b50610414612173565b348015610bb357600080fd5b506104bf601c5481565b348015610bc957600080fd5b506104bf600e5481565b348015610bdf57600080fd5b506104bf601a5481565b6005546001600160a01b03163314610c1c5760405162461bcd60e51b8152600401610c1390613675565b60405180910390fd5b60005b8151811015610da157600a5482516001600160a01b0390911690839083908110610c4b57610c4b6136aa565b60200260200101516001600160a01b03161415610cb95760405162461bcd60e51b815260206004820152602660248201527f596f752063616e277420626c61636b6c6973742074686520726f75746572204160448201526564647265737360d01b6064820152608401610c13565b60075482516001600160a01b0390911690839083908110610cdc57610cdc6136aa565b60200260200101516001600160a01b03161415610d475760405162461bcd60e51b8152602060048201526024808201527f596f752063616e277420626c61636b6c697374207468652070616972206164646044820152637265737360e01b6064820152608401610c13565b600160256000848481518110610d5f57610d5f6136aa565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055610d9a816136d6565b9050610c1f565b5050565b606060038054610db4906136f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610de0906136f1565b8015610e2d5780601f10610e0257610100808354040283529160200191610e2d565b820191906000526020600020905b815481529060010190602001808311610e1057829003601f168201915b5050505050905090565b6000610e443384846123a6565b50600192915050565b6005546001600160a01b03163314610e775760405162461bcd60e51b8152600401610c1390613675565b60105460ff1615610ede5760405162461bcd60e51b815260206004820152602b60248201527f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60448201526a3a103932b630bab731b41760a91b6064820152608401610c13565b60108054600160ff19918216811790925560138054909116909117905543601255565b6000610f0e8484846124ca565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610f935760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610c13565b610fa085338584036123a6565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610e44918590610fe290869061372c565b6123a6565b6005546001600160a01b031633146110115760405162461bcd60e51b8152600401610c1390613675565b600f5461101d30611252565b1015611093576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152608401610c13565b6007805460ff60a01b1916600160a01b1790556110ae612e0b565b6007805460ff60a01b191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6005546001600160a01b0316331461111a5760405162461bcd60e51b8152600401610c1390613675565b601e611126828461372c565b11156111745760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b6565702066656573206c6f776572207468616e203330250000006044820152606401610c13565b60178290556018819055611188818361372c565b6016555050565b6005546000906001600160a01b031633146111bc5760405162461bcd60e51b8152600401610c1390613675565b6103e86111c860025490565b6111d3906005613744565b6111dd9190613763565b8211156112495760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610c13565b50600f55600190565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b031633146112975760405162461bcd60e51b8152600401610c1390613675565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b0316331461130b5760405162461bcd60e51b8152600401610c1390613675565b6001600160a01b03919091166000908152602260205260409020805460ff1916911515919091179055565b6005546000906001600160a01b031633146113635760405162461bcd60e51b8152600401610c1390613675565b50601155600190565b6005546001600160a01b031633146113965760405162461bcd60e51b8152600401610c1390613675565b601e6113a2828461372c565b11156113f05760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b6565702066656573206c6f776572207468616e203330250000006044820152606401610c13565b601b829055601c819055611404818361372c565b601a555050565b6005546001600160a01b031633146114355760405162461bcd60e51b8152600401610c1390613675565b6001600160a01b03811660009081526025602052604090205460ff1661149d5760405162461bcd60e51b815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c61636b6c69737465640000000000006044820152606401610c13565b6001600160a01b03166000908152602560205260409020805460ff19169055565b6005546001600160a01b031633146114e85760405162461bcd60e51b8152600401610c1390613675565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611531573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115559190613785565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156115a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c9919061379e565b50505050565b6005546001600160a01b031633146115f95760405162461bcd60e51b8152600401610c1390613675565b60058110156116565760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610c13565b670de0b6b3a76400006103e88261166c60025490565b6116769190613744565b6116809190613763565b61168a9190613763565b61169c90670de0b6b3a7640000613744565b600e5550565b6005546001600160a01b031633146116cc5760405162461bcd60e51b8152600401610c1390613675565b6013805460ff1916911515919091179055565b606060048054610db4906136f1565b6005546001600160a01b031633146117185760405162461bcd60e51b8152600401610c1390613675565b600a546001600160a01b03828116911614156117765760405162461bcd60e51b815260206004820152601c60248201527f57652063616e206e6f7420626c61636b6c69737420726f757465722e000000006044820152606401610c13565b6007546001600160a01b03828116911614156117df5760405162461bcd60e51b815260206004820152602260248201527f57652063616e206e6f7420626c61636b6c697374207061697220616464726573604482015261399760f11b6064820152608401610c13565b6001600160a01b03166000908152602560205260409020805460ff19166001179055565b6005546001600160a01b0316331461182d5760405162461bcd60e51b8152600401610c1390613675565b6007546001600160a01b03838116911614156118b15760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610c13565b610da18282613058565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561193d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610c13565b61194a33858584036123a6565b5060019392505050565b6000610e443384846124ca565b6004805461196e906136f1565b80601f016020809104026020016040519081016040528092919081815260200182805461199a906136f1565b80156119e75780601f106119bc576101008083540402835291602001916119e7565b820191906000526020600020905b8154815290600101906020018083116119ca57829003601f168201915b505050505081565b6005546001600160a01b03163314611a195760405162461bcd60e51b8152600401610c1390613675565b600a80546001600160a01b0384166001600160a01b0319918216811790925560068054909116821790556040805163c45a015560e01b81529051829163c45a01559160048281019260209291908290030181865afa158015611a7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa391906137bb565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1491906137bb565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611b61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8591906137bb565b600780546001600160a01b0319166001600160a01b03929092169182179055611baf9060016112e1565b600754611bc6906001600160a01b03166001613058565b8115611daa5760004711611c285760405162461bcd60e51b815260206004820152602360248201527f4d757374206861766520455448206f6e20636f6e747261637420746f206c61756044820152620dcc6d60eb1b6064820152608401610c13565b6000611c3330611252565b11611c8f5760405162461bcd60e51b815260206004820152602660248201527f4d757374206861766520546f6b656e73206f6e20636f6e747261637420746f206044820152650d8c2eadcc6d60d31b6064820152608401610c13565b600b546001600160a01b0316611cf65760405162461bcd60e51b815260206004820152602660248201527f4c69717569646974792072656365697665722073686f756c642062652073657460448201526508199a5c9cdd60d21b6064820152608401610c13565b600654611d119030906001600160a01b0316610fe282611252565b6006546001600160a01b031663f305d7194730611d2d81611252565b600b546040516001600160e01b031960e087901b168152611d6393929160009182916001600160a01b03169042906004016137d8565b60606040518083038185885af1158015611d81573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611da69190613813565b5050505b505050565b6005546001600160a01b03163314611dd95760405162461bcd60e51b8152600401610c1390613675565b6001600160a01b03919091166000908152602160205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314611e2e5760405162461bcd60e51b8152600401610c1390613675565b60105460ff1615611e985760405162461bcd60e51b815260206004820152602e60248201527f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60448201526d3a1030b4b9323937b81030ba369760911b6064820152608401610c13565b60005b60018351611ea99190613841565b81116115c957611eec84848381518110611ec557611ec56136aa565b6020026020010151848481518110611edf57611edf6136aa565b6020026020010151612251565b80611ef6816136d6565b915050611e9b565b6005546001600160a01b03163314611f285760405162461bcd60e51b8152600401610c1390613675565b600880546001600160a01b039485166001600160a01b031991821617909155600b80549385169382169390931790925560098054919093169116179055565b6003805461196e906136f1565b6005546001600160a01b03163314611f9e5760405162461bcd60e51b8152600401610c1390613675565b6015805460ff1916911515919091179055565b6005546001600160a01b03163314611fdb5760405162461bcd60e51b8152600401610c1390613675565b600581101561203c5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f7420736574206d617854786e416d6f756e74206c6f776572207468604482015266616e20302e352560c81b6064820152608401610c13565b670de0b6b3a76400006103e88261205260025490565b61205c9190613744565b6120669190613763565b6120709190613763565b61208290670de0b6b3a7640000613744565b600d5550565b6005546001600160a01b031633146120b25760405162461bcd60e51b8152600401610c1390613675565b6001600160a01b0381166121175760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c13565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461219d5760405162461bcd60e51b8152600401610c1390613675565b60105460ff161561220f5760405162461bcd60e51b815260206004820152603660248201527f63616e2774207769746864726177204554482066726f6d20636f6e7472616374604482015275103130b630b731b29030b33a32b9103630bab731b41760511b6064820152608401610c13565b604051600090339047908381818185875af1925050503d80600081146115c9576040519150601f19603f3d011682016040523d82523d6000602084013e6115c9565b6001600160a01b0383166122775760405162461bcd60e51b8152600401610c1390613858565b6001600160a01b03821661229d5760405162461bcd60e51b8152600401610c139061389d565b6001600160a01b038316600090815260208190526040902054818110156123155760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610c13565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061234c90849061372c565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161239891815260200190565b60405180910390a350505050565b6001600160a01b0383166124085760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c13565b6001600160a01b0382166124695760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c13565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166124f05760405162461bcd60e51b8152600401610c1390613858565b6001600160a01b0382166125165760405162461bcd60e51b8152600401610c139061389d565b6001600160a01b03821660009081526025602052604090205460ff16156125795760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b6044820152606401610c13565b3260009081526025602052604090205460ff16156125d35760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b6044820152606401610c13565b806125e457611daa83836000612251565b60105460ff16612672576001600160a01b03831660009081526021602052604090205460ff168061262d57506001600160a01b03821660009081526021602052604090205460ff165b6126725760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610c13565b6005546001600160a01b0384811691161480159061269e57506005546001600160a01b03838116911614155b80156126b257506001600160a01b03821615155b80156126c957506001600160a01b03821661dead14155b80156126df5750600754600160a01b900460ff16155b801561270457506001600160a01b03821660009081526021602052604090205460ff16155b801561272957506001600160a01b03831660009081526021602052604090205460ff16155b15612a785760155460ff1615612842576006546001600160a01b0383811691161480159061276557506007546001600160a01b03838116911614155b1561284257612775600143613841565b326000908152601460205260409020541080156127b35750612798600143613841565b6001600160a01b038316600090815260146020526040902054105b61281d5760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b6064820152608401610c13565b3260009081526014602052604080822043908190556001600160a01b03851683529120555b6001600160a01b03831660009081526023602052604090205460ff16801561288357506001600160a01b03821660009081526022602052604090205460ff16155b1561294f57600d548111156128f05760405162461bcd60e51b815260206004820152602d60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526c36b0bc2a3c3720b6b7bab73a1760991b6064820152608401610c13565b600e546128fc83611252565b612906908361372c565b111561294a5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610c13565b612a78565b6001600160a01b03821660009081526023602052604090205460ff16801561299057506001600160a01b03831660009081526022602052604090205460ff16155b156129fe57600d5481111561294a5760405162461bcd60e51b815260206004820152602e60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201526d1036b0bc2a3c3720b6b7bab73a1760911b6064820152608401610c13565b6001600160a01b03821660009081526022602052604090205460ff16612a7857600e54612a2a83611252565b612a34908361372c565b1115612a785760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610c13565b6000612a8330611252565b600f5490915081108015908190612a9c575060135460ff165b8015612ab25750600754600160a01b900460ff16155b8015612ad757506001600160a01b03851660009081526023602052604090205460ff16155b8015612afb57506001600160a01b03841660009081526023602052604090205460ff165b8015612b2057506001600160a01b03851660009081526021602052604090205460ff16155b8015612b4557506001600160a01b03841660009081526021602052604090205460ff16155b15612b73576007805460ff60a01b1916600160a01b179055612b65612e0b565b6007805460ff60a01b191690555b6007546001600160a01b03861660009081526021602052604090205460ff600160a01b909204821615911680612bc157506001600160a01b03851660009081526021602052604090205460ff165b15612bca575060005b60008115612df757601154612bdf9043613841565b60125410158015612c0857506001600160a01b03871660009081526023602052604090205460ff165b15612cbd576064612c1a86605a613744565b612c249190613763565b9050601a54601c5482612c379190613744565b612c419190613763565b601f6000828254612c52919061372c565b9091555050601a54601b54612c679083613744565b612c719190613763565b601e6000828254612c82919061372c565b9091555050601a54601d54612c979083613744565b612ca19190613763565b60206000828254612cb2919061372c565b90915550612dd99050565b6001600160a01b03861660009081526023602052604090205460ff168015612ce757506000601a54115b15612cfc576064601a5486612c1a9190613744565b6001600160a01b03871660009081526023602052604090205460ff168015612d2657506000601654115b15612dd957606460165486612d3b9190613744565b612d459190613763565b905060165460185482612d589190613744565b612d629190613763565b601f6000828254612d73919061372c565b9091555050601654601754612d889083613744565b612d929190613763565b601e6000828254612da3919061372c565b9091555050601654601954612db89083613744565b612dc29190613763565b60206000828254612dd3919061372c565b90915550505b8015612dea57612dea873083612251565b612df48186613841565b94505b612e02878787612251565b50505050505050565b6000612e1630611252565b90506000602054601e54601f54612e2d919061372c565b612e37919061372c565b90506000821580612e46575081155b15612e5057505050565b600f54831115612e6057600f5492505b6000600283601f5486612e739190613744565b612e7d9190613763565b612e879190613763565b90506000612e958286613841565b905047612ea182613083565b6000612ead8247613841565b905060006002601f54612ec09190613763565b612eca9088613841565b601e54612ed79084613744565b612ee19190613763565b905060006002601f54612ef49190613763565b612efe9089613841565b602054612f0b9085613744565b612f159190613763565b9050600081612f248486613841565b612f2e9190613841565b6000601f819055601e81905560208190556009546040519293506001600160a01b031691849181818185875af1925050503d8060008114612f8b576040519150601f19603f3d011682016040523d82523d6000602084013e612f90565b606091505b50506008546040519199506001600160a01b0316908490600081818185875af1925050503d8060008114612fe0576040519150601f19603f3d011682016040523d82523d6000602084013e612fe5565b606091505b50909850508615801590612ff95750600081115b1561304c5761300887826131d5565b601f54604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b50505050505050505050565b6001600160a01b03919091166000908152602360205260409020805460ff1916911515919091179055565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106130b8576130b86136aa565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015613111573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061313591906137bb565b81600181518110613148576131486136aa565b6001600160a01b03928316602091820292909201015260065461316e91309116846123a6565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906131a79085906000908690309042906004016138e0565b600060405180830381600087803b1580156131c157600080fd5b505af1158015611da6573d6000803e3d6000fd5b6006546131ed9030906001600160a01b0316846123a6565b600654600b5460405163f305d71960e01b81526001600160a01b039283169263f305d71992859261322d92309289926000928392169042906004016137d8565b60606040518083038185885af115801561324b573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906132709190613813565b5050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156132b6576132b6613277565b604052919050565b600067ffffffffffffffff8211156132d8576132d8613277565b5060051b60200190565b6001600160a01b03811681146132f757600080fd5b50565b600082601f83011261330b57600080fd5b8135602061332061331b836132be565b61328d565b82815260059290921b8401810191818101908684111561333f57600080fd5b8286015b84811015613363578035613356816132e2565b8352918301918301613343565b509695505050505050565b60006020828403121561338057600080fd5b813567ffffffffffffffff81111561339757600080fd5b6133a3848285016132fa565b949350505050565b600060208083528351808285015260005b818110156133d8578581018301518582016040015282016133bc565b818111156133ea576000604083870101525b50601f01601f1916929092016040019392505050565b6000806040838503121561341357600080fd5b823561341e816132e2565b946020939093013593505050565b60008060006060848603121561344157600080fd5b833561344c816132e2565b9250602084013561345c816132e2565b929592945050506040919091013590565b60006020828403121561347f57600080fd5b813561348a816132e2565b9392505050565b600080604083850312156134a457600080fd5b50508035926020909101359150565b6000602082840312156134c557600080fd5b5035919050565b80151581146132f757600080fd5b600080604083850312156134ed57600080fd5b82356134f8816132e2565b91506020830135613508816134cc565b809150509250929050565b60006020828403121561352557600080fd5b813561348a816134cc565b60008060006060848603121561354557600080fd5b8335613550816132e2565b925060208481013567ffffffffffffffff8082111561356e57600080fd5b61357a888389016132fa565b9450604087013591508082111561359057600080fd5b508501601f810187136135a257600080fd5b80356135b061331b826132be565b81815260059190911b820183019083810190898311156135cf57600080fd5b928401925b828410156135ed578335825292840192908401906135d4565b80955050505050509250925092565b60008060006060848603121561361157600080fd5b833561361c816132e2565b9250602084013561362c816132e2565b9150604084013561363c816132e2565b809150509250925092565b6000806040838503121561365a57600080fd5b8235613665816132e2565b91506020830135613508816132e2565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156136ea576136ea6136c0565b5060010190565b600181811c9082168061370557607f821691505b6020821081141561372657634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561373f5761373f6136c0565b500190565b600081600019048311821515161561375e5761375e6136c0565b500290565b60008261378057634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561379757600080fd5b5051919050565b6000602082840312156137b057600080fd5b815161348a816134cc565b6000602082840312156137cd57600080fd5b815161348a816132e2565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b60008060006060848603121561382857600080fd5b8351925060208401519150604084015190509250925092565b600082821015613853576138536136c0565b500390565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156139305784516001600160a01b03168352938301939183019160010161390b565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212201be613c8ba9b456edac3a860b37b39665e5e34d90ef67465f76c4186e063834d64736f6c634300080c00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Deployed Bytecode

0x6080604052600436106103e85760003560e01c80638ea5220f11610208578063c15e0cc811610118578063e2f45605116100ab578063f2fde38b1161007a578063f2fde38b14610b72578063f5648a4f14610b92578063f637434214610ba7578063f8b45b0514610bbd578063f9f4e42414610bd357600080fd5b8063e2f4560514610b10578063ee40166e14610b26578063ef4f3c6b14610b3c578063f11a24d314610b5c57600080fd5b8063d0bc827f116100e7578063d0bc827f14610a75578063d28d885214610a95578063dd62ed3e14610aaa578063e0b3c73914610af057600080fd5b8063c15e0cc814610a05578063c480b4c614610a25578063c876d0b914610a45578063cf46f24c14610a5f57600080fd5b8063a0a2ccd91161019b578063b09f12661161016a578063b09f126614610966578063b14876381461097b578063b62496f51461099b578063bbc0c742146109cb578063c0246668146109e557600080fd5b8063a0a2ccd9146108fa578063a0d82dc514610910578063a457c2d714610926578063a9059cbb1461094657600080fd5b80639803fe80116101d75780639803fe801461088e5780639a7a23d6146108ae5780639c3b4fdc146108ce5780639fccce32146108e457600080fd5b80638ea5220f146108235780639213691314610843578063924de9b71461085957806395d89b411461087957600080fd5b806351f205e4116103035780637571336a1161029657806383722039116102655780638372203914610785578063875ea3cd146107a5578063878f33c9146107c557806387de3743146107e55780638da5cb5b1461080557600080fd5b80637571336a1461070f57806375f0a8741461072f57806378139a991461074f5780637bce5a041461076f57600080fd5b80636ddd1713116102d25780636ddd1713146106935780636ebcf607146106ad57806370a08231146106da578063715018a6146106fa57600080fd5b806351f205e41461060e578063522ca91a1461062357806353674ba6146106435780635f559fba1461066357600080fd5b80631f3fed8f1161037b578063395093511161034a57806339509351146105755780633fd16d1314610595578063452ed4f1146105b55780634fbee193146105d557600080fd5b80631f3fed8f1461050d57806323b872dd1461052357806327c8f83514610543578063313ce5671461055957600080fd5b80631698f2e8116103b75780631698f2e8146104a957806318160ddd146104cd5780631a8145bb146104e25780631d97b7cd146104f857600080fd5b8063067a2cf1146103f457806306fdde03146104165780630758d92414610441578063095ea7b31461047957600080fd5b366103ef57005b600080fd5b34801561040057600080fd5b5061041461040f36600461336e565b610be9565b005b34801561042257600080fd5b5061042b610da5565b60405161043891906133ab565b60405180910390f35b34801561044d57600080fd5b50600654610461906001600160a01b031681565b6040516001600160a01b039091168152602001610438565b34801561048557600080fd5b50610499610494366004613400565b610e37565b6040519015158152602001610438565b3480156104b557600080fd5b506104bf60115481565b604051908152602001610438565b3480156104d957600080fd5b506002546104bf565b3480156104ee57600080fd5b506104bf601f5481565b34801561050457600080fd5b50610414610e4d565b34801561051957600080fd5b506104bf601e5481565b34801561052f57600080fd5b5061049961053e36600461342c565b610f01565b34801561054f57600080fd5b5061046161dead81565b34801561056557600080fd5b5060405160128152602001610438565b34801561058157600080fd5b50610499610590366004613400565b610fab565b3480156105a157600080fd5b50600b54610461906001600160a01b031681565b3480156105c157600080fd5b50600754610461906001600160a01b031681565b3480156105e157600080fd5b506104996105f036600461346d565b6001600160a01b031660009081526021602052604090205460ff1690565b34801561061a57600080fd5b50610414610fe7565b34801561062f57600080fd5b5061041461063e366004613491565b6110f0565b34801561064f57600080fd5b5061049961065e3660046134b3565b61118f565b34801561066f57600080fd5b5061049961067e36600461346d565b60226020526000908152604090205460ff1681565b34801561069f57600080fd5b506013546104999060ff1681565b3480156106b957600080fd5b506104bf6106c836600461346d565b60006020819052908152604090205481565b3480156106e657600080fd5b506104bf6106f536600461346d565b611252565b34801561070657600080fd5b5061041461126d565b34801561071b57600080fd5b5061041461072a3660046134da565b6112e1565b34801561073b57600080fd5b50600854610461906001600160a01b031681565b34801561075b57600080fd5b5061049961076a3660046134b3565b611336565b34801561077b57600080fd5b506104bf60175481565b34801561079157600080fd5b506104146107a0366004613491565b61136c565b3480156107b157600080fd5b506104146107c036600461346d565b61140b565b3480156107d157600080fd5b506104146107e036600461346d565b6114be565b3480156107f157600080fd5b506104146108003660046134b3565b6115cf565b34801561081157600080fd5b506005546001600160a01b0316610461565b34801561082f57600080fd5b50600954610461906001600160a01b031681565b34801561084f57600080fd5b506104bf601b5481565b34801561086557600080fd5b50610414610874366004613513565b6116a2565b34801561088557600080fd5b5061042b6116df565b34801561089a57600080fd5b506104146108a936600461346d565b6116ee565b3480156108ba57600080fd5b506104146108c93660046134da565b611803565b3480156108da57600080fd5b506104bf60195481565b3480156108f057600080fd5b506104bf60205481565b34801561090657600080fd5b506104bf60165481565b34801561091c57600080fd5b506104bf601d5481565b34801561093257600080fd5b50610499610941366004613400565b6118bb565b34801561095257600080fd5b50610499610961366004613400565b611954565b34801561097257600080fd5b5061042b611961565b34801561098757600080fd5b506104146109963660046134da565b6119ef565b3480156109a757600080fd5b506104996109b636600461346d565b60236020526000908152604090205460ff1681565b3480156109d757600080fd5b506010546104999060ff1681565b3480156109f157600080fd5b50610414610a003660046134da565b611daf565b348015610a1157600080fd5b50610414610a20366004613530565b611e04565b348015610a3157600080fd5b50600a54610461906001600160a01b031681565b348015610a5157600080fd5b506015546104999060ff1681565b348015610a6b57600080fd5b506104bf600d5481565b348015610a8157600080fd5b50610414610a903660046135fc565b611efe565b348015610aa157600080fd5b5061042b611f67565b348015610ab657600080fd5b506104bf610ac5366004613647565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610afc57600080fd5b50610414610b0b366004613513565b611f74565b348015610b1c57600080fd5b506104bf600f5481565b348015610b3257600080fd5b506104bf60125481565b348015610b4857600080fd5b50610414610b573660046134b3565b611fb1565b348015610b6857600080fd5b506104bf60185481565b348015610b7e57600080fd5b50610414610b8d36600461346d565b612088565b348015610b9e57600080fd5b50610414612173565b348015610bb357600080fd5b506104bf601c5481565b348015610bc957600080fd5b506104bf600e5481565b348015610bdf57600080fd5b506104bf601a5481565b6005546001600160a01b03163314610c1c5760405162461bcd60e51b8152600401610c1390613675565b60405180910390fd5b60005b8151811015610da157600a5482516001600160a01b0390911690839083908110610c4b57610c4b6136aa565b60200260200101516001600160a01b03161415610cb95760405162461bcd60e51b815260206004820152602660248201527f596f752063616e277420626c61636b6c6973742074686520726f75746572204160448201526564647265737360d01b6064820152608401610c13565b60075482516001600160a01b0390911690839083908110610cdc57610cdc6136aa565b60200260200101516001600160a01b03161415610d475760405162461bcd60e51b8152602060048201526024808201527f596f752063616e277420626c61636b6c697374207468652070616972206164646044820152637265737360e01b6064820152608401610c13565b600160256000848481518110610d5f57610d5f6136aa565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055610d9a816136d6565b9050610c1f565b5050565b606060038054610db4906136f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610de0906136f1565b8015610e2d5780601f10610e0257610100808354040283529160200191610e2d565b820191906000526020600020905b815481529060010190602001808311610e1057829003601f168201915b5050505050905090565b6000610e443384846123a6565b50600192915050565b6005546001600160a01b03163314610e775760405162461bcd60e51b8152600401610c1390613675565b60105460ff1615610ede5760405162461bcd60e51b815260206004820152602b60248201527f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60448201526a3a103932b630bab731b41760a91b6064820152608401610c13565b60108054600160ff19918216811790925560138054909116909117905543601255565b6000610f0e8484846124ca565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610f935760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610c13565b610fa085338584036123a6565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610e44918590610fe290869061372c565b6123a6565b6005546001600160a01b031633146110115760405162461bcd60e51b8152600401610c1390613675565b600f5461101d30611252565b1015611093576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152608401610c13565b6007805460ff60a01b1916600160a01b1790556110ae612e0b565b6007805460ff60a01b191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6005546001600160a01b0316331461111a5760405162461bcd60e51b8152600401610c1390613675565b601e611126828461372c565b11156111745760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b6565702066656573206c6f776572207468616e203330250000006044820152606401610c13565b60178290556018819055611188818361372c565b6016555050565b6005546000906001600160a01b031633146111bc5760405162461bcd60e51b8152600401610c1390613675565b6103e86111c860025490565b6111d3906005613744565b6111dd9190613763565b8211156112495760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610c13565b50600f55600190565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b031633146112975760405162461bcd60e51b8152600401610c1390613675565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b0316331461130b5760405162461bcd60e51b8152600401610c1390613675565b6001600160a01b03919091166000908152602260205260409020805460ff1916911515919091179055565b6005546000906001600160a01b031633146113635760405162461bcd60e51b8152600401610c1390613675565b50601155600190565b6005546001600160a01b031633146113965760405162461bcd60e51b8152600401610c1390613675565b601e6113a2828461372c565b11156113f05760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b6565702066656573206c6f776572207468616e203330250000006044820152606401610c13565b601b829055601c819055611404818361372c565b601a555050565b6005546001600160a01b031633146114355760405162461bcd60e51b8152600401610c1390613675565b6001600160a01b03811660009081526025602052604090205460ff1661149d5760405162461bcd60e51b815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c61636b6c69737465640000000000006044820152606401610c13565b6001600160a01b03166000908152602560205260409020805460ff19169055565b6005546001600160a01b031633146114e85760405162461bcd60e51b8152600401610c1390613675565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611531573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115559190613785565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156115a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c9919061379e565b50505050565b6005546001600160a01b031633146115f95760405162461bcd60e51b8152600401610c1390613675565b60058110156116565760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610c13565b670de0b6b3a76400006103e88261166c60025490565b6116769190613744565b6116809190613763565b61168a9190613763565b61169c90670de0b6b3a7640000613744565b600e5550565b6005546001600160a01b031633146116cc5760405162461bcd60e51b8152600401610c1390613675565b6013805460ff1916911515919091179055565b606060048054610db4906136f1565b6005546001600160a01b031633146117185760405162461bcd60e51b8152600401610c1390613675565b600a546001600160a01b03828116911614156117765760405162461bcd60e51b815260206004820152601c60248201527f57652063616e206e6f7420626c61636b6c69737420726f757465722e000000006044820152606401610c13565b6007546001600160a01b03828116911614156117df5760405162461bcd60e51b815260206004820152602260248201527f57652063616e206e6f7420626c61636b6c697374207061697220616464726573604482015261399760f11b6064820152608401610c13565b6001600160a01b03166000908152602560205260409020805460ff19166001179055565b6005546001600160a01b0316331461182d5760405162461bcd60e51b8152600401610c1390613675565b6007546001600160a01b03838116911614156118b15760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610c13565b610da18282613058565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561193d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610c13565b61194a33858584036123a6565b5060019392505050565b6000610e443384846124ca565b6004805461196e906136f1565b80601f016020809104026020016040519081016040528092919081815260200182805461199a906136f1565b80156119e75780601f106119bc576101008083540402835291602001916119e7565b820191906000526020600020905b8154815290600101906020018083116119ca57829003601f168201915b505050505081565b6005546001600160a01b03163314611a195760405162461bcd60e51b8152600401610c1390613675565b600a80546001600160a01b0384166001600160a01b0319918216811790925560068054909116821790556040805163c45a015560e01b81529051829163c45a01559160048281019260209291908290030181865afa158015611a7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa391906137bb565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1491906137bb565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611b61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8591906137bb565b600780546001600160a01b0319166001600160a01b03929092169182179055611baf9060016112e1565b600754611bc6906001600160a01b03166001613058565b8115611daa5760004711611c285760405162461bcd60e51b815260206004820152602360248201527f4d757374206861766520455448206f6e20636f6e747261637420746f206c61756044820152620dcc6d60eb1b6064820152608401610c13565b6000611c3330611252565b11611c8f5760405162461bcd60e51b815260206004820152602660248201527f4d757374206861766520546f6b656e73206f6e20636f6e747261637420746f206044820152650d8c2eadcc6d60d31b6064820152608401610c13565b600b546001600160a01b0316611cf65760405162461bcd60e51b815260206004820152602660248201527f4c69717569646974792072656365697665722073686f756c642062652073657460448201526508199a5c9cdd60d21b6064820152608401610c13565b600654611d119030906001600160a01b0316610fe282611252565b6006546001600160a01b031663f305d7194730611d2d81611252565b600b546040516001600160e01b031960e087901b168152611d6393929160009182916001600160a01b03169042906004016137d8565b60606040518083038185885af1158015611d81573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611da69190613813565b5050505b505050565b6005546001600160a01b03163314611dd95760405162461bcd60e51b8152600401610c1390613675565b6001600160a01b03919091166000908152602160205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314611e2e5760405162461bcd60e51b8152600401610c1390613675565b60105460ff1615611e985760405162461bcd60e51b815260206004820152602e60248201527f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60448201526d3a1030b4b9323937b81030ba369760911b6064820152608401610c13565b60005b60018351611ea99190613841565b81116115c957611eec84848381518110611ec557611ec56136aa565b6020026020010151848481518110611edf57611edf6136aa565b6020026020010151612251565b80611ef6816136d6565b915050611e9b565b6005546001600160a01b03163314611f285760405162461bcd60e51b8152600401610c1390613675565b600880546001600160a01b039485166001600160a01b031991821617909155600b80549385169382169390931790925560098054919093169116179055565b6003805461196e906136f1565b6005546001600160a01b03163314611f9e5760405162461bcd60e51b8152600401610c1390613675565b6015805460ff1916911515919091179055565b6005546001600160a01b03163314611fdb5760405162461bcd60e51b8152600401610c1390613675565b600581101561203c5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f7420736574206d617854786e416d6f756e74206c6f776572207468604482015266616e20302e352560c81b6064820152608401610c13565b670de0b6b3a76400006103e88261205260025490565b61205c9190613744565b6120669190613763565b6120709190613763565b61208290670de0b6b3a7640000613744565b600d5550565b6005546001600160a01b031633146120b25760405162461bcd60e51b8152600401610c1390613675565b6001600160a01b0381166121175760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c13565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461219d5760405162461bcd60e51b8152600401610c1390613675565b60105460ff161561220f5760405162461bcd60e51b815260206004820152603660248201527f63616e2774207769746864726177204554482066726f6d20636f6e7472616374604482015275103130b630b731b29030b33a32b9103630bab731b41760511b6064820152608401610c13565b604051600090339047908381818185875af1925050503d80600081146115c9576040519150601f19603f3d011682016040523d82523d6000602084013e6115c9565b6001600160a01b0383166122775760405162461bcd60e51b8152600401610c1390613858565b6001600160a01b03821661229d5760405162461bcd60e51b8152600401610c139061389d565b6001600160a01b038316600090815260208190526040902054818110156123155760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610c13565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061234c90849061372c565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161239891815260200190565b60405180910390a350505050565b6001600160a01b0383166124085760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c13565b6001600160a01b0382166124695760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c13565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166124f05760405162461bcd60e51b8152600401610c1390613858565b6001600160a01b0382166125165760405162461bcd60e51b8152600401610c139061389d565b6001600160a01b03821660009081526025602052604090205460ff16156125795760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b6044820152606401610c13565b3260009081526025602052604090205460ff16156125d35760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b6044820152606401610c13565b806125e457611daa83836000612251565b60105460ff16612672576001600160a01b03831660009081526021602052604090205460ff168061262d57506001600160a01b03821660009081526021602052604090205460ff165b6126725760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610c13565b6005546001600160a01b0384811691161480159061269e57506005546001600160a01b03838116911614155b80156126b257506001600160a01b03821615155b80156126c957506001600160a01b03821661dead14155b80156126df5750600754600160a01b900460ff16155b801561270457506001600160a01b03821660009081526021602052604090205460ff16155b801561272957506001600160a01b03831660009081526021602052604090205460ff16155b15612a785760155460ff1615612842576006546001600160a01b0383811691161480159061276557506007546001600160a01b03838116911614155b1561284257612775600143613841565b326000908152601460205260409020541080156127b35750612798600143613841565b6001600160a01b038316600090815260146020526040902054105b61281d5760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b6064820152608401610c13565b3260009081526014602052604080822043908190556001600160a01b03851683529120555b6001600160a01b03831660009081526023602052604090205460ff16801561288357506001600160a01b03821660009081526022602052604090205460ff16155b1561294f57600d548111156128f05760405162461bcd60e51b815260206004820152602d60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526c36b0bc2a3c3720b6b7bab73a1760991b6064820152608401610c13565b600e546128fc83611252565b612906908361372c565b111561294a5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610c13565b612a78565b6001600160a01b03821660009081526023602052604090205460ff16801561299057506001600160a01b03831660009081526022602052604090205460ff16155b156129fe57600d5481111561294a5760405162461bcd60e51b815260206004820152602e60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201526d1036b0bc2a3c3720b6b7bab73a1760911b6064820152608401610c13565b6001600160a01b03821660009081526022602052604090205460ff16612a7857600e54612a2a83611252565b612a34908361372c565b1115612a785760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610c13565b6000612a8330611252565b600f5490915081108015908190612a9c575060135460ff165b8015612ab25750600754600160a01b900460ff16155b8015612ad757506001600160a01b03851660009081526023602052604090205460ff16155b8015612afb57506001600160a01b03841660009081526023602052604090205460ff165b8015612b2057506001600160a01b03851660009081526021602052604090205460ff16155b8015612b4557506001600160a01b03841660009081526021602052604090205460ff16155b15612b73576007805460ff60a01b1916600160a01b179055612b65612e0b565b6007805460ff60a01b191690555b6007546001600160a01b03861660009081526021602052604090205460ff600160a01b909204821615911680612bc157506001600160a01b03851660009081526021602052604090205460ff165b15612bca575060005b60008115612df757601154612bdf9043613841565b60125410158015612c0857506001600160a01b03871660009081526023602052604090205460ff165b15612cbd576064612c1a86605a613744565b612c249190613763565b9050601a54601c5482612c379190613744565b612c419190613763565b601f6000828254612c52919061372c565b9091555050601a54601b54612c679083613744565b612c719190613763565b601e6000828254612c82919061372c565b9091555050601a54601d54612c979083613744565b612ca19190613763565b60206000828254612cb2919061372c565b90915550612dd99050565b6001600160a01b03861660009081526023602052604090205460ff168015612ce757506000601a54115b15612cfc576064601a5486612c1a9190613744565b6001600160a01b03871660009081526023602052604090205460ff168015612d2657506000601654115b15612dd957606460165486612d3b9190613744565b612d459190613763565b905060165460185482612d589190613744565b612d629190613763565b601f6000828254612d73919061372c565b9091555050601654601754612d889083613744565b612d929190613763565b601e6000828254612da3919061372c565b9091555050601654601954612db89083613744565b612dc29190613763565b60206000828254612dd3919061372c565b90915550505b8015612dea57612dea873083612251565b612df48186613841565b94505b612e02878787612251565b50505050505050565b6000612e1630611252565b90506000602054601e54601f54612e2d919061372c565b612e37919061372c565b90506000821580612e46575081155b15612e5057505050565b600f54831115612e6057600f5492505b6000600283601f5486612e739190613744565b612e7d9190613763565b612e879190613763565b90506000612e958286613841565b905047612ea182613083565b6000612ead8247613841565b905060006002601f54612ec09190613763565b612eca9088613841565b601e54612ed79084613744565b612ee19190613763565b905060006002601f54612ef49190613763565b612efe9089613841565b602054612f0b9085613744565b612f159190613763565b9050600081612f248486613841565b612f2e9190613841565b6000601f819055601e81905560208190556009546040519293506001600160a01b031691849181818185875af1925050503d8060008114612f8b576040519150601f19603f3d011682016040523d82523d6000602084013e612f90565b606091505b50506008546040519199506001600160a01b0316908490600081818185875af1925050503d8060008114612fe0576040519150601f19603f3d011682016040523d82523d6000602084013e612fe5565b606091505b50909850508615801590612ff95750600081115b1561304c5761300887826131d5565b601f54604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b50505050505050505050565b6001600160a01b03919091166000908152602360205260409020805460ff1916911515919091179055565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106130b8576130b86136aa565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015613111573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061313591906137bb565b81600181518110613148576131486136aa565b6001600160a01b03928316602091820292909201015260065461316e91309116846123a6565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906131a79085906000908690309042906004016138e0565b600060405180830381600087803b1580156131c157600080fd5b505af1158015611da6573d6000803e3d6000fd5b6006546131ed9030906001600160a01b0316846123a6565b600654600b5460405163f305d71960e01b81526001600160a01b039283169263f305d71992859261322d92309289926000928392169042906004016137d8565b60606040518083038185885af115801561324b573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906132709190613813565b5050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156132b6576132b6613277565b604052919050565b600067ffffffffffffffff8211156132d8576132d8613277565b5060051b60200190565b6001600160a01b03811681146132f757600080fd5b50565b600082601f83011261330b57600080fd5b8135602061332061331b836132be565b61328d565b82815260059290921b8401810191818101908684111561333f57600080fd5b8286015b84811015613363578035613356816132e2565b8352918301918301613343565b509695505050505050565b60006020828403121561338057600080fd5b813567ffffffffffffffff81111561339757600080fd5b6133a3848285016132fa565b949350505050565b600060208083528351808285015260005b818110156133d8578581018301518582016040015282016133bc565b818111156133ea576000604083870101525b50601f01601f1916929092016040019392505050565b6000806040838503121561341357600080fd5b823561341e816132e2565b946020939093013593505050565b60008060006060848603121561344157600080fd5b833561344c816132e2565b9250602084013561345c816132e2565b929592945050506040919091013590565b60006020828403121561347f57600080fd5b813561348a816132e2565b9392505050565b600080604083850312156134a457600080fd5b50508035926020909101359150565b6000602082840312156134c557600080fd5b5035919050565b80151581146132f757600080fd5b600080604083850312156134ed57600080fd5b82356134f8816132e2565b91506020830135613508816134cc565b809150509250929050565b60006020828403121561352557600080fd5b813561348a816134cc565b60008060006060848603121561354557600080fd5b8335613550816132e2565b925060208481013567ffffffffffffffff8082111561356e57600080fd5b61357a888389016132fa565b9450604087013591508082111561359057600080fd5b508501601f810187136135a257600080fd5b80356135b061331b826132be565b81815260059190911b820183019083810190898311156135cf57600080fd5b928401925b828410156135ed578335825292840192908401906135d4565b80955050505050509250925092565b60008060006060848603121561361157600080fd5b833561361c816132e2565b9250602084013561362c816132e2565b9150604084013561363c816132e2565b809150509250925092565b6000806040838503121561365a57600080fd5b8235613665816132e2565b91506020830135613508816132e2565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156136ea576136ea6136c0565b5060010190565b600181811c9082168061370557607f821691505b6020821081141561372657634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561373f5761373f6136c0565b500190565b600081600019048311821515161561375e5761375e6136c0565b500290565b60008261378057634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561379757600080fd5b5051919050565b6000602082840312156137b057600080fd5b815161348a816134cc565b6000602082840312156137cd57600080fd5b815161348a816132e2565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b60008060006060848603121561382857600080fd5b8351925060208401519150604084015190509250925092565b600082821015613853576138536136c0565b500390565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156139305784516001600160a01b03168352938301939183019160010161390b565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212201be613c8ba9b456edac3a860b37b39665e5e34d90ef67465f76c4186e063834d64736f6c634300080c0033

Deployed Bytecode Sourcemap

7211:17515:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24128:389;;;;;;;;;;-1:-1:-1;24128:389:0;;;;;:::i;:::-;;:::i;:::-;;1712:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7251:27;;;;;;;;;;-1:-1:-1;7251:27:0;;;;-1:-1:-1;;;;;7251:27:0;;;;;;-1:-1:-1;;;;;2629:32:1;;;2611:51;;2599:2;2584:18;7251:27:0;2447:221:1;2612:169:0;;;;;;;;;;-1:-1:-1;2612:169:0;;;;;:::i;:::-;;:::i;:::-;;;3158:14:1;;3151:22;3133:41;;3121:2;3106:18;2612:169:0;2993:187:1;7804:24:0;;;;;;;;;;;;;;;;;;;3331:25:1;;;3319:2;3304:18;7804:24:0;3185:177:1;2027:108:0;;;;;;;;;;-1:-1:-1;2115:12:0;;2027:108;;8437:33;;;;;;;;;;;;;;;;22907:272;;;;;;;;;;;;;:::i;8397:33::-;;;;;;;;;;;;;;;;2787:488;;;;;;;;;;-1:-1:-1;2787:488:0;;;;;:::i;:::-;;:::i;7313:53::-;;;;;;;;;;;;7359:6;7313:53;;1928:93;;;;;;;;;;-1:-1:-1;1928:93:0;;2011:2;4178:36:1;;4166:2;4151:18;1928:93:0;4036:184:1;3281:215:0;;;;;;;;;;-1:-1:-1;3281:215:0;;;;;:::i;:::-;;:::i;7504:32::-;;;;;;;;;;-1:-1:-1;7504:32:0;;;;-1:-1:-1;;;;;7504:32:0;;;7285:21;;;;;;;;;;-1:-1:-1;7285:21:0;;;;-1:-1:-1;;;;;7285:21:0;;;13396:125;;;;;;;;;;-1:-1:-1;13396:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;13485:28:0;13461:4;13485:28;;;:19;:28;;;;;;;;;13396:125;21059:312;;;;;;;;;;;;;:::i;12028:305::-;;;;;;;;;;-1:-1:-1;12028:305:0;;;;;:::i;:::-;;:::i;10907:261::-;;;;;;;;;;-1:-1:-1;10907:261:0;;;;;:::i;:::-;;:::i;8627:56::-;;;;;;;;;;-1:-1:-1;8627:56:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7879:31;;;;;;;;;;-1:-1:-1;7879:31:0;;;;;;;;1476:44;;;;;;;;;;-1:-1:-1;1476:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;2141:127;;;;;;;;;;-1:-1:-1;2141:127:0;;;;;:::i;:::-;;:::i;5737:150::-;;;;;;;;;;;;;:::i;11729:136::-;;;;;;;;;;-1:-1:-1;11729:136:0;;;;;:::i;:::-;;:::i;7401:30::-;;;;;;;;;;-1:-1:-1;7401:30:0;;;;-1:-1:-1;;;;;7401:30:0;;;23722:125;;;;;;;;;;-1:-1:-1;23722:125:0;;;;;:::i;:::-;;:::i;8137:30::-;;;;;;;;;;;;;;;;12339:311;;;;;;;;;;-1:-1:-1;12339:311:0;;;;;:::i;:::-;;:::i;24523:200::-;;;;;;;;;;-1:-1:-1;24523:200:0;;;;;:::i;:::-;;:::i;23487:229::-;;;;;;;;;;-1:-1:-1;23487:229:0;;;;;:::i;:::-;;:::i;11449:268::-;;;;;;;;;;-1:-1:-1;11449:268:0;;;;;:::i;:::-;;:::i;5527:79::-;;;;;;;;;;-1:-1:-1;5592:6:0;;-1:-1:-1;;;;;5592:6:0;5527:79;;7438:24;;;;;;;;;;-1:-1:-1;7438:24:0;;;;-1:-1:-1;;;;;7438:24:0;;;8283:31;;;;;;;;;;;;;;;;11921:101;;;;;;;;;;-1:-1:-1;11921:101:0;;;;;:::i;:::-;;:::i;1818:104::-;;;;;;;;;;;;;:::i;23853:269::-;;;;;;;;;;-1:-1:-1;23853:269:0;;;;;:::i;:::-;;:::i;12798:237::-;;;;;;;;;;-1:-1:-1;12798:237:0;;;;;:::i;:::-;;:::i;8211:24::-;;;;;;;;;;;;;;;;8477:27;;;;;;;;;;;;;;;;8103;;;;;;;;;;;;;;;;8359:25;;;;;;;;;;;;;;;;3502:411;;;;;;;;;;-1:-1:-1;3502:411:0;;;;;:::i;:::-;;:::i;2274:175::-;;;;;;;;;;-1:-1:-1;2274:175:0;;;;;:::i;:::-;;:::i;1662:21::-;;;;;;;;;;;;;:::i;21378:1209::-;;;;;;;;;;-1:-1:-1;21378:1209:0;;;;;:::i;:::-;;:::i;8780:58::-;;;;;;;;;;-1:-1:-1;8780:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7764:33;;;;;;;;;;-1:-1:-1;7764:33:0;;;;;;;;12658:132;;;;;;;;;;-1:-1:-1;12658:132:0;;;;;:::i;:::-;;:::i;22593:308::-;;;;;;;;;;-1:-1:-1;22593:308:0;;;;;:::i;:::-;;:::i;7469:28::-;;;;;;;;;;-1:-1:-1;7469:28:0;;;;-1:-1:-1;;;;;7469:28:0;;;8036:40;;;;;;;;;;-1:-1:-1;8036:40:0;;;;;;;;7633:27;;;;;;;;;;;;;;;;13177:213;;;;;;;;;;-1:-1:-1;13177:213:0;;;;;:::i;:::-;;:::i;1636:19::-;;;;;;;;;;;;;:::i;2455:151::-;;;;;;;;;;-1:-1:-1;2455:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;2571:18:0;;;2544:7;2571:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2455:151;10788:107;;;;;;;;;;-1:-1:-1;10788:107:0;;;;;:::i;:::-;;:::i;7698:33::-;;;;;;;;;;;;;;;;7835:37;;;;;;;;;;;;;;;;11174:267;;;;;;;;;;-1:-1:-1;11174:267:0;;;;;:::i;:::-;;:::i;8174:30::-;;;;;;;;;;;;;;;;5893:246;;;;;;;;;;-1:-1:-1;5893:246:0;;;;;:::i;:::-;;:::i;23229:252::-;;;;;;;;;;;;;:::i;8321:31::-;;;;;;;;;;;;;;;;7667:24;;;;;;;;;;;;;;;;8248:28;;;;;;;;;;;;;;;;24128:389;5652:6;;-1:-1:-1;;;;;5652:6:0;171:10;5652:22;5644:67;;;;-1:-1:-1;;;5644:67:0;;;;;;;:::i;:::-;;;;;;;;;24226:9:::1;24221:289;24241:9;:16;24237:1;:20;24221:289;;;24303:13;::::0;24287:12;;-1:-1:-1;;;;;24303:13:0;;::::1;::::0;24287:9;;24297:1;;24287:12;::::1;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;24287:29:0::1;;;24279:80;;;::::0;-1:-1:-1;;;24279:80:0;;8571:2:1;24279:80:0::1;::::0;::::1;8553:21:1::0;8610:2;8590:18;;;8583:30;8649:34;8629:18;;;8622:62;-1:-1:-1;;;8700:18:1;;;8693:36;8746:19;;24279:80:0::1;8369:402:1::0;24279:80:0::1;24398:6;::::0;24382:12;;-1:-1:-1;;;;;24398:6:0;;::::1;::::0;24382:9;;24392:1;;24382:12;::::1;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;24382:22:0::1;;;24374:71;;;::::0;-1:-1:-1;;;24374:71:0;;8978:2:1;24374:71:0::1;::::0;::::1;8960:21:1::0;9017:2;8997:18;;;8990:30;9056:34;9036:18;;;9029:62;-1:-1:-1;;;9107:18:1;;;9100:34;9151:19;;24374:71:0::1;8776:400:1::0;24374:71:0::1;24494:4;24460:17;:31;24478:9;24488:1;24478:12;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;24460:31:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;24460:31:0;:38;;-1:-1:-1;;24460:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24259:3:::1;::::0;::::1;:::i;:::-;;;24221:289;;;;24128:389:::0;:::o;1712:100::-;1766:13;1799:5;1792:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1712:100;:::o;2612:169::-;2695:4;2712:39;171:10;2735:7;2744:6;2712:8;:39::i;:::-;-1:-1:-1;2769:4:0;2612:169;;;;:::o;22907:272::-;5652:6;;-1:-1:-1;;;;;5652:6:0;171:10;5652:22;5644:67;;;;-1:-1:-1;;;5644:67:0;;;;;;;:::i;:::-;22971:13:::1;::::0;::::1;;22970:14;22962:70;;;::::0;-1:-1:-1;;;22962:70:0;;10040:2:1;22962:70:0::1;::::0;::::1;10022:21:1::0;10079:2;10059:18;;;10052:30;10118:34;10098:18;;;10091:62;-1:-1:-1;;;10169:18:1;;;10162:41;10220:19;;22962:70:0::1;9838:407:1::0;22962:70:0::1;23078:13;:20:::0;;23094:4:::1;-1:-1:-1::0;;23078:20:0;;::::1;::::0;::::1;::::0;;;23109:11:::1;:18:::0;;;;::::1;::::0;;::::1;::::0;;23159:12:::1;23138:18;:33:::0;22907:272::o;2787:488::-;2927:4;2944:36;2954:6;2962:9;2973:6;2944:9;:36::i;:::-;-1:-1:-1;;;;;3018:19:0;;2991:24;3018:19;;;:11;:19;;;;;;;;171:10;3018:33;;;;;;;;3070:26;;;;3062:79;;;;-1:-1:-1;;;3062:79:0;;10452:2:1;3062:79:0;;;10434:21:1;10491:2;10471:18;;;10464:30;10530:34;10510:18;;;10503:62;-1:-1:-1;;;10581:18:1;;;10574:38;10629:19;;3062:79:0;10250:404:1;3062:79:0;3177:57;3186:6;171:10;3227:6;3208:16;:25;3177:8;:57::i;:::-;-1:-1:-1;3263:4:0;;2787:488;-1:-1:-1;;;;2787:488:0:o;3281:215::-;171:10;3369:4;3418:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3418:34:0;;;;;;;;;;3369:4;;3386:80;;3409:7;;3418:47;;3455:10;;3418:47;:::i;:::-;3386:8;:80::i;21059:312::-;5652:6;;-1:-1:-1;;;;;5652:6:0;171:10;5652:22;5644:67;;;;-1:-1:-1;;;5644:67:0;;;;;;;:::i;:::-;21150:18:::1;;21122:24;21140:4;21122:9;:24::i;:::-;:46;;21114:123;;;::::0;;-1:-1:-1;;;21114:123:0;;10994:2:1;21114:123:0::1;::::0;::::1;10976:21:1::0;11013:18;;;11006:30;;;;11072:34;11052:18;;;11045:62;11143:34;11123:18;;;11116:62;11195:19;;21114:123:0::1;10792:428:1::0;21114:123:0::1;21248:8;:15:::0;;-1:-1:-1;;;;21248:15:0::1;-1:-1:-1::0;;;21248:15:0::1;::::0;;21274:10:::1;:8;:10::i;:::-;21295:8;:16:::0;;-1:-1:-1;;;;21295:16:0::1;::::0;;21327:36:::1;::::0;21347:15:::1;3331:25:1::0;;21327:36:0::1;::::0;3319:2:1;3304:18;21327:36:0::1;;;;;;;21059:312::o:0;12028:305::-;5652:6;;-1:-1:-1;;;;;5652:6:0;171:10;5652:22;5644:67;;;;-1:-1:-1;;;5644:67:0;;;;;;;:::i;:::-;12152:2:::1;12126:21;12137:10:::0;12126;:21:::1;:::i;:::-;12125:29;;12117:71;;;::::0;-1:-1:-1;;;12117:71:0;;11427:2:1;12117:71:0::1;::::0;::::1;11409:21:1::0;11466:2;11446:18;;;11439:30;11505:31;11485:18;;;11478:59;11554:18;;12117:71:0::1;11225:353:1::0;12117:71:0::1;12199:15;:28:::0;;;12238:15:::1;:28:::0;;;12292:33:::1;12256:10:::0;12217;12292:33:::1;:::i;:::-;12277:12;:48:::0;-1:-1:-1;;12028:305:0:o;10907:261::-;5652:6;;10979:4;;-1:-1:-1;;;;;5652:6:0;171:10;5652:22;5644:67;;;;-1:-1:-1;;;5644:67:0;;;;;;;:::i;:::-;11036:4:::1;11016:13;2115:12:::0;;;2027:108;11016:13:::1;:17;::::0;11032:1:::1;11016:17;:::i;:::-;:24;;;;:::i;:::-;11003:9;:37;;10995:102;;;::::0;-1:-1:-1;;;10995:102:0;;12180:2:1;10995:102:0::1;::::0;::::1;12162:21:1::0;12219:2;12199:18;;;12192:30;12258:34;12238:18;;;12231:62;-1:-1:-1;;;12309:18:1;;;12302:50;12369:19;;10995:102:0::1;11978:416:1::0;10995:102:0::1;-1:-1:-1::0;11108:18:0::1;:30:::0;11156:4:::1;::::0;10907:261::o;2141:127::-;-1:-1:-1;;;;;2242:18:0;2215:7;2242:18;;;;;;;;;;;;2141:127::o;5737:150::-;5652:6;;-1:-1:-1;;;;;5652:6:0;171:10;5652:22;5644:67;;;;-1:-1:-1;;;5644:67:0;;;;;;;:::i;:::-;5830:6:::1;::::0;5809:40:::1;::::0;5846:1:::1;::::0;-1:-1:-1;;;;;5830:6:0::1;::::0;5809:40:::1;::::0;5846:1;;5809:40:::1;5860:6;:19:::0;;-1:-1:-1;;;;;;5860:19:0::1;::::0;;5737:150::o;11729:136::-;5652:6;;-1:-1:-1;;;;;5652:6:0;171:10;5652:22;5644:67;;;;-1:-1:-1;;;5644:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11819:31:0;;;::::1;;::::0;;;:23:::1;:31;::::0;;;;:38;;-1:-1:-1;;11819:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11729:136::o;23722:125::-;5652:6;;23791:4;;-1:-1:-1;;;;;5652:6:0;171:10;5652:22;5644:67;;;;-1:-1:-1;;;5644:67:0;;;;;;;:::i;:::-;-1:-1:-1;23807:7:0::1;:10:::0;23835:4:::1;::::0;23722:125::o;12339:311::-;5652:6;;-1:-1:-1;;;;;5652:6:0;171:10;5652:22;5644:67;;;;-1:-1:-1;;;5644:67:0;;;;;;;:::i;:::-;12464:2:::1;12438:21;12449:10:::0;12438;:21:::1;:::i;:::-;12437:29;;12429:71;;;::::0;-1:-1:-1;;;12429:71:0;;11427:2:1;12429:71:0::1;::::0;::::1;11409:21:1::0;11466:2;11446:18;;;11439:30;11505:31;11485:18;;;11478:59;11554:18;;12429:71:0::1;11225:353:1::0;12429:71:0::1;12511:16;:29:::0;;;12551:16:::1;:29:::0;;;12607:35:::1;12570:10:::0;12530;12607:35:::1;:::i;:::-;12591:13;:51:::0;-1:-1:-1;;12339:311:0:o;24523:200::-;5652:6;;-1:-1:-1;;;;;5652:6:0;171:10;5652:22;5644:67;;;;-1:-1:-1;;;5644:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24613:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;::::1;;24605:65;;;::::0;-1:-1:-1;;;24605:65:0;;12601:2:1;24605:65:0::1;::::0;::::1;12583:21:1::0;12640:2;12620:18;;;12613:30;12679:28;12659:18;;;12652:56;12725:18;;24605:65:0::1;12399:350:1::0;24605:65:0::1;-1:-1:-1::0;;;;;24681:26:0::1;24710:5;24681:26:::0;;;:17:::1;:26;::::0;;;;:34;;-1:-1:-1;;24681:34:0::1;::::0;;24523:200::o;23487:229::-;5652:6;;-1:-1:-1;;;;;5652:6:0;171:10;5652:22;5644:67;;;;-1:-1:-1;;;5644:67:0;;;;;;;:::i;:::-;23618:31:::1;::::0;-1:-1:-1;;;23618:31:0;;23643:4:::1;23618:31;::::0;::::1;2611:51:1::0;23580:4:0;;23557:13:::1;::::0;-1:-1:-1;;;;;23618:16:0;::::1;::::0;::::1;::::0;2584:18:1;;23618:31:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23660:48;::::0;-1:-1:-1;;;23660:48:0;;23684:10:::1;23660:48;::::0;::::1;13117:51:1::0;13184:18;;;13177:34;;;23596:53:0;;-1:-1:-1;;;;;;23660:15:0;::::1;::::0;::::1;::::0;13090:18:1;;23660:48:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23546:170;;23487:229:::0;:::o;11449:268::-;5652:6;;-1:-1:-1;;;;;5652:6:0;171:10;5652:22;5644:67;;;;-1:-1:-1;;;5644:67:0;;;;;;;:::i;:::-;11595:1:::1;11585:6;:11;;11577:60;;;::::0;-1:-1:-1;;;11577:60:0;;13674:2:1;11577:60:0::1;::::0;::::1;13656:21:1::0;13713:2;13693:18;;;13686:30;13752:34;13732:18;;;13725:62;-1:-1:-1;;;13803:18:1;;;13796:34;13847:19;;11577:60:0::1;13472:400:1::0;11577:60:0::1;11693:4;11687;11678:6;11662:13;2115:12:::0;;;2027:108;11662:13:::1;:22;;;;:::i;:::-;:29;;;;:::i;:::-;11661:36;;;;:::i;:::-;11660:49;::::0;11702:6:::1;11660:49;:::i;:::-;11648:9;:61:::0;-1:-1:-1;11449:268:0:o;11921:101::-;5652:6;;-1:-1:-1;;;;;5652:6:0;171:10;5652:22;5644:67;;;;-1:-1:-1;;;5644:67:0;;;;;;;:::i;:::-;11993:11:::1;:21:::0;;-1:-1:-1;;11993:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11921:101::o;1818:104::-;1874:13;1907:7;1900:14;;;;;:::i;23853:269::-;5652:6;;-1:-1:-1;;;;;5652:6:0;171:10;5652:22;5644:67;;;;-1:-1:-1;;;5644:67:0;;;;;;;:::i;:::-;23949:13:::1;::::0;-1:-1:-1;;;;;23938:24:0;;::::1;23949:13:::0;::::1;23938:24;;23930:65;;;::::0;-1:-1:-1;;;23930:65:0;;14079:2:1;23930:65:0::1;::::0;::::1;14061:21:1::0;14118:2;14098:18;;;14091:30;14157;14137:18;;;14130:58;14205:18;;23930:65:0::1;13877:352:1::0;23930:65:0::1;24025:6;::::0;-1:-1:-1;;;;;24014:17:0;;::::1;24025:6:::0;::::1;24014:17;;24006:64;;;::::0;-1:-1:-1;;;24006:64:0;;14436:2:1;24006:64:0::1;::::0;::::1;14418:21:1::0;14475:2;14455:18;;;14448:30;14514:34;14494:18;;;14487:62;-1:-1:-1;;;14565:18:1;;;14558:32;14607:19;;24006:64:0::1;14234:398:1::0;24006:64:0::1;-1:-1:-1::0;;;;;24081:26:0::1;;::::0;;;:17:::1;:26;::::0;;;;:33;;-1:-1:-1;;24081:33:0::1;24110:4;24081:33;::::0;;23853:269::o;12798:237::-;5652:6;;-1:-1:-1;;;;;5652:6:0;171:10;5652:22;5644:67;;;;-1:-1:-1;;;5644:67:0;;;;;;;:::i;:::-;12905:6:::1;::::0;-1:-1:-1;;;;;12897:14:0;;::::1;12905:6:::0;::::1;12897:14;;12889:84;;;::::0;-1:-1:-1;;;12889:84:0;;14839:2:1;12889:84:0::1;::::0;::::1;14821:21:1::0;14878:2;14858:18;;;14851:30;14917:34;14897:18;;;14890:62;14988:27;14968:18;;;14961:55;15033:19;;12889:84:0::1;14637:421:1::0;12889:84:0::1;12986:41;13015:4;13021:5;12986:28;:41::i;3502:411::-:0;171:10;3595:4;3639:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3639:34:0;;;;;;;;;;3692:35;;;;3684:85;;;;-1:-1:-1;;;3684:85:0;;15265:2:1;3684:85:0;;;15247:21:1;15304:2;15284:18;;;15277:30;15343:34;15323:18;;;15316:62;-1:-1:-1;;;15394:18:1;;;15387:35;15439:19;;3684:85:0;15063:401:1;3684:85:0;3805:67;171:10;3828:7;3856:15;3837:16;:34;3805:8;:67::i;:::-;-1:-1:-1;3901:4:0;;3502:411;-1:-1:-1;;;3502:411:0:o;2274:175::-;2360:4;2377:42;171:10;2401:9;2412:6;2377:9;:42::i;1662:21::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;21378:1209::-;5652:6;;-1:-1:-1;;;;;5652:6:0;171:10;5652:22;5644:67;;;;-1:-1:-1;;;5644:67:0;;;;;;;:::i;:::-;21487:13:::1;:23:::0;;-1:-1:-1;;;;;21487:23:0;::::1;-1:-1:-1::0;;;;;;21487:23:0;;::::1;::::0;::::1;::::0;;;21607:9:::1;:22:::0;;;;::::1;::::0;::::1;::::0;;21685:20:::1;::::0;;-1:-1:-1;;;21685:20:0;;;;21487:23;;21685:18:::1;::::0;-1:-1:-1;21685:20:0;;::::1;::::0;::::1;::::0;;;;;;;;21487:23;21685:20:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21673:44:0::1;;21726:4;21733:10;-1:-1:-1::0;;;;;21733:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21673:78;::::0;-1:-1:-1;;;;;;21673:78:0::1;::::0;;;;;;-1:-1:-1;;;;;15955:15:1;;;21673:78:0::1;::::0;::::1;15937:34:1::0;16007:15;;15987:18;;;15980:43;15872:18;;21673:78:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21664:6;:87:::0;;-1:-1:-1;;;;;;21664:87:0::1;-1:-1:-1::0;;;;;21664:87:0;;;::::1;::::0;;::::1;::::0;;21762:48:::1;::::0;-1:-1:-1;21762:25:0::1;:48::i;:::-;21858:6;::::0;21821:51:::1;::::0;-1:-1:-1;;;;;21858:6:0::1;::::0;21821:28:::1;:51::i;:::-;21892:7;21889:691;;;21981:1;21957:21;:25;21949:73;;;::::0;-1:-1:-1;;;21949:73:0;;16236:2:1;21949:73:0::1;::::0;::::1;16218:21:1::0;16275:2;16255:18;;;16248:30;16314:34;16294:18;;;16287:62;-1:-1:-1;;;16365:18:1;;;16358:33;16408:19;;21949:73:0::1;16034:399:1::0;21949:73:0::1;22072:1;22045:24;22063:4;22045:9;:24::i;:::-;:28;22037:79;;;::::0;-1:-1:-1;;;22037:79:0;;16640:2:1;22037:79:0::1;::::0;::::1;16622:21:1::0;16679:2;16659:18;;;16652:30;16718:34;16698:18;;;16691:62;-1:-1:-1;;;16769:18:1;;;16762:36;16815:19;;22037:79:0::1;16438:402:1::0;22037:79:0::1;22139:17;::::0;-1:-1:-1;;;;;22139:17:0::1;22131:81;;;::::0;-1:-1:-1;;;22131:81:0;;17047:2:1;22131:81:0::1;::::0;::::1;17029:21:1::0;17086:2;17066:18;;;17059:30;17125:34;17105:18;;;17098:62;-1:-1:-1;;;17176:18:1;;;17169:36;17222:19;;22131:81:0::1;16845:402:1::0;22131:81:0::1;22259:9;::::0;22227:69:::1;::::0;22244:4:::1;::::0;-1:-1:-1;;;;;22259:9:0::1;22271:24;22244:4:::0;22271:9:::1;:24::i;22227:69::-;22311:9;::::0;-1:-1:-1;;;;;22311:9:0::1;:25;22344:21;22393:4;22417:24;22393:4:::0;22417:9:::1;:24::i;:::-;22502:17;::::0;22311:257:::1;::::0;-1:-1:-1;;;;;;22311:257:0::1;::::0;;;;;;::::1;::::0;;;22460:1:::1;::::0;;;-1:-1:-1;;;;;22502:17:0::1;::::0;22538:15:::1;::::0;22311:257:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21889:691;21446:1141;21378:1209:::0;;:::o;12658:132::-;5652:6;;-1:-1:-1;;;;;5652:6:0;171:10;5652:22;5644:67;;;;-1:-1:-1;;;5644:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12743:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:39;;-1:-1:-1;;12743:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12658:132::o;22593:308::-;5652:6;;-1:-1:-1;;;;;5652:6:0;171:10;5652:22;5644:67;;;;-1:-1:-1;;;5644:67:0;;;;;;;:::i;:::-;22711:13:::1;::::0;::::1;;22710:14;22702:73;;;::::0;-1:-1:-1;;;22702:73:0;;18377:2:1;22702:73:0::1;::::0;::::1;18359:21:1::0;18416:2;18396:18;;;18389:30;18455:34;18435:18;;;18428:62;-1:-1:-1;;;18506:18:1;;;18499:44;18560:19;;22702:73:0::1;18175:410:1::0;22702:73:0::1;22790:9;22786:108;22818:1;22808:2;:9;:11;;;;:::i;:::-;22804:1;:15;22786:108;;22839:43;22863:4;22869:2;22872:1;22869:5;;;;;;;;:::i;:::-;;;;;;;22875:3;22879:1;22875:6;;;;;;;;:::i;:::-;;;;;;;22839:15;:43::i;:::-;22820:3:::0;::::1;::::0;::::1;:::i;:::-;;;;22786:108;;13177:213:::0;5652:6;;-1:-1:-1;;;;;5652:6:0;171:10;5652:22;5644:67;;;;-1:-1:-1;;;5644:67:0;;;;;;;:::i;:::-;13286:15:::1;:28:::0;;-1:-1:-1;;;;;13286:28:0;;::::1;-1:-1:-1::0;;;;;;13286:28:0;;::::1;;::::0;;;13325:17:::1;:30:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;13366:9:::1;:16:::0;;;;;::::1;::::0;::::1;;::::0;;13177:213::o;1636:19::-;;;;;;;:::i;10788:107::-;5652:6;;-1:-1:-1;;;;;5652:6:0;171:10;5652:22;5644:67;;;;-1:-1:-1;;;5644:67:0;;;;;;;:::i;:::-;10859:20:::1;:28:::0;;-1:-1:-1;;10859:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10788:107::o;11174:267::-;5652:6;;-1:-1:-1;;;;;5652:6:0;171:10;5652:22;5644:67;;;;-1:-1:-1;;;5644:67:0;;;;;;;:::i;:::-;11313:1:::1;11303:6;:11;;11295:63;;;::::0;-1:-1:-1;;;11295:63:0;;18922:2:1;11295:63:0::1;::::0;::::1;18904:21:1::0;18961:2;18941:18;;;18934:30;19000:34;18980:18;;;18973:62;-1:-1:-1;;;19051:18:1;;;19044:37;19098:19;;11295:63:0::1;18720:403:1::0;11295:63:0::1;11417:4;11411;11402:6;11386:13;2115:12:::0;;;2027:108;11386:13:::1;:22;;;;:::i;:::-;:29;;;;:::i;:::-;11385:36;;;;:::i;:::-;11384:49;::::0;11426:6:::1;11384:49;:::i;:::-;11369:12;:64:::0;-1:-1:-1;11174:267:0:o;5893:246::-;5652:6;;-1:-1:-1;;;;;5652:6:0;171:10;5652:22;5644:67;;;;-1:-1:-1;;;5644:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5984:22:0;::::1;5976:73;;;::::0;-1:-1:-1;;;5976:73:0;;19330:2:1;5976:73:0::1;::::0;::::1;19312:21:1::0;19369:2;19349:18;;;19342:30;19408:34;19388:18;;;19381:62;-1:-1:-1;;;19459:18:1;;;19452:36;19505:19;;5976:73:0::1;19128:402:1::0;5976:73:0::1;6086:6;::::0;6065:38:::1;::::0;-1:-1:-1;;;;;6065:38:0;;::::1;::::0;6086:6:::1;::::0;6065:38:::1;::::0;6086:6:::1;::::0;6065:38:::1;6114:6;:17:::0;;-1:-1:-1;;;;;;6114:17:0::1;-1:-1:-1::0;;;;;6114:17:0;;;::::1;::::0;;;::::1;::::0;;5893:246::o;23229:252::-;5652:6;;-1:-1:-1;;;;;5652:6:0;171:10;5652:22;5644:67;;;;-1:-1:-1;;;5644:67:0;;;;;;;:::i;:::-;23296:13:::1;::::0;::::1;;23295:14;23287:81;;;::::0;-1:-1:-1;;;23287:81:0;;19737:2:1;23287:81:0::1;::::0;::::1;19719:21:1::0;19776:2;19756:18;;;19749:30;19815:34;19795:18;;;19788:62;-1:-1:-1;;;19866:18:1;;;19859:52;19928:19;;23287:81:0::1;19535:418:1::0;23287:81:0::1;23415:58;::::0;23379:12:::1;::::0;23423:10:::1;::::0;23447:21:::1;::::0;23379:12;23415:58;23379:12;23415:58;23447:21;23423:10;23415:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3919:610:::0;-1:-1:-1;;;;;4059:20:0;;4051:70;;;;-1:-1:-1;;;4051:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4140:23:0;;4132:71;;;;-1:-1:-1;;;4132:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4238:17:0;;4214:21;4238:17;;;;;;;;;;;4274:23;;;;4266:74;;;;-1:-1:-1;;;4266:74:0;;21180:2:1;4266:74:0;;;21162:21:1;21219:2;21199:18;;;21192:30;21258:34;21238:18;;;21231:62;-1:-1:-1;;;21309:18:1;;;21302:36;21355:19;;4266:74:0;20978:402:1;4266:74:0;-1:-1:-1;;;;;4376:17:0;;;:9;:17;;;;;;;;;;;4396:22;;;4376:42;;4440:20;;;;;;;;:30;;4412:6;;4376:9;4440:30;;4412:6;;4440:30;:::i;:::-;;;;;;;;4503:9;-1:-1:-1;;;;;4486:35:0;4495:6;-1:-1:-1;;;;;4486:35:0;;4514:6;4486:35;;;;3331:25:1;;3319:2;3304:18;;3185:177;4486:35:0;;;;;;;;4040:489;3919:610;;;:::o;4830:378::-;-1:-1:-1;;;;;4966:19:0;;4958:68;;;;-1:-1:-1;;;4958:68:0;;21587:2:1;4958:68:0;;;21569:21:1;21626:2;21606:18;;;21599:30;21665:34;21645:18;;;21638:62;-1:-1:-1;;;21716:18:1;;;21709:34;21760:19;;4958:68:0;21385:400:1;4958:68:0;-1:-1:-1;;;;;5045:21:0;;5037:68;;;;-1:-1:-1;;;5037:68:0;;21992:2:1;5037:68:0;;;21974:21:1;22031:2;22011:18;;;22004:30;22070:34;22050:18;;;22043:62;-1:-1:-1;;;22121:18:1;;;22114:32;22163:19;;5037:68:0;21790:398:1;5037:68:0;-1:-1:-1;;;;;5116:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5168:32;;3331:25:1;;;5168:32:0;;3304:18:1;5168:32:0;;;;;;;4830:378;;;:::o;13731:4643::-;-1:-1:-1;;;;;13863:18:0;;13855:68;;;;-1:-1:-1;;;13855:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13942:16:0;;13934:64;;;;-1:-1:-1;;;13934:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14018:21:0;;;;;;:17;:21;;;;;;;;14017:22;14009:58;;;;-1:-1:-1;;;14009:58:0;;22395:2:1;14009:58:0;;;22377:21:1;22434:2;22414:18;;;22407:30;-1:-1:-1;;;22453:18:1;;;22446:53;22516:18;;14009:58:0;22193:347:1;14009:58:0;14105:9;14087:28;;;;:17;:28;;;;;;;;14086:29;14078:65;;;;-1:-1:-1;;;14078:65:0;;22395:2:1;14078:65:0;;;22377:21:1;22434:2;22414:18;;;22407:30;-1:-1:-1;;;22453:18:1;;;22446:53;22516:18;;14078:65:0;22193:347:1;14078:65:0;14160:11;14157:92;;14188:28;14204:4;14210:2;14214:1;14188:15;:28::i;14157:92::-;14265:13;;;;14261:132;;-1:-1:-1;;;;;14302:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;14331:23:0;;;;;;:19;:23;;;;;;;;14302:52;14294:87;;;;-1:-1:-1;;;14294:87:0;;22747:2:1;14294:87:0;;;22729:21:1;22786:2;22766:18;;;22759:30;-1:-1:-1;;;22805:18:1;;;22798:52;22867:18;;14294:87:0;22545:346:1;14294:87:0;5592:6;;-1:-1:-1;;;;;14421:15:0;;;5592:6;;14421:15;;;;:45;;-1:-1:-1;5592:6:0;;-1:-1:-1;;;;;14453:13:0;;;5592:6;;14453:13;;14421:45;:78;;;;-1:-1:-1;;;;;;14483:16:0;;;;14421:78;:116;;;;-1:-1:-1;;;;;;14516:21:0;;14530:6;14516:21;;14421:116;:142;;;;-1:-1:-1;14555:8:0;;-1:-1:-1;;;14555:8:0;;;;14554:9;14421:142;:183;;;;-1:-1:-1;;;;;;14581:23:0;;;;;;:19;:23;;;;;;;;14580:24;14421:183;:226;;;;-1:-1:-1;;;;;;14622:25:0;;;;;;:19;:25;;;;;;;;14621:26;14421:226;14403:1591;;;14807:20;;;;14803:466;;;14865:9;;-1:-1:-1;;;;;14851:24:0;;;14865:9;;14851:24;;;;:49;;-1:-1:-1;14893:6:0;;-1:-1:-1;;;;;14879:21:0;;;14893:6;;14879:21;;14851:49;14847:407;;;14970:16;14985:1;14970:12;:16;:::i;:::-;14957:9;14932:35;;;;:24;:35;;;;;;:54;:105;;;;-1:-1:-1;15021:16:0;15036:1;15021:12;:16;:::i;:::-;-1:-1:-1;;;;;14990:28:0;;;;;;:24;:28;;;;;;:47;14932:105;14924:171;;;;-1:-1:-1;;;14924:171:0;;23098:2:1;14924:171:0;;;23080:21:1;23137:2;23117:18;;;23110:30;23176:34;23156:18;;;23149:62;-1:-1:-1;;;23227:18:1;;;23220:51;23288:19;;14924:171:0;22896:417:1;14924:171:0;15143:9;15118:35;;;;:24;:35;;;;;;15156:12;15118:50;;;;-1:-1:-1;;;;;15191:28:0;;;;;;:43;14847:407;-1:-1:-1;;;;;15330:31:0;;;;;;:25;:31;;;;;;;;:63;;;;-1:-1:-1;;;;;;15366:27:0;;;;;;:23;:27;;;;;;;;15365:28;15330:63;15326:657;;;15432:12;;15422:6;:22;;15414:80;;;;-1:-1:-1;;;15414:80:0;;23520:2:1;15414:80:0;;;23502:21:1;23559:2;23539:18;;;23532:30;23598:34;23578:18;;;23571:62;-1:-1:-1;;;23649:18:1;;;23642:43;23702:19;;15414:80:0;23318:409:1;15414:80:0;15547:9;;15530:13;15540:2;15530:9;:13::i;:::-;15521:22;;:6;:22;:::i;:::-;:35;;15513:67;;;;-1:-1:-1;;;15513:67:0;;23934:2:1;15513:67:0;;;23916:21:1;23973:2;23953:18;;;23946:30;-1:-1:-1;;;23992:18:1;;;23985:49;24051:18;;15513:67:0;23732:343:1;15513:67:0;15326:657;;;-1:-1:-1;;;;;15648:29:0;;;;;;:25;:29;;;;;;;;:63;;;;-1:-1:-1;;;;;;15682:29:0;;;;;;:23;:29;;;;;;;;15681:30;15648:63;15644:339;;;15750:12;;15740:6;:22;;15732:81;;;;-1:-1:-1;;;15732:81:0;;24282:2:1;15732:81:0;;;24264:21:1;24321:2;24301:18;;;24294:30;24360:34;24340:18;;;24333:62;-1:-1:-1;;;24411:18:1;;;24404:44;24465:19;;15732:81:0;24080:410:1;15644:339:0;-1:-1:-1;;;;;15853:27:0;;;;;;:23;:27;;;;;;;;15848:135;;15934:9;;15917:13;15927:2;15917:9;:13::i;:::-;15908:22;;:6;:22;:::i;:::-;:35;;15900:67;;;;-1:-1:-1;;;15900:67:0;;23934:2:1;15900:67:0;;;23916:21:1;23973:2;23953:18;;;23946:30;-1:-1:-1;;;23992:18:1;;;23985:49;24051:18;;15900:67:0;23732:343:1;15900:67:0;16004:28;16035:24;16053:4;16035:9;:24::i;:::-;16109:18;;16004:55;;-1:-1:-1;16085:42:0;;;;;;;16156:35;;-1:-1:-1;16180:11:0;;;;16156:35;:61;;;;-1:-1:-1;16209:8:0;;-1:-1:-1;;;16209:8:0;;;;16208:9;16156:61;:110;;;;-1:-1:-1;;;;;;16235:31:0;;;;;;:25;:31;;;;;;;;16234:32;16156:110;:156;;;;-1:-1:-1;;;;;;16283:29:0;;;;;;:25;:29;;;;;;;;16156:156;:199;;;;-1:-1:-1;;;;;;16330:25:0;;;;;;:19;:25;;;;;;;;16329:26;16156:199;:240;;;;-1:-1:-1;;;;;;16373:23:0;;;;;;:19;:23;;;;;;;;16372:24;16156:240;16138:368;;;16423:8;:15;;-1:-1:-1;;;;16423:15:0;-1:-1:-1;;;16423:15:0;;;16453:10;:8;:10::i;:::-;16478:8;:16;;-1:-1:-1;;;;16478:16:0;;;16138:368;16540:8;;-1:-1:-1;;;;;16649:25:0;;16524:12;16649:25;;;:19;:25;;;;;;16540:8;-1:-1:-1;;;16540:8:0;;;;;16539:9;;16649:25;;:52;;-1:-1:-1;;;;;;16678:23:0;;;;;;:19;:23;;;;;;;;16649:52;16646:99;;;-1:-1:-1;16728:5:0;16646:99;16765:12;16869:7;16866:1457;;;17040:7;;17025:22;;:12;:22;:::i;:::-;17003:18;;:44;;17002:81;;;;-1:-1:-1;;;;;;17052:31:0;;;;;;:25;:31;;;;;;;;17002:81;16999:1153;;;17124:3;17110:11;:6;17119:2;17110:11;:::i;:::-;:17;;;;:::i;:::-;17103:24;;17194:13;;17175:16;;17168:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;17146:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;17274:13:0;;17255:16;;17248:23;;:4;:23;:::i;:::-;:39;;;;:::i;:::-;17226:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;17342:13:0;;17329:10;;17322:17;;:4;:17;:::i;:::-;:33;;;;:::i;:::-;17306:12;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;16999:1153:0;;-1:-1:-1;16999:1153:0;;-1:-1:-1;;;;;17418:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;17467:1;17451:13;;:17;17418:50;17414:738;;;17520:3;17504:13;;17495:6;:22;;;;:::i;17414:738::-;-1:-1:-1;;;;;17812:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;17862:1;17847:12;;:16;17812:51;17809:343;;;17913:3;17898:12;;17889:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;17882:34;;17980:12;;17962:15;;17955:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;17933:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;18058:12:0;;18040:15;;18033:22;;:4;:22;:::i;:::-;:37;;;;:::i;:::-;18011:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;18124:12:0;;18112:9;;18105:16;;:4;:16;:::i;:::-;:31;;;;:::i;:::-;18089:12;;:47;;;;;;;:::i;:::-;;;;-1:-1:-1;;17809:343:0;18183:8;;18180:93;;18215:42;18231:4;18245;18252;18215:15;:42::i;:::-;18297:14;18307:4;18297:14;;:::i;:::-;;;16866:1457;18333:33;18349:4;18355:2;18359:6;18333:15;:33::i;:::-;13844:4530;;;;13731:4643;;;:::o;19411:1598::-;19450:23;19476:24;19494:4;19476:9;:24::i;:::-;19450:50;;19511:25;19581:12;;19560:18;;19539;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;19511:82;-1:-1:-1;19604:12:0;19640:20;;;:46;;-1:-1:-1;19664:22:0;;19640:46;19637:60;;;19689:7;;;19411:1598::o;19637:60::-;19730:18;;19712:15;:36;19709:103;;;19782:18;;19764:36;;19709:103;19881:23;19966:1;19946:17;19925:18;;19907:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;19881:86;-1:-1:-1;19978:26:0;20007:33;19881:86;20007:15;:33;:::i;:::-;19978:62;-1:-1:-1;20079:21:0;20111:36;19978:62;20111:16;:36::i;:::-;20166:18;20187:41;20211:17;20187:21;:41;:::i;:::-;20166:62;;20239:23;20340:1;20321:18;;:20;;;;:::i;:::-;20300:42;;:17;:42;:::i;:::-;20278:18;;20265:31;;:10;:31;:::i;:::-;:78;;;;:::i;:::-;20239:104;;20354:17;20443:1;20424:18;;:20;;;;:::i;:::-;20403:42;;:17;:42;:::i;:::-;20387:12;;20374:25;;:10;:25;:::i;:::-;:72;;;;:::i;:::-;20354:92;-1:-1:-1;20465:23:0;20354:92;20491:28;20504:15;20491:10;:28;:::i;:::-;:40;;;;:::i;:::-;20563:1;20542:18;:22;;;20575:18;:22;;;20608:12;:16;;;20656:9;;20648:45;;20465:66;;-1:-1:-1;;;;;;20656:9:0;;20679;;20648:45;20563:1;20648:45;20679:9;20656;20648:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20725:15:0;;20717:57;;20635:58;;-1:-1:-1;;;;;;20725:15:0;;20754;;20717:57;;;;20754:15;20725;20717:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20704:70:0;;-1:-1:-1;;20795:19:0;;;;;:42;;;20836:1;20818:15;:19;20795:42;20792:210;;;20853:46;20866:15;20883;20853:12;:46::i;:::-;20971:18;;20919:71;;;24697:25:1;;;24753:2;24738:18;;24731:34;;;24781:18;;;24774:34;;;;20919:71:0;;;;;;24685:2:1;20919:71:0;;;20792:210;19439:1570;;;;;;;;;;19411:1598::o;13041:130::-;-1:-1:-1;;;;;13124:31:0;;;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;13124:39:0;;;;;;;;;;13041:130::o;18380:507::-;18470:16;;;18484:1;18470:16;;;;;;;;18446:21;;18470:16;;;;;;;;;;-1:-1:-1;18470:16:0;18446:40;;18515:4;18497;18502:1;18497:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18497:23:0;;;:7;;;;;;;;;;:23;;;;18541:9;;:16;;;-1:-1:-1;;;18541:16:0;;;;:9;;;;;:14;;:16;;;;;18497:7;;18541:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18531:4;18536:1;18531:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18531:26:0;;;:7;;;;;;;;;:26;18600:9;;18568:56;;18585:4;;18600:9;18612:11;18568:8;:56::i;:::-;18661:9;;:218;;-1:-1:-1;;;18661:218:0;;-1:-1:-1;;;;;18661:9:0;;;;:60;;:218;;18736:11;;18661:9;;18806:4;;18833;;18853:15;;18661:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18896:509;19076:9;;19044:56;;19061:4;;-1:-1:-1;;;;;19076:9:0;19088:11;19044:8;:56::i;:::-;19141:9;;19339:17;;19141:256;;-1:-1:-1;;;19141:256:0;;-1:-1:-1;;;;;19141:9:0;;;;:25;;19174:9;;19141:256;;19207:4;;19227:11;;19141:9;;;;19339:17;;19371:15;;19141:256;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18896:509;;:::o;14:127:1:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:275;217:2;211:9;282:2;263:13;;-1:-1:-1;;259:27:1;247:40;;317:18;302:34;;338:22;;;299:62;296:88;;;364:18;;:::i;:::-;400:2;393:22;146:275;;-1:-1:-1;146:275:1:o;426:183::-;486:4;519:18;511:6;508:30;505:56;;;541:18;;:::i;:::-;-1:-1:-1;586:1:1;582:14;598:4;578:25;;426:183::o;614:131::-;-1:-1:-1;;;;;689:31:1;;679:42;;669:70;;735:1;732;725:12;669:70;614:131;:::o;750:737::-;804:5;857:3;850:4;842:6;838:17;834:27;824:55;;875:1;872;865:12;824:55;911:6;898:20;937:4;961:60;977:43;1017:2;977:43;:::i;:::-;961:60;:::i;:::-;1055:15;;;1141:1;1137:10;;;;1125:23;;1121:32;;;1086:12;;;;1165:15;;;1162:35;;;1193:1;1190;1183:12;1162:35;1229:2;1221:6;1217:15;1241:217;1257:6;1252:3;1249:15;1241:217;;;1337:3;1324:17;1354:31;1379:5;1354:31;:::i;:::-;1398:18;;1436:12;;;;1274;;1241:217;;;-1:-1:-1;1476:5:1;750:737;-1:-1:-1;;;;;;750:737:1:o;1492:348::-;1576:6;1629:2;1617:9;1608:7;1604:23;1600:32;1597:52;;;1645:1;1642;1635:12;1597:52;1685:9;1672:23;1718:18;1710:6;1707:30;1704:50;;;1750:1;1747;1740:12;1704:50;1773:61;1826:7;1817:6;1806:9;1802:22;1773:61;:::i;:::-;1763:71;1492:348;-1:-1:-1;;;;1492:348:1:o;1845:597::-;1957:4;1986:2;2015;2004:9;1997:21;2047:6;2041:13;2090:6;2085:2;2074:9;2070:18;2063:34;2115:1;2125:140;2139:6;2136:1;2133:13;2125:140;;;2234:14;;;2230:23;;2224:30;2200:17;;;2219:2;2196:26;2189:66;2154:10;;2125:140;;;2283:6;2280:1;2277:13;2274:91;;;2353:1;2348:2;2339:6;2328:9;2324:22;2320:31;2313:42;2274:91;-1:-1:-1;2426:2:1;2405:15;-1:-1:-1;;2401:29:1;2386:45;;;;2433:2;2382:54;;1845:597;-1:-1:-1;;;1845:597:1:o;2673:315::-;2741:6;2749;2802:2;2790:9;2781:7;2777:23;2773:32;2770:52;;;2818:1;2815;2808:12;2770:52;2857:9;2844:23;2876:31;2901:5;2876:31;:::i;:::-;2926:5;2978:2;2963:18;;;;2950:32;;-1:-1:-1;;;2673:315:1:o;3367:456::-;3444:6;3452;3460;3513:2;3501:9;3492:7;3488:23;3484:32;3481:52;;;3529:1;3526;3519:12;3481:52;3568:9;3555:23;3587:31;3612:5;3587:31;:::i;:::-;3637:5;-1:-1:-1;3694:2:1;3679:18;;3666:32;3707:33;3666:32;3707:33;:::i;:::-;3367:456;;3759:7;;-1:-1:-1;;;3813:2:1;3798:18;;;;3785:32;;3367:456::o;4225:247::-;4284:6;4337:2;4325:9;4316:7;4312:23;4308:32;4305:52;;;4353:1;4350;4343:12;4305:52;4392:9;4379:23;4411:31;4436:5;4411:31;:::i;:::-;4461:5;4225:247;-1:-1:-1;;;4225:247:1:o;4477:248::-;4545:6;4553;4606:2;4594:9;4585:7;4581:23;4577:32;4574:52;;;4622:1;4619;4612:12;4574:52;-1:-1:-1;;4645:23:1;;;4715:2;4700:18;;;4687:32;;-1:-1:-1;4477:248:1:o;4730:180::-;4789:6;4842:2;4830:9;4821:7;4817:23;4813:32;4810:52;;;4858:1;4855;4848:12;4810:52;-1:-1:-1;4881:23:1;;4730:180;-1:-1:-1;4730:180:1:o;4915:118::-;5001:5;4994:13;4987:21;4980:5;4977:32;4967:60;;5023:1;5020;5013:12;5038:382;5103:6;5111;5164:2;5152:9;5143:7;5139:23;5135:32;5132:52;;;5180:1;5177;5170:12;5132:52;5219:9;5206:23;5238:31;5263:5;5238:31;:::i;:::-;5288:5;-1:-1:-1;5345:2:1;5330:18;;5317:32;5358:30;5317:32;5358:30;:::i;:::-;5407:7;5397:17;;;5038:382;;;;;:::o;5425:241::-;5481:6;5534:2;5522:9;5513:7;5509:23;5505:32;5502:52;;;5550:1;5547;5540:12;5502:52;5589:9;5576:23;5608:28;5630:5;5608:28;:::i;5671:1273::-;5798:6;5806;5814;5867:2;5855:9;5846:7;5842:23;5838:32;5835:52;;;5883:1;5880;5873:12;5835:52;5922:9;5909:23;5941:31;5966:5;5941:31;:::i;:::-;5991:5;-1:-1:-1;6015:2:1;6053:18;;;6040:32;6091:18;6121:14;;;6118:34;;;6148:1;6145;6138:12;6118:34;6171:61;6224:7;6215:6;6204:9;6200:22;6171:61;:::i;:::-;6161:71;;6285:2;6274:9;6270:18;6257:32;6241:48;;6314:2;6304:8;6301:16;6298:36;;;6330:1;6327;6320:12;6298:36;-1:-1:-1;6353:24:1;;6408:4;6400:13;;6396:27;-1:-1:-1;6386:55:1;;6437:1;6434;6427:12;6386:55;6473:2;6460:16;6496:60;6512:43;6552:2;6512:43;:::i;6496:60::-;6590:15;;;6672:1;6668:10;;;;6660:19;;6656:28;;;6621:12;;;;6696:19;;;6693:39;;;6728:1;6725;6718:12;6693:39;6752:11;;;;6772:142;6788:6;6783:3;6780:15;6772:142;;;6854:17;;6842:30;;6805:12;;;;6892;;;;6772:142;;;6933:5;6923:15;;;;;;;5671:1273;;;;;:::o;6949:529::-;7026:6;7034;7042;7095:2;7083:9;7074:7;7070:23;7066:32;7063:52;;;7111:1;7108;7101:12;7063:52;7150:9;7137:23;7169:31;7194:5;7169:31;:::i;:::-;7219:5;-1:-1:-1;7276:2:1;7261:18;;7248:32;7289:33;7248:32;7289:33;:::i;:::-;7341:7;-1:-1:-1;7400:2:1;7385:18;;7372:32;7413:33;7372:32;7413:33;:::i;:::-;7465:7;7455:17;;;6949:529;;;;;:::o;7483:388::-;7551:6;7559;7612:2;7600:9;7591:7;7587:23;7583:32;7580:52;;;7628:1;7625;7618:12;7580:52;7667:9;7654:23;7686:31;7711:5;7686:31;:::i;:::-;7736:5;-1:-1:-1;7793:2:1;7778:18;;7765:32;7806:33;7765:32;7806:33;:::i;7876:356::-;8078:2;8060:21;;;8097:18;;;8090:30;8156:34;8151:2;8136:18;;8129:62;8223:2;8208:18;;7876:356::o;8237:127::-;8298:10;8293:3;8289:20;8286:1;8279:31;8329:4;8326:1;8319:15;8353:4;8350:1;8343:15;9181:127;9242:10;9237:3;9233:20;9230:1;9223:31;9273:4;9270:1;9263:15;9297:4;9294:1;9287:15;9313:135;9352:3;-1:-1:-1;;9373:17:1;;9370:43;;;9393:18;;:::i;:::-;-1:-1:-1;9440:1:1;9429:13;;9313:135::o;9453:380::-;9532:1;9528:12;;;;9575;;;9596:61;;9650:4;9642:6;9638:17;9628:27;;9596:61;9703:2;9695:6;9692:14;9672:18;9669:38;9666:161;;;9749:10;9744:3;9740:20;9737:1;9730:31;9784:4;9781:1;9774:15;9812:4;9809:1;9802:15;9666:161;;9453:380;;;:::o;10659:128::-;10699:3;10730:1;10726:6;10723:1;10720:13;10717:39;;;10736:18;;:::i;:::-;-1:-1:-1;10772:9:1;;10659:128::o;11583:168::-;11623:7;11689:1;11685;11681:6;11677:14;11674:1;11671:21;11666:1;11659:9;11652:17;11648:45;11645:71;;;11696:18;;:::i;:::-;-1:-1:-1;11736:9:1;;11583:168::o;11756:217::-;11796:1;11822;11812:132;;11866:10;11861:3;11857:20;11854:1;11847:31;11901:4;11898:1;11891:15;11929:4;11926:1;11919:15;11812:132;-1:-1:-1;11958:9:1;;11756:217::o;12754:184::-;12824:6;12877:2;12865:9;12856:7;12852:23;12848:32;12845:52;;;12893:1;12890;12883:12;12845:52;-1:-1:-1;12916:16:1;;12754:184;-1:-1:-1;12754:184:1:o;13222:245::-;13289:6;13342:2;13330:9;13321:7;13317:23;13313:32;13310:52;;;13358:1;13355;13348:12;13310:52;13390:9;13384:16;13409:28;13431:5;13409:28;:::i;15469:251::-;15539:6;15592:2;15580:9;15571:7;15567:23;15563:32;15560:52;;;15608:1;15605;15598:12;15560:52;15640:9;15634:16;15659:31;15684:5;15659:31;:::i;17252:607::-;-1:-1:-1;;;;;17611:15:1;;;17593:34;;17658:2;17643:18;;17636:34;;;;17701:2;17686:18;;17679:34;;;;17744:2;17729:18;;17722:34;;;;17793:15;;;17787:3;17772:19;;17765:44;17573:3;17825:19;;17818:35;;;;17542:3;17527:19;;17252:607::o;17864:306::-;17952:6;17960;17968;18021:2;18009:9;18000:7;17996:23;17992:32;17989:52;;;18037:1;18034;18027:12;17989:52;18066:9;18060:16;18050:26;;18116:2;18105:9;18101:18;18095:25;18085:35;;18160:2;18149:9;18145:18;18139:25;18129:35;;17864:306;;;;;:::o;18590:125::-;18630:4;18658:1;18655;18652:8;18649:34;;;18663:18;;:::i;:::-;-1:-1:-1;18700:9:1;;18590:125::o;20168:401::-;20370:2;20352:21;;;20409:2;20389:18;;;20382:30;20448:34;20443:2;20428:18;;20421:62;-1:-1:-1;;;20514:2:1;20499:18;;20492:35;20559:3;20544:19;;20168:401::o;20574:399::-;20776:2;20758:21;;;20815:2;20795:18;;;20788:30;20854:34;20849:2;20834:18;;20827:62;-1:-1:-1;;;20920:2:1;20905:18;;20898:33;20963:3;20948:19;;20574:399::o;24819:980::-;25081:4;25129:3;25118:9;25114:19;25160:6;25149:9;25142:25;25186:2;25224:6;25219:2;25208:9;25204:18;25197:34;25267:3;25262:2;25251:9;25247:18;25240:31;25291:6;25326;25320:13;25357:6;25349;25342:22;25395:3;25384:9;25380:19;25373:26;;25434:2;25426:6;25422:15;25408:29;;25455:1;25465:195;25479:6;25476:1;25473:13;25465:195;;;25544:13;;-1:-1:-1;;;;;25540:39:1;25528:52;;25635:15;;;;25600:12;;;;25576:1;25494:9;25465:195;;;-1:-1:-1;;;;;;;25716:32:1;;;;25711:2;25696:18;;25689:60;-1:-1:-1;;;25780:3:1;25765:19;25758:35;25677:3;24819:980;-1:-1:-1;;;24819:980:1:o

Swarm Source

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