ETH Price: $2,923.72 (-3.48%)
Gas: 1 Gwei

Token

Miroku (Miroku)
 

Overview

Max Total Supply

1,000,000 Miroku

Holders

29

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
334.857089151 Miroku

Value
$0.00
0x83bdCeB3D17fdD8943b36e8c48256450c25E368e
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:
Miroku

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-01-27
*/

// SPDX-License-Identifier: UNLICENSED

// Miroku - https://t.me/MirokuPortal

pragma solidity >=0.8.0 <0.9.0;

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

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

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

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

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

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

interface ERC20 {
    function totalSupply() external view returns (uint256);

    function decimals() external view returns (uint8);

    function symbol() external view returns (string memory);

    function name() external view returns (string memory);

    function getOwner() external view returns (address);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    function allowance(address _owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

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

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

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

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

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

    function unauthorize(address adr) public onlyOwner {
        require(adr != owner, "Cant remove owner");
        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);
    }

    event OwnershipTransferred(address owner);
}

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

interface DexRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

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

contract Miroku is ERC20, Auth {
    using SafeMath for uint256;

    address public constant DEAD = 0x000000000000000000000000000000000000dEaD;

    string constant _name = "Miroku";
    string constant _symbol = "Miroku";
    uint8 constant _decimals = 9;
    uint256 constant _totalSupply = 1_000_000 * 10**_decimals;
    
    mapping(address => uint256) _balances;
    mapping(address => mapping(address => uint256)) _allowances;

    uint256 public _maxTxAmount = _totalSupply;
    uint256 public _maxHoldings = _totalSupply;

    bool public lockingEnabled = true;
    mapping(address => bool) public isLocked;

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

    struct FeeMultipliers {
        uint256 buyMultiplier;
        uint256 sellMultiplier;
        uint256 transferMultiplier;
        uint256 divisor;
    }

    struct FeeRatios {
        uint256 liquidity;
        uint256 marketing;
        uint256 dev;
        uint256 total;
        uint256 divisor;
    }

    struct FeeWallets {
        address payable marketing;
        address payable dev;
    }

    FeeRatios public _fees =
        FeeRatios({liquidity: 2, marketing: 5, dev: 3, total: 10, divisor: 100});

    FeeMultipliers public _multipliers =
        FeeMultipliers({
            buyMultiplier: 100,
            sellMultiplier: 150,
            transferMultiplier: 150,
            divisor: 100
        });

    FeeWallets public _feeWallets =
        FeeWallets({
            marketing: payable(0x3d152e686565fd6Bc83234B754E030B59E79C424),
            dev: payable(0x8512e2E9CE77508A7480A862fC1466Cc4942ADc4)
        });

    address public autoLiquidityReceiver;
    uint256 targetLiquidity = 99;
    uint256 targetLiquidityDenominator = 100;

    uint256 public deadBlocks = 1;
    uint256 public launchBlock = 0;
    bool public tradingOpen;

    bool public swapEnabled = true;
    uint256 public swapThreshold = (_totalSupply * 10) / 10000;
    uint256 public swapTransactionThreshold = (_totalSupply * 5) / 10000;
    bool inSwap;

    modifier swapLock() {
        inSwap = true;
        _;
        inSwap = false;
    }

    DexRouter public router;
    address public pair;

    event AutoLiquify(uint256 amountETH, uint256 amountTokens);

    constructor() Auth(msg.sender) {
        router = DexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = DexFactory(router.factory()).createPair(
            router.WETH(),
            address(this)
        );
        _allowances[address(this)][address(router)] = type(uint256).max;

        isFeeExempt[msg.sender] = true;
        isTxLimitExempt[msg.sender] = true;
        autoLiquidityReceiver = msg.sender;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

    function totalSupply() external pure override returns (uint256) {
        return _totalSupply;
    }

    function decimals() external pure override returns (uint8) {
        return _decimals;
    }

    function symbol() external pure override returns (string memory) {
        return _symbol;
    }

    function name() external pure override returns (string memory) {
        return _name;
    }

    function getOwner() external view override returns (address) {
        return owner;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function allowance(address holder, address spender)
        external
        view
        override
        returns (uint256)
    {
        return _allowances[holder][spender];
    }

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        uint256 usrAllowance = _allowances[sender][msg.sender];
        if (usrAllowance != type(uint256).max) {
            usrAllowance = usrAllowance.sub(amount, "Insufficient Allowance");
        }
        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        if (inSwap) {
            return _transferWithoutFees(sender, recipient, amount);
        }

        if (!authorizations[sender] && !authorizations[recipient]) {
            require(tradingOpen, "Trading is not enabled");

            if (lockingEnabled) {
                require(
                    !isLocked[sender] && !isLocked[recipient],
                    "Wallet is locked"
                );
            }
        }

        if (
            !authorizations[sender] &&
            recipient != address(this) &&
            recipient != address(DEAD) &&
            recipient != pair
        ) {
            require(
                (amount + balanceOf(recipient)) <= _maxHoldings,
                "Wallet holds maximum allowed"
            );
            require(
                amount <= _maxTxAmount || isTxLimitExempt[sender],
                "Amount greater than Max Transaction Amount."
            );
        }

        if (
            sender != pair &&
            !inSwap &&
            swapEnabled &&
            amount > swapTransactionThreshold &&
            _balances[address(this)] >= swapThreshold
        ) {
            contractSwap();
        }

        if (shouldTakeFee(sender, recipient)) {
            return _transferWithFees(sender, recipient, amount);
        } else {
            return _transferWithoutFees(sender, recipient, amount);
        }
    }

    function shouldTakeFee(address sender, address recipient)
        internal
        view
        returns (bool)
    {
        return !(isFeeExempt[sender] || isFeeExempt[recipient]);
    }

    function _transferWithoutFees(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(
            amount,
            "Insufficient Balance"
        );
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function _transferWithFees(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        bool isSell = (recipient == pair);
        bool isBuy = (sender == pair);
        bool isTransfer = (sender != pair && recipient != pair);
        uint256 feeAmount;

        _balances[sender] = _balances[sender].sub(
            amount,
            "Insufficient Balance"
        );

        if (isBuy) {
            if ((launchBlock + deadBlocks) > block.number) {
                feeAmount = amount.mul(99).div(100);
            } else {
                feeAmount = amount
                    .mul(_fees.total)
                    .mul(_multipliers.buyMultiplier)
                    .div(_fees.divisor)
                    .div(_multipliers.divisor);
                }    
        } else if (isSell) {
            feeAmount = amount
                .mul(_fees.total)
                .mul(_multipliers.sellMultiplier)
                .div(_fees.divisor)
                .div(_multipliers.divisor);
        } else if (isTransfer) {
            feeAmount = amount
                .mul(_fees.total)
                .mul(_multipliers.transferMultiplier)
                .div(_fees.divisor)
                .div(_multipliers.divisor);
        }

        uint256 amountAfterFees = amount.sub(feeAmount);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        _balances[recipient] = _balances[recipient].add(amountAfterFees);
        emit Transfer(sender, recipient, amountAfterFees);

        return true;
    }

    function contractSwap() internal swapLock {
        FeeRatios memory fees = _fees;

        uint256 dynamicLiquidityFee = isOverLiquified(
            targetLiquidity,
            targetLiquidityDenominator
        )
            ? 0
            : fees.liquidity;
        uint256 amountToLiquify = swapThreshold
            .mul(dynamicLiquidityFee)
            .div(fees.total)
            .div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

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

        uint256 balanceETHBefore = address(this).balance;

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

        uint256 amountETH = address(this).balance.sub(balanceETHBefore);

        uint256 totalFees = (fees.total).sub(dynamicLiquidityFee.div(2));

        _feeWallets.marketing.transfer(
            amountETH.mul(fees.marketing).div(totalFees)
        );
        _feeWallets.dev.transfer(amountETH.mul(fees.dev).div(totalFees));

        uint256 amountETHLiquidity = amountETH
            .mul(dynamicLiquidityFee)
            .div(totalFees)
            .div(2);
        if (amountToLiquify > 0) {
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

    function airDrop(
        address from,
        address[] calldata addresses,
        uint256[] calldata tokens
    ) external onlyOwner {
        require(
            addresses.length == tokens.length,
            "Length of addresses and tokens dont match"
        );

        for (uint256 i; i < addresses.length; ++i) {
            _transferWithoutFees(from, addresses[i], tokens[i]);
        }
    }

    function setMaxHoldingAmount(uint256 percent, uint256 base)
        external
        onlyOwner
    {
        _maxHoldings = (_totalSupply * percent) / base;
    }

    function setMaxTxPercent(uint256 percent, uint256 base) external onlyOwner {
        _maxTxAmount = (_totalSupply * percent) / base;
    }

    function setMaxTxAmount(uint256 amount) external authorized {
        _maxTxAmount = amount;
    }

    function setFeeMultipliers(
        uint256 buyMultiplier,
        uint256 sellMultiplier,
        uint256 transferMultiplier,
        uint256 divisor
    ) external onlyOwner {
        _multipliers.buyMultiplier = buyMultiplier;
        _multipliers.sellMultiplier = sellMultiplier;
        _multipliers.transferMultiplier = transferMultiplier;
        _multipliers.divisor = divisor;
    }

    function setFeeRatios(
        uint256 liquidity,
        uint256 marketing,
        uint256 dev
    ) external onlyOwner {
        _fees.liquidity = liquidity;
        _fees.marketing = marketing;
        _fees.dev = dev;
        _fees.total = liquidity + marketing + dev;
        require(
            _fees.total < _fees.divisor / 2,
            "Fees cannot be more than 50%"
        );
    }

    function setFeeWallets(address payable marketing, address payable dev)
        external
        onlyOwner
    {
        _feeWallets.marketing = payable(marketing);
        _feeWallets.dev = payable(dev);
    }

    function setAutoLiquidityReceiver(address _autoLiquidityReceiver)
        external
        onlyOwner
    {
        autoLiquidityReceiver = _autoLiquidityReceiver;
    }
    
    function clearETH(uint256 amountPercentage) external authorized {
        uint256 amountETH = address(this).balance;
        payable(msg.sender).transfer((amountETH * amountPercentage) / 100);
    }

    function setLockingMode(bool _status) external onlyOwner {
        lockingEnabled = _status;
    }

    function setLocks(address[] calldata addresses, bool status)
        external
        onlyOwner
    {
        for (uint256 i; i < addresses.length; ++i) {
            isLocked[addresses[i]] = status;
        }
    }

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

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

    function setSwapSettings(
        bool _enabled,
        uint256 _swapThreshold,
        uint256 _swapTransactionThreshold
    ) external authorized {
        swapEnabled = _enabled;
        swapThreshold = _swapThreshold;
        swapTransactionThreshold = _swapTransactionThreshold;
    }

    function setTargetLiquidity(uint256 _target, uint256 _denominator)
        external
        authorized
    {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));
    }

    function getLiquidityBacking(uint256 accuracy)
        public
        view
        returns (uint256)
    {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
    }

    function isOverLiquified(uint256 target, uint256 accuracy)
        public
        view
        returns (bool)
    {
        return getLiquidityBacking(accuracy) > target;
    }

    function tradingStatus(bool _status, uint256 _deadBlocks) public onlyOwner {
        tradingOpen = _status;
        if (tradingOpen && launchBlock == 0) {
            launchBlock = block.number;
            deadBlocks = _deadBlocks;
        }
    }

    function addDeadBlock(uint256 _launchblock, uint256 _deadBlocks)
        public
        onlyOwner
    {
        launchBlock = _launchblock;
        deadBlocks = _deadBlocks;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","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":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_feeWallets","outputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"dev","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_fees","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"total","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxHoldings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_multipliers","outputs":[{"internalType":"uint256","name":"buyMultiplier","type":"uint256"},{"internalType":"uint256","name":"sellMultiplier","type":"uint256"},{"internalType":"uint256","name":"transferMultiplier","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_launchblock","type":"uint256"},{"internalType":"uint256","name":"_deadBlocks","type":"uint256"}],"name":"addDeadBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"airDrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","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":[],"name":"launchBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract DexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"}],"name":"setAutoLiquidityReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyMultiplier","type":"uint256"},{"internalType":"uint256","name":"sellMultiplier","type":"uint256"},{"internalType":"uint256","name":"transferMultiplier","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setFeeMultipliers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"name":"setFeeRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"dev","type":"address"}],"name":"setFeeWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setLockingMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setLocks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"base","type":"uint256"}],"name":"setMaxHoldingAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"base","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"},{"internalType":"uint256","name":"_swapTransactionThreshold","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTransactionThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint256","name":"_deadBlocks","type":"uint256"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","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"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a62000571565b6200002190620f424062000632565b600455620000326009600a62000571565b6200004190620f424062000632565b60059081556006805460ff191660019081179091556040805160a081018252600280825260208083018690526003838501819052600a606080860182905260646080968701819052948255600b98909855600c91909155600d819055600e83905584519384018552828452609684830181905284860181905293909601829052600f829055601083905560119290925560128190558251808401909352733d152e686565fd6bc83234b754e030b59e79c424808452738512e2e9ce77508a7480a862fc1466cc4942adc493909201839052601380546001600160a01b0319908116909317905560148054909216909217905560636016556017556018556000601955601a805461ff00191661010017905561271090620001649060099062000571565b6200017390620f424062000632565b6200018090600a62000632565b6200018c919062000505565b601b55612710620001a06009600a62000571565b620001af90620f424062000632565b620001bc90600562000632565b620001c8919062000505565b601c55348015620001d857600080fd5b50600080546001600160a01b031916339081178255815260016020818152604092839020805460ff1916909217909155601d8054747a250d5630b4cf539739df2c5dacb4c659f2488d00610100600160a81b03199091161790819055825163c45a015560e01b815292516101009091046001600160a01b03169263c45a0155926004808301939192829003018186803b1580156200027557600080fd5b505afa1580156200028a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b09190620004d3565b6001600160a01b031663c9c65396601d60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200030d57600080fd5b505afa15801562000322573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003489190620004d3565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b1580156200039057600080fd5b505af1158015620003a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003cb9190620004d3565b601e80546001600160a01b039283166001600160a01b031991821617909155306000908152600360209081526040808320601d546101009004909516835293815283822060001990553380835260088252848320805460ff199081166001908117909255600993849052959093208054909516909217909355601580549092161790556200045b90600a62000571565b6200046a90620f424062000632565b33600081815260026020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620004ad6009600a62000571565b620004bc90620f424062000632565b60405190815260200160405180910390a36200066a565b600060208284031215620004e657600080fd5b81516001600160a01b0381168114620004fe57600080fd5b9392505050565b6000826200052357634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115620005695781600019048211156200054d576200054d62000654565b808516156200055b57918102915b93841c93908002906200052d565b509250929050565b6000620004fe60ff8416836000826200058d575060016200062c565b816200059c575060006200062c565b8160018114620005b55760028114620005c057620005e0565b60019150506200062c565b60ff841115620005d457620005d462000654565b50506001821b6200062c565b5060208310610133831016604e8410600b841016171562000605575081810a6200062c565b62000611838362000528565b806000190482111562000628576200062862000654565b0290505b92915050565b60008160001904831182151516156200064f576200064f62000654565b500290565b634e487b7160e01b600052601160045260246000fd5b612775806200067a6000396000f3fe60806040526004361061031e5760003560e01c80637d1db4a5116101ab578063d51ed1c8116100f7578063f3633b1111610095578063fabb0b4f1161006f578063fabb0b4f146109f6578063fd1fb60514610a0c578063fe9fbb8014610a2c578063ffb54a9914610a4c57600080fd5b8063f3633b1114610991578063f84ba65d146109b1578063f887ea40146109d157600080fd5b8063ead5c027116100d1578063ead5c02714610911578063ec28438a14610931578063f0b37c0414610951578063f2fde38b1461097157600080fd5b8063d51ed1c81461088b578063dd62ed3e146108ab578063e0882af8146108f157600080fd5b8063a9059cbb11610164578063cd0b226d1161013e578063cd0b226d146107c3578063cd9941c614610806578063d00efb2f14610826578063d212a69a1461083c57600080fd5b8063a9059cbb14610763578063b6a5d7de14610783578063ca33e64c146107a357600080fd5b80637d1db4a5146106d55780638517c467146106eb578063893d20e81461070b578063937c91301461072957806395d89b4114610381578063a8aa1b311461074357600080fd5b8063313ce5671161026a5780634873848111610223578063571ac8b0116101fd578063571ac8b014610640578063658d4b7f146106605780636ddd17131461068057806370a082311461069f57600080fd5b806348738481146105d05780634a4fbeec146105f0578063552a37841461062057600080fd5b8063313ce567146104f757806338fe9cd9146105135780633bcda806146105335780633f3cf56c1461055357806343203679146105735780634618e81a1461058957600080fd5b80631161ae39116102d757806323b872dd116102b157806323b872dd1461047357806326e353b8146104935780632b112e49146104b35780632f54bf6e146104c857600080fd5b80631161ae391461041e57806318160ddd1461043e578063201e79911461045357600080fd5b806303fd2a451461032a5780630445b6671461035d57806306fdde0314610381578063095d2d33146103b6578063095ea7b3146103cc5780630e4f51f7146103fc57600080fd5b3661032557005b600080fd5b34801561033657600080fd5b5061034061dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561036957600080fd5b50610373601b5481565b604051908152602001610354565b34801561038d57600080fd5b5060408051808201825260068152654d69726f6b7560d01b602082015290516103549190612477565b3480156103c257600080fd5b5061037360055481565b3480156103d857600080fd5b506103ec6103e73660046122c6565b610a66565b6040519015158152602001610354565b34801561040857600080fd5b5061041c6104173660046123eb565b610ad3565b005b34801561042a57600080fd5b506103ec6104393660046123c9565b610b91565b34801561044a57600080fd5b50610373610ba5565b34801561045f57600080fd5b5061041c61046e3660046123c9565b610bc5565b34801561047f57600080fd5b506103ec61048e3660046121cd565b610bf5565b34801561049f57600080fd5b5061041c6104ae366004612361565b610c75565b3480156104bf57600080fd5b50610373610cd2565b3480156104d457600080fd5b506103ec6104e336600461215a565b6000546001600160a01b0391821691161490565b34801561050357600080fd5b5060405160098152602001610354565b34801561051f57600080fd5b5061041c61052e3660046123c9565b610d4c565b34801561053f57600080fd5b5061041c61054e36600461237d565b610d81565b34801561055f57600080fd5b5061041c61056e3660046123c9565b610dc7565b34801561057f57600080fd5b50610373601c5481565b34801561059557600080fd5b506013546014546105b0916001600160a01b03908116911682565b604080516001600160a01b03938416815292909116602083015201610354565b3480156105dc57600080fd5b5061041c6105eb366004612445565b610e27565b3480156105fc57600080fd5b506103ec61060b36600461215a565b60076020526000908152604090205460ff1681565b34801561062c57600080fd5b5061041c61063b36600461215a565b610e65565b34801561064c57600080fd5b506103ec61065b36600461215a565b610eb1565b34801561066c57600080fd5b5061041c61067b366004612291565b610ebf565b34801561068c57600080fd5b50601a546103ec90610100900460ff1681565b3480156106ab57600080fd5b506103736106ba36600461215a565b6001600160a01b031660009081526002602052604090205490565b3480156106e157600080fd5b5061037360045481565b3480156106f757600080fd5b5061041c610706366004612346565b610f0f565b34801561071757600080fd5b506000546001600160a01b0316610340565b34801561073557600080fd5b506006546103ec9060ff1681565b34801561074f57600080fd5b50601e54610340906001600160a01b031681565b34801561076f57600080fd5b506103ec61077e3660046122c6565b610f4c565b34801561078f57600080fd5b5061041c61079e36600461215a565b610f59565b3480156107af57600080fd5b50601554610340906001600160a01b031681565b3480156107cf57600080fd5b50600f546010546011546012546107e69392919084565b604080519485526020850193909352918301526060820152608001610354565b34801561081257600080fd5b5061041c6108213660046122f2565b610faa565b34801561083257600080fd5b5061037360195481565b34801561084857600080fd5b50600a54600b54600c54600d54600e54610863949392919085565b604080519586526020860194909452928401919091526060830152608082015260a001610354565b34801561089757600080fd5b506103736108a63660046123b0565b611049565b3480156108b757600080fd5b506103736108c6366004612194565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156108fd57600080fd5b5061041c61090c36600461220e565b611090565b34801561091d57600080fd5b5061041c61092c3660046123b0565b611188565b34801561093d57600080fd5b5061041c61094c3660046123b0565b6111f0565b34801561095d57600080fd5b5061041c61096c36600461215a565b61121a565b34801561097d57600080fd5b5061041c61098c36600461215a565b6112b7565b34801561099d57600080fd5b5061041c6109ac3660046123c9565b61134d565b3480156109bd57600080fd5b5061041c6109cc366004612291565b6113ad565b3480156109dd57600080fd5b50601d546103409061010090046001600160a01b031681565b348015610a0257600080fd5b5061037360185481565b348015610a1857600080fd5b5061041c610a27366004612194565b6113fd565b348015610a3857600080fd5b506103ec610a4736600461215a565b611455565b348015610a5857600080fd5b50601a546103ec9060ff1681565b3360008181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610ac19086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610b065760405162461bcd60e51b8152600401610afd906124cc565b60405180910390fd5b600a839055600b829055600c81905580610b208385612582565b610b2a9190612582565b600d55600e54610b3c9060029061259a565b600d5410610b8c5760405162461bcd60e51b815260206004820152601c60248201527f466565732063616e6e6f74206265206d6f7265207468616e20353025000000006044820152606401610afd565b505050565b600082610b9d83611049565b119392505050565b6000610bb36009600a6125ff565b610bc090620f42406126aa565b905090565b610bce33611455565b610bea5760405162461bcd60e51b8152600401610afd906124ec565b601691909155601755565b6001600160a01b03831660009081526003602090815260408083203384529091528120546000198114610c5f57604080518082019091526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020820152610c5c9082908590611473565b90505b610c6a8585856114a4565b9150505b9392505050565b6000546001600160a01b03163314610c9f5760405162461bcd60e51b8152600401610afd906124cc565b601a805460ff191683151590811790915560ff168015610cbf5750601954155b15610cce574360195560188190555b5050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead60009081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc549091610bc091610d4690610d396009600a6125ff565b610d4690620f42406126aa565b906117d7565b6000546001600160a01b03163314610d765760405162461bcd60e51b8152600401610afd906124cc565b601991909155601855565b610d8a33611455565b610da65760405162461bcd60e51b8152600401610afd906124ec565b601a80549315156101000261ff001990941693909317909255601b55601c55565b6000546001600160a01b03163314610df15760405162461bcd60e51b8152600401610afd906124cc565b8082610dff6009600a6125ff565b610e0c90620f42406126aa565b610e1691906126aa565b610e20919061259a565b6004555050565b6000546001600160a01b03163314610e515760405162461bcd60e51b8152600401610afd906124cc565b600f93909355601091909155601155601255565b6000546001600160a01b03163314610e8f5760405162461bcd60e51b8152600401610afd906124cc565b601580546001600160a01b0319166001600160a01b0392909216919091179055565b6000610acd82600019610a66565b610ec833611455565b610ee45760405162461bcd60e51b8152600401610afd906124ec565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610f395760405162461bcd60e51b8152600401610afd906124cc565b6006805460ff1916911515919091179055565b6000610c6e3384846114a4565b6000546001600160a01b03163314610f835760405162461bcd60e51b8152600401610afd906124cc565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6000546001600160a01b03163314610fd45760405162461bcd60e51b8152600401610afd906124cc565b60005b82811015611043578160076000868685818110610ff657610ff6612711565b905060200201602081019061100b919061215a565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561103c816126e0565b9050610fd7565b50505050565b6000610acd611056610cd2565b601e546001600160a01b031660009081526002602081905260409091205461108a91611083915b90611819565b8590611819565b90611898565b6000546001600160a01b031633146110ba5760405162461bcd60e51b8152600401610afd906124cc565b82811461111b5760405162461bcd60e51b815260206004820152602960248201527f4c656e677468206f662061646472657373657320616e6420746f6b656e7320646044820152680dedce840dac2e8c6d60bb1b6064820152608401610afd565b60005b838110156111805761116f8686868481811061113c5761113c612711565b9050602002016020810190611151919061215a565b85858581811061116357611163612711565b905060200201356118da565b50611179816126e0565b905061111e565b505050505050565b61119133611455565b6111ad5760405162461bcd60e51b8152600401610afd906124ec565b47336108fc60646111be85856126aa565b6111c8919061259a565b6040518115909202916000818181858888f19350505050158015610b8c573d6000803e3d6000fd5b6111f933611455565b6112155760405162461bcd60e51b8152600401610afd906124ec565b600455565b6000546001600160a01b031633146112445760405162461bcd60e51b8152600401610afd906124cc565b6000546001600160a01b03828116911614156112965760405162461bcd60e51b815260206004820152601160248201527021b0b73a103932b6b7bb329037bbb732b960791b6044820152606401610afd565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b031633146112e15760405162461bcd60e51b8152600401610afd906124cc565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b6000546001600160a01b031633146113775760405162461bcd60e51b8152600401610afd906124cc565b80826113856009600a6125ff565b61139290620f42406126aa565b61139c91906126aa565b6113a6919061259a565b6005555050565b6113b633611455565b6113d25760405162461bcd60e51b8152600401610afd906124ec565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146114275760405162461bcd60e51b8152600401610afd906124cc565b601380546001600160a01b039384166001600160a01b03199182161790915560148054929093169116179055565b6001600160a01b031660009081526001602052604090205460ff1690565b600081848411156114975760405162461bcd60e51b8152600401610afd9190612477565b506000610c6a84866126c9565b601d5460009060ff16156114c4576114bd8484846118da565b9050610c6e565b6001600160a01b03841660009081526001602052604090205460ff1615801561150657506001600160a01b03831660009081526001602052604090205460ff16155b156115e257601a5460ff166115565760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81a5cc81b9bdd08195b98589b195960521b6044820152606401610afd565b60065460ff16156115e2576001600160a01b03841660009081526007602052604090205460ff161580156115a357506001600160a01b03831660009081526007602052604090205460ff16155b6115e25760405162461bcd60e51b815260206004820152601060248201526f15d85b1b195d081a5cc81b1bd8dad95960821b6044820152606401610afd565b6001600160a01b03841660009081526001602052604090205460ff1615801561161457506001600160a01b0383163014155b801561162b57506001600160a01b03831661dead14155b80156116455750601e546001600160a01b03848116911614155b15611747576005546001600160a01b0384166000908152600260205260409020546116709084612582565b11156116be5760405162461bcd60e51b815260206004820152601c60248201527f57616c6c657420686f6c6473206d6178696d756d20616c6c6f776564000000006044820152606401610afd565b600454821115806116e757506001600160a01b03841660009081526009602052604090205460ff165b6117475760405162461bcd60e51b815260206004820152602b60248201527f416d6f756e742067726561746572207468616e204d6178205472616e7361637460448201526a34b7b71020b6b7bab73a1760a91b6064820152608401610afd565b601e546001600160a01b038581169116148015906117685750601d5460ff16155b801561177b5750601a54610100900460ff165b80156117885750601c5482115b80156117a55750601b543060009081526002602052604090205410155b156117b2576117b26119c0565b6117bc8484611dbe565b156117cc576114bd848484611e05565b6114bd8484846118da565b6000610c6e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611473565b60008261182857506000610acd565b600061183483856126aa565b905082611841858361259a565b14610c6e5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610afd565b6000610c6e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061206c565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260029091529182205461192b918490611473565b6001600160a01b03808616600090815260026020526040808220939093559085168152205461195a908361209a565b6001600160a01b0380851660008181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119ae9086815260200190565b60405180910390a35060019392505050565b601d805460ff191660011790556040805160a081018252600a548152600b546020820152600c5491810191909152600d546060820152600e546080820152601654601754600091611a1091610b91565b611a1b578151611a1e565b60005b90506000611a44600261108a856060015161108a86601b5461181990919063ffffffff16565b90506000611a5d82601b546117d790919063ffffffff16565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611a9757611a97612711565b60200260200101906001600160a01b031690816001600160a01b031681525050601d60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611b0557600080fd5b505afa158015611b19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b3d9190612177565b81600181518110611b5057611b50612711565b6001600160a01b039283166020918202929092010152601d5460405163791ac94760e01b815247926101009092049091169063791ac94790611b9f908690600090879030904290600401612511565b600060405180830381600087803b158015611bb957600080fd5b505af1158015611bcd573d6000803e3d6000fd5b505050506000611be682476117d790919063ffffffff16565b90506000611c03611bf8886002611898565b60608a0151906117d7565b60135460208a01519192506001600160a01b0316906108fc90611c2d90849061108a908790611819565b6040518115909202916000818181858888f19350505050158015611c55573d6000803e3d6000fd5b5060145460408901516001600160a01b03909116906108fc90611c7f90849061108a908790611819565b6040518115909202916000818181858888f19350505050158015611ca7573d6000803e3d6000fd5b506000611cbb600261108a8481878d611819565b90508615611da957601d5460155460405163f305d71960e01b8152306004820152602481018a905260006044820181905260648201526001600160a01b0391821660848201524260a4820152610100909204169063f305d71990839060c4016060604051808303818588803b158015611d3357600080fd5b505af1158015611d47573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611d6c9190612417565b505060408051838152602081018a90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050601d805460ff1916905550505050505050565b6001600160a01b03821660009081526008602052604081205460ff1680611dfd57506001600160a01b03821660009081526008602052604090205460ff165b159392505050565b601e546000906001600160a01b0390811684821681149186161482811582611e3b5750601e546001600160a01b03878116911614155b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038b1660009081526002909152918220549293509091611e91918890611473565b6001600160a01b0389166000908152600260205260409020558215611f035743601854601954611ec19190612582565b1115611ede57611ed7606461108a886063611819565b9050611f5c565b601254600e54600f54600d54611ed7939261108a92909183919061107d908d90611819565b8315611f2e57601254600e54601054600d54611ed7939261108a92909183919061107d908d90611819565b8115611f5c57601254600e54601154600d54611f59939261108a92909183919061107d908d90611819565b90505b6000611f6887836117d7565b30600090815260026020526040902054909150611f85908361209a565b30600081815260026020526040908190209290925590516001600160a01b038b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611fd69086815260200190565b60405180910390a36001600160a01b038816600090815260026020526040902054612001908261209a565b6001600160a01b03808a1660008181526002602052604090819020939093559151908b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906120559085815260200190565b60405180910390a350600198975050505050505050565b6000818361208d5760405162461bcd60e51b8152600401610afd9190612477565b506000610c6a848661259a565b6000806120a78385612582565b905083811015610c6e5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610afd565b60008083601f84011261210b57600080fd5b50813567ffffffffffffffff81111561212357600080fd5b6020830191508360208260051b850101111561213e57600080fd5b9250929050565b8035801515811461215557600080fd5b919050565b60006020828403121561216c57600080fd5b8135610c6e81612727565b60006020828403121561218957600080fd5b8151610c6e81612727565b600080604083850312156121a757600080fd5b82356121b281612727565b915060208301356121c281612727565b809150509250929050565b6000806000606084860312156121e257600080fd5b83356121ed81612727565b925060208401356121fd81612727565b929592945050506040919091013590565b60008060008060006060868803121561222657600080fd5b853561223181612727565b9450602086013567ffffffffffffffff8082111561224e57600080fd5b61225a89838a016120f9565b9096509450604088013591508082111561227357600080fd5b50612280888289016120f9565b969995985093965092949392505050565b600080604083850312156122a457600080fd5b82356122af81612727565b91506122bd60208401612145565b90509250929050565b600080604083850312156122d957600080fd5b82356122e481612727565b946020939093013593505050565b60008060006040848603121561230757600080fd5b833567ffffffffffffffff81111561231e57600080fd5b61232a868287016120f9565b909450925061233d905060208501612145565b90509250925092565b60006020828403121561235857600080fd5b610c6e82612145565b6000806040838503121561237457600080fd5b6122e483612145565b60008060006060848603121561239257600080fd5b61239b84612145565b95602085013595506040909401359392505050565b6000602082840312156123c257600080fd5b5035919050565b600080604083850312156123dc57600080fd5b50508035926020909101359150565b60008060006060848603121561240057600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561242c57600080fd5b8351925060208401519150604084015190509250925092565b6000806000806080858703121561245b57600080fd5b5050823594602084013594506040840135936060013592509050565b600060208083528351808285015260005b818110156124a457858101830151858201604001528201612488565b818111156124b6576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156125615784516001600160a01b03168352938301939183019160010161253c565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612595576125956126fb565b500190565b6000826125b757634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156125f75781600019048211156125dd576125dd6126fb565b808516156125ea57918102915b93841c93908002906125c1565b509250929050565b6000610c6e60ff84168360008261261857506001610acd565b8161262557506000610acd565b816001811461263b576002811461264557612661565b6001915050610acd565b60ff841115612656576126566126fb565b50506001821b610acd565b5060208310610133831016604e8410600b8410161715612684575081810a610acd565b61268e83836125bc565b80600019048211156126a2576126a26126fb565b029392505050565b60008160001904831182151516156126c4576126c46126fb565b500290565b6000828210156126db576126db6126fb565b500390565b60006000198214156126f4576126f46126fb565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461273c57600080fd5b5056fea2646970667358221220cfdfa63fbf7f80ac1cd9588b615743827bd2f98cd95ecfd98990a7c47d0f914d64736f6c63430008070033

Deployed Bytecode

0x60806040526004361061031e5760003560e01c80637d1db4a5116101ab578063d51ed1c8116100f7578063f3633b1111610095578063fabb0b4f1161006f578063fabb0b4f146109f6578063fd1fb60514610a0c578063fe9fbb8014610a2c578063ffb54a9914610a4c57600080fd5b8063f3633b1114610991578063f84ba65d146109b1578063f887ea40146109d157600080fd5b8063ead5c027116100d1578063ead5c02714610911578063ec28438a14610931578063f0b37c0414610951578063f2fde38b1461097157600080fd5b8063d51ed1c81461088b578063dd62ed3e146108ab578063e0882af8146108f157600080fd5b8063a9059cbb11610164578063cd0b226d1161013e578063cd0b226d146107c3578063cd9941c614610806578063d00efb2f14610826578063d212a69a1461083c57600080fd5b8063a9059cbb14610763578063b6a5d7de14610783578063ca33e64c146107a357600080fd5b80637d1db4a5146106d55780638517c467146106eb578063893d20e81461070b578063937c91301461072957806395d89b4114610381578063a8aa1b311461074357600080fd5b8063313ce5671161026a5780634873848111610223578063571ac8b0116101fd578063571ac8b014610640578063658d4b7f146106605780636ddd17131461068057806370a082311461069f57600080fd5b806348738481146105d05780634a4fbeec146105f0578063552a37841461062057600080fd5b8063313ce567146104f757806338fe9cd9146105135780633bcda806146105335780633f3cf56c1461055357806343203679146105735780634618e81a1461058957600080fd5b80631161ae39116102d757806323b872dd116102b157806323b872dd1461047357806326e353b8146104935780632b112e49146104b35780632f54bf6e146104c857600080fd5b80631161ae391461041e57806318160ddd1461043e578063201e79911461045357600080fd5b806303fd2a451461032a5780630445b6671461035d57806306fdde0314610381578063095d2d33146103b6578063095ea7b3146103cc5780630e4f51f7146103fc57600080fd5b3661032557005b600080fd5b34801561033657600080fd5b5061034061dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561036957600080fd5b50610373601b5481565b604051908152602001610354565b34801561038d57600080fd5b5060408051808201825260068152654d69726f6b7560d01b602082015290516103549190612477565b3480156103c257600080fd5b5061037360055481565b3480156103d857600080fd5b506103ec6103e73660046122c6565b610a66565b6040519015158152602001610354565b34801561040857600080fd5b5061041c6104173660046123eb565b610ad3565b005b34801561042a57600080fd5b506103ec6104393660046123c9565b610b91565b34801561044a57600080fd5b50610373610ba5565b34801561045f57600080fd5b5061041c61046e3660046123c9565b610bc5565b34801561047f57600080fd5b506103ec61048e3660046121cd565b610bf5565b34801561049f57600080fd5b5061041c6104ae366004612361565b610c75565b3480156104bf57600080fd5b50610373610cd2565b3480156104d457600080fd5b506103ec6104e336600461215a565b6000546001600160a01b0391821691161490565b34801561050357600080fd5b5060405160098152602001610354565b34801561051f57600080fd5b5061041c61052e3660046123c9565b610d4c565b34801561053f57600080fd5b5061041c61054e36600461237d565b610d81565b34801561055f57600080fd5b5061041c61056e3660046123c9565b610dc7565b34801561057f57600080fd5b50610373601c5481565b34801561059557600080fd5b506013546014546105b0916001600160a01b03908116911682565b604080516001600160a01b03938416815292909116602083015201610354565b3480156105dc57600080fd5b5061041c6105eb366004612445565b610e27565b3480156105fc57600080fd5b506103ec61060b36600461215a565b60076020526000908152604090205460ff1681565b34801561062c57600080fd5b5061041c61063b36600461215a565b610e65565b34801561064c57600080fd5b506103ec61065b36600461215a565b610eb1565b34801561066c57600080fd5b5061041c61067b366004612291565b610ebf565b34801561068c57600080fd5b50601a546103ec90610100900460ff1681565b3480156106ab57600080fd5b506103736106ba36600461215a565b6001600160a01b031660009081526002602052604090205490565b3480156106e157600080fd5b5061037360045481565b3480156106f757600080fd5b5061041c610706366004612346565b610f0f565b34801561071757600080fd5b506000546001600160a01b0316610340565b34801561073557600080fd5b506006546103ec9060ff1681565b34801561074f57600080fd5b50601e54610340906001600160a01b031681565b34801561076f57600080fd5b506103ec61077e3660046122c6565b610f4c565b34801561078f57600080fd5b5061041c61079e36600461215a565b610f59565b3480156107af57600080fd5b50601554610340906001600160a01b031681565b3480156107cf57600080fd5b50600f546010546011546012546107e69392919084565b604080519485526020850193909352918301526060820152608001610354565b34801561081257600080fd5b5061041c6108213660046122f2565b610faa565b34801561083257600080fd5b5061037360195481565b34801561084857600080fd5b50600a54600b54600c54600d54600e54610863949392919085565b604080519586526020860194909452928401919091526060830152608082015260a001610354565b34801561089757600080fd5b506103736108a63660046123b0565b611049565b3480156108b757600080fd5b506103736108c6366004612194565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156108fd57600080fd5b5061041c61090c36600461220e565b611090565b34801561091d57600080fd5b5061041c61092c3660046123b0565b611188565b34801561093d57600080fd5b5061041c61094c3660046123b0565b6111f0565b34801561095d57600080fd5b5061041c61096c36600461215a565b61121a565b34801561097d57600080fd5b5061041c61098c36600461215a565b6112b7565b34801561099d57600080fd5b5061041c6109ac3660046123c9565b61134d565b3480156109bd57600080fd5b5061041c6109cc366004612291565b6113ad565b3480156109dd57600080fd5b50601d546103409061010090046001600160a01b031681565b348015610a0257600080fd5b5061037360185481565b348015610a1857600080fd5b5061041c610a27366004612194565b6113fd565b348015610a3857600080fd5b506103ec610a4736600461215a565b611455565b348015610a5857600080fd5b50601a546103ec9060ff1681565b3360008181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610ac19086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610b065760405162461bcd60e51b8152600401610afd906124cc565b60405180910390fd5b600a839055600b829055600c81905580610b208385612582565b610b2a9190612582565b600d55600e54610b3c9060029061259a565b600d5410610b8c5760405162461bcd60e51b815260206004820152601c60248201527f466565732063616e6e6f74206265206d6f7265207468616e20353025000000006044820152606401610afd565b505050565b600082610b9d83611049565b119392505050565b6000610bb36009600a6125ff565b610bc090620f42406126aa565b905090565b610bce33611455565b610bea5760405162461bcd60e51b8152600401610afd906124ec565b601691909155601755565b6001600160a01b03831660009081526003602090815260408083203384529091528120546000198114610c5f57604080518082019091526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020820152610c5c9082908590611473565b90505b610c6a8585856114a4565b9150505b9392505050565b6000546001600160a01b03163314610c9f5760405162461bcd60e51b8152600401610afd906124cc565b601a805460ff191683151590811790915560ff168015610cbf5750601954155b15610cce574360195560188190555b5050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead60009081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc549091610bc091610d4690610d396009600a6125ff565b610d4690620f42406126aa565b906117d7565b6000546001600160a01b03163314610d765760405162461bcd60e51b8152600401610afd906124cc565b601991909155601855565b610d8a33611455565b610da65760405162461bcd60e51b8152600401610afd906124ec565b601a80549315156101000261ff001990941693909317909255601b55601c55565b6000546001600160a01b03163314610df15760405162461bcd60e51b8152600401610afd906124cc565b8082610dff6009600a6125ff565b610e0c90620f42406126aa565b610e1691906126aa565b610e20919061259a565b6004555050565b6000546001600160a01b03163314610e515760405162461bcd60e51b8152600401610afd906124cc565b600f93909355601091909155601155601255565b6000546001600160a01b03163314610e8f5760405162461bcd60e51b8152600401610afd906124cc565b601580546001600160a01b0319166001600160a01b0392909216919091179055565b6000610acd82600019610a66565b610ec833611455565b610ee45760405162461bcd60e51b8152600401610afd906124ec565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610f395760405162461bcd60e51b8152600401610afd906124cc565b6006805460ff1916911515919091179055565b6000610c6e3384846114a4565b6000546001600160a01b03163314610f835760405162461bcd60e51b8152600401610afd906124cc565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6000546001600160a01b03163314610fd45760405162461bcd60e51b8152600401610afd906124cc565b60005b82811015611043578160076000868685818110610ff657610ff6612711565b905060200201602081019061100b919061215a565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561103c816126e0565b9050610fd7565b50505050565b6000610acd611056610cd2565b601e546001600160a01b031660009081526002602081905260409091205461108a91611083915b90611819565b8590611819565b90611898565b6000546001600160a01b031633146110ba5760405162461bcd60e51b8152600401610afd906124cc565b82811461111b5760405162461bcd60e51b815260206004820152602960248201527f4c656e677468206f662061646472657373657320616e6420746f6b656e7320646044820152680dedce840dac2e8c6d60bb1b6064820152608401610afd565b60005b838110156111805761116f8686868481811061113c5761113c612711565b9050602002016020810190611151919061215a565b85858581811061116357611163612711565b905060200201356118da565b50611179816126e0565b905061111e565b505050505050565b61119133611455565b6111ad5760405162461bcd60e51b8152600401610afd906124ec565b47336108fc60646111be85856126aa565b6111c8919061259a565b6040518115909202916000818181858888f19350505050158015610b8c573d6000803e3d6000fd5b6111f933611455565b6112155760405162461bcd60e51b8152600401610afd906124ec565b600455565b6000546001600160a01b031633146112445760405162461bcd60e51b8152600401610afd906124cc565b6000546001600160a01b03828116911614156112965760405162461bcd60e51b815260206004820152601160248201527021b0b73a103932b6b7bb329037bbb732b960791b6044820152606401610afd565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b031633146112e15760405162461bcd60e51b8152600401610afd906124cc565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b6000546001600160a01b031633146113775760405162461bcd60e51b8152600401610afd906124cc565b80826113856009600a6125ff565b61139290620f42406126aa565b61139c91906126aa565b6113a6919061259a565b6005555050565b6113b633611455565b6113d25760405162461bcd60e51b8152600401610afd906124ec565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146114275760405162461bcd60e51b8152600401610afd906124cc565b601380546001600160a01b039384166001600160a01b03199182161790915560148054929093169116179055565b6001600160a01b031660009081526001602052604090205460ff1690565b600081848411156114975760405162461bcd60e51b8152600401610afd9190612477565b506000610c6a84866126c9565b601d5460009060ff16156114c4576114bd8484846118da565b9050610c6e565b6001600160a01b03841660009081526001602052604090205460ff1615801561150657506001600160a01b03831660009081526001602052604090205460ff16155b156115e257601a5460ff166115565760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81a5cc81b9bdd08195b98589b195960521b6044820152606401610afd565b60065460ff16156115e2576001600160a01b03841660009081526007602052604090205460ff161580156115a357506001600160a01b03831660009081526007602052604090205460ff16155b6115e25760405162461bcd60e51b815260206004820152601060248201526f15d85b1b195d081a5cc81b1bd8dad95960821b6044820152606401610afd565b6001600160a01b03841660009081526001602052604090205460ff1615801561161457506001600160a01b0383163014155b801561162b57506001600160a01b03831661dead14155b80156116455750601e546001600160a01b03848116911614155b15611747576005546001600160a01b0384166000908152600260205260409020546116709084612582565b11156116be5760405162461bcd60e51b815260206004820152601c60248201527f57616c6c657420686f6c6473206d6178696d756d20616c6c6f776564000000006044820152606401610afd565b600454821115806116e757506001600160a01b03841660009081526009602052604090205460ff165b6117475760405162461bcd60e51b815260206004820152602b60248201527f416d6f756e742067726561746572207468616e204d6178205472616e7361637460448201526a34b7b71020b6b7bab73a1760a91b6064820152608401610afd565b601e546001600160a01b038581169116148015906117685750601d5460ff16155b801561177b5750601a54610100900460ff165b80156117885750601c5482115b80156117a55750601b543060009081526002602052604090205410155b156117b2576117b26119c0565b6117bc8484611dbe565b156117cc576114bd848484611e05565b6114bd8484846118da565b6000610c6e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611473565b60008261182857506000610acd565b600061183483856126aa565b905082611841858361259a565b14610c6e5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610afd565b6000610c6e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061206c565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260029091529182205461192b918490611473565b6001600160a01b03808616600090815260026020526040808220939093559085168152205461195a908361209a565b6001600160a01b0380851660008181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119ae9086815260200190565b60405180910390a35060019392505050565b601d805460ff191660011790556040805160a081018252600a548152600b546020820152600c5491810191909152600d546060820152600e546080820152601654601754600091611a1091610b91565b611a1b578151611a1e565b60005b90506000611a44600261108a856060015161108a86601b5461181990919063ffffffff16565b90506000611a5d82601b546117d790919063ffffffff16565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611a9757611a97612711565b60200260200101906001600160a01b031690816001600160a01b031681525050601d60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611b0557600080fd5b505afa158015611b19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b3d9190612177565b81600181518110611b5057611b50612711565b6001600160a01b039283166020918202929092010152601d5460405163791ac94760e01b815247926101009092049091169063791ac94790611b9f908690600090879030904290600401612511565b600060405180830381600087803b158015611bb957600080fd5b505af1158015611bcd573d6000803e3d6000fd5b505050506000611be682476117d790919063ffffffff16565b90506000611c03611bf8886002611898565b60608a0151906117d7565b60135460208a01519192506001600160a01b0316906108fc90611c2d90849061108a908790611819565b6040518115909202916000818181858888f19350505050158015611c55573d6000803e3d6000fd5b5060145460408901516001600160a01b03909116906108fc90611c7f90849061108a908790611819565b6040518115909202916000818181858888f19350505050158015611ca7573d6000803e3d6000fd5b506000611cbb600261108a8481878d611819565b90508615611da957601d5460155460405163f305d71960e01b8152306004820152602481018a905260006044820181905260648201526001600160a01b0391821660848201524260a4820152610100909204169063f305d71990839060c4016060604051808303818588803b158015611d3357600080fd5b505af1158015611d47573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611d6c9190612417565b505060408051838152602081018a90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050601d805460ff1916905550505050505050565b6001600160a01b03821660009081526008602052604081205460ff1680611dfd57506001600160a01b03821660009081526008602052604090205460ff165b159392505050565b601e546000906001600160a01b0390811684821681149186161482811582611e3b5750601e546001600160a01b03878116911614155b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038b1660009081526002909152918220549293509091611e91918890611473565b6001600160a01b0389166000908152600260205260409020558215611f035743601854601954611ec19190612582565b1115611ede57611ed7606461108a886063611819565b9050611f5c565b601254600e54600f54600d54611ed7939261108a92909183919061107d908d90611819565b8315611f2e57601254600e54601054600d54611ed7939261108a92909183919061107d908d90611819565b8115611f5c57601254600e54601154600d54611f59939261108a92909183919061107d908d90611819565b90505b6000611f6887836117d7565b30600090815260026020526040902054909150611f85908361209a565b30600081815260026020526040908190209290925590516001600160a01b038b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611fd69086815260200190565b60405180910390a36001600160a01b038816600090815260026020526040902054612001908261209a565b6001600160a01b03808a1660008181526002602052604090819020939093559151908b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906120559085815260200190565b60405180910390a350600198975050505050505050565b6000818361208d5760405162461bcd60e51b8152600401610afd9190612477565b506000610c6a848661259a565b6000806120a78385612582565b905083811015610c6e5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610afd565b60008083601f84011261210b57600080fd5b50813567ffffffffffffffff81111561212357600080fd5b6020830191508360208260051b850101111561213e57600080fd5b9250929050565b8035801515811461215557600080fd5b919050565b60006020828403121561216c57600080fd5b8135610c6e81612727565b60006020828403121561218957600080fd5b8151610c6e81612727565b600080604083850312156121a757600080fd5b82356121b281612727565b915060208301356121c281612727565b809150509250929050565b6000806000606084860312156121e257600080fd5b83356121ed81612727565b925060208401356121fd81612727565b929592945050506040919091013590565b60008060008060006060868803121561222657600080fd5b853561223181612727565b9450602086013567ffffffffffffffff8082111561224e57600080fd5b61225a89838a016120f9565b9096509450604088013591508082111561227357600080fd5b50612280888289016120f9565b969995985093965092949392505050565b600080604083850312156122a457600080fd5b82356122af81612727565b91506122bd60208401612145565b90509250929050565b600080604083850312156122d957600080fd5b82356122e481612727565b946020939093013593505050565b60008060006040848603121561230757600080fd5b833567ffffffffffffffff81111561231e57600080fd5b61232a868287016120f9565b909450925061233d905060208501612145565b90509250925092565b60006020828403121561235857600080fd5b610c6e82612145565b6000806040838503121561237457600080fd5b6122e483612145565b60008060006060848603121561239257600080fd5b61239b84612145565b95602085013595506040909401359392505050565b6000602082840312156123c257600080fd5b5035919050565b600080604083850312156123dc57600080fd5b50508035926020909101359150565b60008060006060848603121561240057600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561242c57600080fd5b8351925060208401519150604084015190509250925092565b6000806000806080858703121561245b57600080fd5b5050823594602084013594506040840135936060013592509050565b600060208083528351808285015260005b818110156124a457858101830151858201604001528201612488565b818111156124b6576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156125615784516001600160a01b03168352938301939183019160010161253c565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612595576125956126fb565b500190565b6000826125b757634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156125f75781600019048211156125dd576125dd6126fb565b808516156125ea57918102915b93841c93908002906125c1565b509250929050565b6000610c6e60ff84168360008261261857506001610acd565b8161262557506000610acd565b816001811461263b576002811461264557612661565b6001915050610acd565b60ff841115612656576126566126fb565b50506001821b610acd565b5060208310610133831016604e8410600b8410161715612684575081810a610acd565b61268e83836125bc565b80600019048211156126a2576126a26126fb565b029392505050565b60008160001904831182151516156126c4576126c46126fb565b500290565b6000828210156126db576126db6126fb565b500390565b60006000198214156126f4576126f46126fb565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461273c57600080fd5b5056fea2646970667358221220cfdfa63fbf7f80ac1cd9588b615743827bd2f98cd95ecfd98990a7c47d0f914d64736f6c63430008070033

Deployed Bytecode Sourcemap

4410:14879:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4483:73;;;;;;;;;;;;4514:42;4483:73;;;;;-1:-1:-1;;;;;7028:32:1;;;7010:51;;6998:2;6983:18;4483:73:0;;;;;;;;6389:58;;;;;;;;;;;;;;;;;;;13416:25:1;;;13404:2;13389:18;6389:58:0;13270:177:1;7686:94:0;;;;;;;;;;-1:-1:-1;7767:5:0;;;;;;;;;;;-1:-1:-1;;;7767:5:0;;;;7686:94;;;;7767:5;7686:94;:::i;4911:42::-;;;;;;;;;;;;;;;;8211:248;;;;;;;;;;-1:-1:-1;8211:248:0;;;;;:::i;:::-;;:::i;:::-;;;8406:14:1;;8399:22;8381:41;;8369:2;8354:18;8211:248:0;8241:187:1;16106:408:0;;;;;;;;;;-1:-1:-1;16106:408:0;;;;;:::i;:::-;;:::i;:::-;;18647:182;;;;;;;;;;-1:-1:-1;18647:182:0;;;;;:::i;:::-;;:::i;7368:102::-;;;;;;;;;;;;;:::i;18070:206::-;;;;;;;;;;-1:-1:-1;18070:206:0;;;;;:::i;:::-;;:::i;8793:412::-;;;;;;;;;;-1:-1:-1;8793:412:0;;;;;:::i;:::-;;:::i;18837:254::-;;;;;;;;;;-1:-1:-1;18837:254:0;;;;;:::i;:::-;;:::i;18284:148::-;;;;;;;;;;;;;:::i;3077:103::-;;;;;;;;;;-1:-1:-1;3077:103:0;;;;;:::i;:::-;3132:4;3167:5;-1:-1:-1;;;;;3156:16:0;;;3167:5;;3156:16;;3077:103;7478:94;;;;;;;;;;-1:-1:-1;7478:94:0;;4672:1;15696:36:1;;15684:2;15669:18;7478:94:0;15554:184:1;19099:185:0;;;;;;;;;;-1:-1:-1;19099:185:0;;;;;:::i;:::-;;:::i;17764:298::-;;;;;;;;;;-1:-1:-1;17764:298:0;;;;;:::i;:::-;;:::i;15441:140::-;;;;;;;;;;-1:-1:-1;15441:140:0;;;;;:::i;:::-;;:::i;6454:68::-;;;;;;;;;;;;;;;;5899:212;;;;;;;;;;-1:-1:-1;5899:212:0;;;;;;-1:-1:-1;;;;;5899:212:0;;;;;;;;;;;-1:-1:-1;;;;;7550:15:1;;;7532:34;;7602:15;;;;7597:2;7582:18;;7575:43;7467:18;5899:212:0;7288:336:1;15697:401:0;;;;;;;;;;-1:-1:-1;15697:401:0;;;;;:::i;:::-;;:::i;5002:40::-;;;;;;;;;;-1:-1:-1;5002:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16745:173;;;;;;;;;;-1:-1:-1;16745:173:0;;;;;:::i;:::-;;:::i;8467:122::-;;;;;;;;;;-1:-1:-1;8467:122:0;;;;;:::i;:::-;;:::i;17477:120::-;;;;;;;;;;-1:-1:-1;17477:120:0;;;;;:::i;:::-;;:::i;6352:30::-;;;;;;;;;;-1:-1:-1;6352:30:0;;;;;;;;;;;7888:119;;;;;;;;;;-1:-1:-1;7888:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;7981:18:0;7954:7;7981:18;;;:9;:18;;;;;;;7888:119;4862:42;;;;;;;;;;;;;;;;17139:100;;;;;;;;;;-1:-1:-1;17139:100:0;;;;;:::i;:::-;;:::i;7788:92::-;;;;;;;;;;-1:-1:-1;7840:7:0;7867:5;-1:-1:-1;;;;;7867:5:0;7788:92;;4962:33;;;;;;;;;;-1:-1:-1;4962:33:0;;;;;;;;6676:19;;;;;;;;;;-1:-1:-1;6676:19:0;;;;-1:-1:-1;;;;;6676:19:0;;;8597:188;;;;;;;;;;-1:-1:-1;8597:188:0;;;;;:::i;:::-;;:::i;2817:94::-;;;;;;;;;;-1:-1:-1;2817:94:0;;;;;:::i;:::-;;:::i;6120:36::-;;;;;;;;;;-1:-1:-1;6120:36:0;;;;-1:-1:-1;;;;;6120:36:0;;;5685:205;;;;;;;;;;-1:-1:-1;5685:205:0;;;;;;;;;;;;;;;;;;;14921:25:1;;;14977:2;14962:18;;14955:34;;;;15005:18;;;14998:34;15063:2;15048:18;;15041:34;14908:3;14893:19;5685:205:0;14690:391:1;17247:222:0;;;;;;;;;;-1:-1:-1;17247:222:0;;;;;:::i;:::-;;:::i;6283:30::-;;;;;;;;;;;;;;;;5570:106;;;;;;;;;;-1:-1:-1;5570:106:0;;;;;;;;;;;;;;;;;;;;;;15345:25:1;;;15401:2;15386:18;;15379:34;;;;15429:18;;;15422:34;;;;15487:2;15472:18;;15465:34;15530:3;15515:19;;15508:35;15332:3;15317:19;5570:106:0;15086:463:1;18440:199:0;;;;;;;;;;-1:-1:-1;18440:199:0;;;;;:::i;:::-;;:::i;8015:188::-;;;;;;;;;;-1:-1:-1;8015:188:0;;;;;:::i;:::-;-1:-1:-1;;;;;8167:19:0;;;8135:7;8167:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;8015:188;14841:417;;;;;;;;;;-1:-1:-1;14841:417:0;;;;;:::i;:::-;;:::i;16930:201::-;;;;;;;;;;-1:-1:-1;16930:201:0;;;;;:::i;:::-;;:::i;15589:100::-;;;;;;;;;;-1:-1:-1;15589:100:0;;;;;:::i;:::-;;:::i;2919:150::-;;;;;;;;;;-1:-1:-1;2919:150:0;;;;;:::i;:::-;;:::i;3303:173::-;;;;;;;;;;-1:-1:-1;3303:173:0;;;;;:::i;:::-;;:::i;15266:167::-;;;;;;;;;;-1:-1:-1;15266:167:0;;;;;:::i;:::-;;:::i;17605:151::-;;;;;;;;;;-1:-1:-1;17605:151:0;;;;;:::i;:::-;;:::i;6646:23::-;;;;;;;;;;-1:-1:-1;6646:23:0;;;;;;;-1:-1:-1;;;;;6646:23:0;;;6247:29;;;;;;;;;;;;;;;;16522:215;;;;;;;;;;-1:-1:-1;16522:215:0;;;;;:::i;:::-;;:::i;3188:107::-;;;;;;;;;;-1:-1:-1;3188:107:0;;;;;:::i;:::-;;:::i;6320:23::-;;;;;;;;;;-1:-1:-1;6320:23:0;;;;;;;;8211:248;8347:10;8313:4;8335:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;8335:32:0;;;;;;;;;;:41;;;8392:37;8313:4;;8335:32;;8392:37;;;;8370:6;13416:25:1;;13404:2;13389:18;;13270:177;8392:37:0;;;;;;;;-1:-1:-1;8447:4:0;8211:248;;;;;:::o;16106:408::-;3132:4;3167:5;-1:-1:-1;;;;;3167:5:0;2658:10;3156:16;2642:38;;;;-1:-1:-1;;;2642:38:0;;;;;;;:::i;:::-;;;;;;;;;16243:5:::1;:27:::0;;;16281:15;:27;;;16319:9;:15;;;16331:3;16359:21:::1;16299:9:::0;16261;16359:21:::1;:::i;:::-;:27;;;;:::i;:::-;16345:11:::0;:41;16433:13;;:17:::1;::::0;16449:1:::1;::::0;16433:17:::1;:::i;:::-;16419:11:::0;;:31:::1;16397:109;;;::::0;-1:-1:-1;;;16397:109:0;;9462:2:1;16397:109:0::1;::::0;::::1;9444:21:1::0;9501:2;9481:18;;;9474:30;9540;9520:18;;;9513:58;9588:18;;16397:109:0::1;9260:352:1::0;16397:109:0::1;16106:408:::0;;;:::o;18647:182::-;18754:4;18815:6;18783:29;18803:8;18783:19;:29::i;:::-;:38;;18647:182;-1:-1:-1;;;18647:182:0:o;7368:102::-;7423:7;4724:13;4672:1;4724:2;:13;:::i;:::-;4712:25;;:9;:25;:::i;:::-;7443:19;;7368:102;:::o;18070:206::-;2749:24;2762:10;2749:12;:24::i;:::-;2741:48;;;;-1:-1:-1;;;2741:48:0;;;;;;;:::i;:::-;18191:15:::1;:25:::0;;;;18227:26:::1;:41:::0;18070:206::o;8793:412::-;-1:-1:-1;;;;;8967:19:0;;8927:4;8967:19;;;:11;:19;;;;;;;;8987:10;8967:31;;;;;;;;-1:-1:-1;;9013:33:0;;9009:131;;9078:50;;;;;;;;;;;;-1:-1:-1;;;9078:50:0;;;;;;:12;;9095:6;;9078:16;:50::i;:::-;9063:65;;9009:131;9157:40;9171:6;9179:9;9190:6;9157:13;:40::i;:::-;9150:47;;;8793:412;;;;;;:::o;18837:254::-;3132:4;3167:5;-1:-1:-1;;;;;3167:5:0;2658:10;3156:16;2642:38;;;;-1:-1:-1;;;2642:38:0;;;;;;;:::i;:::-;18923:11:::1;:21:::0;;-1:-1:-1;;18923:21:0::1;::::0;::::1;;::::0;;::::1;::::0;;;::::1;18959:11:::0;:31;::::1;;;-1:-1:-1::0;18974:11:0::1;::::0;:16;18959:31:::1;18955:129;;;19021:12;19007:11;:26:::0;19048:10:::1;:24:::0;;;18955:129:::1;18837:254:::0;;:::o;18284:148::-;7981:9;:18;;;;4514:42;18337:7;7981:18;;;;;18337:7;;18364:60;;:33;;4724:13;4672:1;4724:2;:13;:::i;:::-;4712:25;;:9;:25;:::i;:::-;18364:16;;:33::i;19099:185::-;3132:4;3167:5;-1:-1:-1;;;;;3167:5:0;2658:10;3156:16;2642:38;;;;-1:-1:-1;;;2642:38:0;;;;;;;:::i;:::-;19215:11:::1;:26:::0;;;;19252:10:::1;:24:::0;19099:185::o;17764:298::-;2749:24;2762:10;2749:12;:24::i;:::-;2741:48;;;;-1:-1:-1;;;2741:48:0;;;;;;;:::i;:::-;17928:11:::1;:22:::0;;;::::1;;;;-1:-1:-1::0;;17928:22:0;;::::1;::::0;;;::::1;::::0;;;17961:13:::1;:30:::0;18002:24:::1;:52:::0;17764:298::o;15441:140::-;3132:4;3167:5;-1:-1:-1;;;;;3167:5:0;2658:10;3156:16;2642:38;;;;-1:-1:-1;;;2642:38:0;;;;;;;:::i;:::-;15569:4;15558:7;4724:13:::1;4672:1;4724:2;:13;:::i;:::-;4712:25;::::0;:9:::1;:25;:::i;:::-;15543:22;;;;:::i;:::-;15542:31;;;;:::i;:::-;15527:12;:46:::0;-1:-1:-1;;15441:140:0:o;15697:401::-;3132:4;3167:5;-1:-1:-1;;;;;3167:5:0;2658:10;3156:16;2642:38;;;;-1:-1:-1;;;2642:38:0;;;;;;;:::i;:::-;15889:12:::1;:42:::0;;;;15942:27;:44;;;;15997:31;:52;16060:20;:30;15697:401::o;16745:173::-;3132:4;3167:5;-1:-1:-1;;;;;3167:5:0;2658:10;3156:16;2642:38;;;;-1:-1:-1;;;2642:38:0;;;;;;;:::i;:::-;16864:21:::1;:46:::0;;-1:-1:-1;;;;;;16864:46:0::1;-1:-1:-1::0;;;;;16864:46:0;;;::::1;::::0;;;::::1;::::0;;16745:173::o;8467:122::-;8522:4;8546:35;8554:7;-1:-1:-1;;8546:7:0;:35::i;17477:120::-;2749:24;2762:10;2749:12;:24::i;:::-;2741:48;;;;-1:-1:-1;;;2741:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17561:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;17561:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17477:120::o;17139:100::-;3132:4;3167:5;-1:-1:-1;;;;;3167:5:0;2658:10;3156:16;2642:38;;;;-1:-1:-1;;;2642:38:0;;;;;;;:::i;:::-;17207:14:::1;:24:::0;;-1:-1:-1;;17207:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17139:100::o;8597:188::-;8704:4;8733:44;8747:10;8759:9;8770:6;8733:13;:44::i;2817:94::-;3132:4;3167:5;-1:-1:-1;;;;;3167:5:0;2658:10;3156:16;2642:38;;;;-1:-1:-1;;;2642:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2877:19:0::1;;::::0;;;2899:4:::1;2877:19;::::0;;;;;;;:26;;-1:-1:-1;;2877:26:0::1;::::0;;::::1;::::0;;2817:94::o;17247:222::-;3132:4;3167:5;-1:-1:-1;;;;;3167:5:0;2658:10;3156:16;2642:38;;;;-1:-1:-1;;;2642:38:0;;;;;;;:::i;:::-;17366:9:::1;17361:101;17377:20:::0;;::::1;17361:101;;;17444:6;17419:8;:22;17428:9;;17438:1;17428:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17419:22:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;17419:22:0;:31;;-1:-1:-1;;17419:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17399:3:::1;::::0;::::1;:::i;:::-;;;17361:101;;;;17247:222:::0;;;:::o;18440:199::-;18535:7;18567:64;18608:22;:20;:22::i;:::-;18590:4;;-1:-1:-1;;;;;18590:4:0;7954:7;7981:18;;;18600:1;7981:18;;;;;;;;;18567:36;;18580:22;;:15;:19;;:22::i;:::-;18567:8;;:12;:36::i;:::-;:40;;:64::i;14841:417::-;3132:4;3167:5;-1:-1:-1;;;;;3167:5:0;2658:10;3156:16;2642:38;;;;-1:-1:-1;;;2642:38:0;;;;;;;:::i;:::-;15015:33;;::::1;14993:124;;;::::0;-1:-1:-1;;;14993:124:0;;11697:2:1;14993:124:0::1;::::0;::::1;11679:21:1::0;11736:2;11716:18;;;11709:30;11775:34;11755:18;;;11748:62;-1:-1:-1;;;11826:18:1;;;11819:39;11875:19;;14993:124:0::1;11495:405:1::0;14993:124:0::1;15135:9;15130:121;15146:20:::0;;::::1;15130:121;;;15188:51;15209:4;15215:9;;15225:1;15215:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;15229:6;;15236:1;15229:9;;;;;;;:::i;:::-;;;;;;;15188:20;:51::i;:::-;-1:-1:-1::0;15168:3:0::1;::::0;::::1;:::i;:::-;;;15130:121;;;;14841:417:::0;;;;;:::o;16930:201::-;2749:24;2762:10;2749:12;:24::i;:::-;2741:48;;;;-1:-1:-1;;;2741:48:0;;;;;;;:::i;:::-;17025:21:::1;17065:10;17057:66;17119:3;17087:28;17099:16:::0;17025:21;17087:28:::1;:::i;:::-;17086:36;;;;:::i;:::-;17057:66;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;15589:100:::0;2749:24;2762:10;2749:12;:24::i;:::-;2741:48;;;;-1:-1:-1;;;2741:48:0;;;;;;;:::i;:::-;15660:12:::1;:21:::0;15589:100::o;2919:150::-;3132:4;3167:5;-1:-1:-1;;;;;3167:5:0;2658:10;3156:16;2642:38;;;;-1:-1:-1;;;2642:38:0;;;;;;;:::i;:::-;2996:5:::1;::::0;-1:-1:-1;;;;;2989:12:0;;::::1;2996:5:::0;::::1;2989:12;;2981:42;;;::::0;-1:-1:-1;;;2981:42:0;;12107:2:1;2981:42:0::1;::::0;::::1;12089:21:1::0;12146:2;12126:18;;;12119:30;-1:-1:-1;;;12165:18:1;;;12158:47;12222:18;;2981:42:0::1;11905:341:1::0;2981:42:0::1;-1:-1:-1::0;;;;;3034:19:0::1;3056:5;3034:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;3034:27:0::1;::::0;;2919:150::o;3303:173::-;3132:4;3167:5;-1:-1:-1;;;;;3167:5:0;2658:10;3156:16;2642:38;;;;-1:-1:-1;;;2642:38:0;;;;;;;:::i;:::-;3379:5:::1;:11:::0;;-1:-1:-1;;;;;;3379:11:0::1;-1:-1:-1::0;;;;;3379:11:0;::::1;::::0;;::::1;::::0;;3401:19;;;-1:-1:-1;3401:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;3401:26:0::1;::::0;;::::1;::::0;;;3443:25;;7010:51:1;;;3443:25:0::1;::::0;6983:18:1;3443:25:0::1;;;;;;;3303:173:::0;:::o;15266:167::-;3132:4;3167:5;-1:-1:-1;;;;;3167:5:0;2658:10;3156:16;2642:38;;;;-1:-1:-1;;;2642:38:0;;;;;;;:::i;:::-;15421:4;15410:7;4724:13:::1;4672:1;4724:2;:13;:::i;:::-;4712:25;::::0;:9:::1;:25;:::i;:::-;15395:22;;;;:::i;:::-;15394:31;;;;:::i;:::-;15379:12;:46:::0;-1:-1:-1;;15266:167:0:o;17605:151::-;2749:24;2762:10;2749:12;:24::i;:::-;2741:48;;;;-1:-1:-1;;;2741:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17716:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;17716:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17605:151::o;16522:215::-;3132:4;3167:5;-1:-1:-1;;;;;3167:5:0;2658:10;3156:16;2642:38;;;;-1:-1:-1;;;2642:38:0;;;;;;;:::i;:::-;16646:11:::1;:42:::0;;-1:-1:-1;;;;;16646:42:0;;::::1;-1:-1:-1::0;;;;;;16646:42:0;;::::1;;::::0;;;16699:15;:30;;;;;::::1;::::0;::::1;;::::0;;16522:215::o;3188:107::-;-1:-1:-1;;;;;3268:19:0;3244:4;3268:19;;;:14;:19;;;;;;;;;3188:107::o;475:226::-;595:7;631:12;623:6;;;;615:29;;;;-1:-1:-1;;;615:29:0;;;;;;;;:::i;:::-;-1:-1:-1;655:9:0;667:5;671:1;667;:5;:::i;9213:1579::-;9360:6;;9339:4;;9360:6;;9356:93;;;9390:47;9411:6;9419:9;9430:6;9390:20;:47::i;:::-;9383:54;;;;9356:93;-1:-1:-1;;;;;9466:22:0;;;;;;:14;:22;;;;;;;;9465:23;:53;;;;-1:-1:-1;;;;;;9493:25:0;;;;;;:14;:25;;;;;;;;9492:26;9465:53;9461:334;;;9543:11;;;;9535:46;;;;-1:-1:-1;;;9535:46:0;;10175:2:1;9535:46:0;;;10157:21:1;10214:2;10194:18;;;10187:30;-1:-1:-1;;;10233:18:1;;;10226:52;10295:18;;9535:46:0;9973:346:1;9535:46:0;9602:14;;;;9598:186;;;-1:-1:-1;;;;;9668:16:0;;;;;;:8;:16;;;;;;;;9667:17;:41;;;;-1:-1:-1;;;;;;9689:19:0;;;;;;:8;:19;;;;;;;;9688:20;9667:41;9637:131;;;;-1:-1:-1;;;9637:131:0;;13127:2:1;9637:131:0;;;13109:21:1;13166:2;13146:18;;;13139:30;-1:-1:-1;;;13185:18:1;;;13178:46;13241:18;;9637:131:0;12925:340:1;9637:131:0;-1:-1:-1;;;;;9826:22:0;;;;;;:14;:22;;;;;;;;9825:23;:66;;;;-1:-1:-1;;;;;;9865:26:0;;9886:4;9865:26;;9825:66;:109;;;;-1:-1:-1;;;;;;9908:26:0;;4514:42;9908:26;;9825:109;:143;;;;-1:-1:-1;9964:4:0;;-1:-1:-1;;;;;9951:17:0;;;9964:4;;9951:17;;9825:143;9807:506;;;10056:12;;-1:-1:-1;;;;;7981:18:0;;7954:7;7981:18;;;:9;:18;;;;;;10022:29;;:6;:29;:::i;:::-;10021:47;;9995:137;;;;-1:-1:-1;;;9995:137:0;;10938:2:1;9995:137:0;;;10920:21:1;10977:2;10957:18;;;10950:30;11016;10996:18;;;10989:58;11064:18;;9995:137:0;10736:352:1;9995:137:0;10183:12;;10173:6;:22;;:49;;;-1:-1:-1;;;;;;10199:23:0;;;;;;:15;:23;;;;;;;;10173:49;10147:154;;;;-1:-1:-1;;;10147:154:0;;10526:2:1;10147:154:0;;;10508:21:1;10565:2;10545:18;;;10538:30;10604:34;10584:18;;;10577:62;-1:-1:-1;;;10655:18:1;;;10648:41;10706:19;;10147:154:0;10324:407:1;10147:154:0;10353:4;;-1:-1:-1;;;;;10343:14:0;;;10353:4;;10343:14;;;;:38;;-1:-1:-1;10375:6:0;;;;10374:7;10343:38;:66;;;;-1:-1:-1;10398:11:0;;;;;;;10343:66;:116;;;;;10435:24;;10426:6;:33;10343:116;:174;;;;-1:-1:-1;10504:13:0;;10494:4;10476:24;;;;:9;:24;;;;;;:41;;10343:174;10325:245;;;10544:14;:12;:14::i;:::-;10586:32;10600:6;10608:9;10586:13;:32::i;:::-;10582:203;;;10642:44;10660:6;10668:9;10679:6;10642:17;:44::i;10582:203::-;10726:47;10747:6;10755:9;10766:6;10726:20;:47::i;331:136::-;389:7;416:43;420:1;423;416:43;;;;;;;;;;;;;;;;;:3;:43::i;709:250::-;767:7;791:6;787:47;;-1:-1:-1;821:1:0;814:8;;787:47;846:9;858:5;862:1;858;:5;:::i;:::-;846:17;-1:-1:-1;891:1:0;882:5;886:1;846:17;882:5;:::i;:::-;:10;874:56;;;;-1:-1:-1;;;874:56:0;;11295:2:1;874:56:0;;;11277:21:1;11334:2;11314:18;;;11307:30;11373:34;11353:18;;;11346:62;-1:-1:-1;;;11424:18:1;;;11417:31;11465:19;;874:56:0;11093:397:1;967:132:0;1025:7;1052:39;1056:1;1059;1052:39;;;;;;;;;;;;;;;;;:3;:39::i;11001:407::-;11171:90;;;;;;;;;;;-1:-1:-1;;;11171:90:0;;;;;;;;-1:-1:-1;;;;;11171:17:0;;11134:4;11171:17;;;:9;:17;;;;;;;:90;;11207:6;;11171:21;:90::i;:::-;-1:-1:-1;;;;;11151:17:0;;;;;;;:9;:17;;;;;;:110;;;;11295:20;;;;;;;:32;;11320:6;11295:24;:32::i;:::-;-1:-1:-1;;;;;11272:20:0;;;;;;;:9;:20;;;;;;;:55;;;;11343:35;;;;;;;;;;11371:6;13416:25:1;;13404:2;13389:18;;13270:177;11343:35:0;;;;;;;;-1:-1:-1;11396:4:0;11001:407;;;;;:::o;13110:1723::-;6580:6;:13;;-1:-1:-1;;6580:13:0;6589:4;6580:13;;;13163:29:::1;::::0;;::::1;::::0;::::1;::::0;;13187:5:::1;13163:29:::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;13265:15:::1;::::0;13295:26:::1;::::0;6580:6;;13235:97:::1;::::0;:15:::1;:97::i;:::-;:144;;13365:14:::0;;13235:144:::1;;;13348:1;13235:144;13205:174;;13390:23;13416:103;13517:1;13416:82;13487:4;:10;;;13416:52;13448:19;13416:13;;:31;;:52;;;;:::i;:103::-;13390:129;;13530:20;13553:34;13571:15;13553:13;;:17;;:34;;;;:::i;:::-;13624:16;::::0;;13638:1:::1;13624:16:::0;;;;;::::1;::::0;;13530:57;;-1:-1:-1;13600:21:0::1;::::0;13624:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;13624:16:0::1;13600:40;;13669:4;13651;13656:1;13651:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;13651:23:0::1;;;-1:-1:-1::0;;;;;13651:23:0::1;;;::::0;::::1;13695:6;;;;;;;;;-1:-1:-1::0;;;;;13695:6:0::1;-1:-1:-1::0;;;;;13695:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13685:4;13690:1;13685:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13685:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;13782:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;13782:188:0;;13748:21:::1;::::0;13782:6:::1;::::0;;::::1;::::0;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;13854:12;;13721:24:::1;::::0;13897:4;;13924::::1;::::0;13944:15:::1;::::0;13782:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13983:17;14003:43;14029:16;14003:21;:25;;:43;;;;:::i;:::-;13983:63:::0;-1:-1:-1;14059:17:0::1;14079:44;14096:26;:19:::0;14120:1:::1;14096:23;:26::i;:::-;14080:10;::::0;::::1;::::0;;14079:16:::1;:44::i;:::-;14136:11;:21:::0;14195:14:::1;::::0;::::1;::::0;14059:64;;-1:-1:-1;;;;;;14136:21:0::1;::::0;:100:::1;::::0;14181:44:::1;::::0;14059:64;;14181:29:::1;::::0;:9;;:13:::1;:29::i;:44::-;14136:100;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;14247:15:0;;14286:8:::1;::::0;::::1;::::0;-1:-1:-1;;;;;14247:15:0;;::::1;::::0;:64:::1;::::0;14272:38:::1;::::0;14300:9;;14272:23:::1;::::0;:9;;:13:::1;:23::i;:38::-;14247:64;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;14324:26:0::1;14353:98;14449:1;14353:77;14420:9:::0;14353:77;:9;14381:19;14353:27:::1;:48::i;:98::-;14324:127:::0;-1:-1:-1;14466:19:0;;14462:364:::1;;14502:6;::::0;14676:21:::1;::::0;14502:244:::1;::::0;-1:-1:-1;;;14502:244:0;;14578:4:::1;14502:244;::::0;::::1;7970:34:1::0;8020:18;;;8013:34;;;14636:1:0::1;8063:18:1::0;;;8056:34;;;8106:18;;;8099:34;-1:-1:-1;;;;;14676:21:0;;::::1;8149:19:1::0;;;8142:44;14716:15:0::1;8202:19:1::0;;;8195:35;14502:6:0::1;::::0;;::::1;;::::0;:22:::1;::::0;14532:18;;7904:19:1;;14502:244:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;14766:48:0::1;::::0;;14611:25:1;;;14667:2;14652:18;;14645:34;;;14766:48:0::1;::::0;-1:-1:-1;14584:18:1;14766:48:0::1;;;;;;;14462:364;-1:-1:-1::0;;6616:6:0;:14;;-1:-1:-1;;6616:14:0;;;-1:-1:-1;;;;;;;13110:1723:0:o;10800:193::-;-1:-1:-1;;;;;10939:19:0;;10908:4;10939:19;;;:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;10962:22:0;;;;;;:11;:22;;;;;;;;10939:45;10937:48;;10800:193;-1:-1:-1;;;10800:193:0:o;11416:1686::-;11591:4;;11546;;-1:-1:-1;;;;;11591:4:0;;;11578:17;;;;;;11621:14;;;11546:4;11666:14;;11621;11666:35;;-1:-1:-1;11697:4:0;;-1:-1:-1;;;;;11684:17:0;;;11697:4;;11684:17;;11666:35;11763:90;;;;;;;;;;;-1:-1:-1;;;11763:90:0;;;;;;;;-1:-1:-1;;;;;11763:17:0;;11713;11763;;;:9;:17;;;;;;;11647:55;;-1:-1:-1;11713:17:0;;11763:90;;11799:6;;11763:21;:90::i;:::-;-1:-1:-1;;;;;11743:17:0;;;;;;:9;:17;;;;;:110;11866:871;;;;11925:12;11911:10;;11897:11;;:24;;;;:::i;:::-;11896:41;11892:362;;;11970:23;11989:3;11970:14;:6;11981:2;11970:10;:14::i;:23::-;11958:35;;11866:871;;11892:362;12213:20;;12172:13;;12213:12;12118:26;12079:11;;12046:188;;12213:20;12046:140;;12172:13;;12046:140;;12118:26;12046:45;;:6;;:32;:45::i;11866:871::-;12279:6;12275:462;;;12466:20;;12429:13;;12378:27;;12343:11;;12314:173;;12466:20;12314:129;;12429:13;;12314:129;;12378:27;12314:41;;:6;;:28;:41::i;12275:462::-;12509:10;12505:232;;;12704:20;;12667:13;;12612:31;;12577:11;;12548:177;;12704:20;12548:133;;12667:13;;12548:133;;12612:31;12548:41;;:6;;:28;:41::i;:177::-;12536:189;;12505:232;12749:23;12775:21;:6;12786:9;12775:10;:21::i;:::-;12854:4;12836:24;;;;:9;:24;;;;;;12749:47;;-1:-1:-1;12836:39:0;;12865:9;12836:28;:39::i;:::-;12827:4;12809:24;;;;:9;:24;;;;;;;:66;;;;12891:42;;-1:-1:-1;;;;;12891:42:0;;;;;;;12923:9;13416:25:1;;13404:2;13389:18;;13270:177;12891:42:0;;;;;;;;-1:-1:-1;;;;;12969:20:0;;;;;;:9;:20;;;;;;:41;;12994:15;12969:24;:41::i;:::-;-1:-1:-1;;;;;12946:20:0;;;;;;;:9;:20;;;;;;;:64;;;;13026:44;;;;;;;;;;13054:15;13416:25:1;;13404:2;13389:18;;13270:177;13026:44:0;;;;;;;;-1:-1:-1;13090:4:0;;11416:1686;-1:-1:-1;;;;;;;;11416:1686:0:o;1107:223::-;1227:7;1262:12;1255:5;1247:28;;;;-1:-1:-1;;;1247:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1286:9:0;1298:5;1302:1;1298;:5;:::i;142:181::-;200:7;;232:5;236:1;232;:5;:::i;:::-;220:17;;261:1;256;:6;;248:46;;;;-1:-1:-1;;;248:46:0;;9819:2:1;248:46:0;;;9801:21:1;9858:2;9838:18;;;9831:30;9897:29;9877:18;;;9870:57;9944:18;;248:46:0;9617:351:1;14:367;77:8;87:6;141:3;134:4;126:6;122:17;118:27;108:55;;159:1;156;149:12;108:55;-1:-1:-1;182:20:1;;225:18;214:30;;211:50;;;257:1;254;247:12;211:50;294:4;286:6;282:17;270:29;;354:3;347:4;337:6;334:1;330:14;322:6;318:27;314:38;311:47;308:67;;;371:1;368;361:12;308:67;14:367;;;;;:::o;386:160::-;451:20;;507:13;;500:21;490:32;;480:60;;536:1;533;526:12;480:60;386:160;;;:::o;551:247::-;610:6;663:2;651:9;642:7;638:23;634:32;631:52;;;679:1;676;669:12;631:52;718:9;705:23;737:31;762:5;737:31;:::i;803:251::-;873:6;926:2;914:9;905:7;901:23;897:32;894:52;;;942:1;939;932:12;894:52;974:9;968:16;993:31;1018:5;993:31;:::i;1319:404::-;1403:6;1411;1464:2;1452:9;1443:7;1439:23;1435:32;1432:52;;;1480:1;1477;1470:12;1432:52;1519:9;1506:23;1538:31;1563:5;1538:31;:::i;:::-;1588:5;-1:-1:-1;1645:2:1;1630:18;;1617:32;1658:33;1617:32;1658:33;:::i;:::-;1710:7;1700:17;;;1319:404;;;;;:::o;2121:456::-;2198:6;2206;2214;2267:2;2255:9;2246:7;2242:23;2238:32;2235:52;;;2283:1;2280;2273:12;2235:52;2322:9;2309:23;2341:31;2366:5;2341:31;:::i;:::-;2391:5;-1:-1:-1;2448:2:1;2433:18;;2420:32;2461:33;2420:32;2461:33;:::i;:::-;2121:456;;2513:7;;-1:-1:-1;;;2567:2:1;2552:18;;;;2539:32;;2121:456::o;2582:908::-;2713:6;2721;2729;2737;2745;2798:2;2786:9;2777:7;2773:23;2769:32;2766:52;;;2814:1;2811;2804:12;2766:52;2853:9;2840:23;2872:31;2897:5;2872:31;:::i;:::-;2922:5;-1:-1:-1;2978:2:1;2963:18;;2950:32;3001:18;3031:14;;;3028:34;;;3058:1;3055;3048:12;3028:34;3097:70;3159:7;3150:6;3139:9;3135:22;3097:70;:::i;:::-;3186:8;;-1:-1:-1;3071:96:1;-1:-1:-1;3274:2:1;3259:18;;3246:32;;-1:-1:-1;3290:16:1;;;3287:36;;;3319:1;3316;3309:12;3287:36;;3358:72;3422:7;3411:8;3400:9;3396:24;3358:72;:::i;:::-;2582:908;;;;-1:-1:-1;2582:908:1;;-1:-1:-1;3449:8:1;;3332:98;2582:908;-1:-1:-1;;;2582:908:1:o;3495:315::-;3560:6;3568;3621:2;3609:9;3600:7;3596:23;3592:32;3589:52;;;3637:1;3634;3627:12;3589:52;3676:9;3663:23;3695:31;3720:5;3695:31;:::i;:::-;3745:5;-1:-1:-1;3769:35:1;3800:2;3785:18;;3769:35;:::i;:::-;3759:45;;3495:315;;;;;:::o;3815:::-;3883:6;3891;3944:2;3932:9;3923:7;3919:23;3915:32;3912:52;;;3960:1;3957;3950:12;3912:52;3999:9;3986:23;4018:31;4043:5;4018:31;:::i;:::-;4068:5;4120:2;4105:18;;;;4092:32;;-1:-1:-1;;;3815:315:1:o;4135:505::-;4227:6;4235;4243;4296:2;4284:9;4275:7;4271:23;4267:32;4264:52;;;4312:1;4309;4302:12;4264:52;4352:9;4339:23;4385:18;4377:6;4374:30;4371:50;;;4417:1;4414;4407:12;4371:50;4456:70;4518:7;4509:6;4498:9;4494:22;4456:70;:::i;:::-;4545:8;;-1:-1:-1;4430:96:1;-1:-1:-1;4599:35:1;;-1:-1:-1;4630:2:1;4615:18;;4599:35;:::i;:::-;4589:45;;4135:505;;;;;:::o;4645:180::-;4701:6;4754:2;4742:9;4733:7;4729:23;4725:32;4722:52;;;4770:1;4767;4760:12;4722:52;4793:26;4809:9;4793:26;:::i;4830:248::-;4895:6;4903;4956:2;4944:9;4935:7;4931:23;4927:32;4924:52;;;4972:1;4969;4962:12;4924:52;4995:26;5011:9;4995:26;:::i;5083:316::-;5157:6;5165;5173;5226:2;5214:9;5205:7;5201:23;5197:32;5194:52;;;5242:1;5239;5232:12;5194:52;5265:26;5281:9;5265:26;:::i;:::-;5255:36;5338:2;5323:18;;5310:32;;-1:-1:-1;5389:2:1;5374:18;;;5361:32;;5083:316;-1:-1:-1;;;5083:316:1:o;5404:180::-;5463:6;5516:2;5504:9;5495:7;5491:23;5487:32;5484:52;;;5532:1;5529;5522:12;5484:52;-1:-1:-1;5555:23:1;;5404:180;-1:-1:-1;5404:180:1:o;5589:248::-;5657:6;5665;5718:2;5706:9;5697:7;5693:23;5689:32;5686:52;;;5734:1;5731;5724:12;5686:52;-1:-1:-1;;5757:23:1;;;5827:2;5812:18;;;5799:32;;-1:-1:-1;5589:248:1:o;5842:316::-;5919:6;5927;5935;5988:2;5976:9;5967:7;5963:23;5959:32;5956:52;;;6004:1;6001;5994:12;5956:52;-1:-1:-1;;6027:23:1;;;6097:2;6082:18;;6069:32;;-1:-1:-1;6148:2:1;6133:18;;;6120:32;;5842:316;-1:-1:-1;5842:316:1:o;6163:306::-;6251:6;6259;6267;6320:2;6308:9;6299:7;6295:23;6291:32;6288:52;;;6336:1;6333;6326:12;6288:52;6365:9;6359:16;6349:26;;6415:2;6404:9;6400:18;6394:25;6384:35;;6459:2;6448:9;6444:18;6438:25;6428:35;;6163:306;;;;;:::o;6474:385::-;6560:6;6568;6576;6584;6637:3;6625:9;6616:7;6612:23;6608:33;6605:53;;;6654:1;6651;6644:12;6605:53;-1:-1:-1;;6677:23:1;;;6747:2;6732:18;;6719:32;;-1:-1:-1;6798:2:1;6783:18;;6770:32;;6849:2;6834:18;6821:32;;-1:-1:-1;6474:385:1;-1:-1:-1;6474:385:1:o;8658:597::-;8770:4;8799:2;8828;8817:9;8810:21;8860:6;8854:13;8903:6;8898:2;8887:9;8883:18;8876:34;8928:1;8938:140;8952:6;8949:1;8946:13;8938:140;;;9047:14;;;9043:23;;9037:30;9013:17;;;9032:2;9009:26;9002:66;8967:10;;8938:140;;;9096:6;9093:1;9090:13;9087:91;;;9166:1;9161:2;9152:6;9141:9;9137:22;9133:31;9126:42;9087:91;-1:-1:-1;9239:2:1;9218:15;-1:-1:-1;;9214:29:1;9199:45;;;;9246:2;9195:54;;8658:597;-1:-1:-1;;;8658:597:1:o;12251:329::-;12453:2;12435:21;;;12492:1;12472:18;;;12465:29;-1:-1:-1;;;12525:2:1;12510:18;;12503:36;12571:2;12556:18;;12251:329::o;12585:335::-;12787:2;12769:21;;;12826:2;12806:18;;;12799:30;-1:-1:-1;;;12860:2:1;12845:18;;12838:41;12911:2;12896:18;;12585:335::o;13452:980::-;13714:4;13762:3;13751:9;13747:19;13793:6;13782:9;13775:25;13819:2;13857:6;13852:2;13841:9;13837:18;13830:34;13900:3;13895:2;13884:9;13880:18;13873:31;13924:6;13959;13953:13;13990:6;13982;13975:22;14028:3;14017:9;14013:19;14006:26;;14067:2;14059:6;14055:15;14041:29;;14088:1;14098:195;14112:6;14109:1;14106:13;14098:195;;;14177:13;;-1:-1:-1;;;;;14173:39:1;14161:52;;14268:15;;;;14233:12;;;;14209:1;14127:9;14098:195;;;-1:-1:-1;;;;;;;14349:32:1;;;;14344:2;14329:18;;14322:60;-1:-1:-1;;;14413:3:1;14398:19;14391:35;14310:3;13452:980;-1:-1:-1;;;13452:980:1:o;15743:128::-;15783:3;15814:1;15810:6;15807:1;15804:13;15801:39;;;15820:18;;:::i;:::-;-1:-1:-1;15856:9:1;;15743:128::o;15876:217::-;15916:1;15942;15932:132;;15986:10;15981:3;15977:20;15974:1;15967:31;16021:4;16018:1;16011:15;16049:4;16046:1;16039:15;15932:132;-1:-1:-1;16078:9:1;;15876:217::o;16098:422::-;16187:1;16230:5;16187:1;16244:270;16265:7;16255:8;16252:21;16244:270;;;16324:4;16320:1;16316:6;16312:17;16306:4;16303:27;16300:53;;;16333:18;;:::i;:::-;16383:7;16373:8;16369:22;16366:55;;;16403:16;;;;16366:55;16482:22;;;;16442:15;;;;16244:270;;;16248:3;16098:422;;;;;:::o;16525:140::-;16583:5;16612:47;16653:4;16643:8;16639:19;16633:4;16719:5;16749:8;16739:80;;-1:-1:-1;16790:1:1;16804:5;;16739:80;16838:4;16828:76;;-1:-1:-1;16875:1:1;16889:5;;16828:76;16920:4;16938:1;16933:59;;;;17006:1;17001:130;;;;16913:218;;16933:59;16963:1;16954:10;;16977:5;;;17001:130;17038:3;17028:8;17025:17;17022:43;;;17045:18;;:::i;:::-;-1:-1:-1;;17101:1:1;17087:16;;17116:5;;16913:218;;17215:2;17205:8;17202:16;17196:3;17190:4;17187:13;17183:36;17177:2;17167:8;17164:16;17159:2;17153:4;17150:12;17146:35;17143:77;17140:159;;;-1:-1:-1;17252:19:1;;;17284:5;;17140:159;17331:34;17356:8;17350:4;17331:34;:::i;:::-;17401:6;17397:1;17393:6;17389:19;17380:7;17377:32;17374:58;;;17412:18;;:::i;:::-;17450:20;;16670:806;-1:-1:-1;;;16670:806:1:o;17481:168::-;17521:7;17587:1;17583;17579:6;17575:14;17572:1;17569:21;17564:1;17557:9;17550:17;17546:45;17543:71;;;17594:18;;:::i;:::-;-1:-1:-1;17634:9:1;;17481:168::o;17654:125::-;17694:4;17722:1;17719;17716:8;17713:34;;;17727:18;;:::i;:::-;-1:-1:-1;17764:9:1;;17654:125::o;17784:135::-;17823:3;-1:-1:-1;;17844:17:1;;17841:43;;;17864:18;;:::i;:::-;-1:-1:-1;17911:1:1;17900:13;;17784:135::o;17924:127::-;17985:10;17980:3;17976:20;17973:1;17966:31;18016:4;18013:1;18006:15;18040:4;18037:1;18030:15;18056:127;18117:10;18112:3;18108:20;18105:1;18098:31;18148:4;18145:1;18138:15;18172:4;18169:1;18162:15;18320:131;-1:-1:-1;;;;;18395:31:1;;18385:42;;18375:70;;18441:1;18438;18431:12;18375:70;18320:131;:::o

Swarm Source

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