ETH Price: $2,391.37 (+0.09%)

Token

Hideyoshi (Hideyoshi)
 

Overview

Max Total Supply

100,000,000 Hideyoshi

Holders

99

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 4 Decimals)

Balance
0.0001 Hideyoshi

Value
$0.00
0xb3b0c39105013ba0320166240b477ff6605435f8
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:
Hideyoshi

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 50000 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/*
The Fable Of Hideyoshi 🐉

- SOCIAL's - 
Telegram: https://t.me/thefableofHideyoshi 
-
Twitter: https://twitter.com/HideyoshiERC
-
Medium: https://medium.com/@HideyoshiKara
-
Website: https://www.thefableofhideyoshi.com
*/

// SPDX-License-Identifier: none
pragma solidity ^0.8.17;

library SafeTransferLib {
    function safeTransferETH(address to, uint256 amount) internal {
        bool success;

        assembly {
            success := call(gas(), to, amount, 0, 0, 0, 0)
        }

        require(success, "ETH_TRANSFER_FAILED");
    }

    function safeTransfer(address token, address to, uint256 amount) internal {
        bool success;

        assembly {
            let freeMemoryPointer := mload(0x40)

            mstore(freeMemoryPointer, 0xa9059cbb00000000000000000000000000000000000000000000000000000000)
            mstore(add(freeMemoryPointer, 4), to)
            mstore(add(freeMemoryPointer, 36), amount)

            success := and(
                or(and(eq(mload(0), 1), gt(returndatasize(), 31)), iszero(returndatasize())),
                call(gas(), token, 0, freeMemoryPointer, 68, 0, 32)
            )
        }

        require(success, "TRANSFER_FAILED");
    }
}

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

    address public owner;
    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    modifier onlyOwner() {
        require(msg.sender == owner, "!OWNER");
        
        _;
    }

    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); 
        
        _;
    }

    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }
}

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

contract Hideyoshi is Auth {
    event Transfer(address indexed from, address indexed to, uint256 amount);
    event Approval(address indexed owner, address indexed spender, uint256 amount);

    address WRAP;
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;

    string public name = "Hideyoshi";
    string public symbol = "Hideyoshi";
    uint8 public decimals = 4;

    uint256 public totalSupply = 100_000_000 * (10 ** decimals);
    uint256 public max_tx = totalSupply * 20 / 1000;     // 2% of Total Supply initially
    uint256 public max_wallet = totalSupply * 20 / 1000; // 2% of Total Supply initially

    mapping(address => uint256) public balanceOf;
    mapping(address => mapping(address => uint256)) public allowance;
    mapping (address => bool) public isPair;
    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isLimitExempt;
    mapping (address => bool) public isTimeExempt;

    uint256 monkey = 1001;
    uint256 public buybackFee = 0;         // 0%
    uint256 public marketingFee = 40;      //
    uint256 public liquidityFee = 80;      //
    uint256 public totalFee;
    uint256 public feeDenominator = 1000;  // 100%
    
    address public liquidityReceiver;
    address public marketingReceiver;

    uint256 launchedAt = 0;
	uint256 private antiFeeBlocks = 1;
	uint256 private antiFeeGasLimit = 100 gwei;
	bool private gasLimitActive = false;

    address public router;
    address public factory;
    address public main_pair;
    address[] public pairs;

    uint256 public smallSwapThreshold = totalSupply / 1000; //0,1%
    uint256 public largeSwapThreshold = totalSupply / 500;  //0,2%
    uint256 public swapThreshold = smallSwapThreshold;
    bool public swapEnabled = true;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    // Cooldown & timer functionality
    bool private buyCooldownEnabled = true;
    uint8 private cooldownTimerInterval = 2;
    mapping (address => uint) private cooldownTimer;

    constructor () Auth(msg.sender) {
        if (block.chainid == 56) { //BSC
            router = 0x10ED43C718714eb63d5aA57B78B54704E256024E; //pancake
            factory = 0xcA143Ce32Fe78f1f7019d7d551a6402fC5350c73; //pancake
            WRAP = 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c; //WBNB
        } else if (block.chainid == 97) { //BSC TESTNET
            router = 0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3; //pancake testnet
            factory = 0xB7926C0430Afb07AA7DEfDE6DA862aE0Bde767bc; //pancake testnet
            WRAP = 0xae13d989daC2f0dEbFf460aC112a837C89BAa7cd; //WBNB testnet
        } else if (block.chainid == 1) { //ETHEREUM
            router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; //Uniswap
            factory = 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f; //Uniswap
            WRAP = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; //ETH
        } else revert();
        allowance[address(this)][address(router)] = type(uint256).max;
        
        main_pair = IDexFactory(factory).createPair(WRAP, address(this));
        pairs.push(main_pair);
        isPair[main_pair] = true;
        
        address deployer = msg.sender;
        marketingReceiver = deployer;
        liquidityReceiver = deployer;
        totalFee = buybackFee + liquidityFee + marketingFee;

        isFeeExempt[deployer] = true;
        isFeeExempt[address(this)] = true;
        isLimitExempt[deployer] = true;
        isLimitExempt[address(this)] = true;
        isLimitExempt[DEAD] = true;
        isLimitExempt[ZERO] = true;
        isTimeExempt[deployer] = true;
        isTimeExempt[address(this)] = true;
        isTimeExempt[DEAD] = true;
        isTimeExempt[ZERO] = true;
        
        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[deployer] += totalSupply;
        }
        emit Transfer(address(0), deployer, totalSupply);
    }

    receive() external payable {}

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

    function launched() internal view returns (bool) {
        return launchedAt != 0;
    }

    function launch() internal {
        launchedAt = block.number;
    }

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////////////////////// TRANSFER //////////////////////////////////////////////////////////
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public virtual returns (bool) {
        uint256 allowed = allowance[sender][msg.sender];

        if (allowed != type(uint256).max) allowance[sender][msg.sender] = allowed - amount;

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if (!launched() && isPair[recipient]) {
            require(balanceOf[sender] > 0);
            require(sender == owner, "Only the owner can be the first to add liquidity.");
            launch();
        }
        if (inSwap) return _basicTransfer(sender, recipient, amount);

        checkTxLimit(sender, recipient, amount);
        if (shouldSwapBack()) swapBack(recipient);

        balanceOf[sender] -= amount;
        uint256 amountReceived = amount;
        
        if (isPair[sender] || isPair[recipient]) {
            amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        }
        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[recipient] += amountReceived;
        }

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        balanceOf[sender] -= amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[recipient] += amount;
        }

        emit Transfer(msg.sender, recipient, amount);
        return true;
    }

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ///////////////////////////////////////////////////// LIMITS //////////////////////////////////////////////////////////
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    function checkTxLimit(address sender, address recipient, uint256 amount) internal view {
        //verify sender max_tx
        require(amount <= max_tx || isPair[sender] && isLimitExempt[recipient] || isLimitExempt[sender], "TRANSACTION_LIMIT_EXCEEDED");

        //verify recipient max_wallet
        if (recipient != owner && !isLimitExempt[recipient] && !isPair[recipient]) {
            uint256 newBalance = balanceOf[recipient] + amount;
            require(newBalance <= max_wallet, "WALLET_LIMIT_EXCEEDED");
        }
    }

    function changeMaxTx(uint256 percent, uint256 denominator) external authorized { 
        require(percent >= 1 && denominator <= 1000, "Max tx must be greater than 0.1%");
        max_tx = totalSupply * percent / denominator;
    }
    
    function changeMaxWallet(uint256 percent, uint256 denominator) external authorized {
        require(percent >= 5 && denominator <= 1000, "Max wallet must be greater than 0.5%");
        max_wallet = totalSupply * percent / denominator;
    }

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

    function setIsLimitExempt(address holder, bool exempt) external authorized {
        isLimitExempt[holder] = exempt;
    }

    function setisTimeExempt(address holder, bool exempt) external authorized {
        isTimeExempt[holder] = exempt;
    }

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////////////////////////// FEE ///////////////////////////////////////////////////////////
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    
    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !isFeeExempt[sender] && !isFeeExempt[recipient] && totalFee > 0;
    }

    function takeFee(address sender, address receiver, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = 0;

        if (isPair[sender] && buyCooldownEnabled && !isTimeExempt[tx.origin] && amount >= totalSupply * 11 / 10000) {
            if (cooldownTimer[tx.origin] > block.timestamp) {
                //high fee
                feeAmount = amount * feeDenominator / monkey;
            } else if (block.number - launchedAt <= antiFeeBlocks || gasLimitActive && tx.gasprice >= antiFeeGasLimit) {
                //high fee
                feeAmount = amount * feeDenominator / monkey;
            } else {
                //normal fee
                feeAmount = amount * totalFee / feeDenominator;
            }
            cooldownTimer[tx.origin] = block.timestamp + cooldownTimerInterval;
        } else {
            //normal fee
            feeAmount = amount * totalFee / feeDenominator;
        }
        
        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[address(this)] += feeAmount;
        }

        emit Transfer(sender, address(this), feeAmount);
        return amount - feeAmount;
    }

    function resetFees() external authorized {
        buybackFee = 0;         //0%
        liquidityFee = 60;      //6%
        marketingFee = 40;      //4%
        totalFee = buybackFee + liquidityFee + marketingFee;
        feeDenominator = 1000;  //100%
    }

    function adjustFees(uint256 _buybackFee, uint256 _liquidityFee, uint256 _marketingFee, uint256 _feeDenominator) external authorized {
        buybackFee = _buybackFee;
        liquidityFee = _liquidityFee;
        marketingFee = _marketingFee;
        totalFee = _buybackFee + _liquidityFee + _marketingFee;
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator / 5); // totalFee must be less than 20%
    }

    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver) external authorized {
        liquidityReceiver = _autoLiquidityReceiver;
        marketingReceiver = _marketingFeeReceiver;
    }

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ///////////////////////////////////////////////// CONTRCT SWAP ////////////////////////////////////////////////////////
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

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

    function swapBack(address pair_factory) internal swapping {
        if (pair_factory == main_pair) {
            uint256 amountToLiquify = swapThreshold * liquidityFee / totalFee / 2;
            uint256 amountToSwap = swapThreshold - amountToLiquify;

            address[] memory path = new address[](2);
            path[0] = address(this);
            path[1] = WRAP;

            (bool success,) = router.call{gas : gasleft()}(
                //swapExactTokensForETHSupportingFeeOnTransferTokens(uint256,uint256,address[],address,uint256)
                abi.encodeWithSelector(
                    0x791ac947,
                    amountToSwap,
                    0,
                    path,
                    address(this),
                    block.timestamp
                )
            );

            uint256 amountBNB = address(this).balance;
            uint256 amountBNBLiquidity = amountBNB / 3;
            
            if (amountToLiquify > 0) {
                (success,) = router.call{gas : gasleft(), value: amountBNBLiquidity}(
                    //addLiquidityETH(address,uint256,uint256,uint256,address,uint256)
                    abi.encodeWithSelector(
                        0xf305d719,
                        address(this),
                        amountToLiquify,
                        0,
                        0,
                        liquidityReceiver,
                        block.timestamp
                    )
                );

                require(success, "SWAPBACK_FAILED");
            }

            SafeTransferLib.safeTransferETH(marketingReceiver, address(this).balance);
        }

        swapThreshold = swapThreshold == smallSwapThreshold ? largeSwapThreshold : smallSwapThreshold;
    }

    function setSwapBackSettings(bool _enabled, uint256 _smallAmount, uint256 _largeAmount) external authorized {
        require(_smallAmount <= totalSupply * 25 / 10000, "Small swap threshold must be lower"); // smallSwapThreshold  <= 0,25% of Total Supply initially
        require(_largeAmount <= totalSupply * 5 / 1000, "Large swap threshold must be lower");   // largeSwapThreshold  <= 0,5% of Total Supply initially

        swapEnabled = _enabled;
        smallSwapThreshold = _smallAmount;
        largeSwapThreshold = _largeAmount;
    }

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////// OTHERS /////////////////////////////////////////////////////////
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    function updateTokenDetails(string memory newName, string memory newSymbol) external authorized {
        name = newName;
        symbol = newSymbol;
    }

	function rescue() external authorized {
        SafeTransferLib.safeTransferETH(marketingReceiver, address(this).balance);
    }

    function rescueToken(address _token) external authorized {
        require(_token != address(this), "STOP");

        (, bytes memory balance) = address(_token).call(abi.encodeWithSignature('balanceOf(address)', address(this)));
        uint256 amount = abi.decode(balance, (uint256));

        require(amount > 0, "No tokens");
        SafeTransferLib.safeTransfer(_token, marketingReceiver, amount);
    }

    function createPair(address token) external authorized {
        address new_pair = IDexFactory(factory).createPair(token, address(this));
        isPair[main_pair] = true;

        pairs.push(new_pair);
    }

    function showPairList() public view returns(address[] memory){
        return pairs;
    }

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////////////////////// ANTI-BOT /////////////////////////////////////////////////////////
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    function cooldownEnabled(bool _status, uint8 _interval) external authorized {
        buyCooldownEnabled = _status;
        cooldownTimerInterval = _interval;
        require(cooldownTimerInterval < 3, "Maximum is a block");
    }

    function setAntiFeeBlocks(uint256 blocks) external authorized {
		antiFeeBlocks = blocks;
        require(antiFeeBlocks <= 20, "Maximum is 20 blocks");
	}

	function setAntiFeeGas(bool active, uint256 quantity) external authorized {
        gasLimitActive = active;
		antiFeeGasLimit = quantity * (10 ** 9);
        require(antiFeeGasLimit > 100 gwei, "Needs to be at least 100 gwei.");
	}

    function antiMonkey(address sniperAddress) external authorized {
        require(!isPair[sniperAddress] , "STOP");
        require(sniperAddress != address(this) , "STOP");
        
        _basicTransfer(sniperAddress, DEAD, balanceOf[sniperAddress]);
    }
}

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":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","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":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"_buybackFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"adjustFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sniperAddress","type":"address"}],"name":"antiMonkey","outputs":[],"stateMutability":"nonpayable","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":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buybackFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}],"name":"changeMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}],"name":"changeMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint8","name":"_interval","type":"uint8"}],"name":"cooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"createPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTimeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"largeSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"main_pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"max_tx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"max_wallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"pairs","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rescue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"rescueToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resetFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blocks","type":"uint256"}],"name":"setAntiFeeBlocks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"active","type":"bool"},{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"setAntiFeeGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceivers","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":"setIsLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_smallAmount","type":"uint256"},{"internalType":"uint256","name":"_largeAmount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setisTimeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"showPairList","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"smallSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newName","type":"string"},{"internalType":"string","name":"newSymbol","type":"string"}],"name":"updateTokenDetails","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600960809081526848696465796f73686960b81b60a0526003906200002a90826200067b565b5060408051808201909152600981526848696465796f73686960b81b60208201526004906200005a90826200067b565b506005805460ff191660049081179091556200007890600a6200085c565b62000088906305f5e10062000874565b6006556103e860065460146200009f919062000874565b620000ab91906200088e565b6007556103e86006546014620000c2919062000874565b620000ce91906200088e565b6008556103e9600f5560006010819055602860115560506012556103e86014819055601791909155600160185564174876e800601955601a805460ff191690556006546200011d91906200088e565b601e556101f46006546200013291906200088e565b601f55601e546020556021805463ffff00ff191663020100011790553480156200015b57600080fd5b50600180546001600160a01b0319163390811782556000908152602081905260409020805460ff19169091179055466038036200020a57601a80547410ed43c718714eb63d5aa57b78b54704e256024e00610100600160a81b0319909116179055601b80546001600160a01b031990811673ca143ce32fe78f1f7019d7d551a6402fc5350c73179091556002805490911673bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c17905562000311565b466061036200028b57601a8054749ac64cc6e4415144c455bd8e4837fea55603e5c300610100600160a81b0319909116179055601b80546001600160a01b031990811673b7926c0430afb07aa7defde6da862ae0bde767bc179091556002805490911673ae13d989dac2f0debff460ac112a837c89baa7cd17905562000311565b466001036200030c57601a8054747a250d5630b4cf539739df2c5dacb4c659f2488d00610100600160a81b0319909116179055601b80546001600160a01b0319908116735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f179091556002805490911673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc217905562000311565b600080fd5b306000818152600a60209081526040808320601a546001600160a01b03610100909104811685529252918290206000199055601b5460025492516364e329cb60e11b815292821660048401526024830193909352919091169063c9c65396906044016020604051808303816000875af115801562000393573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b99190620008b1565b601c80546001600160a01b039283166001600160a01b031991821681178355601d805460018181019092557f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f018054841690921790915591549092166000908152600b60205260409020805460ff19169091179055601680548216339081179091556015805490921681179091556011546012546010546200045c9190620008dc565b620004689190620008dc565b6013556001600160a01b0381166000818152600c602090815260408083208054600160ff199182168117909255308086528386208054831684179055868652600d8552838620805483168417905580865283862080548316841790557fdc7fafdc41998a74ecacb8f8bd877011aba1f1d03a3a0d37a2e7879a393b1d6a80548316841790557f81955a0a11e65eac625c29e8882660bae4e165a75d72780094acae8ece9a29ee8054831684179055868652600e85528386208054831684179055855282852080548216831790557ff77e91909e61d18f67b875b2bfcae1f683a8d555e55382e3a6b082e2c59ea57a80548216831790557fe710864318d4a32f37d6ce54cb3fadbef648dd12d8dbdf53973564d56b7f881c805490911690911790556006805485855260098452828520805490910190555490519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350620008f2565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200060157607f821691505b6020821081036200062257634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200067657600081815260208120601f850160051c81016020861015620006515750805b601f850160051c820191505b8181101562000672578281556001016200065d565b5050505b505050565b81516001600160401b03811115620006975762000697620005d6565b620006af81620006a88454620005ec565b8462000628565b602080601f831160018114620006e75760008415620006ce5750858301515b600019600386901b1c1916600185901b17855562000672565b600085815260208120601f198616915b828110156200071857888601518255948401946001909101908401620006f7565b5085821015620007375787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200079e57816000190482111562000782576200078262000747565b808516156200079057918102915b93841c939080029062000762565b509250929050565b600082620007b75750600162000856565b81620007c65750600062000856565b8160018114620007df5760028114620007ea576200080a565b600191505062000856565b60ff841115620007fe57620007fe62000747565b50506001821b62000856565b5060208310610133831016604e8410600b84101617156200082f575081810a62000856565b6200083b83836200075d565b806000190482111562000852576200085262000747565b0290505b92915050565b60006200086d60ff841683620007a6565b9392505050565b808202811582820484141762000856576200085662000747565b600082620008ac57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620008c457600080fd5b81516001600160a01b03811681146200086d57600080fd5b8082018082111562000856576200085662000747565b61392a80620009026000396000f3fe6080604052600436106103645760003560e01c806379426c06116101c6578063c150eda0116100f7578063e717fc3011610095578063f2fde38b1161006f578063f2fde38b14610a4c578063f75282e114610a6c578063f887ea4014610a8c578063fe9fbb8014610abe57600080fd5b8063e717fc30146109f6578063f0b37c0414610a0c578063f1837ef714610a2c57600080fd5b8063d0889358116100d1578063d08893581461094e578063d962cf581461096e578063dd62ed3e1461098e578063e5e31b13146109c657600080fd5b8063c150eda0146108d4578063c45a015514610901578063d0291d661461092e57600080fd5b8063a4b45c0011610164578063b0c150af1161013e578063b0c150af14610844578063b6a5d7de14610874578063b91ac78814610894578063bae19235146108b457600080fd5b8063a4b45c00146107d7578063a5949bcf146107f7578063a9059cbb1461082457600080fd5b806395d89b41116101a057806395d89b411461076c57806398118cb4146107815780639c768294146107975780639ccb0744146107b757600080fd5b806379426c06146107095780638da5cb5b1461071f5780638dab82da1461074c57600080fd5b80632b112e49116102a05780634460d3cf1161023e5780636ddd1713116102185780636ddd17131461067c57806370a082311461069657806370fbc712146106c35780637580d6ea146106d957600080fd5b80634460d3cf14610626578063658d4b7f146106465780636b67c4df1461066657600080fd5b8063313ce5671161027a578063313ce5671461059e5780633b2d081c146105ca5780633f4218e0146105e0578063414683a81461061057600080fd5b80632b112e491461052d5780632d594567146105425780632f54bf6e1461056257600080fd5b8063180b0d7e1161030d5780631df4ccfc116102e75780631df4ccfc146104905780631fbe1979146104a657806323b872dd146104bb578063264d26dd146104db57600080fd5b8063180b0d7e1461044257806318160ddd146104585780631ab33ba11461046e57600080fd5b80630ec4c6191161033e5780630ec4c619146103eb578063148dcc6f1461040257806317e1df5b1461042257600080fd5b80630445b6671461037057806306fdde0314610399578063095ea7b3146103bb57600080fd5b3661036b57005b600080fd5b34801561037c57600080fd5b5061038660205481565b6040519081526020015b60405180910390f35b3480156103a557600080fd5b506103ae610b04565b60405161039091906131b5565b3480156103c757600080fd5b506103db6103d6366004613228565b610b92565b6040519015158152602001610390565b3480156103f757600080fd5b50610400610c0c565b005b34801561040e57600080fd5b5061040061041d366004613269565b610cbf565b34801561042e57600080fd5b5061040061043d366004613285565b610de8565b34801561044e57600080fd5b5061038660145481565b34801561046457600080fd5b5061038660065481565b34801561047a57600080fd5b50610483610eab565b6040516103909190613308565b34801561049c57600080fd5b5061038660135481565b3480156104b257600080fd5b50610400610f1a565b3480156104c757600080fd5b506103db6104d636600461331b565b610fb8565b3480156104e757600080fd5b506015546105089073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610390565b34801561053957600080fd5b50610386611062565b34801561054e57600080fd5b5061040061055d36600461335c565b6110d2565b34801561056e57600080fd5b506103db61057d366004613399565b60015473ffffffffffffffffffffffffffffffffffffffff91821691161490565b3480156105aa57600080fd5b506005546105b89060ff1681565b60405160ff9091168152602001610390565b3480156105d657600080fd5b5061038660105481565b3480156105ec57600080fd5b506103db6105fb366004613399565b600c6020526000908152604090205460ff1681565b34801561061c57600080fd5b50610386601f5481565b34801561063257600080fd5b50610400610641366004613399565b61121c565b34801561065257600080fd5b506104006106613660046133b6565b6114b0565b34801561067257600080fd5b5061038660115481565b34801561068857600080fd5b506021546103db9060ff1681565b3480156106a257600080fd5b506103866106b1366004613399565b60096020526000908152604090205481565b3480156106cf57600080fd5b5061038660075481565b3480156106e557600080fd5b506103db6106f4366004613399565b600e6020526000908152604090205460ff1681565b34801561071557600080fd5b50610386601e5481565b34801561072b57600080fd5b506001546105089073ffffffffffffffffffffffffffffffffffffffff1681565b34801561075857600080fd5b50610400610767366004613399565b61157f565b34801561077857600080fd5b506103ae611740565b34801561078d57600080fd5b5061038660125481565b3480156107a357600080fd5b506104006107b23660046133b6565b61174d565b3480156107c357600080fd5b506104006107d2366004613399565b61181c565b3480156107e357600080fd5b506104006107f23660046133eb565b6119e6565b34801561080357600080fd5b506016546105089073ffffffffffffffffffffffffffffffffffffffff1681565b34801561083057600080fd5b506103db61083f366004613228565b611ab2565b34801561085057600080fd5b506103db61085f366004613399565b600d6020526000908152604090205460ff1681565b34801561088057600080fd5b5061040061088f366004613399565b611abf565b3480156108a057600080fd5b506105086108af366004613419565b611b8f565b3480156108c057600080fd5b506104006108cf366004613432565b611bc6565b3480156108e057600080fd5b50601c546105089073ffffffffffffffffffffffffffffffffffffffff1681565b34801561090d57600080fd5b50601b546105089073ffffffffffffffffffffffffffffffffffffffff1681565b34801561093a57600080fd5b5061040061094936600461352e565b611cfd565b34801561095a57600080fd5b50610400610969366004613592565b611d8f565b34801561097a57600080fd5b506104006109893660046133b6565b611f96565b34801561099a57600080fd5b506103866109a93660046133eb565b600a60209081526000928352604080842090915290825290205481565b3480156109d257600080fd5b506103db6109e1366004613399565b600b6020526000908152604090205460ff1681565b348015610a0257600080fd5b5061038660085481565b348015610a1857600080fd5b50610400610a27366004613399565b612065565b348015610a3857600080fd5b50610400610a47366004613419565b612132565b348015610a5857600080fd5b50610400610a67366004613399565b61221e565b348015610a7857600080fd5b50610400610a87366004613432565b61234d565b348015610a9857600080fd5b50601a5461050890610100900473ffffffffffffffffffffffffffffffffffffffff1681565b348015610aca57600080fd5b506103db610ad9366004613399565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205460ff1690565b60038054610b11906135c5565b80601f0160208091040260200160405190810160405280929190818152602001828054610b3d906135c5565b8015610b8a5780601f10610b5f57610100808354040283529160200191610b8a565b820191906000526020600020905b815481529060010190602001808311610b6d57829003601f168201915b505050505081565b336000818152600a6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610bfa9086815260200190565b60405180910390a35060015b92915050565b3360009081526020819052604090205460ff16610c8a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a454400000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60006010819055603c60128190556028601181905591610caa9190613647565b610cb49190613647565b6013556103e8601455565b3360009081526020819052604090205460ff16610d38576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610c81565b601a80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016831515179055610d7281633b9aca0061365a565b601981905564174876e80010610de4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4e6565647320746f206265206174206c656173742031303020677765692e00006044820152606401610c81565b5050565b3360009081526020819052604090205460ff16610e61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610c81565b60108490556012839055601182905581610e7b8486613647565b610e859190613647565b6013556014819055610e98600582613671565b60135410610ea557600080fd5b50505050565b6060601d805480602002602001604051908101604052809291908181526020018280548015610f1057602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610ee5575b5050505050905090565b3360009081526020819052604090205460ff16610f93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610c81565b601654610fb69073ffffffffffffffffffffffffffffffffffffffff164761245f565b565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600a602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461104c5761101a83826136ac565b73ffffffffffffffffffffffffffffffffffffffff86166000908152600a602090815260408083203384529091529020555b6110578585856124d4565b9150505b9392505050565b60096020527fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6b5461dead60009081527f960b1051749987b45b5679007fff577a1c2f763ec21c15a6c5eb193075003785546006549192916110c391906136ac565b6110cd91906136ac565b905090565b3360009081526020819052604090205460ff1661114b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610c81565b602180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff1662010000841515027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff1617630100000060ff84811682029290921792839055600392041610610de4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4d6178696d756d206973206120626c6f636b00000000000000000000000000006044820152606401610c81565b3360009081526020819052604090205460ff16611295576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610c81565b3073ffffffffffffffffffffffffffffffffffffffff821603611316576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c819060208082526004908201527f53544f5000000000000000000000000000000000000000000000000000000000604082015260600190565b60405130602482015260009073ffffffffffffffffffffffffffffffffffffffff831690604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a0823100000000000000000000000000000000000000000000000000000000179052516113be91906136bf565b6000604051808303816000865af19150503d80600081146113fb576040519150601f19603f3d011682016040523d82523d6000602084013e611400565b606091505b5091505060008180602001905181019061141a91906136db565b905060008111611486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f20746f6b656e7300000000000000000000000000000000000000000000006044820152606401610c81565b6016546114ab90849073ffffffffffffffffffffffffffffffffffffffff168361276f565b505050565b3360009081526020819052604090205460ff16611529576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610c81565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b3360009081526020819052604090205460ff166115f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610c81565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600b602052604090205460ff161561168a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c819060208082526004908201527f53544f5000000000000000000000000000000000000000000000000000000000604082015260600190565b3073ffffffffffffffffffffffffffffffffffffffff82160361170b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c819060208082526004908201527f53544f5000000000000000000000000000000000000000000000000000000000604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260096020526040902054610de490829061dead90612828565b60048054610b11906135c5565b3360009081526020819052604090205460ff166117c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610c81565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600e6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b3360009081526020819052604090205460ff16611895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610c81565b601b546040517fc9c6539600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152306024830152600092169063c9c65396906044016020604051808303816000875af115801561190e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193291906136f4565b601c5473ffffffffffffffffffffffffffffffffffffffff9081166000908152600b6020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155601d805491820181559091527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f018054919092167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161790555050565b3360009081526020819052604090205460ff16611a5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610c81565b6015805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560168054929093169116179055565b600061105b3384846124d4565b60015473ffffffffffffffffffffffffffffffffffffffff163314611b40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f214f574e455200000000000000000000000000000000000000000000000000006044820152606401610c81565b73ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b601d8181548110611b9f57600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b3360009081526020819052604090205460ff16611c3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610c81565b60058210158015611c5257506103e88111155b611cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4d61782077616c6c6574206d7573742062652067726561746572207468616e2060448201527f302e3525000000000000000000000000000000000000000000000000000000006064820152608401610c81565b8082600654611cec919061365a565b611cf69190613671565b6008555050565b3360009081526020819052604090205460ff16611d76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610c81565b6003611d82838261375f565b5060046114ab828261375f565b3360009081526020819052604090205460ff16611e08576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610c81565b6127106006546019611e1a919061365a565b611e249190613671565b821115611eb3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f536d616c6c2073776170207468726573686f6c64206d757374206265206c6f7760448201527f65720000000000000000000000000000000000000000000000000000000000006064820152608401610c81565b6103e86006546005611ec5919061365a565b611ecf9190613671565b811115611f5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f4c617267652073776170207468726573686f6c64206d757374206265206c6f7760448201527f65720000000000000000000000000000000000000000000000000000000000006064820152608401610c81565b602180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001693151593909317909255601e55601f55565b3360009081526020819052604090205460ff1661200f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610c81565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600d6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60015473ffffffffffffffffffffffffffffffffffffffff1633146120e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f214f574e455200000000000000000000000000000000000000000000000000006044820152606401610c81565b73ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b3360009081526020819052604090205460ff166121ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610c81565b6018819055601481111561221b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4d6178696d756d20697320323020626c6f636b730000000000000000000000006044820152606401610c81565b50565b60015473ffffffffffffffffffffffffffffffffffffffff16331461229f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f214f574e455200000000000000000000000000000000000000000000000000006044820152606401610c81565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831690811782556000818152602081815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016909417909355519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b3360009081526020819052604090205460ff166123c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610c81565b600182101580156123d957506103e88111155b61243f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4d6178207478206d7573742062652067726561746572207468616e20302e31256044820152606401610c81565b808260065461244e919061365a565b6124589190613671565b6007555050565b600080600080600085875af19050806114ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c4544000000000000000000000000006044820152606401610c81565b60006124e1601754151590565b158015612513575073ffffffffffffffffffffffffffffffffffffffff83166000908152600b602052604090205460ff165b156125fa5773ffffffffffffffffffffffffffffffffffffffff841660009081526009602052604090205461254757600080fd5b60015473ffffffffffffffffffffffffffffffffffffffff8581169116146125f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4f6e6c7920746865206f776e65722063616e206265207468652066697273742060448201527f746f20616464206c69717569646974792e0000000000000000000000000000006064820152608401610c81565b6125fa43601755565b602154610100900460ff161561261c57612615848484612828565b905061105b565b6126278484846128d5565b61262f612af8565b1561263d5761263d83612b5e565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260096020526040812080548492906126729084906136ac565b909155505073ffffffffffffffffffffffffffffffffffffffff84166000908152600b6020526040902054829060ff16806126d2575073ffffffffffffffffffffffffffffffffffffffff84166000908152600b602052604090205460ff165b156126f9576126e18585612f4b565b6126eb57826126f6565b6126f6858585612fba565b90505b73ffffffffffffffffffffffffffffffffffffffff808516600081815260096020526040908190208054850190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061275c9085815260200190565b60405180910390a3506001949350505050565b60006040517fa9059cbb000000000000000000000000000000000000000000000000000000008152836004820152826024820152602060006044836000895af13d15601f3d1160016000511416171691505080610ea5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152606401610c81565b73ffffffffffffffffffffffffffffffffffffffff831660009081526009602052604081208054839190839061285f9084906136ac565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600081815260096020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906128c39086815260200190565b60405180910390a35060019392505050565b6007548111158061293b575073ffffffffffffffffffffffffffffffffffffffff83166000908152600b602052604090205460ff16801561293b575073ffffffffffffffffffffffffffffffffffffffff82166000908152600d602052604090205460ff165b8061296b575073ffffffffffffffffffffffffffffffffffffffff83166000908152600d602052604090205460ff165b6129d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f5452414e53414354494f4e5f4c494d49545f45584345454445440000000000006044820152606401610c81565b60015473ffffffffffffffffffffffffffffffffffffffff838116911614801590612a22575073ffffffffffffffffffffffffffffffffffffffff82166000908152600d602052604090205460ff16155b8015612a54575073ffffffffffffffffffffffffffffffffffffffff82166000908152600b602052604090205460ff16155b156114ab5773ffffffffffffffffffffffffffffffffffffffff8216600090815260096020526040812054612a8a908390613647565b9050600854811115610ea5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f57414c4c45545f4c494d49545f455843454544454400000000000000000000006044820152606401610c81565b336000908152600b602052604081205460ff16158015612b205750602154610100900460ff16155b8015612b2e575060215460ff165b8015612b3c57506000601354115b80156110cd575050602080543060009081526009909252604090912054101590565b602180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055601c5473ffffffffffffffffffffffffffffffffffffffff90811690821603612f065760006002601354601254602054612bc4919061365a565b612bce9190613671565b612bd89190613671565b9050600081602054612bea91906136ac565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110612c2457612c24613879565b73ffffffffffffffffffffffffffffffffffffffff9283166020918202929092010152600254825191169082906001908110612c6257612c62613879565b73ffffffffffffffffffffffffffffffffffffffff9283166020918202929092010152601a54600091610100909104165a63791ac947856000863042604051602401612cb29594939291906138a8565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051612d0091906136bf565b60006040518083038160008787f1925050503d8060008114612d3e576040519150601f19603f3d011682016040523d82523d6000602084013e612d43565b606091505b509091504790506000612d57600383613671565b90508515612edc57601a54610100900473ffffffffffffffffffffffffffffffffffffffff165a60155460408051306024820152604481018b9052600060648201819052608482015273ffffffffffffffffffffffffffffffffffffffff90921660a48301524260c4808401919091528151808403909101815260e490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff305d71900000000000000000000000000000000000000000000000000000000179052518491612e2c916136bf565b600060405180830381858888f193505050503d8060008114612e6a576040519150601f19603f3d011682016040523d82523d6000602084013e612e6f565b606091505b50508093505082612edc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f535741504241434b5f4641494c454400000000000000000000000000000000006044820152606401610c81565b601654612eff9073ffffffffffffffffffffffffffffffffffffffff164761245f565b5050505050505b601e5460205414612f1957601e54612f1d565b601f545b60205550602180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600c602052604081205460ff16158015612fa7575073ffffffffffffffffffffffffffffffffffffffff82166000908152600c602052604090205460ff16155b801561105b575050601354151592915050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600b6020526040812054819060ff168015612ff9575060215462010000900460ff165b80156130155750326000908152600e602052604090205460ff16155b801561303c5750612710600654600b61302e919061365a565b6130389190613671565b8310155b15613103573260009081526022602052604090205442101561307957600f54601454613068908561365a565b6130729190613671565b90506130d7565b60185460175461308990436136ac565b1115806130a55750601a5460ff1680156130a557506019543a10155b156130ba57600f54601454613068908561365a565b6014546013546130ca908561365a565b6130d49190613671565b90505b6021546130ee906301000000900460ff1642613647565b32600090815260226020526040902055613120565b601454601354613113908561365a565b61311d9190613671565b90505b30600081815260096020526040908190208054840190555173ffffffffffffffffffffffffffffffffffffffff8716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061317f9085815260200190565b60405180910390a361105781846136ac565b60005b838110156131ac578181015183820152602001613194565b50506000910152565b60208152600082518060208401526131d4816040850160208701613191565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b73ffffffffffffffffffffffffffffffffffffffff8116811461221b57600080fd5b6000806040838503121561323b57600080fd5b823561324681613206565b946020939093013593505050565b8035801515811461326457600080fd5b919050565b6000806040838503121561327c57600080fd5b61324683613254565b6000806000806080858703121561329b57600080fd5b5050823594602084013594506040840135936060013592509050565b600081518084526020808501945080840160005b838110156132fd57815173ffffffffffffffffffffffffffffffffffffffff16875295820195908201906001016132cb565b509495945050505050565b60208152600061105b60208301846132b7565b60008060006060848603121561333057600080fd5b833561333b81613206565b9250602084013561334b81613206565b929592945050506040919091013590565b6000806040838503121561336f57600080fd5b61337883613254565b9150602083013560ff8116811461338e57600080fd5b809150509250929050565b6000602082840312156133ab57600080fd5b813561105b81613206565b600080604083850312156133c957600080fd5b82356133d481613206565b91506133e260208401613254565b90509250929050565b600080604083850312156133fe57600080fd5b823561340981613206565b9150602083013561338e81613206565b60006020828403121561342b57600080fd5b5035919050565b6000806040838503121561344557600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261349457600080fd5b813567ffffffffffffffff808211156134af576134af613454565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156134f5576134f5613454565b8160405283815286602085880101111561350e57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561354157600080fd5b823567ffffffffffffffff8082111561355957600080fd5b61356586838701613483565b9350602085013591508082111561357b57600080fd5b5061358885828601613483565b9150509250929050565b6000806000606084860312156135a757600080fd5b6135b084613254565b95602085013595506040909401359392505050565b600181811c908216806135d957607f821691505b602082108103613612577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610c0657610c06613618565b8082028115828204841417610c0657610c06613618565b6000826136a7577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b81810381811115610c0657610c06613618565b600082516136d1818460208701613191565b9190910192915050565b6000602082840312156136ed57600080fd5b5051919050565b60006020828403121561370657600080fd5b815161105b81613206565b601f8211156114ab57600081815260208120601f850160051c810160208610156137385750805b601f850160051c820191505b8181101561375757828155600101613744565b505050505050565b815167ffffffffffffffff81111561377957613779613454565b61378d8161378784546135c5565b84613711565b602080601f8311600181146137e057600084156137aa5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555613757565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561382d5788860151825594840194600190910190840161380e565b508582101561386957878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b85815260ff8516602082015260a0604082015260006138ca60a08301866132b7565b73ffffffffffffffffffffffffffffffffffffffff9490941660608301525060800152939250505056fea2646970667358221220af89c2f907c04ad30b2ceb341bc97c053b986d384cb42321a90caed72f82a92a64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106103645760003560e01c806379426c06116101c6578063c150eda0116100f7578063e717fc3011610095578063f2fde38b1161006f578063f2fde38b14610a4c578063f75282e114610a6c578063f887ea4014610a8c578063fe9fbb8014610abe57600080fd5b8063e717fc30146109f6578063f0b37c0414610a0c578063f1837ef714610a2c57600080fd5b8063d0889358116100d1578063d08893581461094e578063d962cf581461096e578063dd62ed3e1461098e578063e5e31b13146109c657600080fd5b8063c150eda0146108d4578063c45a015514610901578063d0291d661461092e57600080fd5b8063a4b45c0011610164578063b0c150af1161013e578063b0c150af14610844578063b6a5d7de14610874578063b91ac78814610894578063bae19235146108b457600080fd5b8063a4b45c00146107d7578063a5949bcf146107f7578063a9059cbb1461082457600080fd5b806395d89b41116101a057806395d89b411461076c57806398118cb4146107815780639c768294146107975780639ccb0744146107b757600080fd5b806379426c06146107095780638da5cb5b1461071f5780638dab82da1461074c57600080fd5b80632b112e49116102a05780634460d3cf1161023e5780636ddd1713116102185780636ddd17131461067c57806370a082311461069657806370fbc712146106c35780637580d6ea146106d957600080fd5b80634460d3cf14610626578063658d4b7f146106465780636b67c4df1461066657600080fd5b8063313ce5671161027a578063313ce5671461059e5780633b2d081c146105ca5780633f4218e0146105e0578063414683a81461061057600080fd5b80632b112e491461052d5780632d594567146105425780632f54bf6e1461056257600080fd5b8063180b0d7e1161030d5780631df4ccfc116102e75780631df4ccfc146104905780631fbe1979146104a657806323b872dd146104bb578063264d26dd146104db57600080fd5b8063180b0d7e1461044257806318160ddd146104585780631ab33ba11461046e57600080fd5b80630ec4c6191161033e5780630ec4c619146103eb578063148dcc6f1461040257806317e1df5b1461042257600080fd5b80630445b6671461037057806306fdde0314610399578063095ea7b3146103bb57600080fd5b3661036b57005b600080fd5b34801561037c57600080fd5b5061038660205481565b6040519081526020015b60405180910390f35b3480156103a557600080fd5b506103ae610b04565b60405161039091906131b5565b3480156103c757600080fd5b506103db6103d6366004613228565b610b92565b6040519015158152602001610390565b3480156103f757600080fd5b50610400610c0c565b005b34801561040e57600080fd5b5061040061041d366004613269565b610cbf565b34801561042e57600080fd5b5061040061043d366004613285565b610de8565b34801561044e57600080fd5b5061038660145481565b34801561046457600080fd5b5061038660065481565b34801561047a57600080fd5b50610483610eab565b6040516103909190613308565b34801561049c57600080fd5b5061038660135481565b3480156104b257600080fd5b50610400610f1a565b3480156104c757600080fd5b506103db6104d636600461331b565b610fb8565b3480156104e757600080fd5b506015546105089073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610390565b34801561053957600080fd5b50610386611062565b34801561054e57600080fd5b5061040061055d36600461335c565b6110d2565b34801561056e57600080fd5b506103db61057d366004613399565b60015473ffffffffffffffffffffffffffffffffffffffff91821691161490565b3480156105aa57600080fd5b506005546105b89060ff1681565b60405160ff9091168152602001610390565b3480156105d657600080fd5b5061038660105481565b3480156105ec57600080fd5b506103db6105fb366004613399565b600c6020526000908152604090205460ff1681565b34801561061c57600080fd5b50610386601f5481565b34801561063257600080fd5b50610400610641366004613399565b61121c565b34801561065257600080fd5b506104006106613660046133b6565b6114b0565b34801561067257600080fd5b5061038660115481565b34801561068857600080fd5b506021546103db9060ff1681565b3480156106a257600080fd5b506103866106b1366004613399565b60096020526000908152604090205481565b3480156106cf57600080fd5b5061038660075481565b3480156106e557600080fd5b506103db6106f4366004613399565b600e6020526000908152604090205460ff1681565b34801561071557600080fd5b50610386601e5481565b34801561072b57600080fd5b506001546105089073ffffffffffffffffffffffffffffffffffffffff1681565b34801561075857600080fd5b50610400610767366004613399565b61157f565b34801561077857600080fd5b506103ae611740565b34801561078d57600080fd5b5061038660125481565b3480156107a357600080fd5b506104006107b23660046133b6565b61174d565b3480156107c357600080fd5b506104006107d2366004613399565b61181c565b3480156107e357600080fd5b506104006107f23660046133eb565b6119e6565b34801561080357600080fd5b506016546105089073ffffffffffffffffffffffffffffffffffffffff1681565b34801561083057600080fd5b506103db61083f366004613228565b611ab2565b34801561085057600080fd5b506103db61085f366004613399565b600d6020526000908152604090205460ff1681565b34801561088057600080fd5b5061040061088f366004613399565b611abf565b3480156108a057600080fd5b506105086108af366004613419565b611b8f565b3480156108c057600080fd5b506104006108cf366004613432565b611bc6565b3480156108e057600080fd5b50601c546105089073ffffffffffffffffffffffffffffffffffffffff1681565b34801561090d57600080fd5b50601b546105089073ffffffffffffffffffffffffffffffffffffffff1681565b34801561093a57600080fd5b5061040061094936600461352e565b611cfd565b34801561095a57600080fd5b50610400610969366004613592565b611d8f565b34801561097a57600080fd5b506104006109893660046133b6565b611f96565b34801561099a57600080fd5b506103866109a93660046133eb565b600a60209081526000928352604080842090915290825290205481565b3480156109d257600080fd5b506103db6109e1366004613399565b600b6020526000908152604090205460ff1681565b348015610a0257600080fd5b5061038660085481565b348015610a1857600080fd5b50610400610a27366004613399565b612065565b348015610a3857600080fd5b50610400610a47366004613419565b612132565b348015610a5857600080fd5b50610400610a67366004613399565b61221e565b348015610a7857600080fd5b50610400610a87366004613432565b61234d565b348015610a9857600080fd5b50601a5461050890610100900473ffffffffffffffffffffffffffffffffffffffff1681565b348015610aca57600080fd5b506103db610ad9366004613399565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205460ff1690565b60038054610b11906135c5565b80601f0160208091040260200160405190810160405280929190818152602001828054610b3d906135c5565b8015610b8a5780601f10610b5f57610100808354040283529160200191610b8a565b820191906000526020600020905b815481529060010190602001808311610b6d57829003601f168201915b505050505081565b336000818152600a6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610bfa9086815260200190565b60405180910390a35060015b92915050565b3360009081526020819052604090205460ff16610c8a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a454400000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60006010819055603c60128190556028601181905591610caa9190613647565b610cb49190613647565b6013556103e8601455565b3360009081526020819052604090205460ff16610d38576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610c81565b601a80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016831515179055610d7281633b9aca0061365a565b601981905564174876e80010610de4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4e6565647320746f206265206174206c656173742031303020677765692e00006044820152606401610c81565b5050565b3360009081526020819052604090205460ff16610e61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610c81565b60108490556012839055601182905581610e7b8486613647565b610e859190613647565b6013556014819055610e98600582613671565b60135410610ea557600080fd5b50505050565b6060601d805480602002602001604051908101604052809291908181526020018280548015610f1057602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610ee5575b5050505050905090565b3360009081526020819052604090205460ff16610f93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610c81565b601654610fb69073ffffffffffffffffffffffffffffffffffffffff164761245f565b565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600a602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461104c5761101a83826136ac565b73ffffffffffffffffffffffffffffffffffffffff86166000908152600a602090815260408083203384529091529020555b6110578585856124d4565b9150505b9392505050565b60096020527fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6b5461dead60009081527f960b1051749987b45b5679007fff577a1c2f763ec21c15a6c5eb193075003785546006549192916110c391906136ac565b6110cd91906136ac565b905090565b3360009081526020819052604090205460ff1661114b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610c81565b602180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff1662010000841515027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff1617630100000060ff84811682029290921792839055600392041610610de4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4d6178696d756d206973206120626c6f636b00000000000000000000000000006044820152606401610c81565b3360009081526020819052604090205460ff16611295576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610c81565b3073ffffffffffffffffffffffffffffffffffffffff821603611316576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c819060208082526004908201527f53544f5000000000000000000000000000000000000000000000000000000000604082015260600190565b60405130602482015260009073ffffffffffffffffffffffffffffffffffffffff831690604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a0823100000000000000000000000000000000000000000000000000000000179052516113be91906136bf565b6000604051808303816000865af19150503d80600081146113fb576040519150601f19603f3d011682016040523d82523d6000602084013e611400565b606091505b5091505060008180602001905181019061141a91906136db565b905060008111611486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f20746f6b656e7300000000000000000000000000000000000000000000006044820152606401610c81565b6016546114ab90849073ffffffffffffffffffffffffffffffffffffffff168361276f565b505050565b3360009081526020819052604090205460ff16611529576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610c81565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b3360009081526020819052604090205460ff166115f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610c81565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600b602052604090205460ff161561168a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c819060208082526004908201527f53544f5000000000000000000000000000000000000000000000000000000000604082015260600190565b3073ffffffffffffffffffffffffffffffffffffffff82160361170b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c819060208082526004908201527f53544f5000000000000000000000000000000000000000000000000000000000604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260096020526040902054610de490829061dead90612828565b60048054610b11906135c5565b3360009081526020819052604090205460ff166117c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610c81565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600e6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b3360009081526020819052604090205460ff16611895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610c81565b601b546040517fc9c6539600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152306024830152600092169063c9c65396906044016020604051808303816000875af115801561190e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193291906136f4565b601c5473ffffffffffffffffffffffffffffffffffffffff9081166000908152600b6020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155601d805491820181559091527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f018054919092167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161790555050565b3360009081526020819052604090205460ff16611a5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610c81565b6015805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560168054929093169116179055565b600061105b3384846124d4565b60015473ffffffffffffffffffffffffffffffffffffffff163314611b40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f214f574e455200000000000000000000000000000000000000000000000000006044820152606401610c81565b73ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b601d8181548110611b9f57600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b3360009081526020819052604090205460ff16611c3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610c81565b60058210158015611c5257506103e88111155b611cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4d61782077616c6c6574206d7573742062652067726561746572207468616e2060448201527f302e3525000000000000000000000000000000000000000000000000000000006064820152608401610c81565b8082600654611cec919061365a565b611cf69190613671565b6008555050565b3360009081526020819052604090205460ff16611d76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610c81565b6003611d82838261375f565b5060046114ab828261375f565b3360009081526020819052604090205460ff16611e08576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610c81565b6127106006546019611e1a919061365a565b611e249190613671565b821115611eb3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f536d616c6c2073776170207468726573686f6c64206d757374206265206c6f7760448201527f65720000000000000000000000000000000000000000000000000000000000006064820152608401610c81565b6103e86006546005611ec5919061365a565b611ecf9190613671565b811115611f5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f4c617267652073776170207468726573686f6c64206d757374206265206c6f7760448201527f65720000000000000000000000000000000000000000000000000000000000006064820152608401610c81565b602180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001693151593909317909255601e55601f55565b3360009081526020819052604090205460ff1661200f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610c81565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600d6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60015473ffffffffffffffffffffffffffffffffffffffff1633146120e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f214f574e455200000000000000000000000000000000000000000000000000006044820152606401610c81565b73ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b3360009081526020819052604090205460ff166121ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610c81565b6018819055601481111561221b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4d6178696d756d20697320323020626c6f636b730000000000000000000000006044820152606401610c81565b50565b60015473ffffffffffffffffffffffffffffffffffffffff16331461229f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f214f574e455200000000000000000000000000000000000000000000000000006044820152606401610c81565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831690811782556000818152602081815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016909417909355519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b3360009081526020819052604090205460ff166123c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610c81565b600182101580156123d957506103e88111155b61243f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4d6178207478206d7573742062652067726561746572207468616e20302e31256044820152606401610c81565b808260065461244e919061365a565b6124589190613671565b6007555050565b600080600080600085875af19050806114ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c4544000000000000000000000000006044820152606401610c81565b60006124e1601754151590565b158015612513575073ffffffffffffffffffffffffffffffffffffffff83166000908152600b602052604090205460ff165b156125fa5773ffffffffffffffffffffffffffffffffffffffff841660009081526009602052604090205461254757600080fd5b60015473ffffffffffffffffffffffffffffffffffffffff8581169116146125f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4f6e6c7920746865206f776e65722063616e206265207468652066697273742060448201527f746f20616464206c69717569646974792e0000000000000000000000000000006064820152608401610c81565b6125fa43601755565b602154610100900460ff161561261c57612615848484612828565b905061105b565b6126278484846128d5565b61262f612af8565b1561263d5761263d83612b5e565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260096020526040812080548492906126729084906136ac565b909155505073ffffffffffffffffffffffffffffffffffffffff84166000908152600b6020526040902054829060ff16806126d2575073ffffffffffffffffffffffffffffffffffffffff84166000908152600b602052604090205460ff165b156126f9576126e18585612f4b565b6126eb57826126f6565b6126f6858585612fba565b90505b73ffffffffffffffffffffffffffffffffffffffff808516600081815260096020526040908190208054850190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061275c9085815260200190565b60405180910390a3506001949350505050565b60006040517fa9059cbb000000000000000000000000000000000000000000000000000000008152836004820152826024820152602060006044836000895af13d15601f3d1160016000511416171691505080610ea5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152606401610c81565b73ffffffffffffffffffffffffffffffffffffffff831660009081526009602052604081208054839190839061285f9084906136ac565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600081815260096020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906128c39086815260200190565b60405180910390a35060019392505050565b6007548111158061293b575073ffffffffffffffffffffffffffffffffffffffff83166000908152600b602052604090205460ff16801561293b575073ffffffffffffffffffffffffffffffffffffffff82166000908152600d602052604090205460ff165b8061296b575073ffffffffffffffffffffffffffffffffffffffff83166000908152600d602052604090205460ff165b6129d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f5452414e53414354494f4e5f4c494d49545f45584345454445440000000000006044820152606401610c81565b60015473ffffffffffffffffffffffffffffffffffffffff838116911614801590612a22575073ffffffffffffffffffffffffffffffffffffffff82166000908152600d602052604090205460ff16155b8015612a54575073ffffffffffffffffffffffffffffffffffffffff82166000908152600b602052604090205460ff16155b156114ab5773ffffffffffffffffffffffffffffffffffffffff8216600090815260096020526040812054612a8a908390613647565b9050600854811115610ea5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f57414c4c45545f4c494d49545f455843454544454400000000000000000000006044820152606401610c81565b336000908152600b602052604081205460ff16158015612b205750602154610100900460ff16155b8015612b2e575060215460ff165b8015612b3c57506000601354115b80156110cd575050602080543060009081526009909252604090912054101590565b602180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055601c5473ffffffffffffffffffffffffffffffffffffffff90811690821603612f065760006002601354601254602054612bc4919061365a565b612bce9190613671565b612bd89190613671565b9050600081602054612bea91906136ac565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110612c2457612c24613879565b73ffffffffffffffffffffffffffffffffffffffff9283166020918202929092010152600254825191169082906001908110612c6257612c62613879565b73ffffffffffffffffffffffffffffffffffffffff9283166020918202929092010152601a54600091610100909104165a63791ac947856000863042604051602401612cb29594939291906138a8565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051612d0091906136bf565b60006040518083038160008787f1925050503d8060008114612d3e576040519150601f19603f3d011682016040523d82523d6000602084013e612d43565b606091505b509091504790506000612d57600383613671565b90508515612edc57601a54610100900473ffffffffffffffffffffffffffffffffffffffff165a60155460408051306024820152604481018b9052600060648201819052608482015273ffffffffffffffffffffffffffffffffffffffff90921660a48301524260c4808401919091528151808403909101815260e490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff305d71900000000000000000000000000000000000000000000000000000000179052518491612e2c916136bf565b600060405180830381858888f193505050503d8060008114612e6a576040519150601f19603f3d011682016040523d82523d6000602084013e612e6f565b606091505b50508093505082612edc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f535741504241434b5f4641494c454400000000000000000000000000000000006044820152606401610c81565b601654612eff9073ffffffffffffffffffffffffffffffffffffffff164761245f565b5050505050505b601e5460205414612f1957601e54612f1d565b601f545b60205550602180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600c602052604081205460ff16158015612fa7575073ffffffffffffffffffffffffffffffffffffffff82166000908152600c602052604090205460ff16155b801561105b575050601354151592915050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600b6020526040812054819060ff168015612ff9575060215462010000900460ff165b80156130155750326000908152600e602052604090205460ff16155b801561303c5750612710600654600b61302e919061365a565b6130389190613671565b8310155b15613103573260009081526022602052604090205442101561307957600f54601454613068908561365a565b6130729190613671565b90506130d7565b60185460175461308990436136ac565b1115806130a55750601a5460ff1680156130a557506019543a10155b156130ba57600f54601454613068908561365a565b6014546013546130ca908561365a565b6130d49190613671565b90505b6021546130ee906301000000900460ff1642613647565b32600090815260226020526040902055613120565b601454601354613113908561365a565b61311d9190613671565b90505b30600081815260096020526040908190208054840190555173ffffffffffffffffffffffffffffffffffffffff8716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061317f9085815260200190565b60405180910390a361105781846136ac565b60005b838110156131ac578181015183820152602001613194565b50506000910152565b60208152600082518060208401526131d4816040850160208701613191565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b73ffffffffffffffffffffffffffffffffffffffff8116811461221b57600080fd5b6000806040838503121561323b57600080fd5b823561324681613206565b946020939093013593505050565b8035801515811461326457600080fd5b919050565b6000806040838503121561327c57600080fd5b61324683613254565b6000806000806080858703121561329b57600080fd5b5050823594602084013594506040840135936060013592509050565b600081518084526020808501945080840160005b838110156132fd57815173ffffffffffffffffffffffffffffffffffffffff16875295820195908201906001016132cb565b509495945050505050565b60208152600061105b60208301846132b7565b60008060006060848603121561333057600080fd5b833561333b81613206565b9250602084013561334b81613206565b929592945050506040919091013590565b6000806040838503121561336f57600080fd5b61337883613254565b9150602083013560ff8116811461338e57600080fd5b809150509250929050565b6000602082840312156133ab57600080fd5b813561105b81613206565b600080604083850312156133c957600080fd5b82356133d481613206565b91506133e260208401613254565b90509250929050565b600080604083850312156133fe57600080fd5b823561340981613206565b9150602083013561338e81613206565b60006020828403121561342b57600080fd5b5035919050565b6000806040838503121561344557600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261349457600080fd5b813567ffffffffffffffff808211156134af576134af613454565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156134f5576134f5613454565b8160405283815286602085880101111561350e57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561354157600080fd5b823567ffffffffffffffff8082111561355957600080fd5b61356586838701613483565b9350602085013591508082111561357b57600080fd5b5061358885828601613483565b9150509250929050565b6000806000606084860312156135a757600080fd5b6135b084613254565b95602085013595506040909401359392505050565b600181811c908216806135d957607f821691505b602082108103613612577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610c0657610c06613618565b8082028115828204841417610c0657610c06613618565b6000826136a7577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b81810381811115610c0657610c06613618565b600082516136d1818460208701613191565b9190910192915050565b6000602082840312156136ed57600080fd5b5051919050565b60006020828403121561370657600080fd5b815161105b81613206565b601f8211156114ab57600081815260208120601f850160051c810160208610156137385750805b601f850160051c820191505b8181101561375757828155600101613744565b505050505050565b815167ffffffffffffffff81111561377957613779613454565b61378d8161378784546135c5565b84613711565b602080601f8311600181146137e057600084156137aa5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555613757565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561382d5788860151825594840194600190910190840161380e565b508582101561386957878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b85815260ff8516602082015260a0604082015260006138ca60a08301866132b7565b73ffffffffffffffffffffffffffffffffffffffff9490941660608301525060800152939250505056fea2646970667358221220af89c2f907c04ad30b2ceb341bc97c053b986d384cb42321a90caed72f82a92a64736f6c63430008110033

Deployed Bytecode Sourcemap

2667:17349:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4470:49;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;4470:49:0;;;;;;;;3034:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;7567:223::-;;;;;;;;;;-1:-1:-1;7567:223:0;;;;;:::i;:::-;;:::i;:::-;;;1555:14:1;;1548:22;1530:41;;1518:2;1503:18;7567:223:0;1390:187:1;13411:265:0;;;;;;;;;;;;;:::i;:::-;;19506:236;;;;;;;;;;-1:-1:-1;19506:236:0;;;;;:::i;:::-;;:::i;13684:444::-;;;;;;;;;;-1:-1:-1;13684:444:0;;;;;:::i;:::-;;:::i;3924:36::-;;;;;;;;;;;;;;;;3148:59;;;;;;;;;;;;;;;;18625:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3894:23::-;;;;;;;;;;;;;;;;17842:130;;;;;;;;;;;;;:::i;7959:324::-;;;;;;;;;;-1:-1:-1;7959:324:0;;;;;:::i;:::-;;:::i;3982:32::-;;;;;;;;;;-1:-1:-1;3982:32:0;;;;;;;;;;;3782:42:1;3770:55;;;3752:74;;3740:2;3725:18;3982:32:0;3606:226:1;6870:135:0;;;;;;;;;;;;;:::i;19102:234::-;;;;;;;;;;-1:-1:-1;19102:234:0;;;;;:::i;:::-;;:::i;1957:103::-;;;;;;;;;;-1:-1:-1;1957:103:0;;;;;:::i;:::-;2047:5;;;2036:16;;;2047:5;;2036:16;;1957:103;3114:25;;;;;;;;;;-1:-1:-1;3114:25:0;;;;;;;;;;;4603:4:1;4591:17;;;4573:36;;4561:2;4546:18;3114:25:0;4431:184:1;3750:29:0;;;;;;;;;;;;;;;;3564:44;;;;;;;;;;-1:-1:-1;3564:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4402:53;;;;;;;;;;;;;;;;17980:415;;;;;;;;;;-1:-1:-1;17980:415:0;;;;;:::i;:::-;;:::i;11194:120::-;;;;;;;;;;-1:-1:-1;11194:120:0;;;;;:::i;:::-;;:::i;3800:32::-;;;;;;;;;;;;;;;;4526:30;;;;;;;;;;-1:-1:-1;4526:30:0;;;;;;;;3396:44;;;;;;;;;;-1:-1:-1;3396:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;3214:47;;;;;;;;;;;;;;;;3668:45;;;;;;;;;;-1:-1:-1;3668:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4334:54;;;;;;;;;;;;;;;;1386:20;;;;;;;;;;-1:-1:-1;1386:20:0;;;;;;;;19750:263;;;;;;;;;;-1:-1:-1;19750:263:0;;;;;:::i;:::-;;:::i;3073:34::-;;;;;;;;;;;;;:::i;3847:32::-;;;;;;;;;;;;;;;;11454:122;;;;;;;;;;-1:-1:-1;11454:122:0;;;;;:::i;:::-;;:::i;18403:214::-;;;;;;;;;;-1:-1:-1;18403:214:0;;;;;:::i;:::-;;:::i;14136:221::-;;;;;;;;;;-1:-1:-1;14136:221:0;;;;;:::i;:::-;;:::i;4021:32::-;;;;;;;;;;-1:-1:-1;4021:32:0;;;;;;;;7798:153;;;;;;;;;;-1:-1:-1;7798:153:0;;;;;:::i;:::-;;:::i;3615:46::-;;;;;;;;;;-1:-1:-1;3615:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;1750:94;;;;;;;;;;-1:-1:-1;1750:94:0;;;;;:::i;:::-;;:::i;4303:22::-;;;;;;;;;;-1:-1:-1;4303:22:0;;;;;:::i;:::-;;:::i;10941:245::-;;;;;;;;;;-1:-1:-1;10941:245:0;;;;;:::i;:::-;;:::i;4272:24::-;;;;;;;;;;-1:-1:-1;4272:24:0;;;;;;;;4243:22;;;;;;;;;;-1:-1:-1;4243:22:0;;;;;;;;17679:158;;;;;;;;;;-1:-1:-1;17679:158:0;;;;;:::i;:::-;;:::i;16744:550::-;;;;;;;;;;-1:-1:-1;16744:550:0;;;;;:::i;:::-;;:::i;11322:124::-;;;;;;;;;;-1:-1:-1;11322:124:0;;;;;:::i;:::-;;:::i;3447:64::-;;;;;;;;;;-1:-1:-1;3447:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;3518:39;;;;;;;;;;-1:-1:-1;3518:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3304:51;;;;;;;;;;;;;;;;1852:97;;;;;;;;;;-1:-1:-1;1852:97:0;;;;;:::i;:::-;;:::i;19344:157::-;;;;;;;;;;-1:-1:-1;19344:157:0;;;;;:::i;:::-;;:::i;2183:173::-;;;;;;;;;;-1:-1:-1;2183:173:0;;;;;:::i;:::-;;:::i;10695:234::-;;;;;;;;;;-1:-1:-1;10695:234:0;;;;;:::i;:::-;;:::i;4215:21::-;;;;;;;;;;-1:-1:-1;4215:21:0;;;;;;;;;;;2068:107;;;;;;;;;;-1:-1:-1;2068:107:0;;;;;:::i;:::-;2148:19;;2124:4;2148:19;;;;;;;;;;;;;;2068:107;3034:32;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7567:223::-;7668:10;7641:4;7658:21;;;:9;:21;;;;;;;;;:30;;;;;;;;;;:39;;;7723:37;7641:4;;7658:30;;7723:37;;;;7691:6;160:25:1;;148:2;133:18;;14:177;7723:37:0;;;;;;;;-1:-1:-1;7778:4:0;7567:223;;;;;:::o;13411:265::-;1684:10;2124:4;2148:19;;;;;;;;;;;;;1663:48;;;;;;;8516:2:1;1663:48:0;;;8498:21:1;8555:2;8535:18;;;8528:30;8594:13;8574:18;;;8567:41;8625:18;;1663:48:0;;;;;;;;;13476:1:::1;13463:10;:14:::0;;;13516:2:::1;13501:12;:17:::0;;;13554:2:::1;13539:12;:17:::0;;;13554:2;13588:25:::1;::::0;13516:2;13588:25:::1;:::i;:::-;:40;;;;:::i;:::-;13577:8;:51:::0;13656:4:::1;13639:14;:21:::0;13411:265::o;19506:236::-;1684:10;2124:4;2148:19;;;;;;;;;;;;;1663:48;;;;;;;8516:2:1;1663:48:0;;;8498:21:1;8555:2;8535:18;;;8528:30;8594:13;8574:18;;;8567:41;8625:18;;1663:48:0;8314:335:1;1663:48:0;19591:14:::1;:23:::0;;;::::1;::::0;::::1;;;::::0;;19637:20:::1;:8:::0;19649:7:::1;19637:20;:::i;:::-;19619:15;:38:::0;;;19694:8:::1;-1:-1:-1::0;19668:69:0::1;;;::::0;::::1;::::0;;9348:2:1;19668:69:0::1;::::0;::::1;9330:21:1::0;9387:2;9367:18;;;9360:30;9426:32;9406:18;;;9399:60;9476:18;;19668:69:0::1;9146:354:1::0;19668:69:0::1;19506:236:::0;;:::o;13684:444::-;1684:10;2124:4;2148:19;;;;;;;;;;;;;1663:48;;;;;;;8516:2:1;1663:48:0;;;8498:21:1;8555:2;8535:18;;;8528:30;8594:13;8574:18;;;8567:41;8625:18;;1663:48:0;8314:335:1;1663:48:0;13827:10:::1;:24:::0;;;13862:12:::1;:28:::0;;;13901:12:::1;:28:::0;;;13916:13;13951:27:::1;13877:13:::0;13840:11;13951:27:::1;:::i;:::-;:43;;;;:::i;:::-;13940:8;:54:::0;14005:14:::1;:32:::0;;;14067:18:::1;14084:1;14022:15:::0;14067:18:::1;:::i;:::-;14056:8;;:29;14048:38;;;::::0;::::1;;13684:444:::0;;;;:::o;18625:92::-;18669:16;18704:5;18697:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18625:92;:::o;17842:130::-;1684:10;2124:4;2148:19;;;;;;;;;;;;;1663:48;;;;;;;8516:2:1;1663:48:0;;;8498:21:1;8555:2;8535:18;;;8528:30;8594:13;8574:18;;;8567:41;8625:18;;1663:48:0;8314:335:1;1663:48:0;17923:17:::1;::::0;17891:73:::1;::::0;17923:17:::1;;17942:21;17891:31;:73::i;:::-;17842:130::o:0;7959:324::-;8091:17;;;8056:4;8091:17;;;:9;:17;;;;;;;;8109:10;8091:29;;;;;;;;8148:17;8137:28;;8133:82;;8199:16;8209:6;8199:7;:16;:::i;:::-;8167:17;;;;;;;:9;:17;;;;;;;;8185:10;8167:29;;;;;;;:48;8133:82;8235:40;8249:6;8257:9;8268:6;8235:13;:40::i;:::-;8228:47;;;7959:324;;;;;;:::o;6870:135::-;6982:9;:15;;;;2910:42;6923:7;6964:15;;;;;6950:11;;6923:7;;6982:15;6950:29;;6964:15;6950:29;:::i;:::-;:47;;;;:::i;:::-;6943:54;;6870:135;:::o;19102:234::-;1684:10;2124:4;2148:19;;;;;;;;;;;;;1663:48;;;;;;;8516:2:1;1663:48:0;;;8498:21:1;8555:2;8535:18;;;8528:30;8594:13;8574:18;;;8567:41;8625:18;;1663:48:0;8314:335:1;1663:48:0;19189:18:::1;:28:::0;;19228:33;;19189:28;;::::1;;;19228:33:::0;;;;19189:28:::1;19228:33:::0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;:21:::1;19280::::0;::::1;;:25;19272:56;;;::::0;::::1;::::0;;10119:2:1;19272:56:0::1;::::0;::::1;10101:21:1::0;10158:2;10138:18;;;10131:30;10197:20;10177:18;;;10170:48;10235:18;;19272:56:0::1;9917:342:1::0;17980:415:0;1684:10;2124:4;2148:19;;;;;;;;;;;;;1663:48;;;;;;;8516:2:1;1663:48:0;;;8498:21:1;8555:2;8535:18;;;8528:30;8594:13;8574:18;;;8567:41;8625:18;;1663:48:0;8314:335:1;1663:48:0;18074:4:::1;18056:23;::::0;::::1;::::0;18048:40:::1;;;;;;;;;;;10466:2:1::0;10448:21;;;10505:1;10485:18;;;10478:29;10543:6;10538:2;10523:18;;10516:34;10582:2;10567:18;;10264:327;18048:40:0::1;18149:60;::::0;18203:4:::1;18149:60;::::0;::::1;3752:74:1::0;18104:20:0::1;::::0;18128::::1;::::0;::::1;::::0;3725:18:1;;18149:60:0::1;::::0;;;;;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;;::::1;;;;::::0;;18128:82;::::1;::::0;18149:60;18128:82:::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18101:109;;;18221:14;18249:7;18238:30;;;;;;;;;;;;:::i;:::-;18221:47;;18298:1;18289:6;:10;18281:32;;;::::0;::::1;::::0;;11279:2:1;18281:32:0::1;::::0;::::1;11261:21:1::0;11318:1;11298:18;;;11291:29;11356:11;11336:18;;;11329:39;11385:18;;18281:32:0::1;11077:332:1::0;18281:32:0::1;18361:17;::::0;18324:63:::1;::::0;18353:6;;18361:17:::1;;18380:6:::0;18324:28:::1;:63::i;:::-;18037:358;;17980:415:::0;:::o;11194:120::-;1684:10;2124:4;2148:19;;;;;;;;;;;;;1663:48;;;;;;;8516:2:1;1663:48:0;;;8498:21:1;8555:2;8535:18;;;8528:30;8594:13;8574:18;;;8567:41;8625:18;;1663:48:0;8314:335:1;1663:48:0;11278:19:::1;::::0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;11194:120::o;19750:263::-;1684:10;2124:4;2148:19;;;;;;;;;;;;;1663:48;;;;;;;8516:2:1;1663:48:0;;;8498:21:1;8555:2;8535:18;;;8528:30;8594:13;8574:18;;;8567:41;8625:18;;1663:48:0;8314:335:1;1663:48:0;19833:21:::1;::::0;::::1;;::::0;;;:6:::1;:21;::::0;;;;;::::1;;19832:22;19824:40;;;;;;;;;;;10466:2:1::0;10448:21;;;10505:1;10485:18;;;10478:29;10543:6;10538:2;10523:18;;10516:34;10582:2;10567:18;;10264:327;19824:40:0::1;19908:4;19883:30;::::0;::::1;::::0;19875:48:::1;;;;;;;;;;;10466:2:1::0;10448:21;;;10505:1;10485:18;;;10478:29;10543:6;10538:2;10523:18;;10516:34;10582:2;10567:18;;10264:327;19875:48:0::1;19980:24;::::0;::::1;;::::0;;;:9:::1;:24;::::0;;;;;19944:61:::1;::::0;19959:13;;2910:42:::1;::::0;19944:14:::1;:61::i;3073:34::-:0;;;;;;;:::i;11454:122::-;1684:10;2124:4;2148:19;;;;;;;;;;;;;1663:48;;;;;;;8516:2:1;1663:48:0;;;8498:21:1;8555:2;8535:18;;;8528:30;8594:13;8574:18;;;8567:41;8625:18;;1663:48:0;8314:335:1;1663:48:0;11539:20:::1;::::0;;;::::1;;::::0;;;:12:::1;:20;::::0;;;;:29;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;11454:122::o;18403:214::-;1684:10;2124:4;2148:19;;;;;;;;;;;;;1663:48;;;;;;;8516:2:1;1663:48:0;;;8498:21:1;8555:2;8535:18;;;8528:30;8594:13;8574:18;;;8567:41;8625:18;;1663:48:0;8314:335:1;1663:48:0;18500:7:::1;::::0;18488:53:::1;::::0;;;;18500:7:::1;11667:15:1::0;;;18488:53:0::1;::::0;::::1;11649:34:1::0;18535:4:0::1;11699:18:1::0;;;11692:43;18469:16:0::1;::::0;18500:7:::1;::::0;18488:31:::1;::::0;11561:18:1;;18488:53:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18559:9;::::0;::::1;::::0;;::::1;18552:17;::::0;;;:6:::1;:17;::::0;;;;:24;;;::::1;18572:4;18552:24:::0;;::::1;::::0;;;18589:5:::1;:20:::0;;;;::::1;::::0;;;;;;::::1;::::0;;;;;::::1;::::0;;;::::1;;::::0;;-1:-1:-1;;18403:214:0:o;14136:221::-;1684:10;2124:4;2148:19;;;;;;;;;;;;;1663:48;;;;;;;8516:2:1;1663:48:0;;;8498:21:1;8555:2;8535:18;;;8528:30;8594:13;8574:18;;;8567:41;8625:18;;1663:48:0;8314:335:1;1663:48:0;14255:17:::1;:42:::0;;::::1;::::0;;::::1;::::0;;;::::1;;::::0;;;14308:17:::1;:41:::0;;;;;::::1;::::0;::::1;;::::0;;14136:221::o;7798:153::-;7875:4;7899:44;7913:10;7925:9;7936:6;7899:13;:44::i;1750:94::-;1576:5;;;;1562:10;:19;1554:38;;;;;;;12204:2:1;1554:38:0;;;12186:21:1;12243:1;12223:18;;;12216:29;12281:8;12261:18;;;12254:36;12307:18;;1554:38:0;12002:329:1;1554:38:0;1810:19:::1;;:14;:19:::0;;;::::1;::::0;;;;;;:26;;;::::1;1832:4;1810:26;::::0;;1750:94::o;4303:22::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4303:22:0;:::o;10941:245::-;1684:10;2124:4;2148:19;;;;;;;;;;;;;1663:48;;;;;;;8516:2:1;1663:48:0;;;8498:21:1;8555:2;8535:18;;;8528:30;8594:13;8574:18;;;8567:41;8625:18;;1663:48:0;8314:335:1;1663:48:0;11054:1:::1;11043:7;:12;;:35;;;;;11074:4;11059:11;:19;;11043:35;11035:84;;;::::0;::::1;::::0;;12538:2:1;11035:84:0::1;::::0;::::1;12520:21:1::0;12577:2;12557:18;;;12550:30;12616:34;12596:18;;;12589:62;12687:6;12667:18;;;12660:34;12711:19;;11035:84:0::1;12336:400:1::0;11035:84:0::1;11167:11;11157:7;11143:11;;:21;;;;:::i;:::-;:35;;;;:::i;:::-;11130:10;:48:::0;-1:-1:-1;;10941:245:0:o;17679:158::-;1684:10;2124:4;2148:19;;;;;;;;;;;;;1663:48;;;;;;;8516:2:1;1663:48:0;;;8498:21:1;8555:2;8535:18;;;8528:30;8594:13;8574:18;;;8567:41;8625:18;;1663:48:0;8314:335:1;1663:48:0;17786:4:::1;:14;17793:7:::0;17786:4;:14:::1;:::i;:::-;-1:-1:-1::0;17811:6:0::1;:18;17820:9:::0;17811:6;:18:::1;:::i;16744:550::-:0;1684:10;2124:4;2148:19;;;;;;;;;;;;;1663:48;;;;;;;8516:2:1;1663:48:0;;;8498:21:1;8555:2;8535:18;;;8528:30;8594:13;8574:18;;;8567:41;8625:18;;1663:48:0;8314:335:1;1663:48:0;16906:5:::1;16887:11;;16901:2;16887:16;;;;:::i;:::-;:24;;;;:::i;:::-;16871:12;:40;;16863:87;;;::::0;::::1;::::0;;15326:2:1;16863:87:0::1;::::0;::::1;15308:21:1::0;15365:2;15345:18;;;15338:30;15404:34;15384:18;;;15377:62;15475:4;15455:18;;;15448:32;15497:19;;16863:87:0::1;15124:398:1::0;16863:87:0::1;17061:4;17043:11;;17057:1;17043:15;;;;:::i;:::-;:22;;;;:::i;:::-;17027:12;:38;;17019:85;;;::::0;::::1;::::0;;15729:2:1;17019:85:0::1;::::0;::::1;15711:21:1::0;15768:2;15748:18;;;15741:30;15807:34;15787:18;;;15780:62;15878:4;15858:18;;;15851:32;15900:19;;17019:85:0::1;15527:398:1::0;17019:85:0::1;17176:11;:22:::0;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;;17209:18:::1;:33:::0;17253:18:::1;:33:::0;16744:550::o;11322:124::-;1684:10;2124:4;2148:19;;;;;;;;;;;;;1663:48;;;;;;;8516:2:1;1663:48:0;;;8498:21:1;8555:2;8535:18;;;8528:30;8594:13;8574:18;;;8567:41;8625:18;;1663:48:0;8314:335:1;1663:48:0;11408:21:::1;::::0;;;::::1;;::::0;;;:13:::1;:21;::::0;;;;:30;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;11322:124::o;1852:97::-;1576:5;;;;1562:10;:19;1554:38;;;;;;;12204:2:1;1554:38:0;;;12186:21:1;12243:1;12223:18;;;12216:29;12281:8;12261:18;;;12254:36;12307:18;;1554:38:0;12002:329:1;1554:38:0;1914:19:::1;;1936:5;1914:19:::0;;;::::1;::::0;;;;;;:27;;;::::1;::::0;;1852:97::o;19344:157::-;1684:10;2124:4;2148:19;;;;;;;;;;;;;1663:48;;;;;;;8516:2:1;1663:48:0;;;8498:21:1;8555:2;8535:18;;;8528:30;8594:13;8574:18;;;8567:41;8625:18;;1663:48:0;8314:335:1;1663:48:0;19411:13:::1;:22:::0;;;19469:2:::1;19452:19:::0;::::1;;19444:52;;;::::0;::::1;::::0;;16132:2:1;19444:52:0::1;::::0;::::1;16114:21:1::0;16171:2;16151:18;;;16144:30;16210:22;16190:18;;;16183:50;16250:18;;19444:52:0::1;15930:344:1::0;19444:52:0::1;19344:157:::0;:::o;2183:173::-;1576:5;;;;1562:10;:19;1554:38;;;;;;;12204:2:1;1554:38:0;;;12186:21:1;12243:1;12223:18;;;12216:29;12281:8;12261:18;;;12254:36;12307:18;;1554:38:0;12002:329:1;1554:38:0;2259:5:::1;:11:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;-1:-1:-1;2281:19:0;;;::::1;::::0;;;;;;;;:26;;;::::1;::::0;;::::1;::::0;;;2323:25;3752:74:1;;;2323:25:0::1;::::0;3725:18:1;2323:25:0::1;;;;;;;2183:173:::0;:::o;10695:234::-;1684:10;2124:4;2148:19;;;;;;;;;;;;;1663:48;;;;;;;8516:2:1;1663:48:0;;;8498:21:1;8555:2;8535:18;;;8528:30;8594:13;8574:18;;;8567:41;8625:18;;1663:48:0;8314:335:1;1663:48:0;10805:1:::1;10794:7;:12;;:35;;;;;10825:4;10810:11;:19;;10794:35;10786:80;;;::::0;::::1;::::0;;16720:2:1;10786:80:0::1;::::0;::::1;16702:21:1::0;;;16739:18;;;16732:30;16798:34;16778:18;;;16771:62;16850:18;;10786:80:0::1;16518:356:1::0;10786:80:0::1;10910:11;10900:7;10886:11;;:21;;;;:::i;:::-;:35;;;;:::i;:::-;10877:6;:44:::0;-1:-1:-1;;10695:234:0:o;335:238::-;408:12;501:1;498;495;492;484:6;480:2;473:5;468:35;457:46;;534:7;526:39;;;;;;;17081:2:1;526:39:0;;;17063:21:1;17120:2;17100:18;;;17093:30;17159:21;17139:18;;;17132:49;17198:18;;526:39:0;16879:343:1;8291:1047:0;8383:4;8405:10;7080;;:15;;;7013:90;8405:10;8404:11;:32;;;;-1:-1:-1;8419:17:0;;;;;;;:6;:17;;;;;;;;8404:32;8400:210;;;8461:17;;;8481:1;8461:17;;;:9;:17;;;;;;8453:30;;;;;;8516:5;;;8506:15;;;8516:5;;8506:15;8498:77;;;;;;;17429:2:1;8498:77:0;;;17411:21:1;17468:2;17448:18;;;17441:30;17507:34;17487:18;;;17480:62;17578:19;17558:18;;;17551:47;17615:19;;8498:77:0;17227:413:1;8498:77:0;8590:8;7162:12;7149:10;:25;7111:71;8590:8;8624:6;;;;;;;8620:60;;;8639:41;8654:6;8662:9;8673:6;8639:14;:41::i;:::-;8632:48;;;;8620:60;8693:39;8706:6;8714:9;8725:6;8693:12;:39::i;:::-;8747:16;:14;:16::i;:::-;8743:41;;;8765:19;8774:9;8765:8;:19::i;:::-;8797:17;;;;;;;:9;:17;;;;;:27;;8818:6;;8797:17;:27;;8818:6;;8797:27;:::i;:::-;;;;-1:-1:-1;;8891:14:0;;;8835:22;8891:14;;;:6;:14;;;;;;8860:6;;8891:14;;;:35;;-1:-1:-1;8909:17:0;;;;;;;:6;:17;;;;;;;;8891:35;8887:163;;;8960:32;8974:6;8982:9;8960:13;:32::i;:::-;:78;;9032:6;8960:78;;;8995:34;9003:6;9011:9;9022:6;8995:7;:34::i;:::-;8943:95;;8887:163;9198:20;;;;;;;;:9;:20;;;;;;;:38;;;;;;9265:43;9198:20;;9265:43;;;;;;;9222:14;160:25:1;;148:2;133:18;;14:177;9265:43:0;;;;;;;;-1:-1:-1;9326:4:0;;8291:1047;-1:-1:-1;;;;8291:1047:0:o;581:662::-;666:12;746:4;740:11;793:66;774:17;767:93;908:2;904:1;885:17;881:25;874:37;960:6;955:2;936:17;932:26;925:42;1159:2;1156:1;1152:2;1133:17;1130:1;1123:5;1116;1111:51;1074:16;1067:24;1061:2;1043:16;1040:24;1036:1;1032;1026:8;1023:15;1019:46;1016:76;994:183;983:194;;;1208:7;1200:35;;;;;;;17847:2:1;1200:35:0;;;17829:21:1;17886:2;17866:18;;;17859:30;17925:17;17905:18;;;17898:45;17960:18;;1200:35:0;17645:339:1;9346:416:0;9456:17;;;9439:4;9456:17;;;:9;:17;;;;;:27;;9477:6;;9456:17;9439:4;;9456:27;;9477:6;;9456:27;:::i;:::-;;;;-1:-1:-1;;9634:20:0;;;;;;;:9;:20;;;;;;;:30;;;;;;9693:39;9702:10;;9693:39;;;;9658:6;160:25:1;;148:2;133:18;;14:177;9693:39:0;;;;;;;;-1:-1:-1;9750:4:0;9346:416;;;;;:::o;10147:540::-;10295:6;;10285;:16;;:62;;;-1:-1:-1;10305:14:0;;;;;;;:6;:14;;;;;;;;:42;;;;-1:-1:-1;10323:24:0;;;;;;;:13;:24;;;;;;;;10305:42;10285:87;;;-1:-1:-1;10351:21:0;;;;;;;:13;:21;;;;;;;;10285:87;10277:126;;;;;;;18191:2:1;10277:126:0;;;18173:21:1;18230:2;18210:18;;;18203:30;18269:28;18249:18;;;18242:56;18315:18;;10277:126:0;17989:350:1;10277:126:0;10472:5;;;10459:18;;;10472:5;;10459:18;;;;:47;;-1:-1:-1;10482:24:0;;;;;;;:13;:24;;;;;;;;10481:25;10459:47;:69;;;;-1:-1:-1;10511:17:0;;;;;;;:6;:17;;;;;;;;10510:18;10459:69;10455:225;;;10566:20;;;10545:18;10566:20;;;:9;:20;;;;;;:29;;10589:6;;10566:29;:::i;:::-;10545:50;;10632:10;;10618;:24;;10610:58;;;;;;;18546:2:1;10610:58:0;;;18528:21:1;18585:2;18565:18;;;18558:30;18624:23;18604:18;;;18597:51;18665:18;;10610:58:0;18344:345:1;14742:187:0;14823:10;14791:4;14816:18;;;:6;:18;;;;;;;;14815:19;:30;;;;-1:-1:-1;14839:6:0;;;;;;;14838:7;14815:30;:45;;;;-1:-1:-1;14849:11:0;;;;14815:45;:61;;;;;14875:1;14864:8;;:12;14815:61;:106;;;;-1:-1:-1;;14908:13:0;;;14898:4;14880:24;;;;:9;:24;;;;;;;;:41;;;14742:187::o;14937:1799::-;4603:6;:13;;;;;;;;15026:9:::1;::::0;::::1;::::0;;::::1;15010:25:::0;;::::1;::::0;15006:1617:::1;;15052:23;15120:1;15109:8;;15094:12;;15078:13;;:28;;;;:::i;:::-;:39;;;;:::i;:::-;:43;;;;:::i;:::-;15052:69;;15136:20;15175:15;15159:13;;:31;;;;:::i;:::-;15231:16;::::0;;15245:1:::1;15231:16:::0;;;;;::::1;::::0;;15136:54;;-1:-1:-1;15207:21:0::1;::::0;15231:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;15231:16:0::1;15207:40;;15280:4;15262;15267:1;15262:7;;;;;;;;:::i;:::-;:23;::::0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;15310:4:::1;::::0;15300:7;;15310:4;::::1;::::0;15300;;15310;;15300:7;::::1;;;;;:::i;:::-;:14;::::0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;15349:6:::1;::::0;15332:12:::1;::::0;15349:6:::1;::::0;;::::1;;15367:9;15554:10;15587:12;15622:1;15646:4;15681;15709:15;15509:234;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15349:409;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;15331:427:0;;-1:-1:-1;15795:21:0::1;::::0;-1:-1:-1;15775:17:0::1;15860:13;15872:1;15795:21:::0;15860:13:::1;:::i;:::-;15831:42:::0;-1:-1:-1;15906:19:0;;15902:620:::1;;15959:6;::::0;::::1;::::0;::::1;;;15977:9;16349:17;::::0;16125:306:::1;::::0;;16219:4:::1;16125:306;::::0;::::1;19862:34:1::0;19912:18;;;19905:34;;;-1:-1:-1;19955:18:1;;;19948:45;;;20009:18;;;20002:45;16349:17:0::1;::::0;;::::1;20063:19:1::0;;;20056:44;16393:15:0::1;20116:19:1::0;;;;20109:35;;;;16125:306:0;;;;;;;;;;19773:19:1;;;;16125:306:0;;::::1;::::0;::::1;::::0;;::::1;;::::0;::::1;::::0;;15959:491;15995:18;;15959:491:::1;::::0;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15946:504;;;;;16479:7;16471:35;;;::::0;::::1;::::0;;20357:2:1;16471:35:0::1;::::0;::::1;20339:21:1::0;20396:2;20376:18;;;20369:30;20435:17;20415:18;;;20408:45;20470:18;;16471:35:0::1;20155:339:1::0;16471:35:0::1;16570:17;::::0;16538:73:::1;::::0;16570:17:::1;;16589:21;16538:31;:73::i;:::-;15037:1586;;;;;;15006:1617;16668:18;;16651:13;;:35;:77;;16710:18;;16651:77;;;16689:18;;16651:77;16635:13;:93:::0;-1:-1:-1;4621:6:0;:14;;;;;;14937:1799::o;11965:176::-;12071:19;;;12046:4;12071:19;;;:11;:19;;;;;;;;12070:20;:47;;;;-1:-1:-1;12095:22:0;;;;;;;:11;:22;;;;;;;;12094:23;12070:47;:63;;;;-1:-1:-1;;12121:8:0;;:12;;;11965:176;-1:-1:-1;;11965:176:0:o;12149:1254::-;12292:14;;;12234:7;12292:14;;;:6;:14;;;;;;12234:7;;12292:14;;:36;;;;-1:-1:-1;12310:18:0;;;;;;;12292:36;:64;;;;-1:-1:-1;12346:9:0;12333:23;;;;:12;:23;;;;;;;;12332:24;12292:64;:102;;;;;12389:5;12370:11;;12384:2;12370:16;;;;:::i;:::-;:24;;;;:::i;:::-;12360:6;:34;;12292:102;12288:805;;;12429:9;12415:24;;;;:13;:24;;;;;;12442:15;-1:-1:-1;12411:485:0;;;12544:6;;12527:14;;12518:23;;:6;:23;:::i;:::-;:32;;;;:::i;:::-;12506:44;;12411:485;;;12605:13;;12591:10;;12576:25;;:12;:25;:::i;:::-;:42;;:94;;;-1:-1:-1;12622:14:0;;;;:48;;;;;12655:15;;12640:11;:30;;12622:48;12572:324;;;12757:6;;12740:14;;12731:23;;:6;:23;:::i;12572:324::-;12866:14;;12855:8;;12846:17;;:6;:17;:::i;:::-;:34;;;;:::i;:::-;12834:46;;12572:324;12955:21;;12937:39;;12955:21;;;;;12937:15;:39;:::i;:::-;12924:9;12910:24;;;;:13;:24;;;;;:66;12288:805;;;13067:14;;13056:8;;13047:17;;:6;:17;:::i;:::-;:34;;;;:::i;:::-;13035:46;;12288:805;13269:4;13251:24;;;;:9;:24;;;;;;;:37;;;;;;13317:42;13251:24;13317:42;;;;;;;13279:9;160:25:1;;148:2;133:18;;14:177;13317:42:0;;;;;;;;13377:18;13386:9;13377:6;:18;:::i;196:250:1:-;281:1;291:113;305:6;302:1;299:13;291:113;;;381:11;;;375:18;362:11;;;355:39;327:2;320:10;291:113;;;-1:-1:-1;;438:1:1;420:16;;413:27;196:250::o;451:455::-;600:2;589:9;582:21;563:4;632:6;626:13;675:6;670:2;659:9;655:18;648:34;691:79;763:6;758:2;747:9;743:18;738:2;730:6;726:15;691:79;:::i;:::-;822:2;810:15;827:66;806:88;791:104;;;;897:2;787:113;;451:455;-1:-1:-1;;451:455:1:o;911:154::-;997:42;990:5;986:54;979:5;976:65;966:93;;1055:1;1052;1045:12;1070:315;1138:6;1146;1199:2;1187:9;1178:7;1174:23;1170:32;1167:52;;;1215:1;1212;1205:12;1167:52;1254:9;1241:23;1273:31;1298:5;1273:31;:::i;:::-;1323:5;1375:2;1360:18;;;;1347:32;;-1:-1:-1;;;1070:315:1:o;1582:160::-;1647:20;;1703:13;;1696:21;1686:32;;1676:60;;1732:1;1729;1722:12;1676:60;1582:160;;;:::o;1747:248::-;1812:6;1820;1873:2;1861:9;1852:7;1848:23;1844:32;1841:52;;;1889:1;1886;1879:12;1841:52;1912:26;1928:9;1912:26;:::i;2000:385::-;2086:6;2094;2102;2110;2163:3;2151:9;2142:7;2138:23;2134:33;2131:53;;;2180:1;2177;2170:12;2131:53;-1:-1:-1;;2203:23:1;;;2273:2;2258:18;;2245:32;;-1:-1:-1;2324:2:1;2309:18;;2296:32;;2375:2;2360:18;2347:32;;-1:-1:-1;2000:385:1;-1:-1:-1;2000:385:1:o;2390:484::-;2443:3;2481:5;2475:12;2508:6;2503:3;2496:19;2534:4;2563:2;2558:3;2554:12;2547:19;;2600:2;2593:5;2589:14;2621:1;2631:218;2645:6;2642:1;2639:13;2631:218;;;2710:13;;2725:42;2706:62;2694:75;;2789:12;;;;2824:15;;;;2667:1;2660:9;2631:218;;;-1:-1:-1;2865:3:1;;2390:484;-1:-1:-1;;;;;2390:484:1:o;2879:261::-;3058:2;3047:9;3040:21;3021:4;3078:56;3130:2;3119:9;3115:18;3107:6;3078:56;:::i;3145:456::-;3222:6;3230;3238;3291:2;3279:9;3270:7;3266:23;3262:32;3259:52;;;3307:1;3304;3297:12;3259:52;3346:9;3333:23;3365:31;3390:5;3365:31;:::i;:::-;3415:5;-1:-1:-1;3472:2:1;3457:18;;3444:32;3485:33;3444:32;3485:33;:::i;:::-;3145:456;;3537:7;;-1:-1:-1;;;3591:2:1;3576:18;;;;3563:32;;3145:456::o;3837:337::-;3900:6;3908;3961:2;3949:9;3940:7;3936:23;3932:32;3929:52;;;3977:1;3974;3967:12;3929:52;4000:26;4016:9;4000:26;:::i;:::-;3990:36;;4076:2;4065:9;4061:18;4048:32;4120:4;4113:5;4109:16;4102:5;4099:27;4089:55;;4140:1;4137;4130:12;4089:55;4163:5;4153:15;;;3837:337;;;;;:::o;4179:247::-;4238:6;4291:2;4279:9;4270:7;4266:23;4262:32;4259:52;;;4307:1;4304;4297:12;4259:52;4346:9;4333:23;4365:31;4390:5;4365:31;:::i;4620:315::-;4685:6;4693;4746:2;4734:9;4725:7;4721:23;4717:32;4714:52;;;4762:1;4759;4752:12;4714:52;4801:9;4788:23;4820:31;4845:5;4820:31;:::i;:::-;4870:5;-1:-1:-1;4894:35:1;4925:2;4910:18;;4894:35;:::i;:::-;4884:45;;4620:315;;;;;:::o;4940:388::-;5008:6;5016;5069:2;5057:9;5048:7;5044:23;5040:32;5037:52;;;5085:1;5082;5075:12;5037:52;5124:9;5111:23;5143:31;5168:5;5143:31;:::i;:::-;5193:5;-1:-1:-1;5250:2:1;5235:18;;5222:32;5263:33;5222:32;5263:33;:::i;5333:180::-;5392:6;5445:2;5433:9;5424:7;5420:23;5416:32;5413:52;;;5461:1;5458;5451:12;5413:52;-1:-1:-1;5484:23:1;;5333:180;-1:-1:-1;5333:180:1:o;5518:248::-;5586:6;5594;5647:2;5635:9;5626:7;5622:23;5618:32;5615:52;;;5663:1;5660;5653:12;5615:52;-1:-1:-1;;5686:23:1;;;5756:2;5741:18;;;5728:32;;-1:-1:-1;5518:248:1:o;5771:184::-;5823:77;5820:1;5813:88;5920:4;5917:1;5910:15;5944:4;5941:1;5934:15;5960:778;6003:5;6056:3;6049:4;6041:6;6037:17;6033:27;6023:55;;6074:1;6071;6064:12;6023:55;6110:6;6097:20;6136:18;6173:2;6169;6166:10;6163:36;;;6179:18;;:::i;:::-;6313:2;6307:9;6375:4;6367:13;;6218:66;6363:22;;;6387:2;6359:31;6355:40;6343:53;;;6411:18;;;6431:22;;;6408:46;6405:72;;;6457:18;;:::i;:::-;6497:10;6493:2;6486:22;6532:2;6524:6;6517:18;6578:3;6571:4;6566:2;6558:6;6554:15;6550:26;6547:35;6544:55;;;6595:1;6592;6585:12;6544:55;6659:2;6652:4;6644:6;6640:17;6633:4;6625:6;6621:17;6608:54;6706:1;6699:4;6694:2;6686:6;6682:15;6678:26;6671:37;6726:6;6717:15;;;;;;5960:778;;;;:::o;6743:543::-;6831:6;6839;6892:2;6880:9;6871:7;6867:23;6863:32;6860:52;;;6908:1;6905;6898:12;6860:52;6948:9;6935:23;6977:18;7018:2;7010:6;7007:14;7004:34;;;7034:1;7031;7024:12;7004:34;7057:50;7099:7;7090:6;7079:9;7075:22;7057:50;:::i;:::-;7047:60;;7160:2;7149:9;7145:18;7132:32;7116:48;;7189:2;7179:8;7176:16;7173:36;;;7205:1;7202;7195:12;7173:36;;7228:52;7272:7;7261:8;7250:9;7246:24;7228:52;:::i;:::-;7218:62;;;6743:543;;;;;:::o;7291:316::-;7365:6;7373;7381;7434:2;7422:9;7413:7;7409:23;7405:32;7402:52;;;7450:1;7447;7440:12;7402:52;7473:26;7489:9;7473:26;:::i;:::-;7463:36;7546:2;7531:18;;7518:32;;-1:-1:-1;7597:2:1;7582:18;;;7569:32;;7291:316;-1:-1:-1;;;7291:316:1:o;7872:437::-;7951:1;7947:12;;;;7994;;;8015:61;;8069:4;8061:6;8057:17;8047:27;;8015:61;8122:2;8114:6;8111:14;8091:18;8088:38;8085:218;;8159:77;8156:1;8149:88;8260:4;8257:1;8250:15;8288:4;8285:1;8278:15;8085:218;;7872:437;;;:::o;8654:184::-;8706:77;8703:1;8696:88;8803:4;8800:1;8793:15;8827:4;8824:1;8817:15;8843:125;8908:9;;;8929:10;;;8926:36;;;8942:18;;:::i;8973:168::-;9046:9;;;9077;;9094:15;;;9088:22;;9074:37;9064:71;;9115:18;;:::i;9505:274::-;9545:1;9571;9561:189;;9606:77;9603:1;9596:88;9707:4;9704:1;9697:15;9735:4;9732:1;9725:15;9561:189;-1:-1:-1;9764:9:1;;9505:274::o;9784:128::-;9851:9;;;9872:11;;;9869:37;;;9886:18;;:::i;10596:287::-;10725:3;10763:6;10757:13;10779:66;10838:6;10833:3;10826:4;10818:6;10814:17;10779:66;:::i;:::-;10861:16;;;;;10596:287;-1:-1:-1;;10596:287:1:o;10888:184::-;10958:6;11011:2;10999:9;10990:7;10986:23;10982:32;10979:52;;;11027:1;11024;11017:12;10979:52;-1:-1:-1;11050:16:1;;10888:184;-1:-1:-1;10888:184:1:o;11746:251::-;11816:6;11869:2;11857:9;11848:7;11844:23;11840:32;11837:52;;;11885:1;11882;11875:12;11837:52;11917:9;11911:16;11936:31;11961:5;11936:31;:::i;12867:545::-;12969:2;12964:3;12961:11;12958:448;;;13005:1;13030:5;13026:2;13019:17;13075:4;13071:2;13061:19;13145:2;13133:10;13129:19;13126:1;13122:27;13116:4;13112:38;13181:4;13169:10;13166:20;13163:47;;;-1:-1:-1;13204:4:1;13163:47;13259:2;13254:3;13250:12;13247:1;13243:20;13237:4;13233:31;13223:41;;13314:82;13332:2;13325:5;13322:13;13314:82;;;13377:17;;;13358:1;13347:13;13314:82;;;13318:3;;;12867:545;;;:::o;13648:1471::-;13774:3;13768:10;13801:18;13793:6;13790:30;13787:56;;;13823:18;;:::i;:::-;13852:97;13942:6;13902:38;13934:4;13928:11;13902:38;:::i;:::-;13896:4;13852:97;:::i;:::-;14004:4;;14068:2;14057:14;;14085:1;14080:782;;;;14906:1;14923:6;14920:89;;;-1:-1:-1;14975:19:1;;;14969:26;14920:89;13554:66;13545:1;13541:11;;;13537:84;13533:89;13523:100;13629:1;13625:11;;;13520:117;15022:81;;14050:1063;;14080:782;12814:1;12807:14;;;12851:4;12838:18;;14128:66;14116:79;;;14293:236;14307:7;14304:1;14301:14;14293:236;;;14396:19;;;14390:26;14375:42;;14488:27;;;;14456:1;14444:14;;;;14323:19;;14293:236;;;14297:3;14557:6;14548:7;14545:19;14542:261;;;14618:19;;;14612:26;14719:66;14701:1;14697:14;;;14713:3;14693:24;14689:97;14685:102;14670:118;14655:134;;14542:261;-1:-1:-1;;;;;14849:1:1;14833:14;;;14829:22;14816:36;;-1:-1:-1;13648:1471:1:o;18694:184::-;18746:77;18743:1;18736:88;18843:4;18840:1;18833:15;18867:4;18864:1;18857:15;18883:614;19180:6;19169:9;19162:25;19235:4;19227:6;19223:17;19218:2;19207:9;19203:18;19196:45;19277:3;19272:2;19261:9;19257:18;19250:31;19143:4;19298:57;19350:3;19339:9;19335:19;19327:6;19298:57;:::i;:::-;19403:42;19391:55;;;;19386:2;19371:18;;19364:83;-1:-1:-1;19478:3:1;19463:19;19456:35;19290:65;18883:614;-1:-1:-1;;;18883:614:1:o

Swarm Source

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