ETH Price: $2,524.37 (+0.29%)

Token

TRASH (BIN)
 

Overview

Max Total Supply

1,000,000,000 BIN

Holders

120

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.30284769 BIN

Value
$0.00
0x6c2bd8bba0dc645a2266dfd76c2c5f750c1c522b
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:
TrashBin

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-23
*/

// SPDX-License-Identifier: MIT

/**
https://trashbin.exposed
https://twitter.com/TheTrashBinBot
https://t.me/TheTrashBinbot
**/

pragma solidity 0.8.18;

library Address {
    function isContract(address account) internal view returns (bool) {
        return account.code.length > 0;
    }
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, "Address: low-level call failed");
    }
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }
    function verifyCallResultFromTarget(
        address target,
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        if (success) {
            if (returndata.length == 0) {
                // only check isContract if the call was successful and the return data is empty
                // otherwise we already know that it was a contract
                require(isContract(target), "Address: call to non-contract");
            }
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }
    function _revert(bytes memory returndata, string memory errorMessage) private pure {
        // Look for revert reason and bubble it up if present
        if (returndata.length > 0) {
            // The easiest way to bubble the revert reason is using memory via assembly
            /// @solidity memory-safe-assembly
            assembly {
                let returndata_size := mload(returndata)
                revert(add(32, returndata), returndata_size)
            }
        } else {
            revert(errorMessage);
        }
    }
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

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 IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

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

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

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }
    modifier onlyOwner() {
        _checkOwner();
        _;
    }
    function owner() public view virtual returns (address) {
        return _owner;
    }
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

contract TrashBin is IERC20, Ownable {
    using Address for address;
    
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "TRASH";
    string constant _symbol = "BIN";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 1_000_000_000 * (10 ** _decimals);
    uint256 _maxBuyTxAmount = (_totalSupply * 1) / 50;
    uint256 _maxSellTxAmount = (_totalSupply * 1) / 50;
    uint256 _maxWalletSize = (_totalSupply * 1) / 50;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;
    mapping (address => uint256) public lastSell;
    mapping (address => uint256) public lastBuy;

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

    uint256 marketingFee = 900;
    uint256 marketingSellFee = 900;
    uint256 liquidityFee = 100;
    uint256 liquiditySellFee = 100;
    uint256 totalBuyFee = marketingFee + liquidityFee;
    uint256 totalSellFee = marketingSellFee + liquiditySellFee;
    uint256 feeDenominator = 10000;
    bool public transferTax = false;

    address payable public liquidityFeeReceiver = payable(0x3e2596A6D4371e992D37904239C9F16f1b66b88a);
    address payable public marketingFeeReceiver = payable(0x3e2596A6D4371e992D37904239C9F16f1b66b88a);

    IDEXRouter public router;
    address routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    mapping (address => bool) liquidityPools;
    mapping (address => uint256) public protected;
    bool protectionEnabled = true;
    bool protectionDisabled = false;
    uint256 protectionLimit;
    uint256 public protectionCount;
    uint256 protectionTimer;

    address public pair;

    uint256 public launchedAt;
    uint256 public launchedTime;
    uint256 public deadBlocks;
    bool startBullRun = false;
    bool pauseDisabled = false;
    uint256 public rateLimit = 2;

    bool public swapEnabled = false;
    uint256 public swapThreshold = _totalSupply / 1000;
    uint256 public swapMinimum = _totalSupply / 10000;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }
    
    mapping (address => bool) teamMember;
    
    modifier onlyTeam() {
        require(teamMember[_msgSender()] || msg.sender == owner(), "Caller is not a team member");
        _;
    }
    
    event ProtectedWallet(address, address, uint256, uint8);

    constructor () {
        router = IDEXRouter(routerAddress);
        pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this));
        liquidityPools[pair] = true;
        _allowances[owner()][routerAddress] = type(uint256).max;
        _allowances[address(this)][routerAddress] = type(uint256).max;

        isFeeExempt[owner()] = true;
        liquidityCreator[owner()] = true;

        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[routerAddress] = true;
        isTxLimitExempt[DEAD] = true;

        _balances[owner()] = _totalSupply;

        emit Transfer(address(0), owner(), _totalSupply);
    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure returns (uint8) { return _decimals; }
    function symbol() external pure returns (string memory) { return _symbol; }
    function name() external pure returns (string memory) { return _name; }
    function getOwner() external view returns (address) { return owner(); }
    function maxBuyTxTokens() external view returns (uint256) { return _maxBuyTxAmount / (10 ** _decimals); }
    function maxSellTxTokens() external view returns (uint256) { return _maxSellTxAmount / (10 ** _decimals); }
    function maxWalletTokens() external view returns (uint256) { return _maxWalletSize / (10 ** _decimals); }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }
    
    function setTeamMember(address _team, bool _enabled) external onlyOwner {
        teamMember[_team] = _enabled;
    }
    
    function airdrop(address[] calldata addresses, uint256[] calldata amounts) external onlyOwner {
        require(addresses.length > 0 && amounts.length == addresses.length);
        address from = msg.sender;

        for (uint i = 0; i < addresses.length; i++) {
            if(!liquidityPools[addresses[i]] && !liquidityCreator[addresses[i]]) {
                _basicTransfer(from, addresses[i], amounts[i] * (10 ** _decimals));
            }
        }
    }
    
    function clearStuckBalance(uint256 amountPercentage, address adr) external onlyTeam {
        uint256 amountETH = address(this).balance;

        if(amountETH > 0) {
            (bool sent, ) = adr.call{value: (amountETH * amountPercentage) / 100}("");
            require(sent,"Failed to transfer funds");
        }
    }
    
    function LetsFuckingGo(uint256 _deadBlocks, uint256 _protection, uint256 _limit, uint256 buyNumerator, uint256 sellNumerator, uint256 divisor, uint256 numerator, uint256 _liquidityFee, uint256 _liquiditySellFee, uint256 _marketingFee, uint256 _marketingSellFee, uint256 _feeDenominator) external onlyTeam {
        require(!startBullRun && _deadBlocks < 10);
        deadBlocks = _deadBlocks;
        startBullRun = true;
        launchedAt = block.number;
        protectionTimer = block.timestamp + _protection;
        protectionLimit = _limit * (10 ** _decimals);
        _maxBuyTxAmount = (_totalSupply * buyNumerator) / divisor;
        _maxSellTxAmount = (_totalSupply * sellNumerator) / divisor;
        _maxWalletSize = (_totalSupply * numerator) / divisor;
        liquidityFee = _liquidityFee;
        liquiditySellFee = _liquiditySellFee;
        marketingFee = _marketingFee;
        marketingSellFee = _marketingSellFee;
        totalBuyFee = _liquidityFee + _marketingFee;
        totalSellFee = _liquiditySellFee + _marketingSellFee;
        feeDenominator = _feeDenominator;
        emit FeesSet(totalBuyFee, totalSellFee, feeDenominator);
    }
    
    function WaitAFuckingMinute() external onlyTeam {
        require(!pauseDisabled);
        startBullRun = false;
    }
    
    function disablePause() external onlyTeam {
        pauseDisabled = true;
        startBullRun = true;
    }
    
    function setProtection(bool _protect, uint256 _addTime) external onlyTeam {
        require(!protectionDisabled);
        protectionEnabled = _protect;
        require(_addTime < 1 days);
        protectionTimer += _addTime;
    }
    
    function disableProtection() external onlyTeam {
        protectionDisabled = true;
        protectionEnabled = false;
    }
    
    function SendToBin(address[] calldata _wallets, bool _protect) external onlyTeam {
        if (_protect) {
            require(protectionEnabled);
        }
        
        for (uint i = 0; i < _wallets.length; i++) {
            
            if (_protect) {
                protectionCount++;
                emit ProtectedWallet(tx.origin, _wallets[i], block.number, 2);
            }
            else {
                if (protected[_wallets[i]] != 0)
                    protectionCount--;      
            }
            protected[_wallets[i]] = _protect ? block.number : 0;
        }
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

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

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(sender != address(0), "BEP20: transfer from 0x0");
        require(recipient != address(0), "BEP20: transfer to 0x0");
        require(amount > 0, "Amount must be > zero");
        require(_balances[sender] >= amount, "Insufficient balance");
        if(!launched() && liquidityPools[recipient]){ require(liquidityCreator[sender], "Liquidity not added yet."); launch(); }
        if(!startBullRun){ require(liquidityCreator[sender] || liquidityCreator[recipient], "Trading not open yet."); }

        checkTxLimit(sender, recipient, amount);
        
        if (!liquidityPools[recipient] && recipient != DEAD) {
            if (!isTxLimitExempt[recipient]) {
                checkWalletLimit(recipient, amount);
            }
        }
        
        if(protectionEnabled && protectionTimer > block.timestamp) {
            if(liquidityPools[sender] && tx.origin != recipient && protected[recipient] == 0) {
                protected[recipient] = block.number;
                protectionCount++;
                emit ProtectedWallet(tx.origin, recipient, block.number, 0);
            }
        }
        
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        _balances[sender] = _balances[sender] - amount;

        uint256 amountReceived = amount;

        if(shouldTakeFee(sender, recipient)) {
            amountReceived = takeFee(recipient, amount);
            if(shouldSwapBack(recipient) && amount > 0) swapBack(amount);
        }
        
        _balances[recipient] = _balances[recipient] + amountReceived;

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function launched() internal view returns (bool) {
        return launchedAt != 0;
    }

    function launch() internal {
        launchedAt = block.number;
        launchedTime = block.timestamp;
        swapEnabled = true;
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender] - amount;
        _balances[recipient] = _balances[recipient] + amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }
    
    function checkWalletLimit(address recipient, uint256 amount) internal view {
        uint256 walletLimit = _maxWalletSize;
        require(_balances[recipient] + amount <= walletLimit, "Transfer amount exceeds the bag size.");
    }

    function checkTxLimit(address sender, address recipient, uint256 amount) internal {
        if (isTxLimitExempt[sender] || isTxLimitExempt[recipient]) return;
        require(amount <= (liquidityPools[sender] ? _maxBuyTxAmount : _maxSellTxAmount), "TX Limit Exceeded");
        require(lastBuy[recipient] + rateLimit <= block.number, "Transfer rate limit exceeded.");
        
        if (protected[sender] != 0){
            require(amount <= protectionLimit * (10 ** _decimals) && lastSell[sender] == 0 && protectionTimer > block.timestamp, "Wallet protected, please contact support.");
            lastSell[sender] = block.number;
        }
        
        if (liquidityPools[recipient]) {
            lastSell[sender] = block.number;
        } else if (shouldTakeFee(sender, recipient)) {
            if (protectionEnabled && protectionTimer > block.timestamp && lastBuy[tx.origin] == block.number && protected[recipient] == 0) {
                protected[recipient] = block.number;
                emit ProtectedWallet(tx.origin, recipient, block.number, 1);
            }
            lastBuy[recipient] = block.number;
            if (tx.origin != recipient)
                lastBuy[tx.origin] = block.number;
        }
    }

    function shouldTakeFee(address sender, address recipient) public view returns (bool) {
        if(!transferTax && !liquidityPools[recipient] && !liquidityPools[sender]) return false;
        return !isFeeExempt[sender] && !isFeeExempt[recipient];
    }

    function getTotalFee(bool selling) public view returns (uint256) {
        if(launchedAt + deadBlocks >= block.number){ return feeDenominator - 1; }
        if (selling) return totalSellFee;
        return totalBuyFee;
    }

    function takeFee(address recipient, uint256 amount) internal returns (uint256) {
        bool selling = liquidityPools[recipient];
        uint256 feeAmount = (amount * getTotalFee(selling)) / feeDenominator;
        
        _balances[address(this)] += feeAmount;
    
        return amount - feeAmount;
    }

    function shouldSwapBack(address recipient) internal view returns (bool) {
        return !liquidityPools[msg.sender]
        && !inSwap
        && swapEnabled
        && liquidityPools[recipient]
        && _balances[address(this)] >= swapMinimum 
        && totalBuyFee + totalSellFee > 0;
    }

    function swapBack(uint256 amount) internal swapping {
        uint256 totalFee = totalBuyFee + totalSellFee;
        uint256 amountToSwap = amount < swapThreshold ? amount : swapThreshold;
        if (_balances[address(this)] < amountToSwap) amountToSwap = _balances[address(this)];
        
        uint256 totalLiquidityFee = liquidityFee + liquiditySellFee;
        uint256 amountToLiquify = (amountToSwap * totalLiquidityFee / 2) / totalFee;
        amountToSwap -= amountToLiquify;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        
        uint256 balanceBefore = address(this).balance;

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

        uint256 amountETH = address(this).balance - balanceBefore;
        uint256 totalETHFee = totalFee - (totalLiquidityFee / 2);

        uint256 amountETHLiquidity = (amountETH * totalLiquidityFee / 2) / totalETHFee;
        uint256 amountETHMarketing = amountETH - amountETHLiquidity;
        
        if (amountETHMarketing > 0) {
            (bool sentMarketing, ) = marketingFeeReceiver.call{value: amountETHMarketing}("");
            if(!sentMarketing) {
                //Failed to transfer to marketing wallet
            }
        }
        
        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                liquidityFeeReceiver,
                block.timestamp
            );
        }

        emit FundsDistributed(amountETHMarketing, amountETHLiquidity, amountToLiquify);
    }
    
    function addLiquidityPool(address lp, bool isPool) external onlyOwner {
        require(lp != pair, "Can't alter current liquidity pair");
        liquidityPools[lp] = isPool;
    }

    function setRateLimit(uint256 rate) external onlyOwner {
        require(rate <= 60 seconds);
        rateLimit = rate;
    }

    function ChangeBagSize(uint256 buyNumerator, uint256 sellNumerator, uint256 divisor) external onlyOwner {
        require(buyNumerator > 0 && sellNumerator > 0 && divisor > 0 && divisor <= 10000);
        _maxBuyTxAmount = (_totalSupply * buyNumerator) / divisor;
        _maxSellTxAmount = (_totalSupply * sellNumerator) / divisor;
    }
    
    function ChangeBinSize(uint256 numerator, uint256 divisor) external onlyOwner() {
        require(numerator > 0 && divisor > 0 && divisor <= 10000);
        _maxWalletSize = (_totalSupply * numerator) / divisor;
    }

    function setIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }

    function setFees(uint256 _liquidityFee, uint256 _liquiditySellFee, uint256 _marketingFee, uint256 _marketingSellFee, uint256 _feeDenominator) external onlyOwner {
        require(((_liquidityFee + _liquiditySellFee) / 2) * 2 == (_liquidityFee + _liquiditySellFee), "Liquidity fee must be an even number due to rounding");
        liquidityFee = _liquidityFee;
        liquiditySellFee = _liquiditySellFee;
        marketingFee = _marketingFee;
        marketingSellFee = _marketingSellFee;
        totalBuyFee = _liquidityFee + _marketingFee;
        totalSellFee = _liquiditySellFee + _marketingSellFee;
        feeDenominator = _feeDenominator;
        require(totalBuyFee + totalSellFee <= feeDenominator, "Fees too high");
        emit FeesSet(totalBuyFee, totalSellFee, feeDenominator);
    }

    function toggleTransferTax() external onlyOwner {
        transferTax = !transferTax;
    }

    function setFeeReceivers(address _liquidityFeeReceiver, address _marketingFeeReceiver) external onlyOwner {
        liquidityFeeReceiver = payable(_liquidityFeeReceiver);
        marketingFeeReceiver = payable(_marketingFeeReceiver);
    }

    function setSwapBackSettings(bool _enabled, uint256 _denominator, uint256 _swapMinimum) external onlyOwner {
        require(_denominator > 0);
        swapEnabled = _enabled;
        swapThreshold = _totalSupply / _denominator;
        swapMinimum = _swapMinimum * (10 ** _decimals);
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply - (balanceOf(DEAD) + balanceOf(ZERO));
    }

    event FundsDistributed(uint256 marketingETH, uint256 liquidityETH, uint256 liquidityTokens);
    event FeesSet(uint256 totalBuyFees, uint256 totalSellFees, uint256 denominator);
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"totalBuyFees","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalSellFees","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"denominator","type":"uint256"}],"name":"FeesSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"marketingETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityTokens","type":"uint256"}],"name":"FundsDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"","type":"uint8"}],"name":"ProtectedWallet","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":[{"internalType":"uint256","name":"buyNumerator","type":"uint256"},{"internalType":"uint256","name":"sellNumerator","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"ChangeBagSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"ChangeBinSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadBlocks","type":"uint256"},{"internalType":"uint256","name":"_protection","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"},{"internalType":"uint256","name":"buyNumerator","type":"uint256"},{"internalType":"uint256","name":"sellNumerator","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"},{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_liquiditySellFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_marketingSellFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"LetsFuckingGo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_wallets","type":"address[]"},{"internalType":"bool","name":"_protect","type":"bool"}],"name":"SendToBin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"WaitAFuckingMinute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"lp","type":"address"},{"internalType":"bool","name":"isPool","type":"bool"}],"name":"addLiquidityPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"},{"internalType":"address","name":"adr","type":"address"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"disablePause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"selling","type":"bool"}],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"liquidityCreator","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeReceiver","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTxTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTxTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"protected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protectionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rateLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_liquidityFeeReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_liquiditySellFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_marketingSellFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_protect","type":"bool"},{"internalType":"uint256","name":"_addTime","type":"uint256"}],"name":"setProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setRateLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_denominator","type":"uint256"},{"internalType":"uint256","name":"_swapMinimum","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_team","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setTeamMember","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"}],"name":"shouldTakeFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapMinimum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"toggleTransferTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600180546001600160a01b031990811661dead17909155600280549091169055620000326009600a62000618565b6200004290633b9aca0062000630565b6003556032600354600162000058919062000630565b6200006491906200064a565b600455603260035460016200007a919062000630565b6200008691906200064a565b600555603260035460016200009c919062000630565b620000a891906200064a565b600655610384600e55610384600f5560646010556064601155601054600e54620000d391906200066d565b601255601154600f54620000e891906200066d565b60135561271060145560158054743e2596a6d4371e992d37904239c9f16f1b66b88a006001600160a81b0319909116179055601680546001600160a01b0319908116733e2596a6d4371e992d37904239c9f16f1b66b88a1790915560188054909116737a250d5630b4cf539739df2c5dacb4c659f2488d179055601b805461ffff1990811660011790915560238054909116905560026024556025805460ff191690556003546200019d906103e8906200064a565b602655612710600354620001b291906200064a565b602755348015620001c257600080fd5b50620001ce33620004b3565b601854601780546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200022b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000251919062000683565b6001600160a01b031663c9c65396601760009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d9919062000683565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af115801562000326573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034c919062000683565b601f80546001600160a01b0319166001600160a01b039290921691821790556000908152601960205260408120805460ff19166001179055600019906008906200039e6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120601880548416835290855283822095909555308082526008855283822086548416835285528382206000199055815483168252600b85528382208054600160ff199182168117909255835485168452600d87528584208054821683179055918352600c865284832080548316821790558254841683528483208054831682179055955483168252838220805482168717905585548316825283822080549091169095179094556003548454821685526007845282852081905584549251908152911692917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620006ae565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200055a5781600019048211156200053e576200053e62000503565b808516156200054c57918102915b93841c93908002906200051e565b509250929050565b600082620005735750600162000612565b81620005825750600062000612565b81600181146200059b5760028114620005a657620005c6565b600191505062000612565b60ff841115620005ba57620005ba62000503565b50506001821b62000612565b5060208310610133831016604e8410600b8410161715620005eb575081810a62000612565b620005f7838362000519565b80600019048211156200060e576200060e62000503565b0290505b92915050565b60006200062960ff84168362000562565b9392505050565b808202811582820484141762000612576200061262000503565b6000826200066857634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562000612576200061262000503565b6000602082840312156200069657600080fd5b81516001600160a01b03811681146200062957600080fd5b612f7580620006be6000396000f3fe6080604052600436106103855760003560e01c80638124f7ac116101d1578063c1adf7bc11610102578063e96fada2116100a0578063f84ba65d1161006f578063f84ba65d14610a91578063f8821a6214610ab1578063f887ea4014610ac7578063fabb0b4f14610ae757600080fd5b8063e96fada214610a11578063ebde043d14610a31578063f1f3bca314610a51578063f2fde38b14610a7157600080fd5b8063d6860142116100dc578063d686014214610966578063d912b2ce14610986578063dae39f921461099b578063dd62ed3e146109cb57600080fd5b8063c1adf7bc146108f9578063c287184e14610926578063d08893581461094657600080fd5b8063a2ba94c81161016f578063a9059cbb11610149578063a9059cbb14610889578063bafe446b146108a9578063bf56b371146108be578063bfa21d6a146108d457600080fd5b8063a2ba94c814610829578063a4b45c0014610849578063a8aa1b311461086957600080fd5b80638da5cb5b116101ab5780638da5cb5b146107a957806395d89b41146107c757806395e3082c146107f35780639b02c4021461081357600080fd5b80638124f7ac1461072d578063893d20e8146107475780638b42507f1461077957600080fd5b8063492a937b116102b657806363a803e1116102545780636f4ce428116102235780636f4ce428146106a057806370a08231146106cd578063715018a6146107035780637aa2b8a51461071857600080fd5b806363a803e114610631578063658d4b7f1461064657806367243482146106665780636ddd17131461068657600080fd5b80635804f1e4116102905780635804f1e4146105d0578063584f969a146105e657806360bba03d146105fb57806361e08e721461061b57600080fd5b8063492a937b1461057057806356a227f214610590578063571ac8b0146105b057600080fd5b806323b872dd11610323578063332402f8116102fd578063332402f8146104de5780633f4218e0146104fe578063421dd7c71461052e57806346d7edaa1461054357600080fd5b806323b872dd1461048d5780632b112e49146104ad578063313ce567146104c257600080fd5b806306fdde031161035f57806306fdde03146103fc578063095ea7b31461043357806318160ddd14610463578063234e94941461047857600080fd5b806303b5aa1b146103915780630445b667146103b357806304a66b48146103dc57600080fd5b3661038c57005b600080fd5b34801561039d57600080fd5b506103b16103ac36600461284b565b610afd565b005b3480156103bf57600080fd5b506103c960265481565b6040519081526020015b60405180910390f35b3480156103e857600080fd5b506103b16103f73660046128c6565b610c81565b34801561040857600080fd5b506040805180820190915260058152640a8a482a6960db1b60208201525b6040516103d39190612901565b34801561043f57600080fd5b5061045361044e366004612964565b610ded565b60405190151581526020016103d3565b34801561046f57600080fd5b506003546103c9565b34801561048457600080fd5b506103c9610e5a565b34801561049957600080fd5b506104536104a8366004612990565b610e7a565b3480156104b957600080fd5b506103c9610f0f565b3480156104ce57600080fd5b50604051600981526020016103d3565b3480156104ea57600080fd5b506104536104f93660046129d1565b610f50565b34801561050a57600080fd5b50610453610519366004612a0a565b600b6020526000908152604090205460ff1681565b34801561053a57600080fd5b506103b1610ff7565b34801561054f57600080fd5b506103c961055e366004612a0a565b601a6020526000908152604090205481565b34801561057c57600080fd5b506103b161058b366004612a3c565b61104c565b34801561059c57600080fd5b506103b16105ab366004612a71565b6110e8565b3480156105bc57600080fd5b506104536105cb366004612a0a565b6111ee565b3480156105dc57600080fd5b506103c960215481565b3480156105f257600080fd5b506103b16111fc565b34801561060757600080fd5b506103b1610616366004612a3c565b611251565b34801561062757600080fd5b506103c960245481565b34801561063d57600080fd5b506103c9611284565b34801561065257600080fd5b506103b1610661366004612a3c565b61129f565b34801561067257600080fd5b506103b1610681366004612ae2565b6112d2565b34801561069257600080fd5b506025546104539060ff1681565b3480156106ac57600080fd5b506103c96106bb366004612a0a565b60096020526000908152604090205481565b3480156106d957600080fd5b506103c96106e8366004612a0a565b6001600160a01b031660009081526007602052604090205490565b34801561070f57600080fd5b506103b1611417565b34801561072457600080fd5b506103b161142b565b34801561073957600080fd5b506015546104539060ff1681565b34801561075357600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016103d3565b34801561078557600080fd5b50610453610794366004612a0a565b600c6020526000908152604090205460ff1681565b3480156107b557600080fd5b506000546001600160a01b0316610761565b3480156107d357600080fd5b506040805180820190915260038152622124a760e91b6020820152610426565b3480156107ff57600080fd5b506103b161080e366004612b4e565b611490565b34801561081f57600080fd5b506103c9601d5481565b34801561083557600080fd5b506103b1610844366004612ba2565b61163d565b34801561085557600080fd5b506103b16108643660046129d1565b6116b6565b34801561087557600080fd5b50601f54610761906001600160a01b031681565b34801561089557600080fd5b506104536108a4366004612964565b6116f6565b3480156108b557600080fd5b506103c9611703565b3480156108ca57600080fd5b506103c960205481565b3480156108e057600080fd5b506015546107619061010090046001600160a01b031681565b34801561090557600080fd5b506103c9610914366004612a0a565b600a6020526000908152604090205481565b34801561093257600080fd5b506103b1610941366004612bce565b61171e565b34801561095257600080fd5b506103b1610961366004612be7565b611739565b34801561097257600080fd5b506103b1610981366004612c1a565b61178b565b34801561099257600080fd5b506103b161181c565b3480156109a757600080fd5b506104536109b6366004612a0a565b600d6020526000908152604090205460ff1681565b3480156109d757600080fd5b506103c96109e63660046129d1565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b348015610a1d57600080fd5b50601654610761906001600160a01b031681565b348015610a3d57600080fd5b506103b1610a4c366004612c36565b611838565b348015610a5d57600080fd5b506103c9610a6c366004612c58565b611887565b348015610a7d57600080fd5b506103b1610a8c366004612a0a565b6118c4565b348015610a9d57600080fd5b506103b1610aac366004612a3c565b61193d565b348015610abd57600080fd5b506103c960275481565b348015610ad357600080fd5b50601754610761906001600160a01b031681565b348015610af357600080fd5b506103c960225481565b3360009081526029602052604090205460ff1680610b2557506000546001600160a01b031633145b610b4a5760405162461bcd60e51b8152600401610b4190612c73565b60405180910390fd5b60235460ff16158015610b5d5750600a8c105b610b6657600080fd5b60228c90556023805460ff1916600117905543602055610b868b42612cc0565b601e55610b956009600a612db7565b610b9f908b612dc6565b601c556003548790610bb2908b90612dc6565b610bbc9190612ddd565b6004556003548790610bcf908a90612dc6565b610bd99190612ddd565b6005556003548790610bec908890612dc6565b610bf69190612ddd565b60065560108590556011849055600e839055600f829055610c178386612cc0565b601255610c248285612cc0565b601381905560148290556012546040805191825260208201929092529081018290527f01bae858246c904512695a3f6d48ab88abb7a0192fdd7c53b043e60317795f459060600160405180910390a1505050505050505050505050565b610c89611970565b610c938486612cc0565b6002610c9f8688612cc0565b610ca99190612ddd565b610cb4906002612dc6565b14610d1e5760405162461bcd60e51b815260206004820152603460248201527f4c697175696469747920666565206d75737420626520616e206576656e206e756044820152736d6265722064756520746f20726f756e64696e6760601b6064820152608401610b41565b60108590556011849055600e839055600f829055610d3c8386612cc0565b601255610d498285612cc0565b601381905560148290556012548291610d6191612cc0565b1115610d9f5760405162461bcd60e51b815260206004820152600d60248201526c08ccacae640e8dede40d0d2ced609b1b6044820152606401610b41565b60125460135460145460408051938452602084019290925282820152517f01bae858246c904512695a3f6d48ab88abb7a0192fdd7c53b043e60317795f459181900360600190a15050505050565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610e489086815260200190565b60405180910390a35060015b92915050565b6000610e686009600a612db7565b600554610e759190612ddd565b905090565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610efa576001600160a01b0384166000908152600860209081526040808320338452909152902054610ed5908390612dff565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610f058484846119ca565b90505b9392505050565b6002546001600160a01b039081166000908152600760205260408082205460015490931682528120549091610f4391612cc0565b600354610e759190612dff565b60155460009060ff16158015610f7f57506001600160a01b03821660009081526019602052604090205460ff16155b8015610fa457506001600160a01b03831660009081526019602052604090205460ff16155b15610fb157506000610e54565b6001600160a01b0383166000908152600b602052604090205460ff16158015610f085750506001600160a01b03166000908152600b602052604090205460ff1615919050565b3360009081526029602052604090205460ff168061101f57506000546001600160a01b031633145b61103b5760405162461bcd60e51b8152600401610b4190612c73565b601b805461ffff1916610100179055565b611054611970565b601f546001600160a01b03908116908316036110bd5760405162461bcd60e51b815260206004820152602260248201527f43616e277420616c7465722063757272656e74206c697175696469747920706160448201526134b960f11b6064820152608401610b41565b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b3360009081526029602052604090205460ff168061111057506000546001600160a01b031633145b61112c5760405162461bcd60e51b8152600401610b4190612c73565b4780156111e95760006001600160a01b038316606461114b8685612dc6565b6111559190612ddd565b604051600081818185875af1925050503d8060008114611191576040519150601f19603f3d011682016040523d82523d6000602084013e611196565b606091505b50509050806111e75760405162461bcd60e51b815260206004820152601860248201527f4661696c656420746f207472616e736665722066756e647300000000000000006044820152606401610b41565b505b505050565b6000610e5482600019610ded565b3360009081526029602052604090205460ff168061122457506000546001600160a01b031633145b6112405760405162461bcd60e51b8152600401610b4190612c73565b6023805461ffff1916610101179055565b611259611970565b6001600160a01b03919091166000908152602960205260409020805460ff1916911515919091179055565b60006112926009600a612db7565b600654610e759190612ddd565b6112a7611970565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6112da611970565b82158015906112e857508083145b6112f157600080fd5b3360005b8481101561140f576019600087878481811061131357611313612e12565b90506020020160208101906113289190612a0a565b6001600160a01b0316815260208101919091526040016000205460ff161580156113975750600d600087878481811061136357611363612e12565b90506020020160208101906113789190612a0a565b6001600160a01b0316815260208101919091526040016000205460ff16155b156113fd576113fb828787848181106113b2576113b2612e12565b90506020020160208101906113c79190612a0a565b6113d36009600a612db7565b8787868181106113e5576113e5612e12565b905060200201356113f69190612dc6565b611ec6565b505b8061140781612e28565b9150506112f5565b505050505050565b61141f611970565b6114296000611f80565b565b3360009081526029602052604090205460ff168061145357506000546001600160a01b031633145b61146f5760405162461bcd60e51b8152600401610b4190612c73565b602354610100900460ff161561148457600080fd5b6023805460ff19169055565b3360009081526029602052604090205460ff16806114b857506000546001600160a01b031633145b6114d45760405162461bcd60e51b8152600401610b4190612c73565b80156114e957601b5460ff166114e957600080fd5b60005b828110156111e757811561157857601d805490600061150a83612e28565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea3285858481811061154357611543612e12565b90506020020160208101906115589190612a0a565b43600260405161156b9493929190612e41565b60405180910390a16115d8565b601a600085858481811061158e5761158e612e12565b90506020020160208101906115a39190612a0a565b6001600160a01b03168152602081019190915260400160002054156115d857601d80549060006115d283612e6c565b91905055505b816115e45760006115e6565b435b601a60008686858181106115fc576115fc612e12565b90506020020160208101906116119190612a0a565b6001600160a01b031681526020810191909152604001600020558061163581612e28565b9150506114ec565b611645611970565b6000831180156116555750600082115b80156116615750600081115b801561166f57506127108111155b61167857600080fd5b80836003546116879190612dc6565b6116919190612ddd565b60045560035481906116a4908490612dc6565b6116ae9190612ddd565b600555505050565b6116be611970565b60158054610100600160a81b0319166101006001600160a01b0394851602179055601680546001600160a01b03191691909216179055565b6000610f083384846119ca565b60006117116009600a612db7565b600454610e759190612ddd565b611726611970565b603c81111561173457600080fd5b602455565b611741611970565b6000821161174e57600080fd5b6025805460ff191684151517905560035461176a908390612ddd565b6026556117796009600a612db7565b6117839082612dc6565b602755505050565b3360009081526029602052604090205460ff16806117b357506000546001600160a01b031633145b6117cf5760405162461bcd60e51b8152600401610b4190612c73565b601b54610100900460ff16156117e457600080fd5b601b805460ff191683151517905562015180811061180157600080fd5b80601e60008282546118139190612cc0565b90915550505050565b611824611970565b6015805460ff19811660ff90911615179055565b611840611970565b6000821180156118505750600081115b801561185e57506127108111155b61186757600080fd5b80826003546118769190612dc6565b6118809190612ddd565b6006555050565b60004360225460205461189a9190612cc0565b106118ae576001601454610e549190612dff565b81156118bc57505060135490565b505060125490565b6118cc611970565b6001600160a01b0381166119315760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b41565b61193a81611f80565b50565b611945611970565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146114295760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b41565b60006001600160a01b038416611a225760405162461bcd60e51b815260206004820152601860248201527f42455032303a207472616e736665722066726f6d2030783000000000000000006044820152606401610b41565b6001600160a01b038316611a715760405162461bcd60e51b8152602060048201526016602482015275042455032303a207472616e7366657220746f203078360541b6044820152606401610b41565b60008211611ab95760405162461bcd60e51b8152602060048201526015602482015274416d6f756e74206d757374206265203e207a65726f60581b6044820152606401610b41565b6001600160a01b038416600090815260076020526040902054821115611b185760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b6044820152606401610b41565b602054158015611b4057506001600160a01b03831660009081526019602052604090205460ff165b15611bc7576001600160a01b0384166000908152600d602052604090205460ff16611bad5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206e6f74206164646564207965742e00000000000000006044820152606401610b41565b611bc743602055426021556025805460ff19166001179055565b60235460ff16611c54576001600160a01b0384166000908152600d602052604090205460ff1680611c1057506001600160a01b0383166000908152600d602052604090205460ff165b611c545760405162461bcd60e51b81526020600482015260156024820152742a3930b234b733903737ba1037b832b7103cb2ba1760591b6044820152606401610b41565b611c5f848484611fd0565b6001600160a01b03831660009081526019602052604090205460ff16158015611c9657506001546001600160a01b03848116911614155b15611cc5576001600160a01b0383166000908152600c602052604090205460ff16611cc557611cc58383612316565b601b5460ff168015611cd8575042601e54115b15611da2576001600160a01b03841660009081526019602052604090205460ff168015611d0e5750326001600160a01b03841614155b8015611d3057506001600160a01b0383166000908152601a6020526040902054155b15611da2576001600160a01b0383166000908152601a60205260408120439055601d805491611d5e83612e28565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea3284436000604051611d999493929190612e41565b60405180910390a15b60285460ff1615611dbf57611db8848484611ec6565b9050610f08565b6001600160a01b038416600090815260076020526040902054611de3908390612dff565b6001600160a01b03851660009081526007602052604090205581611e078585610f50565b15611e3b57611e16848461239b565b9050611e2184612419565b8015611e2d5750600083115b15611e3b57611e3b836124ab565b6001600160a01b038416600090815260076020526040902054611e5f908290612cc0565b6001600160a01b0380861660008181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611eb39085815260200190565b60405180910390a3506001949350505050565b6001600160a01b038316600090815260076020526040812054611eea908390612dff565b6001600160a01b038086166000908152600760205260408082209390935590851681522054611f1a908390612cc0565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611f6e9086815260200190565b60405180910390a35060019392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383166000908152600c602052604090205460ff168061200f57506001600160a01b0382166000908152600c602052604090205460ff165b1561201957505050565b6001600160a01b03831660009081526019602052604090205460ff1661204157600554612045565b6004545b8111156120885760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610b41565b6024546001600160a01b0383166000908152600a602052604090205443916120af91612cc0565b11156120fd5760405162461bcd60e51b815260206004820152601d60248201527f5472616e736665722072617465206c696d69742065786365656465642e0000006044820152606401610b41565b6001600160a01b0383166000908152601a6020526040902054156121e0576121276009600a612db7565b601c546121349190612dc6565b811115801561215957506001600160a01b038316600090815260096020526040902054155b8015612166575042601e54115b6121c45760405162461bcd60e51b815260206004820152602960248201527f57616c6c65742070726f7465637465642c20706c6561736520636f6e746163746044820152681039bab83837b93a1760b91b6064820152608401610b41565b6001600160a01b03831660009081526009602052604090204390555b6001600160a01b03821660009081526019602052604090205460ff161561221f5750506001600160a01b03166000908152600960205260409020439055565b6122298383610f50565b156111e957601b5460ff168015612241575042601e54115b801561225b5750326000908152600a602052604090205443145b801561227d57506001600160a01b0382166000908152601a6020526040902054155b156122de576001600160a01b0382166000908152601a602052604090819020439081905590517f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea916122d59132918691600190612e41565b60405180910390a15b6001600160a01b0382166000818152600a6020526040902043905532146111e957326000908152600a60205260409020439055505050565b6006546001600160a01b038316600090815260076020526040902054819061233f908490612cc0565b11156111e95760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b6064820152608401610b41565b6001600160a01b03821660009081526019602052604081205460145460ff9091169082906123c883611887565b6123d29086612dc6565b6123dc9190612ddd565b30600090815260076020526040812080549293508392909190612400908490612cc0565b9091555061241090508185612dff565b95945050505050565b3360009081526019602052604081205460ff1615801561243c575060285460ff16155b801561244a575060255460ff165b801561246e57506001600160a01b03821660009081526019602052604090205460ff165b801561248b57506027543060009081526007602052604090205410155b8015610e54575060006013546012546124a49190612cc0565b1192915050565b6028805460ff191660011790556013546012546000916124ca91612cc0565b9050600060265483106124df576026546124e1565b825b3060009081526007602052604090205490915081111561250d5750306000908152600760205260409020545b600060115460105461251f9190612cc0565b905060008360026125308486612dc6565b61253a9190612ddd565b6125449190612ddd565b90506125508184612dff565b6040805160028082526060820183529295506000929091602083019080368337019050509050308160008151811061258a5761258a612e12565b6001600160a01b03928316602091820292909201810191909152601754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156125e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126079190612e83565b8160018151811061261a5761261a612e12565b6001600160a01b03928316602091820292909201015260175460405163791ac94760e01b81524792919091169063791ac94790612664908890600090879030904290600401612ea0565b600060405180830381600087803b15801561267e57600080fd5b505af1158015612692573d6000803e3d6000fd5b50505050600081476126a49190612dff565b905060006126b3600287612ddd565b6126bd9089612dff565b905060008160026126ce8986612dc6565b6126d89190612ddd565b6126e29190612ddd565b905060006126f08285612dff565b9050801561274f576016546040516000916001600160a01b03169083908381818185875af1925050503d8060008114612745576040519150601f19603f3d011682016040523d82523d6000602084013e61274a565b606091505b505050505b86156127f35760175460155460405163f305d71960e01b8152306004820152602481018a905260006044820181905260648201526001600160a01b03610100909204821660848201524260a482015291169063f305d71990849060c40160606040518083038185885af11580156127ca573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127ef9190612f11565b5050505b60408051828152602081018490529081018890527fdaf6233a382145376035341e71f8a04305f7e323d0fe3e58c908cf0a26b76df99060600160405180910390a150506028805460ff19169055505050505050505050565b6000806000806000806000806000806000806101808d8f03121561286e57600080fd5b50508a359c60208c01359c5060408c01359b60608101359b5060808101359a5060a0810135995060c0810135985060e08101359750610100810135965061012081013595506101408101359450610160013592509050565b600080600080600060a086880312156128de57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600060208083528351808285015260005b8181101561292e57858101830151858201604001528201612912565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461193a57600080fd5b6000806040838503121561297757600080fd5b82356129828161294f565b946020939093013593505050565b6000806000606084860312156129a557600080fd5b83356129b08161294f565b925060208401356129c08161294f565b929592945050506040919091013590565b600080604083850312156129e457600080fd5b82356129ef8161294f565b915060208301356129ff8161294f565b809150509250929050565b600060208284031215612a1c57600080fd5b8135610f088161294f565b80358015158114612a3757600080fd5b919050565b60008060408385031215612a4f57600080fd5b8235612a5a8161294f565b9150612a6860208401612a27565b90509250929050565b60008060408385031215612a8457600080fd5b8235915060208301356129ff8161294f565b60008083601f840112612aa857600080fd5b50813567ffffffffffffffff811115612ac057600080fd5b6020830191508360208260051b8501011115612adb57600080fd5b9250929050565b60008060008060408587031215612af857600080fd5b843567ffffffffffffffff80821115612b1057600080fd5b612b1c88838901612a96565b90965094506020870135915080821115612b3557600080fd5b50612b4287828801612a96565b95989497509550505050565b600080600060408486031215612b6357600080fd5b833567ffffffffffffffff811115612b7a57600080fd5b612b8686828701612a96565b9094509250612b99905060208501612a27565b90509250925092565b600080600060608486031215612bb757600080fd5b505081359360208301359350604090920135919050565b600060208284031215612be057600080fd5b5035919050565b600080600060608486031215612bfc57600080fd5b612c0584612a27565b95602085013595506040909401359392505050565b60008060408385031215612c2d57600080fd5b61298283612a27565b60008060408385031215612c4957600080fd5b50508035926020909101359150565b600060208284031215612c6a57600080fd5b610f0882612a27565b6020808252601b908201527f43616c6c6572206973206e6f742061207465616d206d656d6265720000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610e5457610e54612caa565b600181815b80851115612d0e578160001904821115612cf457612cf4612caa565b80851615612d0157918102915b93841c9390800290612cd8565b509250929050565b600082612d2557506001610e54565b81612d3257506000610e54565b8160018114612d485760028114612d5257612d6e565b6001915050610e54565b60ff841115612d6357612d63612caa565b50506001821b610e54565b5060208310610133831016604e8410600b8410161715612d91575081810a610e54565b612d9b8383612cd3565b8060001904821115612daf57612daf612caa565b029392505050565b6000610f0860ff841683612d16565b8082028115828204841417610e5457610e54612caa565b600082612dfa57634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610e5457610e54612caa565b634e487b7160e01b600052603260045260246000fd5b600060018201612e3a57612e3a612caa565b5060010190565b6001600160a01b039485168152929093166020830152604082015260ff909116606082015260800190565b600081612e7b57612e7b612caa565b506000190190565b600060208284031215612e9557600080fd5b8151610f088161294f565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612ef05784516001600160a01b031683529383019391830191600101612ecb565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612f2657600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212203495f1ec2721a82c3b71ccc994b4aa255b5e1b9cca7b9e0a99921b91617e184664736f6c63430008120033

Deployed Bytecode

0x6080604052600436106103855760003560e01c80638124f7ac116101d1578063c1adf7bc11610102578063e96fada2116100a0578063f84ba65d1161006f578063f84ba65d14610a91578063f8821a6214610ab1578063f887ea4014610ac7578063fabb0b4f14610ae757600080fd5b8063e96fada214610a11578063ebde043d14610a31578063f1f3bca314610a51578063f2fde38b14610a7157600080fd5b8063d6860142116100dc578063d686014214610966578063d912b2ce14610986578063dae39f921461099b578063dd62ed3e146109cb57600080fd5b8063c1adf7bc146108f9578063c287184e14610926578063d08893581461094657600080fd5b8063a2ba94c81161016f578063a9059cbb11610149578063a9059cbb14610889578063bafe446b146108a9578063bf56b371146108be578063bfa21d6a146108d457600080fd5b8063a2ba94c814610829578063a4b45c0014610849578063a8aa1b311461086957600080fd5b80638da5cb5b116101ab5780638da5cb5b146107a957806395d89b41146107c757806395e3082c146107f35780639b02c4021461081357600080fd5b80638124f7ac1461072d578063893d20e8146107475780638b42507f1461077957600080fd5b8063492a937b116102b657806363a803e1116102545780636f4ce428116102235780636f4ce428146106a057806370a08231146106cd578063715018a6146107035780637aa2b8a51461071857600080fd5b806363a803e114610631578063658d4b7f1461064657806367243482146106665780636ddd17131461068657600080fd5b80635804f1e4116102905780635804f1e4146105d0578063584f969a146105e657806360bba03d146105fb57806361e08e721461061b57600080fd5b8063492a937b1461057057806356a227f214610590578063571ac8b0146105b057600080fd5b806323b872dd11610323578063332402f8116102fd578063332402f8146104de5780633f4218e0146104fe578063421dd7c71461052e57806346d7edaa1461054357600080fd5b806323b872dd1461048d5780632b112e49146104ad578063313ce567146104c257600080fd5b806306fdde031161035f57806306fdde03146103fc578063095ea7b31461043357806318160ddd14610463578063234e94941461047857600080fd5b806303b5aa1b146103915780630445b667146103b357806304a66b48146103dc57600080fd5b3661038c57005b600080fd5b34801561039d57600080fd5b506103b16103ac36600461284b565b610afd565b005b3480156103bf57600080fd5b506103c960265481565b6040519081526020015b60405180910390f35b3480156103e857600080fd5b506103b16103f73660046128c6565b610c81565b34801561040857600080fd5b506040805180820190915260058152640a8a482a6960db1b60208201525b6040516103d39190612901565b34801561043f57600080fd5b5061045361044e366004612964565b610ded565b60405190151581526020016103d3565b34801561046f57600080fd5b506003546103c9565b34801561048457600080fd5b506103c9610e5a565b34801561049957600080fd5b506104536104a8366004612990565b610e7a565b3480156104b957600080fd5b506103c9610f0f565b3480156104ce57600080fd5b50604051600981526020016103d3565b3480156104ea57600080fd5b506104536104f93660046129d1565b610f50565b34801561050a57600080fd5b50610453610519366004612a0a565b600b6020526000908152604090205460ff1681565b34801561053a57600080fd5b506103b1610ff7565b34801561054f57600080fd5b506103c961055e366004612a0a565b601a6020526000908152604090205481565b34801561057c57600080fd5b506103b161058b366004612a3c565b61104c565b34801561059c57600080fd5b506103b16105ab366004612a71565b6110e8565b3480156105bc57600080fd5b506104536105cb366004612a0a565b6111ee565b3480156105dc57600080fd5b506103c960215481565b3480156105f257600080fd5b506103b16111fc565b34801561060757600080fd5b506103b1610616366004612a3c565b611251565b34801561062757600080fd5b506103c960245481565b34801561063d57600080fd5b506103c9611284565b34801561065257600080fd5b506103b1610661366004612a3c565b61129f565b34801561067257600080fd5b506103b1610681366004612ae2565b6112d2565b34801561069257600080fd5b506025546104539060ff1681565b3480156106ac57600080fd5b506103c96106bb366004612a0a565b60096020526000908152604090205481565b3480156106d957600080fd5b506103c96106e8366004612a0a565b6001600160a01b031660009081526007602052604090205490565b34801561070f57600080fd5b506103b1611417565b34801561072457600080fd5b506103b161142b565b34801561073957600080fd5b506015546104539060ff1681565b34801561075357600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016103d3565b34801561078557600080fd5b50610453610794366004612a0a565b600c6020526000908152604090205460ff1681565b3480156107b557600080fd5b506000546001600160a01b0316610761565b3480156107d357600080fd5b506040805180820190915260038152622124a760e91b6020820152610426565b3480156107ff57600080fd5b506103b161080e366004612b4e565b611490565b34801561081f57600080fd5b506103c9601d5481565b34801561083557600080fd5b506103b1610844366004612ba2565b61163d565b34801561085557600080fd5b506103b16108643660046129d1565b6116b6565b34801561087557600080fd5b50601f54610761906001600160a01b031681565b34801561089557600080fd5b506104536108a4366004612964565b6116f6565b3480156108b557600080fd5b506103c9611703565b3480156108ca57600080fd5b506103c960205481565b3480156108e057600080fd5b506015546107619061010090046001600160a01b031681565b34801561090557600080fd5b506103c9610914366004612a0a565b600a6020526000908152604090205481565b34801561093257600080fd5b506103b1610941366004612bce565b61171e565b34801561095257600080fd5b506103b1610961366004612be7565b611739565b34801561097257600080fd5b506103b1610981366004612c1a565b61178b565b34801561099257600080fd5b506103b161181c565b3480156109a757600080fd5b506104536109b6366004612a0a565b600d6020526000908152604090205460ff1681565b3480156109d757600080fd5b506103c96109e63660046129d1565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b348015610a1d57600080fd5b50601654610761906001600160a01b031681565b348015610a3d57600080fd5b506103b1610a4c366004612c36565b611838565b348015610a5d57600080fd5b506103c9610a6c366004612c58565b611887565b348015610a7d57600080fd5b506103b1610a8c366004612a0a565b6118c4565b348015610a9d57600080fd5b506103b1610aac366004612a3c565b61193d565b348015610abd57600080fd5b506103c960275481565b348015610ad357600080fd5b50601754610761906001600160a01b031681565b348015610af357600080fd5b506103c960225481565b3360009081526029602052604090205460ff1680610b2557506000546001600160a01b031633145b610b4a5760405162461bcd60e51b8152600401610b4190612c73565b60405180910390fd5b60235460ff16158015610b5d5750600a8c105b610b6657600080fd5b60228c90556023805460ff1916600117905543602055610b868b42612cc0565b601e55610b956009600a612db7565b610b9f908b612dc6565b601c556003548790610bb2908b90612dc6565b610bbc9190612ddd565b6004556003548790610bcf908a90612dc6565b610bd99190612ddd565b6005556003548790610bec908890612dc6565b610bf69190612ddd565b60065560108590556011849055600e839055600f829055610c178386612cc0565b601255610c248285612cc0565b601381905560148290556012546040805191825260208201929092529081018290527f01bae858246c904512695a3f6d48ab88abb7a0192fdd7c53b043e60317795f459060600160405180910390a1505050505050505050505050565b610c89611970565b610c938486612cc0565b6002610c9f8688612cc0565b610ca99190612ddd565b610cb4906002612dc6565b14610d1e5760405162461bcd60e51b815260206004820152603460248201527f4c697175696469747920666565206d75737420626520616e206576656e206e756044820152736d6265722064756520746f20726f756e64696e6760601b6064820152608401610b41565b60108590556011849055600e839055600f829055610d3c8386612cc0565b601255610d498285612cc0565b601381905560148290556012548291610d6191612cc0565b1115610d9f5760405162461bcd60e51b815260206004820152600d60248201526c08ccacae640e8dede40d0d2ced609b1b6044820152606401610b41565b60125460135460145460408051938452602084019290925282820152517f01bae858246c904512695a3f6d48ab88abb7a0192fdd7c53b043e60317795f459181900360600190a15050505050565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610e489086815260200190565b60405180910390a35060015b92915050565b6000610e686009600a612db7565b600554610e759190612ddd565b905090565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610efa576001600160a01b0384166000908152600860209081526040808320338452909152902054610ed5908390612dff565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610f058484846119ca565b90505b9392505050565b6002546001600160a01b039081166000908152600760205260408082205460015490931682528120549091610f4391612cc0565b600354610e759190612dff565b60155460009060ff16158015610f7f57506001600160a01b03821660009081526019602052604090205460ff16155b8015610fa457506001600160a01b03831660009081526019602052604090205460ff16155b15610fb157506000610e54565b6001600160a01b0383166000908152600b602052604090205460ff16158015610f085750506001600160a01b03166000908152600b602052604090205460ff1615919050565b3360009081526029602052604090205460ff168061101f57506000546001600160a01b031633145b61103b5760405162461bcd60e51b8152600401610b4190612c73565b601b805461ffff1916610100179055565b611054611970565b601f546001600160a01b03908116908316036110bd5760405162461bcd60e51b815260206004820152602260248201527f43616e277420616c7465722063757272656e74206c697175696469747920706160448201526134b960f11b6064820152608401610b41565b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b3360009081526029602052604090205460ff168061111057506000546001600160a01b031633145b61112c5760405162461bcd60e51b8152600401610b4190612c73565b4780156111e95760006001600160a01b038316606461114b8685612dc6565b6111559190612ddd565b604051600081818185875af1925050503d8060008114611191576040519150601f19603f3d011682016040523d82523d6000602084013e611196565b606091505b50509050806111e75760405162461bcd60e51b815260206004820152601860248201527f4661696c656420746f207472616e736665722066756e647300000000000000006044820152606401610b41565b505b505050565b6000610e5482600019610ded565b3360009081526029602052604090205460ff168061122457506000546001600160a01b031633145b6112405760405162461bcd60e51b8152600401610b4190612c73565b6023805461ffff1916610101179055565b611259611970565b6001600160a01b03919091166000908152602960205260409020805460ff1916911515919091179055565b60006112926009600a612db7565b600654610e759190612ddd565b6112a7611970565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6112da611970565b82158015906112e857508083145b6112f157600080fd5b3360005b8481101561140f576019600087878481811061131357611313612e12565b90506020020160208101906113289190612a0a565b6001600160a01b0316815260208101919091526040016000205460ff161580156113975750600d600087878481811061136357611363612e12565b90506020020160208101906113789190612a0a565b6001600160a01b0316815260208101919091526040016000205460ff16155b156113fd576113fb828787848181106113b2576113b2612e12565b90506020020160208101906113c79190612a0a565b6113d36009600a612db7565b8787868181106113e5576113e5612e12565b905060200201356113f69190612dc6565b611ec6565b505b8061140781612e28565b9150506112f5565b505050505050565b61141f611970565b6114296000611f80565b565b3360009081526029602052604090205460ff168061145357506000546001600160a01b031633145b61146f5760405162461bcd60e51b8152600401610b4190612c73565b602354610100900460ff161561148457600080fd5b6023805460ff19169055565b3360009081526029602052604090205460ff16806114b857506000546001600160a01b031633145b6114d45760405162461bcd60e51b8152600401610b4190612c73565b80156114e957601b5460ff166114e957600080fd5b60005b828110156111e757811561157857601d805490600061150a83612e28565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea3285858481811061154357611543612e12565b90506020020160208101906115589190612a0a565b43600260405161156b9493929190612e41565b60405180910390a16115d8565b601a600085858481811061158e5761158e612e12565b90506020020160208101906115a39190612a0a565b6001600160a01b03168152602081019190915260400160002054156115d857601d80549060006115d283612e6c565b91905055505b816115e45760006115e6565b435b601a60008686858181106115fc576115fc612e12565b90506020020160208101906116119190612a0a565b6001600160a01b031681526020810191909152604001600020558061163581612e28565b9150506114ec565b611645611970565b6000831180156116555750600082115b80156116615750600081115b801561166f57506127108111155b61167857600080fd5b80836003546116879190612dc6565b6116919190612ddd565b60045560035481906116a4908490612dc6565b6116ae9190612ddd565b600555505050565b6116be611970565b60158054610100600160a81b0319166101006001600160a01b0394851602179055601680546001600160a01b03191691909216179055565b6000610f083384846119ca565b60006117116009600a612db7565b600454610e759190612ddd565b611726611970565b603c81111561173457600080fd5b602455565b611741611970565b6000821161174e57600080fd5b6025805460ff191684151517905560035461176a908390612ddd565b6026556117796009600a612db7565b6117839082612dc6565b602755505050565b3360009081526029602052604090205460ff16806117b357506000546001600160a01b031633145b6117cf5760405162461bcd60e51b8152600401610b4190612c73565b601b54610100900460ff16156117e457600080fd5b601b805460ff191683151517905562015180811061180157600080fd5b80601e60008282546118139190612cc0565b90915550505050565b611824611970565b6015805460ff19811660ff90911615179055565b611840611970565b6000821180156118505750600081115b801561185e57506127108111155b61186757600080fd5b80826003546118769190612dc6565b6118809190612ddd565b6006555050565b60004360225460205461189a9190612cc0565b106118ae576001601454610e549190612dff565b81156118bc57505060135490565b505060125490565b6118cc611970565b6001600160a01b0381166119315760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b41565b61193a81611f80565b50565b611945611970565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146114295760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b41565b60006001600160a01b038416611a225760405162461bcd60e51b815260206004820152601860248201527f42455032303a207472616e736665722066726f6d2030783000000000000000006044820152606401610b41565b6001600160a01b038316611a715760405162461bcd60e51b8152602060048201526016602482015275042455032303a207472616e7366657220746f203078360541b6044820152606401610b41565b60008211611ab95760405162461bcd60e51b8152602060048201526015602482015274416d6f756e74206d757374206265203e207a65726f60581b6044820152606401610b41565b6001600160a01b038416600090815260076020526040902054821115611b185760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b6044820152606401610b41565b602054158015611b4057506001600160a01b03831660009081526019602052604090205460ff165b15611bc7576001600160a01b0384166000908152600d602052604090205460ff16611bad5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206e6f74206164646564207965742e00000000000000006044820152606401610b41565b611bc743602055426021556025805460ff19166001179055565b60235460ff16611c54576001600160a01b0384166000908152600d602052604090205460ff1680611c1057506001600160a01b0383166000908152600d602052604090205460ff165b611c545760405162461bcd60e51b81526020600482015260156024820152742a3930b234b733903737ba1037b832b7103cb2ba1760591b6044820152606401610b41565b611c5f848484611fd0565b6001600160a01b03831660009081526019602052604090205460ff16158015611c9657506001546001600160a01b03848116911614155b15611cc5576001600160a01b0383166000908152600c602052604090205460ff16611cc557611cc58383612316565b601b5460ff168015611cd8575042601e54115b15611da2576001600160a01b03841660009081526019602052604090205460ff168015611d0e5750326001600160a01b03841614155b8015611d3057506001600160a01b0383166000908152601a6020526040902054155b15611da2576001600160a01b0383166000908152601a60205260408120439055601d805491611d5e83612e28565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea3284436000604051611d999493929190612e41565b60405180910390a15b60285460ff1615611dbf57611db8848484611ec6565b9050610f08565b6001600160a01b038416600090815260076020526040902054611de3908390612dff565b6001600160a01b03851660009081526007602052604090205581611e078585610f50565b15611e3b57611e16848461239b565b9050611e2184612419565b8015611e2d5750600083115b15611e3b57611e3b836124ab565b6001600160a01b038416600090815260076020526040902054611e5f908290612cc0565b6001600160a01b0380861660008181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611eb39085815260200190565b60405180910390a3506001949350505050565b6001600160a01b038316600090815260076020526040812054611eea908390612dff565b6001600160a01b038086166000908152600760205260408082209390935590851681522054611f1a908390612cc0565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611f6e9086815260200190565b60405180910390a35060019392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383166000908152600c602052604090205460ff168061200f57506001600160a01b0382166000908152600c602052604090205460ff165b1561201957505050565b6001600160a01b03831660009081526019602052604090205460ff1661204157600554612045565b6004545b8111156120885760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610b41565b6024546001600160a01b0383166000908152600a602052604090205443916120af91612cc0565b11156120fd5760405162461bcd60e51b815260206004820152601d60248201527f5472616e736665722072617465206c696d69742065786365656465642e0000006044820152606401610b41565b6001600160a01b0383166000908152601a6020526040902054156121e0576121276009600a612db7565b601c546121349190612dc6565b811115801561215957506001600160a01b038316600090815260096020526040902054155b8015612166575042601e54115b6121c45760405162461bcd60e51b815260206004820152602960248201527f57616c6c65742070726f7465637465642c20706c6561736520636f6e746163746044820152681039bab83837b93a1760b91b6064820152608401610b41565b6001600160a01b03831660009081526009602052604090204390555b6001600160a01b03821660009081526019602052604090205460ff161561221f5750506001600160a01b03166000908152600960205260409020439055565b6122298383610f50565b156111e957601b5460ff168015612241575042601e54115b801561225b5750326000908152600a602052604090205443145b801561227d57506001600160a01b0382166000908152601a6020526040902054155b156122de576001600160a01b0382166000908152601a602052604090819020439081905590517f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea916122d59132918691600190612e41565b60405180910390a15b6001600160a01b0382166000818152600a6020526040902043905532146111e957326000908152600a60205260409020439055505050565b6006546001600160a01b038316600090815260076020526040902054819061233f908490612cc0565b11156111e95760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b6064820152608401610b41565b6001600160a01b03821660009081526019602052604081205460145460ff9091169082906123c883611887565b6123d29086612dc6565b6123dc9190612ddd565b30600090815260076020526040812080549293508392909190612400908490612cc0565b9091555061241090508185612dff565b95945050505050565b3360009081526019602052604081205460ff1615801561243c575060285460ff16155b801561244a575060255460ff165b801561246e57506001600160a01b03821660009081526019602052604090205460ff165b801561248b57506027543060009081526007602052604090205410155b8015610e54575060006013546012546124a49190612cc0565b1192915050565b6028805460ff191660011790556013546012546000916124ca91612cc0565b9050600060265483106124df576026546124e1565b825b3060009081526007602052604090205490915081111561250d5750306000908152600760205260409020545b600060115460105461251f9190612cc0565b905060008360026125308486612dc6565b61253a9190612ddd565b6125449190612ddd565b90506125508184612dff565b6040805160028082526060820183529295506000929091602083019080368337019050509050308160008151811061258a5761258a612e12565b6001600160a01b03928316602091820292909201810191909152601754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156125e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126079190612e83565b8160018151811061261a5761261a612e12565b6001600160a01b03928316602091820292909201015260175460405163791ac94760e01b81524792919091169063791ac94790612664908890600090879030904290600401612ea0565b600060405180830381600087803b15801561267e57600080fd5b505af1158015612692573d6000803e3d6000fd5b50505050600081476126a49190612dff565b905060006126b3600287612ddd565b6126bd9089612dff565b905060008160026126ce8986612dc6565b6126d89190612ddd565b6126e29190612ddd565b905060006126f08285612dff565b9050801561274f576016546040516000916001600160a01b03169083908381818185875af1925050503d8060008114612745576040519150601f19603f3d011682016040523d82523d6000602084013e61274a565b606091505b505050505b86156127f35760175460155460405163f305d71960e01b8152306004820152602481018a905260006044820181905260648201526001600160a01b03610100909204821660848201524260a482015291169063f305d71990849060c40160606040518083038185885af11580156127ca573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127ef9190612f11565b5050505b60408051828152602081018490529081018890527fdaf6233a382145376035341e71f8a04305f7e323d0fe3e58c908cf0a26b76df99060600160405180910390a150506028805460ff19169055505050505050505050565b6000806000806000806000806000806000806101808d8f03121561286e57600080fd5b50508a359c60208c01359c5060408c01359b60608101359b5060808101359a5060a0810135995060c0810135985060e08101359750610100810135965061012081013595506101408101359450610160013592509050565b600080600080600060a086880312156128de57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600060208083528351808285015260005b8181101561292e57858101830151858201604001528201612912565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461193a57600080fd5b6000806040838503121561297757600080fd5b82356129828161294f565b946020939093013593505050565b6000806000606084860312156129a557600080fd5b83356129b08161294f565b925060208401356129c08161294f565b929592945050506040919091013590565b600080604083850312156129e457600080fd5b82356129ef8161294f565b915060208301356129ff8161294f565b809150509250929050565b600060208284031215612a1c57600080fd5b8135610f088161294f565b80358015158114612a3757600080fd5b919050565b60008060408385031215612a4f57600080fd5b8235612a5a8161294f565b9150612a6860208401612a27565b90509250929050565b60008060408385031215612a8457600080fd5b8235915060208301356129ff8161294f565b60008083601f840112612aa857600080fd5b50813567ffffffffffffffff811115612ac057600080fd5b6020830191508360208260051b8501011115612adb57600080fd5b9250929050565b60008060008060408587031215612af857600080fd5b843567ffffffffffffffff80821115612b1057600080fd5b612b1c88838901612a96565b90965094506020870135915080821115612b3557600080fd5b50612b4287828801612a96565b95989497509550505050565b600080600060408486031215612b6357600080fd5b833567ffffffffffffffff811115612b7a57600080fd5b612b8686828701612a96565b9094509250612b99905060208501612a27565b90509250925092565b600080600060608486031215612bb757600080fd5b505081359360208301359350604090920135919050565b600060208284031215612be057600080fd5b5035919050565b600080600060608486031215612bfc57600080fd5b612c0584612a27565b95602085013595506040909401359392505050565b60008060408385031215612c2d57600080fd5b61298283612a27565b60008060408385031215612c4957600080fd5b50508035926020909101359150565b600060208284031215612c6a57600080fd5b610f0882612a27565b6020808252601b908201527f43616c6c6572206973206e6f742061207465616d206d656d6265720000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610e5457610e54612caa565b600181815b80851115612d0e578160001904821115612cf457612cf4612caa565b80851615612d0157918102915b93841c9390800290612cd8565b509250929050565b600082612d2557506001610e54565b81612d3257506000610e54565b8160018114612d485760028114612d5257612d6e565b6001915050610e54565b60ff841115612d6357612d63612caa565b50506001821b610e54565b5060208310610133831016604e8410600b8410161715612d91575081810a610e54565b612d9b8383612cd3565b8060001904821115612daf57612daf612caa565b029392505050565b6000610f0860ff841683612d16565b8082028115828204841417610e5457610e54612caa565b600082612dfa57634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610e5457610e54612caa565b634e487b7160e01b600052603260045260246000fd5b600060018201612e3a57612e3a612caa565b5060010190565b6001600160a01b039485168152929093166020830152604082015260ff909116606082015260800190565b600081612e7b57612e7b612caa565b506000190190565b600060208284031215612e9557600080fd5b8151610f088161294f565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612ef05784516001600160a01b031683529383019391830191600101612ecb565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612f2657600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212203495f1ec2721a82c3b71ccc994b4aa255b5e1b9cca7b9e0a99921b91617e184664736f6c63430008120033

Deployed Bytecode Sourcemap

7123:18444:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12766:1180;;;;;;;;;;-1:-1:-1;12766:1180:0;;;;;:::i;:::-;;:::i;:::-;;9251:50;;;;;;;;;;;;;;;;;;;1106:25:1;;;1094:2;1079:18;9251:50:0;;;;;;;;23770:808;;;;;;;;;;-1:-1:-1;23770:808:0;;;;;:::i;:::-;;:::i;10715:71::-;;;;;;;;;;-1:-1:-1;10778:5:0;;;;;;;;;;;;-1:-1:-1;;;10778:5:0;;;;10715:71;;;;;;;:::i;11456:216::-;;;;;;;;;;-1:-1:-1;11456:216:0;;;;;:::i;:::-;;:::i;:::-;;;2775:14:1;;2768:22;2750:41;;2738:2;2723:18;11456:216:0;2610:187:1;10463:88:0;;;;;;;;;;-1:-1:-1;10536:12:0;;10463:88;;10980:107;;;;;;;;;;;;;:::i;15385:341::-;;;;;;;;;;-1:-1:-1;15385:341:0;;;;;:::i;:::-;;:::i;25240:138::-;;;;;;;;;;;;;:::i;10557:71::-;;;;;;;;;;-1:-1:-1;10557:71:0;;7438:1;3405:36:1;;3393:2;3378:18;10557:71:0;3263:184:1;19598:255:0;;;;;;;;;;-1:-1:-1;19598:255:0;;;;;:::i;:::-;;:::i;7897:44::-;;;;;;;;;;-1:-1:-1;7897:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;14461:127;;;;;;;;;;;;;:::i;8760:45::-;;;;;;;;;;-1:-1:-1;8760:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;22598:184;;;;;;;;;;-1:-1:-1;22598:184:0;;;;;:::i;:::-;;:::i;12425:329::-;;;;;;;;;;-1:-1:-1;12425:329:0;;;;;:::i;:::-;;:::i;11680:122::-;;;;;;;;;;-1:-1:-1;11680:122:0;;;;;:::i;:::-;;:::i;9045:27::-;;;;;;;;;;;;;;;;14091:111;;;;;;;;;;;;;:::i;11814:119::-;;;;;;;;;;-1:-1:-1;11814:119:0;;;;;:::i;:::-;;:::i;9176:28::-;;;;;;;;;;;;;;;;11093:105;;;;;;;;;;;;;:::i;23508:119::-;;;;;;;;;;-1:-1:-1;23508:119:0;;;;;:::i;:::-;;:::i;11945:468::-;;;;;;;;;;-1:-1:-1;11945:468:0;;;;;:::i;:::-;;:::i;9213:31::-;;;;;;;;;;-1:-1:-1;9213:31:0;;;;;;;;7794:44;;;;;;;;;;-1:-1:-1;7794:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;11204:105;;;;;;;;;;-1:-1:-1;11204:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;11288:18:0;11270:7;11288:18;;;:9;:18;;;;;;;11204:105;6609:103;;;;;;;;;;;;;:::i;13958:121::-;;;;;;;;;;;;;:::i;8359:31::-;;;;;;;;;;-1:-1:-1;8359:31:0;;;;;;;;10792:71;;;;;;;;;;-1:-1:-1;10835:7:0;6451:6;-1:-1:-1;;;;;6451:6:0;10792:71;;;-1:-1:-1;;;;;6216:32:1;;;6198:51;;6186:2;6171:18;10792:71:0;6052:203:1;7948:48:0;;;;;;;;;;-1:-1:-1;7948:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6378:87;;;;;;;;;;-1:-1:-1;6424:7:0;6451:6;-1:-1:-1;;;;;6451:6:0;6378:87;;10634:75;;;;;;;;;;-1:-1:-1;10699:7:0;;;;;;;;;;;;-1:-1:-1;;;10699:7:0;;;;10634:75;;14600:613;;;;;;;;;;-1:-1:-1;14600:613:0;;;;;:::i;:::-;;:::i;8916:30::-;;;;;;;;;;;;;;;;22926:342;;;;;;;;;;-1:-1:-1;22926:342:0;;;;;:::i;:::-;;:::i;24687:242::-;;;;;;;;;;-1:-1:-1;24687:242:0;;;;;:::i;:::-;;:::i;8985:19::-;;;;;;;;;;-1:-1:-1;8985:19:0;;;;-1:-1:-1;;;;;8985:19:0;;;15221:156;;;;;;;;;;-1:-1:-1;15221:156:0;;;;;:::i;:::-;;:::i;10869:105::-;;;;;;;;;;;;;:::i;9013:25::-;;;;;;;;;;;;;;;;8399:97;;;;;;;;;;-1:-1:-1;8399:97:0;;;;;;;-1:-1:-1;;;;;8399:97:0;;;7845:43;;;;;;;;;;-1:-1:-1;7845:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;22790:128;;;;;;;;;;-1:-1:-1;22790:128:0;;;;;:::i;:::-;;:::i;24937:295::-;;;;;;;;;;-1:-1:-1;24937:295:0;;;;;:::i;:::-;;:::i;14214:235::-;;;;;;;;;;-1:-1:-1;14214:235:0;;;;;:::i;:::-;;:::i;24586:93::-;;;;;;;;;;;;;:::i;8003:49::-;;;;;;;;;;-1:-1:-1;8003:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;11315:133;;;;;;;;;;-1:-1:-1;11315:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;11417:19:0;;;11399:7;11417:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;11315:133;8503:97;;;;;;;;;;-1:-1:-1;8503:97:0;;;;-1:-1:-1;;;;;8503:97:0;;;23280:220;;;;;;;;;;-1:-1:-1;23280:220:0;;;;;:::i;:::-;;:::i;19861:228::-;;;;;;;;;;-1:-1:-1;19861:228:0;;;;;:::i;:::-;;:::i;6718:201::-;;;;;;;;;;-1:-1:-1;6718:201:0;;;;;:::i;:::-;;:::i;23635:127::-;;;;;;;;;;-1:-1:-1;23635:127:0;;;;;:::i;:::-;;:::i;9308:49::-;;;;;;;;;;;;;;;;8609:24;;;;;;;;;;-1:-1:-1;8609:24:0;;;;-1:-1:-1;;;;;8609:24:0;;;9079:25;;;;;;;;;;;;;;;;12766:1180;4508:10;9539:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;6424:7:0;6451:6;-1:-1:-1;;;;;6451:6:0;9567:10;:21;9539:49;9531:89;;;;-1:-1:-1;;;9531:89:0;;;;;;;:::i;:::-;;;;;;;;;13091:12:::1;::::0;::::1;;13090:13;:33:::0;::::1;;;;13121:2;13107:11;:16;13090:33;13082:42;;;::::0;::::1;;13135:10;:24:::0;;;13170:12:::1;:19:::0;;-1:-1:-1;;13170:19:0::1;13185:4;13170:19;::::0;;13213:12:::1;13200:10;:25:::0;13254:29:::1;13272:11:::0;13254:15:::1;:29;:::i;:::-;13236:15;:47:::0;13322:15:::1;7438:1;13322:2;:15;:::i;:::-;13312:26;::::0;:6;:26:::1;:::i;:::-;13294:15;:44:::0;13368:12:::1;::::0;13399:7;;13368:27:::1;::::0;13383:12;;13368:27:::1;:::i;:::-;13367:39;;;;:::i;:::-;13349:15;:57:::0;13437:12:::1;::::0;13469:7;;13437:28:::1;::::0;13452:13;;13437:28:::1;:::i;:::-;13436:40;;;;:::i;:::-;13417:16;:59:::0;13505:12:::1;::::0;13533:7;;13505:24:::1;::::0;13520:9;;13505:24:::1;:::i;:::-;13504:36;;;;:::i;:::-;13487:14;:53:::0;13551:12:::1;:28:::0;;;13590:16:::1;:36:::0;;;13637:12:::1;:28:::0;;;13676:16:::1;:36:::0;;;13737:29:::1;13652:13:::0;13566;13737:29:::1;:::i;:::-;13723:11;:43:::0;13792:37:::1;13812:17:::0;13792;:37:::1;:::i;:::-;13777:12;:52:::0;;;13840:14:::1;:32:::0;;;13896:11:::1;::::0;13888:50:::1;::::0;;11336:25:1;;;11392:2;11377:18;;11370:34;;;;11420:18;;;11413:34;;;13888:50:0::1;::::0;11324:2:1;11309:18;13888:50:0::1;;;;;;;12766:1180:::0;;;;;;;;;;;;:::o;23770:808::-;6339:13;:11;:13::i;:::-;24000:33:::1;24016:17:::0;24000:13;:33:::1;:::i;:::-;23989:1;23952:33;23968:17:::0;23952:13;:33:::1;:::i;:::-;23951:39;;;;:::i;:::-;23950:45;::::0;23994:1:::1;23950:45;:::i;:::-;:84;23942:149;;;::::0;-1:-1:-1;;;23942:149:0;;11660:2:1;23942:149:0::1;::::0;::::1;11642:21:1::0;11699:2;11679:18;;;11672:30;11738:34;11718:18;;;11711:62;-1:-1:-1;;;11789:18:1;;;11782:50;11849:19;;23942:149:0::1;11458:416:1::0;23942:149:0::1;24102:12;:28:::0;;;24141:16:::1;:36:::0;;;24188:12:::1;:28:::0;;;24227:16:::1;:36:::0;;;24288:29:::1;24203:13:::0;24117;24288:29:::1;:::i;:::-;24274:11;:43:::0;24343:37:::1;24363:17:::0;24343;:37:::1;:::i;:::-;24328:12;:52:::0;;;24391:14:::1;:32:::0;;;24442:11:::1;::::0;24408:15;;24442:26:::1;::::0;::::1;:::i;:::-;:44;;24434:70;;;::::0;-1:-1:-1;;;24434:70:0;;12081:2:1;24434:70:0::1;::::0;::::1;12063:21:1::0;12120:2;12100:18;;;12093:30;-1:-1:-1;;;12139:18:1;;;12132:43;12192:18;;24434:70:0::1;11879:337:1::0;24434:70:0::1;24528:11;::::0;24541:12:::1;::::0;24555:14:::1;::::0;24520:50:::1;::::0;;11336:25:1;;;11392:2;11377:18;;11370:34;;;;11420:18;;;11413:34;24520:50:0;::::1;::::0;;;;11324:2:1;24520:50:0;;::::1;23770:808:::0;;;;;:::o;11456:216::-;11560:10;11531:4;11548:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;11548:32:0;;;;;;;;;;:41;;;11605:37;11531:4;;11548:32;;11605:37;;;;11583:6;1106:25:1;;1094:2;1079:18;;960:177;11605:37:0;;;;;;;;-1:-1:-1;11660:4:0;11456:216;;;;;:::o;10980:107::-;11030:7;11068:15;7438:1;11068:2;:15;:::i;:::-;11048:16;;:36;;;;:::i;:::-;11041:43;;10980:107;:::o;15385:341::-;-1:-1:-1;;;;;15505:19:0;;15485:4;15505:19;;;:11;:19;;;;;;;;15525:10;15505:31;;;;;;;;-1:-1:-1;;15505:52:0;15502:157;;-1:-1:-1;;;;;15607:19:0;;;;;;:11;:19;;;;;;;;15627:10;15607:31;;;;;;;;:40;;15641:6;;15607:40;:::i;:::-;-1:-1:-1;;;;;15573:19:0;;;;;;:11;:19;;;;;;;;15593:10;15573:31;;;;;;;:74;15502:157;15678:40;15692:6;15700:9;15711:6;15678:13;:40::i;:::-;15671:47;;15385:341;;;;;;:::o;25240:138::-;25364:4;;-1:-1:-1;;;;;25364:4:0;;;25293:7;11288:18;;;:9;:18;;;;;;;25346:4;;;;;11288:18;;;;;25293:7;;25336:33;;;:::i;:::-;25320:12;;:50;;;;:::i;19598:255::-;19698:11;;19677:4;;19698:11;;19697:12;:42;;;;-1:-1:-1;;;;;;19714:25:0;;;;;;:14;:25;;;;;;;;19713:26;19697:42;:69;;;;-1:-1:-1;;;;;;19744:22:0;;;;;;:14;:22;;;;;;;;19743:23;19697:69;19694:86;;;-1:-1:-1;19775:5:0;19768:12;;19694:86;-1:-1:-1;;;;;19799:19:0;;;;;;:11;:19;;;;;;;;19798:20;:47;;;;-1:-1:-1;;;;;;;19823:22:0;;;;;:11;:22;;;;;;;;19822:23;;19791:54;-1:-1:-1;19598:255:0:o;14461:127::-;4508:10;9539:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;6424:7:0;6451:6;-1:-1:-1;;;;;6451:6:0;9567:10;:21;9539:49;9531:89;;;;-1:-1:-1;;;9531:89:0;;;;;;;:::i;:::-;14519:18:::1;:25:::0;;-1:-1:-1;;14555:25:0;14519::::1;14555::::0;;;14461:127::o;22598:184::-;6339:13;:11;:13::i;:::-;22693:4:::1;::::0;-1:-1:-1;;;;;22693:4:0;;::::1;22687:10:::0;;::::1;::::0;22679:57:::1;;;::::0;-1:-1:-1;;;22679:57:0;;12556:2:1;22679:57:0::1;::::0;::::1;12538:21:1::0;12595:2;12575:18;;;12568:30;12634:34;12614:18;;;12607:62;-1:-1:-1;;;12685:18:1;;;12678:32;12727:19;;22679:57:0::1;12354:398:1::0;22679:57:0::1;-1:-1:-1::0;;;;;22747:18:0;;;::::1;;::::0;;;:14:::1;:18;::::0;;;;:27;;-1:-1:-1;;22747:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22598:184::o;12425:329::-;4508:10;9539:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;6424:7:0;6451:6;-1:-1:-1;;;;;6451:6:0;9567:10;:21;9539:49;9531:89;;;;-1:-1:-1;;;9531:89:0;;;;;;;:::i;:::-;12540:21:::1;12577:13:::0;;12574:173:::1;;12608:9;-1:-1:-1::0;;;;;12623:8:0;::::1;12672:3;12640:28;12652:16:::0;12640:9;:28:::1;:::i;:::-;12639:36;;;;:::i;:::-;12623:57;::::0;::::1;::::0;;;;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12607:73;;;12703:4;12695:40;;;::::0;-1:-1:-1;;;12695:40:0;;13169:2:1;12695:40:0::1;::::0;::::1;13151:21:1::0;13208:2;13188:18;;;13181:30;13247:26;13227:18;;;13220:54;13291:18;;12695:40:0::1;12967:348:1::0;12695:40:0::1;12592:155;12574:173;12509:245;12425:329:::0;;:::o;11680:122::-;11735:4;11759:35;11767:7;-1:-1:-1;;11759:7:0;:35::i;14091:111::-;4508:10;9539:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;6424:7:0;6451:6;-1:-1:-1;;;;;6451:6:0;9567:10;:21;9539:49;9531:89;;;;-1:-1:-1;;;9531:89:0;;;;;;;:::i;:::-;14144:13:::1;:20:::0;;-1:-1:-1;;14175:19:0;;;;;14091:111::o;11814:119::-;6339:13;:11;:13::i;:::-;-1:-1:-1;;;;;11897:17:0;;;::::1;;::::0;;;:10:::1;:17;::::0;;;;:28;;-1:-1:-1;;11897:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11814:119::o;11093:105::-;11143:7;11179:15;7438:1;11179:2;:15;:::i;:::-;11161:14;;:34;;;;:::i;23508:119::-;6339:13;:11;:13::i;:::-;-1:-1:-1;;;;;23591:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;23591:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23508:119::o;11945:468::-;6339:13;:11;:13::i;:::-;12058:20;;;;;:58:::1;;-1:-1:-1::0;12082:34:0;;::::1;12058:58;12050:67;;;::::0;::::1;;12143:10;12128:12;12166:240;12183:20:::0;;::::1;12166:240;;;12229:14;:28;12244:9;;12254:1;12244:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12229:28:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;12229:28:0;;::::1;;12228:29;:64:::0;::::1;;;;12262:16;:30;12279:9;;12289:1;12279:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12262:30:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;12262:30:0;;::::1;;12261:31;12228:64;12225:170;;;12313:66;12328:4;12334:9;;12344:1;12334:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;12362:15;7438:1;12362:2;:15;:::i;:::-;12348:7;;12356:1;12348:10;;;;;;;:::i;:::-;;;;;;;:30;;;;:::i;:::-;12313:14;:66::i;:::-;;12225:170;12205:3:::0;::::1;::::0;::::1;:::i;:::-;;;;12166:240;;;;12039:374;11945:468:::0;;;;:::o;6609:103::-;6339:13;:11;:13::i;:::-;6674:30:::1;6701:1;6674:18;:30::i;:::-;6609:103::o:0;13958:121::-;4508:10;9539:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;6424:7:0;6451:6;-1:-1:-1;;;;;6451:6:0;9567:10;:21;9539:49;9531:89;;;;-1:-1:-1;;;9531:89:0;;;;;;;:::i;:::-;14026:13:::1;::::0;::::1;::::0;::::1;;;14025:14;14017:23;;;::::0;::::1;;14051:12;:20:::0;;-1:-1:-1;;14051:20:0::1;::::0;;13958:121::o;14600:613::-;4508:10;9539:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;6424:7:0;6451:6;-1:-1:-1;;;;;6451:6:0;9567:10;:21;9539:49;9531:89;;;;-1:-1:-1;;;9531:89:0;;;;;;;:::i;:::-;14696:8:::1;14692:67;;;14729:17;::::0;::::1;;14721:26;;;::::0;::::1;;14784:6;14779:427;14796:19:::0;;::::1;14779:427;;;14855:8;14851:277;;;14884:15;:17:::0;;;:15:::1;:17;::::0;::::1;:::i;:::-;;;;;;14925:56;14941:9;14952:8;;14961:1;14952:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;14965:12;14979:1;14925:56;;;;;;;;;:::i;:::-;;;;;;;;14851:277;;;15039:9;:22;15049:8;;15058:1;15049:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15039:22:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;15039:22:0;;:27;15035:71:::1;;15089:15;:17:::0;;;:15:::1;:17;::::0;::::1;:::i;:::-;;;;;;15035:71;15167:8;:27;;15193:1;15167:27;;;15178:12;15167:27;15142:9;:22;15152:8;;15161:1;15152:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15142:22:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;15142:22:0;:52;14817:3;::::1;::::0;::::1;:::i;:::-;;;;14779:427;;22926:342:::0;6339:13;:11;:13::i;:::-;23064:1:::1;23049:12;:16;:37;;;;;23085:1;23069:13;:17;23049:37;:52;;;;;23100:1;23090:7;:11;23049:52;:72;;;;;23116:5;23105:7;:16;;23049:72;23041:81;;;::::0;::::1;;23183:7;23167:12;23152;;:27;;;;:::i;:::-;23151:39;;;;:::i;:::-;23133:15;:57:::0;23221:12:::1;::::0;23253:7;;23221:28:::1;::::0;23236:13;;23221:28:::1;:::i;:::-;23220:40;;;;:::i;:::-;23201:16;:59:::0;-1:-1:-1;;;22926:342:0:o;24687:242::-;6339:13;:11;:13::i;:::-;24804:20:::1;:53:::0;;-1:-1:-1;;;;;;24804:53:0::1;;-1:-1:-1::0;;;;;24804:53:0;;::::1;;;::::0;;24868:20:::1;:53:::0;;-1:-1:-1;;;;;;24868:53:0::1;::::0;;;::::1;;::::0;;24687:242::o;15221:156::-;15301:4;15325:44;15339:10;15351:9;15362:6;15325:13;:44::i;10869:105::-;10918:7;10955:15;7438:1;10955:2;:15;:::i;:::-;10936;;:35;;;;:::i;22790:128::-;6339:13;:11;:13::i;:::-;22872:10:::1;22864:4;:18;;22856:27;;;::::0;::::1;;22894:9;:16:::0;22790:128::o;24937:295::-;6339:13;:11;:13::i;:::-;25078:1:::1;25063:12;:16;25055:25;;;::::0;::::1;;25091:11;:22:::0;;-1:-1:-1;;25091:22:0::1;::::0;::::1;;;::::0;;25140:12:::1;::::0;:27:::1;::::0;25155:12;;25140:27:::1;:::i;:::-;25124:13;:43:::0;25208:15:::1;7438:1;25208:2;:15;:::i;:::-;25192:32;::::0;:12;:32:::1;:::i;:::-;25178:11;:46:::0;-1:-1:-1;;;24937:295:0:o;14214:235::-;4508:10;9539:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;6424:7:0;6451:6;-1:-1:-1;;;;;6451:6:0;9567:10;:21;9539:49;9531:89;;;;-1:-1:-1;;;9531:89:0;;;;;;;:::i;:::-;14308:18:::1;::::0;::::1;::::0;::::1;;;14307:19;14299:28;;;::::0;::::1;;14338:17;:28:::0;;-1:-1:-1;;14338:28:0::1;::::0;::::1;;;::::0;;14396:6:::1;14385:17:::0;::::1;14377:26;;;::::0;::::1;;14433:8;14414:15;;:27;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;;14214:235:0:o;24586:93::-;6339:13;:11;:13::i;:::-;24660:11:::1;::::0;;-1:-1:-1;;24645:26:0;::::1;24660:11;::::0;;::::1;24659:12;24645:26;::::0;;24586:93::o;23280:220::-;6339:13;:11;:13::i;:::-;23391:1:::1;23379:9;:13;:28;;;;;23406:1;23396:7;:11;23379:28;:48;;;;;23422:5;23411:7;:16;;23379:48;23371:57;;;::::0;::::1;;23485:7;23472:9;23457:12;;:24;;;;:::i;:::-;23456:36;;;;:::i;:::-;23439:14;:53:::0;-1:-1:-1;;23280:220:0:o;19861:228::-;19917:7;19967:12;19953:10;;19940;;:23;;;;:::i;:::-;:39;19937:73;;20006:1;19989:14;;:18;;;;:::i;19937:73::-;20024:7;20020:32;;;-1:-1:-1;;20040:12:0;;;19861:228::o;20020:32::-;-1:-1:-1;;20070:11:0;;;19861:228::o;6718:201::-;6339:13;:11;:13::i;:::-;-1:-1:-1;;;;;6807:22:0;::::1;6799:73;;;::::0;-1:-1:-1;;;6799:73:0;;14404:2:1;6799:73:0::1;::::0;::::1;14386:21:1::0;14443:2;14423:18;;;14416:30;14482:34;14462:18;;;14455:62;-1:-1:-1;;;14533:18:1;;;14526:36;14579:19;;6799:73:0::1;14202:402:1::0;6799:73:0::1;6883:28;6902:8;6883:18;:28::i;:::-;6718:201:::0;:::o;23635:127::-;6339:13;:11;:13::i;:::-;-1:-1:-1;;;;;23722:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;23722:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23635:127::o;6471:132::-;6424:7;6451:6;-1:-1:-1;;;;;6451:6:0;4508:10;6535:23;6527:68;;;;-1:-1:-1;;;6527:68:0;;14811:2:1;6527:68:0;;;14793:21:1;;;14830:18;;;14823:30;14889:34;14869:18;;;14862:62;14941:18;;6527:68:0;14609:356:1;15734:1789:0;15826:4;-1:-1:-1;;;;;15851:20:0;;15843:57;;;;-1:-1:-1;;;15843:57:0;;15172:2:1;15843:57:0;;;15154:21:1;15211:2;15191:18;;;15184:30;15250:26;15230:18;;;15223:54;15294:18;;15843:57:0;14970:348:1;15843:57:0;-1:-1:-1;;;;;15919:23:0;;15911:58;;;;-1:-1:-1;;;15911:58:0;;15525:2:1;15911:58:0;;;15507:21:1;15564:2;15544:18;;;15537:30;-1:-1:-1;;;15583:18:1;;;15576:52;15645:18;;15911:58:0;15323:346:1;15911:58:0;15997:1;15988:6;:10;15980:44;;;;-1:-1:-1;;;15980:44:0;;15876:2:1;15980:44:0;;;15858:21:1;15915:2;15895:18;;;15888:30;-1:-1:-1;;;15934:18:1;;;15927:51;15995:18;;15980:44:0;15674:345:1;15980:44:0;-1:-1:-1;;;;;16043:17:0;;;;;;:9;:17;;;;;;:27;-1:-1:-1;16043:27:0;16035:60;;;;-1:-1:-1;;;16035:60:0;;16226:2:1;16035:60:0;;;16208:21:1;16265:2;16245:18;;;16238:30;-1:-1:-1;;;16284:18:1;;;16277:50;16344:18;;16035:60:0;16024:344:1;16035:60:0;17602:10;;:15;;;16109:40;;-1:-1:-1;;;;;;16124:25:0;;;;;;:14;:25;;;;;;;;16109:40;16106:120;;;-1:-1:-1;;;;;16160:24:0;;;;;;:16;:24;;;;;;;;16152:61;;;;-1:-1:-1;;;16152:61:0;;16575:2:1;16152:61:0;;;16557:21:1;16614:2;16594:18;;;16587:30;16653:26;16633:18;;;16626:54;16697:18;;16152:61:0;16373:348:1;16152:61:0;16215:8;17684:12;17671:10;:25;17722:15;17707:12;:30;17748:11;:18;;-1:-1:-1;;17748:18:0;17762:4;17748:18;;;17633:141;16215:8;16240:12;;;;16236:111;;-1:-1:-1;;;;;16263:24:0;;;;;;:16;:24;;;;;;;;;:55;;-1:-1:-1;;;;;;16291:27:0;;;;;;:16;:27;;;;;;;;16263:55;16255:89;;;;-1:-1:-1;;;16255:89:0;;16928:2:1;16255:89:0;;;16910:21:1;16967:2;16947:18;;;16940:30;-1:-1:-1;;;16986:18:1;;;16979:51;17047:18;;16255:89:0;16726:345:1;16255:89:0;16359:39;16372:6;16380:9;16391:6;16359:12;:39::i;:::-;-1:-1:-1;;;;;16424:25:0;;;;;;:14;:25;;;;;;;;16423:26;:47;;;;-1:-1:-1;16466:4:0;;-1:-1:-1;;;;;16453:17:0;;;16466:4;;16453:17;;16423:47;16419:182;;;-1:-1:-1;;;;;16492:26:0;;;;;;:15;:26;;;;;;;;16487:103;;16539:35;16556:9;16567:6;16539:16;:35::i;:::-;16624:17;;;;:54;;;;;16663:15;16645;;:33;16624:54;16621:351;;;-1:-1:-1;;;;;16698:22:0;;;;;;:14;:22;;;;;;;;:48;;;;-1:-1:-1;16724:9:0;-1:-1:-1;;;;;16724:22:0;;;;16698:48;:77;;;;-1:-1:-1;;;;;;16750:20:0;;;;;;:9;:20;;;;;;:25;16698:77;16695:266;;;-1:-1:-1;;;;;16796:20:0;;;;;;:9;:20;;;;;16819:12;16796:35;;16850:15;:17;;;;;;:::i;:::-;;;;;;16891:54;16907:9;16918;16929:12;16943:1;16891:54;;;;;;;;;:::i;:::-;;;;;;;;16695:266;16995:6;;;;16992:63;;;17011:41;17026:6;17034:9;17045:6;17011:14;:41::i;:::-;17004:48;;;;16992:63;-1:-1:-1;;;;;17087:17:0;;;;;;:9;:17;;;;;;:26;;17107:6;;17087:26;:::i;:::-;-1:-1:-1;;;;;17067:17:0;;;;;;:9;:17;;;;;:46;17151:6;17173:32;17077:6;17195:9;17173:13;:32::i;:::-;17170:182;;;17239:26;17247:9;17258:6;17239:7;:26::i;:::-;17222:43;;17283:25;17298:9;17283:14;:25::i;:::-;:39;;;;;17321:1;17312:6;:10;17283:39;17280:60;;;17324:16;17333:6;17324:8;:16::i;:::-;-1:-1:-1;;;;;17395:20:0;;;;;;:9;:20;;;;;;:37;;17418:14;;17395:37;:::i;:::-;-1:-1:-1;;;;;17372:20:0;;;;;;;:9;:20;;;;;;;:60;;;;17450:43;;;;;;;;;;17478:14;1106:25:1;;1094:2;1079:18;;960:177;17450:43:0;;;;;;;;-1:-1:-1;17511:4:0;;15734:1789;-1:-1:-1;;;;15734:1789:0:o;17782:300::-;-1:-1:-1;;;;;17912:17:0;;17875:4;17912:17;;;:9;:17;;;;;;:26;;17932:6;;17912:26;:::i;:::-;-1:-1:-1;;;;;17892:17:0;;;;;;;:9;:17;;;;;;:46;;;;17972:20;;;;;;;:29;;17995:6;;17972:29;:::i;:::-;-1:-1:-1;;;;;17949:20:0;;;;;;;:9;:20;;;;;;;:52;;;;18017:35;;;;;;;;;;18045:6;1106:25:1;;1094:2;1079:18;;960:177;18017:35:0;;;;;;;;-1:-1:-1;18070:4:0;17782:300;;;;;:::o;6925:191::-;6999:16;7018:6;;-1:-1:-1;;;;;7035:17:0;;;-1:-1:-1;;;;;;7035:17:0;;;;;;7068:40;;7018:6;;;;;;;7068:40;;6999:16;7068:40;6988:128;6925:191;:::o;18337:1253::-;-1:-1:-1;;;;;18434:23:0;;;;;;:15;:23;;;;;;;;;:53;;-1:-1:-1;;;;;;18461:26:0;;;;;;:15;:26;;;;;;;;18434:53;18430:66;;;18337:1253;;;:::o;18430:66::-;-1:-1:-1;;;;;18525:22:0;;;;;;:14;:22;;;;;;;;:59;;18568:16;;18525:59;;;18550:15;;18525:59;18514:6;:71;;18506:101;;;;-1:-1:-1;;;18506:101:0;;17747:2:1;18506:101:0;;;17729:21:1;17786:2;17766:18;;;17759:30;-1:-1:-1;;;17805:18:1;;;17798:47;17862:18;;18506:101:0;17545:341:1;18506:101:0;18647:9;;-1:-1:-1;;;;;18626:18:0;;;;;;:7;:18;;;;;;18660:12;;18626:30;;;:::i;:::-;:46;;18618:88;;;;-1:-1:-1;;;18618:88:0;;18093:2:1;18618:88:0;;;18075:21:1;18132:2;18112:18;;;18105:30;18171:31;18151:18;;;18144:59;18220:18;;18618:88:0;17891:353:1;18618:88:0;-1:-1:-1;;;;;18731:17:0;;;;;;:9;:17;;;;;;:22;18727:261;;18806:15;7438:1;18806:2;:15;:::i;:::-;18787;;:35;;;;:::i;:::-;18777:6;:45;;:70;;;;-1:-1:-1;;;;;;18826:16:0;;;;;;:8;:16;;;;;;:21;18777:70;:107;;;;;18869:15;18851;;:33;18777:107;18769:161;;;;-1:-1:-1;;;18769:161:0;;18451:2:1;18769:161:0;;;18433:21:1;18490:2;18470:18;;;18463:30;18529:34;18509:18;;;18502:62;-1:-1:-1;;;18580:18:1;;;18573:39;18629:19;;18769:161:0;18249:405:1;18769:161:0;-1:-1:-1;;;;;18945:16:0;;;;;;:8;:16;;;;;18964:12;18945:31;;18727:261;-1:-1:-1;;;;;19012:25:0;;;;;;:14;:25;;;;;;;;19008:575;;;-1:-1:-1;;;;;;;19054:16:0;;;;;:8;:16;;;;;19073:12;19054:31;;12425:329::o;19008:575::-;19107:32;19121:6;19129:9;19107:13;:32::i;:::-;19103:480;;;19160:17;;;;:54;;;;;19199:15;19181;;:33;19160:54;:92;;;;-1:-1:-1;19226:9:0;19218:18;;;;:7;:18;;;;;;19240:12;19218:34;19160:92;:121;;;;-1:-1:-1;;;;;;19256:20:0;;;;;;:9;:20;;;;;;:25;19160:121;19156:275;;;-1:-1:-1;;;;;19302:20:0;;;;;;:9;:20;;;;;;;19325:12;19302:35;;;;19361:54;;;;;;19377:9;;19312;;19413:1;;19361:54;:::i;:::-;;;;;;;;19156:275;-1:-1:-1;;;;;19445:18:0;;;;;;:7;:18;;;;;19466:12;19445:33;;19497:9;:22;19493:78;;19546:9;19538:18;;;;:7;:18;;;;;19559:12;19538:33;;18337:1253;;;:::o;18094:235::-;18202:14;;-1:-1:-1;;;;;18235:20:0;;18180:19;18235:20;;;:9;:20;;;;;;18202:14;;18235:29;;18258:6;;18235:29;:::i;:::-;:44;;18227:94;;;;-1:-1:-1;;;18227:94:0;;19330:2:1;18227:94:0;;;19312:21:1;19369:2;19349:18;;;19342:30;19408:34;19388:18;;;19381:62;-1:-1:-1;;;19459:18:1;;;19452:35;19504:19;;18227:94:0;19128:401:1;20097:317:0;-1:-1:-1;;;;;20202:25:0;;20167:7;20202:25;;;:14;:25;;;;;;20292:14;;20202:25;;;;;20167:7;;20268:20;20202:25;20268:11;:20::i;:::-;20259:29;;:6;:29;:::i;:::-;20258:48;;;;:::i;:::-;20345:4;20327:24;;;;:9;:24;;;;;:37;;20238:68;;-1:-1:-1;20238:68:0;;20327:24;;;:37;;20238:68;;20327:37;:::i;:::-;;;;-1:-1:-1;20388:18:0;;-1:-1:-1;20397:9:0;20388:6;:18;:::i;:::-;20381:25;20097:317;-1:-1:-1;;;;;20097:317:0:o;20422:303::-;20528:10;20488:4;20513:26;;;:14;:26;;;;;;;;20512:27;:47;;;;-1:-1:-1;20553:6:0;;;;20552:7;20512:47;:71;;;;-1:-1:-1;20572:11:0;;;;20512:71;:109;;;;-1:-1:-1;;;;;;20596:25:0;;;;;;:14;:25;;;;;;;;20512:109;:161;;;;-1:-1:-1;20662:11:0;;20652:4;20634:24;;;;:9;:24;;;;;;:39;;20512:161;:205;;;;;20716:1;20701:12;;20687:11;;:26;;;;:::i;:::-;:30;20505:212;20422:303;-1:-1:-1;;20422:303:0:o;20733:1853::-;9404:6;:13;;-1:-1:-1;;9404:13:0;9413:4;9404:13;;;20829:12:::1;::::0;20815:11:::1;::::0;9404:6;;20815:26:::1;::::0;::::1;:::i;:::-;20796:45;;20852:20;20884:13;;20875:6;:22;:47;;20909:13;;20875:47;;;20900:6;20875:47;20955:4;20937:24;::::0;;;:9:::1;:24;::::0;;;;;20852:70;;-1:-1:-1;20937:39:0;-1:-1:-1;20933:84:0::1;;;-1:-1:-1::0;21011:4:0::1;20993:24;::::0;;;:9:::1;:24;::::0;;;;;20933:84:::1;21038:25;21081:16;;21066:12;;:31;;;;:::i;:::-;21038:59:::0;-1:-1:-1;21108:23:0::1;21175:8:::0;21170:1:::1;21135:32;21038:59:::0;21135:12;:32:::1;:::i;:::-;:36;;;;:::i;:::-;21134:49;;;;:::i;:::-;21108:75:::0;-1:-1:-1;21194:31:0::1;21108:75:::0;21194:31;::::1;:::i;:::-;21262:16;::::0;;21276:1:::1;21262:16:::0;;;;;::::1;::::0;;21194:31;;-1:-1:-1;21238:21:0::1;::::0;21262:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;21262:16:0::1;21238:40;;21307:4;21289;21294:1;21289:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21289:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;21333:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;21333:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;21289:7;;21333:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21323:4;21328:1;21323:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21323:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;21425:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;21425:188:0;;21391:21:::1;::::0;21425:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;21497:12;;21367:21:::1;::::0;21540:4;;21567::::1;::::0;21587:15:::1;::::0;21425:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21626:17;21670:13;21646:21;:37;;;;:::i;:::-;21626:57:::0;-1:-1:-1;21694:19:0::1;21728:21;21748:1;21728:17:::0;:21:::1;:::i;:::-;21716:34;::::0;:8;:34:::1;:::i;:::-;21694:56:::0;-1:-1:-1;21763:26:0::1;21694:56:::0;21825:1:::1;21793:29;21805:17:::0;21793:9;:29:::1;:::i;:::-;:33;;;;:::i;:::-;21792:49;;;;:::i;:::-;21763:78:::0;-1:-1:-1;21852:26:0::1;21881:30;21763:78:::0;21881:9;:30:::1;:::i;:::-;21852:59:::0;-1:-1:-1;21936:22:0;;21932:243:::1;;22000:20;::::0;:56:::1;::::0;21976:18:::1;::::0;-1:-1:-1;;;;;22000:20:0::1;::::0;22033:18;;21976;22000:56;21976:18;22000:56;22033:18;22000:20;:56:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;21932:243:0::1;22198:19:::0;;22195:293:::1;;22233:6;::::0;22407:20:::1;::::0;22233:243:::1;::::0;-1:-1:-1;;;22233:243:0;;22309:4:::1;22233:243;::::0;::::1;21256:34:1::0;21306:18;;;21299:34;;;-1:-1:-1;21349:18:1;;;21342:34;;;21392:18;;;21385:34;-1:-1:-1;;;;;22233:6:0::1;22407:20:::0;;::::1;::::0;::::1;21435:19:1::0;;;21428:44;22446:15:0::1;21488:19:1::0;;;21481:35;22233:6:0;::::1;::::0;:22:::1;::::0;22263:18;;21190:19:1;;22233:243:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;22195:293;22505:73;::::0;;11336:25:1;;;11392:2;11377:18;;11370:34;;;11420:18;;;11413:34;;;22505:73:0::1;::::0;11324:2:1;11309:18;22505:73:0::1;;;;;;;-1:-1:-1::0;;9422:6:0;:14;;-1:-1:-1;;9422:14:0;;;-1:-1:-1;;;;;;;;;20733:1853:0:o;14:941:1:-;172:6;180;188;196;204;212;220;228;236;244;252:7;261;315:3;303:9;294:7;290:23;286:33;283:53;;;332:1;329;322:12;283:53;-1:-1:-1;;355:23:1;;;425:2;410:18;;397:32;;-1:-1:-1;476:2:1;461:18;;448:32;;527:2;512:18;;499:32;;-1:-1:-1;578:3:1;563:19;;550:33;;-1:-1:-1;630:3:1;615:19;;602:33;;-1:-1:-1;682:3:1;667:19;;654:33;;-1:-1:-1;734:3:1;719:19;;706:33;;-1:-1:-1;786:3:1;771:19;;758:33;;-1:-1:-1;838:3:1;823:19;;810:33;;-1:-1:-1;891:3:1;876:19;;863:33;;-1:-1:-1;944:3:1;929:19;916:33;;-1:-1:-1;14:941:1;-1:-1:-1;14:941:1:o;1142:454::-;1237:6;1245;1253;1261;1269;1322:3;1310:9;1301:7;1297:23;1293:33;1290:53;;;1339:1;1336;1329:12;1290:53;-1:-1:-1;;1362:23:1;;;1432:2;1417:18;;1404:32;;-1:-1:-1;1483:2:1;1468:18;;1455:32;;1534:2;1519:18;;1506:32;;-1:-1:-1;1585:3:1;1570:19;1557:33;;-1:-1:-1;1142:454:1;-1:-1:-1;1142:454:1:o;1601:548::-;1713:4;1742:2;1771;1760:9;1753:21;1803:6;1797:13;1846:6;1841:2;1830:9;1826:18;1819:34;1871:1;1881:140;1895:6;1892:1;1889:13;1881:140;;;1990:14;;;1986:23;;1980:30;1956:17;;;1975:2;1952:26;1945:66;1910:10;;1881:140;;;1885:3;2070:1;2065:2;2056:6;2045:9;2041:22;2037:31;2030:42;2140:2;2133;2129:7;2124:2;2116:6;2112:15;2108:29;2097:9;2093:45;2089:54;2081:62;;;;1601:548;;;;:::o;2154:131::-;-1:-1:-1;;;;;2229:31:1;;2219:42;;2209:70;;2275:1;2272;2265:12;2290:315;2358:6;2366;2419:2;2407:9;2398:7;2394:23;2390:32;2387:52;;;2435:1;2432;2425:12;2387:52;2474:9;2461:23;2493:31;2518:5;2493:31;:::i;:::-;2543:5;2595:2;2580:18;;;;2567:32;;-1:-1:-1;;;2290:315:1:o;2802:456::-;2879:6;2887;2895;2948:2;2936:9;2927:7;2923:23;2919:32;2916:52;;;2964:1;2961;2954:12;2916:52;3003:9;2990:23;3022:31;3047:5;3022:31;:::i;:::-;3072:5;-1:-1:-1;3129:2:1;3114:18;;3101:32;3142:33;3101:32;3142:33;:::i;:::-;2802:456;;3194:7;;-1:-1:-1;;;3248:2:1;3233:18;;;;3220:32;;2802:456::o;3452:388::-;3520:6;3528;3581:2;3569:9;3560:7;3556:23;3552:32;3549:52;;;3597:1;3594;3587:12;3549:52;3636:9;3623:23;3655:31;3680:5;3655:31;:::i;:::-;3705:5;-1:-1:-1;3762:2:1;3747:18;;3734:32;3775:33;3734:32;3775:33;:::i;:::-;3827:7;3817:17;;;3452:388;;;;;:::o;3845:247::-;3904:6;3957:2;3945:9;3936:7;3932:23;3928:32;3925:52;;;3973:1;3970;3963:12;3925:52;4012:9;3999:23;4031:31;4056:5;4031:31;:::i;4097:160::-;4162:20;;4218:13;;4211:21;4201:32;;4191:60;;4247:1;4244;4237:12;4191:60;4097:160;;;:::o;4262:315::-;4327:6;4335;4388:2;4376:9;4367:7;4363:23;4359:32;4356:52;;;4404:1;4401;4394:12;4356:52;4443:9;4430:23;4462:31;4487:5;4462:31;:::i;:::-;4512:5;-1:-1:-1;4536:35:1;4567:2;4552:18;;4536:35;:::i;:::-;4526:45;;4262:315;;;;;:::o;4582:::-;4650:6;4658;4711:2;4699:9;4690:7;4686:23;4682:32;4679:52;;;4727:1;4724;4717:12;4679:52;4763:9;4750:23;4740:33;;4823:2;4812:9;4808:18;4795:32;4836:31;4861:5;4836:31;:::i;4902:367::-;4965:8;4975:6;5029:3;5022:4;5014:6;5010:17;5006:27;4996:55;;5047:1;5044;5037:12;4996:55;-1:-1:-1;5070:20:1;;5113:18;5102:30;;5099:50;;;5145:1;5142;5135:12;5099:50;5182:4;5174:6;5170:17;5158:29;;5242:3;5235:4;5225:6;5222:1;5218:14;5210:6;5206:27;5202:38;5199:47;5196:67;;;5259:1;5256;5249:12;5196:67;4902:367;;;;;:::o;5274:773::-;5396:6;5404;5412;5420;5473:2;5461:9;5452:7;5448:23;5444:32;5441:52;;;5489:1;5486;5479:12;5441:52;5529:9;5516:23;5558:18;5599:2;5591:6;5588:14;5585:34;;;5615:1;5612;5605:12;5585:34;5654:70;5716:7;5707:6;5696:9;5692:22;5654:70;:::i;:::-;5743:8;;-1:-1:-1;5628:96:1;-1:-1:-1;5831:2:1;5816:18;;5803:32;;-1:-1:-1;5847:16:1;;;5844:36;;;5876:1;5873;5866:12;5844:36;;5915:72;5979:7;5968:8;5957:9;5953:24;5915:72;:::i;:::-;5274:773;;;;-1:-1:-1;6006:8:1;-1:-1:-1;;;;5274:773:1:o;6260:505::-;6352:6;6360;6368;6421:2;6409:9;6400:7;6396:23;6392:32;6389:52;;;6437:1;6434;6427:12;6389:52;6477:9;6464:23;6510:18;6502:6;6499:30;6496:50;;;6542:1;6539;6532:12;6496:50;6581:70;6643:7;6634:6;6623:9;6619:22;6581:70;:::i;:::-;6670:8;;-1:-1:-1;6555:96:1;-1:-1:-1;6724:35:1;;-1:-1:-1;6755:2:1;6740:18;;6724:35;:::i;:::-;6714:45;;6260:505;;;;;:::o;6770:316::-;6847:6;6855;6863;6916:2;6904:9;6895:7;6891:23;6887:32;6884:52;;;6932:1;6929;6922:12;6884:52;-1:-1:-1;;6955:23:1;;;7025:2;7010:18;;6997:32;;-1:-1:-1;7076:2:1;7061:18;;;7048:32;;6770:316;-1:-1:-1;6770:316:1:o;7315:180::-;7374:6;7427:2;7415:9;7406:7;7402:23;7398:32;7395:52;;;7443:1;7440;7433:12;7395:52;-1:-1:-1;7466:23:1;;7315:180;-1:-1:-1;7315:180:1:o;7500:316::-;7574:6;7582;7590;7643:2;7631:9;7622:7;7618:23;7614:32;7611:52;;;7659:1;7656;7649:12;7611:52;7682:26;7698:9;7682:26;:::i;:::-;7672:36;7755:2;7740:18;;7727:32;;-1:-1:-1;7806:2:1;7791:18;;;7778:32;;7500:316;-1:-1:-1;;;7500:316:1:o;7821:248::-;7886:6;7894;7947:2;7935:9;7926:7;7922:23;7918:32;7915:52;;;7963:1;7960;7953:12;7915:52;7986:26;8002:9;7986:26;:::i;8074:248::-;8142:6;8150;8203:2;8191:9;8182:7;8178:23;8174:32;8171:52;;;8219:1;8216;8209:12;8171:52;-1:-1:-1;;8242:23:1;;;8312:2;8297:18;;;8284:32;;-1:-1:-1;8074:248:1:o;8327:180::-;8383:6;8436:2;8424:9;8415:7;8411:23;8407:32;8404:52;;;8452:1;8449;8442:12;8404:52;8475:26;8491:9;8475:26;:::i;8738:351::-;8940:2;8922:21;;;8979:2;8959:18;;;8952:30;9018:29;9013:2;8998:18;;8991:57;9080:2;9065:18;;8738:351::o;9094:127::-;9155:10;9150:3;9146:20;9143:1;9136:31;9186:4;9183:1;9176:15;9210:4;9207:1;9200:15;9226:125;9291:9;;;9312:10;;;9309:36;;;9325:18;;:::i;9356:422::-;9445:1;9488:5;9445:1;9502:270;9523:7;9513:8;9510:21;9502:270;;;9582:4;9578:1;9574:6;9570:17;9564:4;9561:27;9558:53;;;9591:18;;:::i;:::-;9641:7;9631:8;9627:22;9624:55;;;9661:16;;;;9624:55;9740:22;;;;9700:15;;;;9502:270;;;9506:3;9356:422;;;;;:::o;9783:806::-;9832:5;9862:8;9852:80;;-1:-1:-1;9903:1:1;9917:5;;9852:80;9951:4;9941:76;;-1:-1:-1;9988:1:1;10002:5;;9941:76;10033:4;10051:1;10046:59;;;;10119:1;10114:130;;;;10026:218;;10046:59;10076:1;10067:10;;10090:5;;;10114:130;10151:3;10141:8;10138:17;10135:43;;;10158:18;;:::i;:::-;-1:-1:-1;;10214:1:1;10200:16;;10229:5;;10026:218;;10328:2;10318:8;10315:16;10309:3;10303:4;10300:13;10296:36;10290:2;10280:8;10277:16;10272:2;10266:4;10263:12;10259:35;10256:77;10253:159;;;-1:-1:-1;10365:19:1;;;10397:5;;10253:159;10444:34;10469:8;10463:4;10444:34;:::i;:::-;10514:6;10510:1;10506:6;10502:19;10493:7;10490:32;10487:58;;;10525:18;;:::i;:::-;10563:20;;9783:806;-1:-1:-1;;;9783:806:1:o;10594:140::-;10652:5;10681:47;10722:4;10712:8;10708:19;10702:4;10681:47;:::i;10739:168::-;10812:9;;;10843;;10860:15;;;10854:22;;10840:37;10830:71;;10881:18;;:::i;10912:217::-;10952:1;10978;10968:132;;11022:10;11017:3;11013:20;11010:1;11003:31;11057:4;11054:1;11047:15;11085:4;11082:1;11075:15;10968:132;-1:-1:-1;11114:9:1;;10912:217::o;12221:128::-;12288:9;;;12309:11;;;12306:37;;;12323:18;;:::i;13320:127::-;13381:10;13376:3;13372:20;13369:1;13362:31;13412:4;13409:1;13402:15;13436:4;13433:1;13426:15;13452:135;13491:3;13512:17;;;13509:43;;13532:18;;:::i;:::-;-1:-1:-1;13579:1:1;13568:13;;13452:135::o;13592:464::-;-1:-1:-1;;;;;13885:15:1;;;13867:34;;13937:15;;;;13932:2;13917:18;;13910:43;13984:2;13969:18;;13962:34;14044:4;14032:17;;;14027:2;14012:18;;14005:45;13816:3;13801:19;;13592:464::o;14061:136::-;14100:3;14128:5;14118:39;;14137:18;;:::i;:::-;-1:-1:-1;;;14173:18:1;;14061:136::o;19666:251::-;19736:6;19789:2;19777:9;19768:7;19764:23;19760:32;19757:52;;;19805:1;19802;19795:12;19757:52;19837:9;19831:16;19856:31;19881:5;19856:31;:::i;19922:980::-;20184:4;20232:3;20221:9;20217:19;20263:6;20252:9;20245:25;20289:2;20327:6;20322:2;20311:9;20307:18;20300:34;20370:3;20365:2;20354:9;20350:18;20343:31;20394:6;20429;20423:13;20460:6;20452;20445:22;20498:3;20487:9;20483:19;20476:26;;20537:2;20529:6;20525:15;20511:29;;20558:1;20568:195;20582:6;20579:1;20576:13;20568:195;;;20647:13;;-1:-1:-1;;;;;20643:39:1;20631:52;;20738:15;;;;20703:12;;;;20679:1;20597:9;20568:195;;;-1:-1:-1;;;;;;;20819:32:1;;;;20814:2;20799:18;;20792:60;-1:-1:-1;;;20883:3:1;20868:19;20861:35;20780:3;19922:980;-1:-1:-1;;;19922:980:1:o;21527:306::-;21615:6;21623;21631;21684:2;21672:9;21663:7;21659:23;21655:32;21652:52;;;21700:1;21697;21690:12;21652:52;21729:9;21723:16;21713:26;;21779:2;21768:9;21764:18;21758:25;21748:35;;21823:2;21812:9;21808:18;21802:25;21792:35;;21527:306;;;;;:::o

Swarm Source

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