ETH Price: $2,622.68 (+4.23%)

Token

Ecova DAO (ECOVA)
 

Overview

Max Total Supply

100,000,000 ECOVA

Holders

58

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
4,161,940.768131085 ECOVA

Value
$0.00
0xb12741d39e4726eba18164fbb39111cbca0e57c7
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:
ECOVA

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-02-16
*/

/**

Website: https://ecovadao.com
Twitter: https://twitter.com/ecova_dao
Telegram: https://t.me/ecova_dao

*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.17;

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

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function tryAdd(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

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

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

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

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

    function decimals() external view returns (uint8);

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

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

    function 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
    );
}

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

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

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);
}

interface IRouter {
    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 removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

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

contract ECOVA is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = "Ecova DAO";
    string private constant _symbol = "ECOVA";
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 100_000_000 * (10**_decimals);
    uint256 private _maxTxAmount = 2_000_000 * (10**_decimals);
    uint256 private _maxWalletAmount = 2_000_000 * (10**_decimals);
    uint256 private _swapThresTokens = 1_000_000 * (10**_decimals);
    uint256 private _minSwapTokens = 72 * (10**_decimals);
    mapping(address => uint256) _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    IRouter router;
    address public pair;
    bool private tradingAllowed = false;
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 2;
    uint256 private utilityFee = 0;
    uint256 private buyFee = 2;
    uint256 private sellFee = 2;
    uint256 private transferFee = 0;
    uint256 private denominator = 100;
    bool private swapEnabled = true;
    bool private swapping;
    modifier lockTheSwap() {
        swapping = true;
        _;
        swapping = false;
    }

    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal constant daoWallet =
        0x252B70Dff80486CA5b8b23aD025B8f8C3BD89C04;
    address internal constant marketingWallet =
        0x252B70Dff80486CA5b8b23aD025B8f8C3BD89C04;
    address private lpWallet = msg.sender;

    constructor() Ownable() {
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[lpWallet] = true;
        _isExcludedFromFee[marketingWallet] = true;
        _isExcludedFromFee[msg.sender] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

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

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

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

    function createDAO() external onlyOwner {
        require(!tradingAllowed, "Trading allowed");

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(
            address(this),
            _router.WETH()
        );
        router = _router;
        pair = _pair;

        addLiquidity(balanceOf(address(this)), address(this).balance);
    }

    function startCarbon() external onlyOwner {
        require(!tradingAllowed, "Tradeing already allowed");
        marketingFee = 32;
        buyFee = 32;
        sellFee = 19;
        tradingAllowed = true;
    }

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

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

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

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

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

    function preTxCheck(
        address sender,
        address recipient,
        uint256 amount
    ) internal pure {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(
            amount > uint256(0),
            "Transfer amount must be greater than zero"
        );
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        preTxCheck(sender, recipient, amount);
        checkTradingAllowed(sender, recipient);
        checkMaxWallet(sender, recipient, amount);
        checkTxLimit(sender, recipient, amount);
        swapBack(sender, recipient, amount);
        (uint256 amountSent, uint256 amountReceived) = takeFees(
            sender,
            recipient,
            amount
        );
        _balances[sender] = _balances[sender].sub(amountSent);
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

    function reduceFee(uint256 _fee) external onlyOwner {
        marketingFee = _fee;
        buyFee = _fee;
        sellFee = _fee;

        require(
            buyFee <= 10 && sellFee <= 10,
            "buyFee and sellFee cannot be more than 10%"
        );
    }

    function removeLimits() external onlyOwner {
        _maxTxAmount = type(uint256).max;
        _maxWalletAmount = type(uint256).max;
    }

    function checkTradingAllowed(address sender, address recipient)
        internal
        view
    {
        if (!_isExcludedFromFee[sender] && !_isExcludedFromFee[recipient]) {
            require(tradingAllowed, "tradingAllowed");
        }
    }

    function checkMaxWallet(
        address sender,
        address recipient,
        uint256 amount
    ) internal view {
        if (
            !_isExcludedFromFee[sender] &&
            !_isExcludedFromFee[recipient] &&
            recipient != address(pair) &&
            recipient != address(DEAD)
        ) {
            require(
                (_balances[recipient].add(amount)) <= _maxWalletAmount,
                "Exceeds maximum wallet amount."
            );
        }
    }

    function checkTxLimit(
        address sender,
        address recipient,
        uint256 amount
    ) internal view {
        require(
            amount <= _maxTxAmount ||
                _isExcludedFromFee[sender] ||
                _isExcludedFromFee[recipient],
            "TX Limit Exceeded"
        );
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap {
        uint256 _denominator = (
            liquidityFee.add(1).add(marketingFee).add(utilityFee)
        ).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(
            _denominator
        );
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance = deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if (ETHToAddLiquidityWith > uint256(0)) {
            addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith);
        }
        uint256 marketingAmt = unitBalance.mul(2).mul(marketingFee);
        if (marketingAmt > 0) {
            payable(marketingWallet).transfer(marketingAmt);
        }
        uint256 remainingBalance = address(this).balance;
        if (remainingBalance > uint256(0)) {
            payable(daoWallet).transfer(remainingBalance);
        }
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            lpWallet,
            block.timestamp
        );
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        _approve(address(this), address(router), tokenAmount);
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function shouldSwapBack(
        address sender,
        address recipient,
        uint256 amount
    ) internal view returns (bool) {
        bool aboveMin = amount >= _minSwapTokens;
        bool aboveThreshold = balanceOf(address(this)) >= _minSwapTokens;
        return
            !swapping &&
            swapEnabled &&
            tradingAllowed &&
            aboveMin &&
            !_isExcludedFromFee[sender] &&
            recipient == pair &&
            aboveThreshold;
    }

    function swapBack(
        address sender,
        address recipient,
        uint256 amount
    ) internal {
        if (shouldSwapBack(sender, recipient, amount)) {
            uint256 swapTokens = balanceOf(address(this));
            if (swapTokens > _swapThresTokens) swapTokens = _swapThresTokens;
            swapAndLiquify(swapTokens);
        }
    }

    function couldFeeTake(address sender, address recipient)
        internal
        view
        returns (bool)
    {
        return !_isExcludedFromFee[sender] && !_isExcludedFromFee[recipient];
    }

    function getFee(address sender, address recipient)
        internal
        view
        returns (uint256)
    {
        if (recipient == pair) {
            return sellFee;
        }
        if (sender == pair) {
            return buyFee;
        }
        return transferFee;
    }

    function takeFees(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (uint256, uint256) {
        uint256 xAmount = amount;
        uint256 yAmount = amount;
        uint256 feeAmount;
        if (sender != address(this) && recipient != address(this)) {
            if (couldFeeTake(sender, recipient)) {
                if (getFee(sender, recipient) > 0) {
                    feeAmount = amount.div(denominator).mul(
                        getFee(sender, recipient)
                    );
                    _balances[address(this)] = _balances[address(this)].add(
                        feeAmount
                    );
                    emit Transfer(sender, address(this), feeAmount);

                    yAmount = amount.sub(feeAmount);
                }
            } else {
                if (recipient == pair && sender != owner()) xAmount = feeAmount;
            }
        }
        return (xAmount, yAmount);
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            msg.sender,
            _allowances[sender][msg.sender].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
}

Contract 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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","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":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createDAO","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startCarbon","outputs":[],"stateMutability":"nonpayable","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":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a62000307565b62000022906305f5e1006200031e565b600155620000336009600a62000307565b6200004290621e84806200031e565b600255620000536009600a62000307565b6200006290621e84806200031e565b600355620000736009600a62000307565b6200008290620f42406200031e565b600455620000936009600a62000307565b620000a09060486200031e565b600555600a805460ff60a01b191690555f600b8190556002600c819055600d829055600e819055600f5560105560646011556012805461ff01600160b01b031916336201000002176001179055348015620000f9575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350305f9081526008602090815260408083208054600160ff1991821681179092556012546001600160a01b036201000090910416855282852080548216831790557f62c342dcbb30701ed4d5d071c55feae2fc4146e73ae032a2e51f23eaa18ebb5380548216831790553380865283862080549092168317909155905460068452828520819055915191825292917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000338565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200024c57815f1904821115620002305762000230620001f8565b808516156200023e57918102915b93841c939080029062000211565b509250929050565b5f82620002645750600162000301565b816200027257505f62000301565b81600181146200028b57600281146200029657620002b6565b600191505062000301565b60ff841115620002aa57620002aa620001f8565b50506001821b62000301565b5060208310610133831016604e8410600b8410161715620002db575081810a62000301565b620002e783836200020c565b805f1904821115620002fd57620002fd620001f8565b0290505b92915050565b5f6200031760ff84168362000254565b9392505050565b8082028115828204841417620003015762000301620001f8565b61174b80620003465f395ff3fe6080604052600436106100f2575f3560e01c80637ef4d7fa11610087578063a8aa1b3111610057578063a8aa1b31146102ae578063a9059cbb146102cd578063dd62ed3e146102ec578063ec1f3f6314610330575f80fd5b80637ef4d7fa146102295780638da5cb5b1461023d57806395d89b411461026d5780639caddac21461029a575f80fd5b8063313ce567116100c2578063313ce567146101b057806370a08231146101cb578063715018a6146101ff578063751039fc14610215575f80fd5b806306fdde03146100fd578063095ea7b31461014057806318160ddd1461016f57806323b872dd14610191575f80fd5b366100f957005b5f80fd5b348015610108575f80fd5b5060408051808201909152600981526845636f76612044414f60b81b60208201525b604051610137919061144c565b60405180910390f35b34801561014b575f80fd5b5061015f61015a3660046114ac565b61034f565b6040519015158152602001610137565b34801561017a575f80fd5b50610183610365565b604051908152602001610137565b34801561019c575f80fd5b5061015f6101ab3660046114d6565b6103d5565b3480156101bb575f80fd5b5060405160098152602001610137565b3480156101d6575f80fd5b506101836101e5366004611514565b6001600160a01b03165f9081526006602052604090205490565b34801561020a575f80fd5b5061021361043c565b005b348015610220575f80fd5b506102136104b6565b348015610234575f80fd5b506102136104eb565b348015610248575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610137565b348015610278575f80fd5b5060408051808201909152600581526445434f564160d81b602082015261012a565b3480156102a5575f80fd5b50610213610592565b3480156102b9575f80fd5b50600a54610255906001600160a01b031681565b3480156102d8575f80fd5b5061015f6102e73660046114ac565b6107ba565b3480156102f7575f80fd5b5061018361030636600461152f565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b34801561033b575f80fd5b5061021361034a366004611566565b6107c6565b5f61035b338484610874565b5060015b92915050565b60066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85461dead5f9081527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e225460015491926103d09290916103ca9190610997565b90610997565b905090565b5f6103e18484846109a9565b610432843361042d856040518060600160405280602881526020016116ee602891396001600160a01b038a165f9081526007602090815260408083203384529091529020549190610aa3565b610874565b5060019392505050565b5f546001600160a01b0316331461046e5760405162461bcd60e51b81526004016104659061157d565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146104df5760405162461bcd60e51b81526004016104659061157d565b5f196002819055600355565b5f546001600160a01b031633146105145760405162461bcd60e51b81526004016104659061157d565b600a54600160a01b900460ff161561056e5760405162461bcd60e51b815260206004820152601860248201527f5472616465696e6720616c726561647920616c6c6f77656400000000000000006044820152606401610465565b6020600c819055600e556013600f55600a805460ff60a01b1916600160a01b179055565b5f546001600160a01b031633146105bb5760405162461bcd60e51b81526004016104659061157d565b600a54600160a01b900460ff16156106075760405162461bcd60e51b815260206004820152600f60248201526e151c98591a5b99c8185b1b1bddd959608a1b6044820152606401610465565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561065c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061068091906115b2565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ef91906115b2565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610739573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075d91906115b2565b600980546001600160a01b038086166001600160a01b031992831617909255600a80549284169290911691909117905590506107b66107b0306001600160a01b03165f9081526006602052604090205490565b47610ace565b5050565b5f61035b3384846109a9565b5f546001600160a01b031633146107ef5760405162461bcd60e51b81526004016104659061157d565b600c819055600e819055600f819055600a81118015906108125750600a600f5411155b6108715760405162461bcd60e51b815260206004820152602a60248201527f62757946656520616e642073656c6c4665652063616e6e6f74206265206d6f7260448201526965207468616e2031302560b01b6064820152608401610465565b50565b6001600160a01b0383166108d65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610465565b6001600160a01b0382166109375760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610465565b6001600160a01b038381165f8181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6109a282846115e1565b9392505050565b6109b4838383610b85565b6109be8383610cb1565b6109c9838383610d40565b6109d4838383610e29565b6109df838383610eb3565b5f806109ec858585610ef0565b6001600160a01b0387165f908152600660205260409020549193509150610a139083610997565b6001600160a01b038087165f908152600660205260408082209390935590861681522054610a419082611023565b6001600160a01b038086165f8181526006602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610a949085815260200190565b60405180910390a35050505050565b5f8184841115610ac65760405162461bcd60e51b8152600401610465919061144c565b505050900390565b600954610ae69030906001600160a01b031684610874565b60095460125460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0362010000909204821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015610b59573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610b7e91906115f4565b5050505050565b6001600160a01b038316610be95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610465565b6001600160a01b038216610c4b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610465565b5f8111610cac5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610465565b505050565b6001600160a01b0382165f9081526008602052604090205460ff16158015610cf157506001600160a01b0381165f9081526008602052604090205460ff16155b156107b657600a54600160a01b900460ff166107b65760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b6044820152606401610465565b6001600160a01b0383165f9081526008602052604090205460ff16158015610d8057506001600160a01b0382165f9081526008602052604090205460ff16155b8015610d9a5750600a546001600160a01b03838116911614155b8015610db157506001600160a01b03821661dead14155b15610cac576003546001600160a01b0383165f90815260066020526040902054610ddb9083611023565b1115610cac5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610465565b60025481111580610e5157506001600160a01b0383165f9081526008602052604090205460ff165b80610e7357506001600160a01b0382165f9081526008602052604090205460ff165b610cac5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610465565b610ebe83838361102e565b15610cac57305f90815260066020526040902054600454811115610ee157506004545b610eea816110d3565b50505050565b5f808280826001600160a01b0388163014801590610f1757506001600160a01b0387163014155b1561101657610f268888611258565b15610fe3575f610f36898961129c565b1115610fde57610f5d610f49898961129c565b601154610f579089906112e6565b906112f1565b305f90815260066020526040902054909150610f799082611023565b305f81815260066020526040908190209290925590516001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610fc99085815260200190565b60405180910390a3610fdb8682610997565b91505b611016565b600a546001600160a01b03888116911614801561100d57505f546001600160a01b03898116911614155b15611016578092505b5090969095509350505050565b5f6109a2828461161f565b600554305f908152600660205260408120546012549192808510159291101590610100900460ff16158015611065575060125460ff165b801561107a5750600a54600160a01b900460ff165b80156110835750815b80156110a757506001600160a01b0386165f9081526008602052604090205460ff16155b80156110c05750600a546001600160a01b038681169116145b80156110c95750805b9695505050505050565b6012805461ff001916610100179055600d54600c54600b545f9261110c92600292610f5792916111069182906001611023565b90611023565b90505f61112e82611128600b54866112f190919063ffffffff16565b906112e6565b90505f61113b8483610997565b905047611147826112fc565b5f6111524783610997565b90505f61117461116d600b548861099790919063ffffffff16565b83906112e6565b90505f61118c600b54836112f190919063ffffffff16565b9050801561119e5761119e8682610ace565b600c545f906111b290610f578560026112f1565b905080156111fa5760405173252b70dff80486ca5b8b23ad025b8f8c3bd89c049082156108fc029083905f818181858888f193505050501580156111f8573d5f803e3d5ffd5b505b4780156112415760405173252b70dff80486ca5b8b23ad025b8f8c3bd89c049082156108fc029083905f818181858888f1935050505015801561123f573d5f803e3d5ffd5b505b50506012805461ff00191690555050505050505050565b6001600160a01b0382165f9081526008602052604081205460ff161580156109a25750506001600160a01b03165f9081526008602052604090205460ff1615919050565b600a545f906001600160a01b03908116908316036112bd5750600f5461035f565b600a546001600160a01b03908116908416036112dc5750600e5461035f565b5060105492915050565b5f6109a28284611632565b5f6109a28284611651565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061132f5761132f611668565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611386573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113aa91906115b2565b816001815181106113bd576113bd611668565b6001600160a01b0392831660209182029290920101526009546113e39130911684610874565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac9479061141b9085905f9086903090429060040161167c565b5f604051808303815f87803b158015611432575f80fd5b505af1158015611444573d5f803e3d5ffd5b505050505050565b5f602080835283518060208501525f5b818110156114785785810183015185820160400152820161145c565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610871575f80fd5b5f80604083850312156114bd575f80fd5b82356114c881611498565b946020939093013593505050565b5f805f606084860312156114e8575f80fd5b83356114f381611498565b9250602084013561150381611498565b929592945050506040919091013590565b5f60208284031215611524575f80fd5b81356109a281611498565b5f8060408385031215611540575f80fd5b823561154b81611498565b9150602083013561155b81611498565b809150509250929050565b5f60208284031215611576575f80fd5b5035919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f602082840312156115c2575f80fd5b81516109a281611498565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561035f5761035f6115cd565b5f805f60608486031215611606575f80fd5b8351925060208401519150604084015190509250925092565b8082018082111561035f5761035f6115cd565b5f8261164c57634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761035f5761035f6115cd565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156116cc5784516001600160a01b0316835293830193918301916001016116a7565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e872d8d70b4125dfa385b5eebef5920fa47c15a03564fc68836c1818b965e5d964736f6c63430008160033

Deployed Bytecode

0x6080604052600436106100f2575f3560e01c80637ef4d7fa11610087578063a8aa1b3111610057578063a8aa1b31146102ae578063a9059cbb146102cd578063dd62ed3e146102ec578063ec1f3f6314610330575f80fd5b80637ef4d7fa146102295780638da5cb5b1461023d57806395d89b411461026d5780639caddac21461029a575f80fd5b8063313ce567116100c2578063313ce567146101b057806370a08231146101cb578063715018a6146101ff578063751039fc14610215575f80fd5b806306fdde03146100fd578063095ea7b31461014057806318160ddd1461016f57806323b872dd14610191575f80fd5b366100f957005b5f80fd5b348015610108575f80fd5b5060408051808201909152600981526845636f76612044414f60b81b60208201525b604051610137919061144c565b60405180910390f35b34801561014b575f80fd5b5061015f61015a3660046114ac565b61034f565b6040519015158152602001610137565b34801561017a575f80fd5b50610183610365565b604051908152602001610137565b34801561019c575f80fd5b5061015f6101ab3660046114d6565b6103d5565b3480156101bb575f80fd5b5060405160098152602001610137565b3480156101d6575f80fd5b506101836101e5366004611514565b6001600160a01b03165f9081526006602052604090205490565b34801561020a575f80fd5b5061021361043c565b005b348015610220575f80fd5b506102136104b6565b348015610234575f80fd5b506102136104eb565b348015610248575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610137565b348015610278575f80fd5b5060408051808201909152600581526445434f564160d81b602082015261012a565b3480156102a5575f80fd5b50610213610592565b3480156102b9575f80fd5b50600a54610255906001600160a01b031681565b3480156102d8575f80fd5b5061015f6102e73660046114ac565b6107ba565b3480156102f7575f80fd5b5061018361030636600461152f565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b34801561033b575f80fd5b5061021361034a366004611566565b6107c6565b5f61035b338484610874565b5060015b92915050565b60066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85461dead5f9081527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e225460015491926103d09290916103ca9190610997565b90610997565b905090565b5f6103e18484846109a9565b610432843361042d856040518060600160405280602881526020016116ee602891396001600160a01b038a165f9081526007602090815260408083203384529091529020549190610aa3565b610874565b5060019392505050565b5f546001600160a01b0316331461046e5760405162461bcd60e51b81526004016104659061157d565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146104df5760405162461bcd60e51b81526004016104659061157d565b5f196002819055600355565b5f546001600160a01b031633146105145760405162461bcd60e51b81526004016104659061157d565b600a54600160a01b900460ff161561056e5760405162461bcd60e51b815260206004820152601860248201527f5472616465696e6720616c726561647920616c6c6f77656400000000000000006044820152606401610465565b6020600c819055600e556013600f55600a805460ff60a01b1916600160a01b179055565b5f546001600160a01b031633146105bb5760405162461bcd60e51b81526004016104659061157d565b600a54600160a01b900460ff16156106075760405162461bcd60e51b815260206004820152600f60248201526e151c98591a5b99c8185b1b1bddd959608a1b6044820152606401610465565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561065c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061068091906115b2565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ef91906115b2565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610739573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075d91906115b2565b600980546001600160a01b038086166001600160a01b031992831617909255600a80549284169290911691909117905590506107b66107b0306001600160a01b03165f9081526006602052604090205490565b47610ace565b5050565b5f61035b3384846109a9565b5f546001600160a01b031633146107ef5760405162461bcd60e51b81526004016104659061157d565b600c819055600e819055600f819055600a81118015906108125750600a600f5411155b6108715760405162461bcd60e51b815260206004820152602a60248201527f62757946656520616e642073656c6c4665652063616e6e6f74206265206d6f7260448201526965207468616e2031302560b01b6064820152608401610465565b50565b6001600160a01b0383166108d65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610465565b6001600160a01b0382166109375760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610465565b6001600160a01b038381165f8181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6109a282846115e1565b9392505050565b6109b4838383610b85565b6109be8383610cb1565b6109c9838383610d40565b6109d4838383610e29565b6109df838383610eb3565b5f806109ec858585610ef0565b6001600160a01b0387165f908152600660205260409020549193509150610a139083610997565b6001600160a01b038087165f908152600660205260408082209390935590861681522054610a419082611023565b6001600160a01b038086165f8181526006602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610a949085815260200190565b60405180910390a35050505050565b5f8184841115610ac65760405162461bcd60e51b8152600401610465919061144c565b505050900390565b600954610ae69030906001600160a01b031684610874565b60095460125460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0362010000909204821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015610b59573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610b7e91906115f4565b5050505050565b6001600160a01b038316610be95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610465565b6001600160a01b038216610c4b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610465565b5f8111610cac5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610465565b505050565b6001600160a01b0382165f9081526008602052604090205460ff16158015610cf157506001600160a01b0381165f9081526008602052604090205460ff16155b156107b657600a54600160a01b900460ff166107b65760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b6044820152606401610465565b6001600160a01b0383165f9081526008602052604090205460ff16158015610d8057506001600160a01b0382165f9081526008602052604090205460ff16155b8015610d9a5750600a546001600160a01b03838116911614155b8015610db157506001600160a01b03821661dead14155b15610cac576003546001600160a01b0383165f90815260066020526040902054610ddb9083611023565b1115610cac5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610465565b60025481111580610e5157506001600160a01b0383165f9081526008602052604090205460ff165b80610e7357506001600160a01b0382165f9081526008602052604090205460ff165b610cac5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610465565b610ebe83838361102e565b15610cac57305f90815260066020526040902054600454811115610ee157506004545b610eea816110d3565b50505050565b5f808280826001600160a01b0388163014801590610f1757506001600160a01b0387163014155b1561101657610f268888611258565b15610fe3575f610f36898961129c565b1115610fde57610f5d610f49898961129c565b601154610f579089906112e6565b906112f1565b305f90815260066020526040902054909150610f799082611023565b305f81815260066020526040908190209290925590516001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610fc99085815260200190565b60405180910390a3610fdb8682610997565b91505b611016565b600a546001600160a01b03888116911614801561100d57505f546001600160a01b03898116911614155b15611016578092505b5090969095509350505050565b5f6109a2828461161f565b600554305f908152600660205260408120546012549192808510159291101590610100900460ff16158015611065575060125460ff165b801561107a5750600a54600160a01b900460ff165b80156110835750815b80156110a757506001600160a01b0386165f9081526008602052604090205460ff16155b80156110c05750600a546001600160a01b038681169116145b80156110c95750805b9695505050505050565b6012805461ff001916610100179055600d54600c54600b545f9261110c92600292610f5792916111069182906001611023565b90611023565b90505f61112e82611128600b54866112f190919063ffffffff16565b906112e6565b90505f61113b8483610997565b905047611147826112fc565b5f6111524783610997565b90505f61117461116d600b548861099790919063ffffffff16565b83906112e6565b90505f61118c600b54836112f190919063ffffffff16565b9050801561119e5761119e8682610ace565b600c545f906111b290610f578560026112f1565b905080156111fa5760405173252b70dff80486ca5b8b23ad025b8f8c3bd89c049082156108fc029083905f818181858888f193505050501580156111f8573d5f803e3d5ffd5b505b4780156112415760405173252b70dff80486ca5b8b23ad025b8f8c3bd89c049082156108fc029083905f818181858888f1935050505015801561123f573d5f803e3d5ffd5b505b50506012805461ff00191690555050505050505050565b6001600160a01b0382165f9081526008602052604081205460ff161580156109a25750506001600160a01b03165f9081526008602052604090205460ff1615919050565b600a545f906001600160a01b03908116908316036112bd5750600f5461035f565b600a546001600160a01b03908116908416036112dc5750600e5461035f565b5060105492915050565b5f6109a28284611632565b5f6109a28284611651565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061132f5761132f611668565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611386573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113aa91906115b2565b816001815181106113bd576113bd611668565b6001600160a01b0392831660209182029290920101526009546113e39130911684610874565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac9479061141b9085905f9086903090429060040161167c565b5f604051808303815f87803b158015611432575f80fd5b505af1158015611444573d5f803e3d5ffd5b505050505050565b5f602080835283518060208501525f5b818110156114785785810183015185820160400152820161145c565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610871575f80fd5b5f80604083850312156114bd575f80fd5b82356114c881611498565b946020939093013593505050565b5f805f606084860312156114e8575f80fd5b83356114f381611498565b9250602084013561150381611498565b929592945050506040919091013590565b5f60208284031215611524575f80fd5b81356109a281611498565b5f8060408385031215611540575f80fd5b823561154b81611498565b9150602083013561155b81611498565b809150509250929050565b5f60208284031215611576575f80fd5b5035919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f602082840312156115c2575f80fd5b81516109a281611498565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561035f5761035f6115cd565b5f805f60608486031215611606575f80fd5b8351925060208401519150604084015190509250925092565b8082018082111561035f5761035f6115cd565b5f8261164c57634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761035f5761035f6115cd565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156116cc5784516001600160a01b0316835293830193918301916001016116a7565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e872d8d70b4125dfa385b5eebef5920fa47c15a03564fc68836c1818b965e5d964736f6c63430008160033

Deployed Bytecode Sourcemap

6159:11679:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8109:83;;;;;;;;;;-1:-1:-1;8179:5:0;;;;;;;;;;;;-1:-1:-1;;;8179:5:0;;;;8109:83;;;;;;;:::i;:::-;;;;;;;;9585:191;;;;;;;;;;-1:-1:-1;9585:191:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;9585:191:0;1023:187:1;9784:148:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;9784:148:0;1215:177:1;17016:442:0;;;;;;;;;;-1:-1:-1;17016:442:0;;;;;:::i;:::-;;:::i;8295:83::-;;;;;;;;;;-1:-1:-1;8295:83:0;;6366:1;2000:36:1;;1988:2;1973:18;8295:83:0;1858:184:1;9061:119:0;;;;;;;;;;-1:-1:-1;9061:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;9154:18:0;9127:7;9154:18;;;:9;:18;;;;;;;9061:119;4435:148;;;;;;;;;;;;;:::i;:::-;;11353:141;;;;;;;;;;;;;:::i;8835:218::-;;;;;;;;;;;;;:::i;4221:79::-;;;;;;;;;;-1:-1:-1;4259:7:0;4286:6;-1:-1:-1;;;;;4286:6:0;4221:79;;;-1:-1:-1;;;;;2463:32:1;;;2445:51;;2433:2;2418:18;4221:79:0;2299:203:1;8200:87:0;;;;;;;;;;-1:-1:-1;8272:7:0;;;;;;;;;;;;-1:-1:-1;;;8272:7:0;;;;8200:87;;8386:441;;;;;;;;;;;;;:::i;6901:19::-;;;;;;;;;;-1:-1:-1;6901:19:0;;;;-1:-1:-1;;;;;6901:19:0;;;9188:197;;;;;;;;;;-1:-1:-1;9188:197:0;;;;;:::i;:::-;;:::i;9393:184::-;;;;;;;;;;-1:-1:-1;9393:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;9542:18:0;;;9510:7;9542:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;9393:184;11072:273;;;;;;;;;;-1:-1:-1;11072:273:0;;;;;:::i;:::-;;:::i;9585:191::-;9687:4;9709:37;9718:10;9730:7;9739:6;9709:8;:37::i;:::-;-1:-1:-1;9764:4:0;9585:191;;;;;:::o;9784:148::-;9154:9;:18;;;;7432:42;9837:7;9154:18;;;;;9864:12;;9837:7;;9864:60;;9154:18;;9864:33;;:12;:16;:33::i;:::-;:37;;:60::i;:::-;9857:67;;9784:148;:::o;17016:442::-;17148:4;17165:36;17175:6;17183:9;17194:6;17165:9;:36::i;:::-;17212:216;17235:6;17256:10;17281:136;17335:6;17281:136;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17281:19:0;;;;;;:11;:19;;;;;;;;17301:10;17281:31;;;;;;;;;:136;:35;:136::i;:::-;17212:8;:216::i;:::-;-1:-1:-1;17446:4:0;17016:442;;;;;:::o;4435:148::-;4348:6;;-1:-1:-1;;;;;4348:6:0;296:10;4348:22;4340:67;;;;-1:-1:-1;;;4340:67:0;;;;;;;:::i;:::-;;;;;;;;;4542:1:::1;4526:6:::0;;4505:40:::1;::::0;-1:-1:-1;;;;;4526:6:0;;::::1;::::0;4505:40:::1;::::0;4542:1;;4505:40:::1;4573:1;4556:19:::0;;-1:-1:-1;;;;;;4556:19:0::1;::::0;;4435:148::o;11353:141::-;4348:6;;-1:-1:-1;;;;;4348:6:0;296:10;4348:22;4340:67;;;;-1:-1:-1;;;4340:67:0;;;;;;;:::i;:::-;-1:-1:-1;;11407:12:0::1;:32:::0;;;11450:16:::1;:36:::0;11353:141::o;8835:218::-;4348:6;;-1:-1:-1;;;;;4348:6:0;296:10;4348:22;4340:67;;;;-1:-1:-1;;;4340:67:0;;;;;;;:::i;:::-;8897:14:::1;::::0;-1:-1:-1;;;8897:14:0;::::1;;;8896:15;8888:52;;;::::0;-1:-1:-1;;;8888:52:0;;3648:2:1;8888:52:0::1;::::0;::::1;3630:21:1::0;3687:2;3667:18;;;3660:30;3726:26;3706:18;;;3699:54;3770:18;;8888:52:0::1;3446:348:1::0;8888:52:0::1;8966:2;8951:12;:17:::0;;;8979:6:::1;:11:::0;9011:2:::1;9001:7;:12:::0;9024:14:::1;:21:::0;;-1:-1:-1;;;;9024:21:0::1;-1:-1:-1::0;;;9024:21:0::1;::::0;;8835:218::o;8386:441::-;4348:6;;-1:-1:-1;;;;;4348:6:0;296:10;4348:22;4340:67;;;;-1:-1:-1;;;4340:67:0;;;;;;;:::i;:::-;8446:14:::1;::::0;-1:-1:-1;;;8446:14:0;::::1;;;8445:15;8437:43;;;::::0;-1:-1:-1;;;8437:43:0;;4001:2:1;8437:43:0::1;::::0;::::1;3983:21:1::0;4040:2;4020:18;;;4013:30;-1:-1:-1;;;4059:18:1;;;4052:45;4114:18;;8437:43:0::1;3799:339:1::0;8437:43:0::1;8493:15;8519:42;8493:69;;8573:13;8598:7;-1:-1:-1::0;;;;;8598:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8589:38:0::1;;8650:4;8670:7;-1:-1:-1::0;;;;;8670:12:0::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8589:106;::::0;-1:-1:-1;;;;;;8589:106:0::1;::::0;;;;;;-1:-1:-1;;;;;4629:15:1;;;8589:106:0::1;::::0;::::1;4611:34:1::0;4681:15;;4661:18;;;4654:43;4546:18;;8589:106:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8706:6;:16:::0;;-1:-1:-1;;;;;8706:16:0;;::::1;-1:-1:-1::0;;;;;;8706:16:0;;::::1;;::::0;;;8733:4:::1;:12:::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;8573:122;-1:-1:-1;8758:61:0::1;8771:24;8789:4;-1:-1:-1::0;;;;;9154:18:0;9127:7;9154:18;;;:9;:18;;;;;;;9061:119;8771:24:::1;8797:21;8758:12;:61::i;:::-;8426:401;;8386:441::o:0;9188:197::-;9293:4;9315:40;9325:10;9337:9;9348:6;9315:9;:40::i;11072:273::-;4348:6;;-1:-1:-1;;;;;4348:6:0;296:10;4348:22;4340:67;;;;-1:-1:-1;;;4340:67:0;;;;;;;:::i;:::-;11135:12:::1;:19:::0;;;11165:6:::1;:13:::0;;;11189:7:::1;:14:::0;;;11248:2:::1;11238:12:::0;::::1;::::0;::::1;::::0;:29:::1;;;11265:2;11254:7;;:13;;11238:29;11216:121;;;::::0;-1:-1:-1;;;11216:121:0;;4910:2:1;11216:121:0::1;::::0;::::1;4892:21:1::0;4949:2;4929:18;;;4922:30;4988:34;4968:18;;;4961:62;-1:-1:-1;;;5039:18:1;;;5032:40;5089:19;;11216:121:0::1;4708:406:1::0;11216:121:0::1;11072:273:::0;:::o;17466:369::-;-1:-1:-1;;;;;17593:19:0;;17585:68;;;;-1:-1:-1;;;17585:68:0;;5321:2:1;17585:68:0;;;5303:21:1;5360:2;5340:18;;;5333:30;5399:34;5379:18;;;5372:62;-1:-1:-1;;;5450:18:1;;;5443:34;5494:19;;17585:68:0;5119:400:1;17585:68:0;-1:-1:-1;;;;;17672:21:0;;17664:68;;;;-1:-1:-1;;;17664:68:0;;5726:2:1;17664:68:0;;;5708:21:1;5765:2;5745:18;;;5738:30;5804:34;5784:18;;;5777:62;-1:-1:-1;;;5855:18:1;;;5848:32;5897:19;;17664:68:0;5524:398:1;17664:68:0;-1:-1:-1;;;;;17743:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;17795:32;;1361:25:1;;;17795:32:0;;1334:18:1;17795:32:0;;;;;;;17466:369;;;:::o;451:98::-;509:7;536:5;540:1;536;:5;:::i;:::-;529:12;451:98;-1:-1:-1;;;451:98:0:o;10359:705::-;10482:37;10493:6;10501:9;10512:6;10482:10;:37::i;:::-;10530:38;10550:6;10558:9;10530:19;:38::i;:::-;10579:41;10594:6;10602:9;10613:6;10579:14;:41::i;:::-;10631:39;10644:6;10652:9;10663:6;10631:12;:39::i;:::-;10681:35;10690:6;10698:9;10709:6;10681:8;:35::i;:::-;10728:18;10748:22;10774:85;10797:6;10818:9;10842:6;10774:8;:85::i;:::-;-1:-1:-1;;;;;10890:17:0;;;;;;:9;:17;;;;;;10727:132;;-1:-1:-1;10727:132:0;-1:-1:-1;10890:33:0;;10727:132;10890:21;:33::i;:::-;-1:-1:-1;;;;;10870:17:0;;;;;;;:9;:17;;;;;;:53;;;;10957:20;;;;;;;:40;;10982:14;10957:24;:40::i;:::-;-1:-1:-1;;;;;10934:20:0;;;;;;;:9;:20;;;;;;;:63;;;;11013:43;;;;;;;;;;11041:14;1361:25:1;;1349:2;1334:18;;1215:177;11013:43:0;;;;;;;;10471:593;;10359:705;;;:::o;2151:240::-;2271:7;2332:12;2324:6;;;;2316:29;;;;-1:-1:-1;;;2316:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2367:5:0;;;2151:240::o;13792:343::-;13905:6;;13873:53;;13890:4;;-1:-1:-1;;;;;13905:6:0;13914:11;13873:8;:53::i;:::-;13937:6;;14078:8;;13937:190;;-1:-1:-1;;;13937:190:0;;14000:4;13937:190;;;6533:34:1;6583:18;;;6576:34;;;-1:-1:-1;6626:18:1;;;6619:34;;;6669:18;;;6662:34;-1:-1:-1;;;;;14078:8:0;;;;;;6712:19:1;;;6705:44;14101:15:0;6765:19:1;;;6758:35;13937:6:0;;;:22;;13967:9;;6467:19:1;;13937:190:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13792:343;;:::o;9940:411::-;-1:-1:-1;;;;;10078:20:0;;10070:70;;;;-1:-1:-1;;;10070:70:0;;7317:2:1;10070:70:0;;;7299:21:1;7356:2;7336:18;;;7329:30;7395:34;7375:18;;;7368:62;-1:-1:-1;;;7446:18:1;;;7439:35;7491:19;;10070:70:0;7115:401:1;10070:70:0;-1:-1:-1;;;;;10159:23:0;;10151:71;;;;-1:-1:-1;;;10151:71:0;;7723:2:1;10151:71:0;;;7705:21:1;7762:2;7742:18;;;7735:30;7801:34;7781:18;;;7774:62;-1:-1:-1;;;7852:18:1;;;7845:33;7895:19;;10151:71:0;7521:399:1;10151:71:0;10272:1;10255:6;:19;10233:110;;;;-1:-1:-1;;;10233:110:0;;8127:2:1;10233:110:0;;;8109:21:1;8166:2;8146:18;;;8139:30;8205:34;8185:18;;;8178:62;-1:-1:-1;;;8256:18:1;;;8249:39;8305:19;;10233:110:0;7925:405:1;10233:110:0;9940:411;;;:::o;11502:254::-;-1:-1:-1;;;;;11619:26:0;;;;;;:18;:26;;;;;;;;11618:27;:61;;;;-1:-1:-1;;;;;;11650:29:0;;;;;;:18;:29;;;;;;;;11649:30;11618:61;11614:135;;;11704:14;;-1:-1:-1;;;11704:14:0;;;;11696:41;;;;-1:-1:-1;;;11696:41:0;;8537:2:1;11696:41:0;;;8519:21:1;8576:2;8556:18;;;8549:30;-1:-1:-1;;;8595:18:1;;;8588:44;8649:18;;11696:41:0;8335:338:1;11764:504:0;-1:-1:-1;;;;;11917:26:0;;;;;;:18;:26;;;;;;;;11916:27;:74;;;;-1:-1:-1;;;;;;11961:29:0;;;;;;:18;:29;;;;;;;;11960:30;11916:74;:117;;;;-1:-1:-1;12028:4:0;;-1:-1:-1;;;;;12007:26:0;;;12028:4;;12007:26;;11916:117;:160;;;;-1:-1:-1;;;;;;12050:26:0;;7432:42;12050:26;;11916:160;11898:363;;;12167:16;;-1:-1:-1;;;;;12130:20:0;;;;;;:9;:20;;;;;;:32;;12155:6;12130:24;:32::i;:::-;12129:54;;12103:146;;;;-1:-1:-1;;;12103:146:0;;8880:2:1;12103:146:0;;;8862:21:1;8919:2;8899:18;;;8892:30;8958:32;8938:18;;;8931:60;9008:18;;12103:146:0;8678:354:1;12276:326:0;12440:12;;12430:6;:22;;:69;;;-1:-1:-1;;;;;;12473:26:0;;;;;;:18;:26;;;;;;;;12430:69;:119;;;-1:-1:-1;;;;;;12520:29:0;;;;;;:18;:29;;;;;;;;12430:119;12408:186;;;;-1:-1:-1;;;12408:186:0;;9239:2:1;12408:186:0;;;9221:21:1;9278:2;9258:18;;;9251:30;-1:-1:-1;;;9297:18:1;;;9290:47;9354:18;;12408:186:0;9037:341:1;15108:369:0;15235:41;15250:6;15258:9;15269:6;15235:14;:41::i;:::-;15231:239;;;15332:4;15293:18;9154;;;:9;:18;;;;;;15370:16;;15357:29;;15353:64;;;-1:-1:-1;15401:16:0;;15353:64;15432:26;15447:10;15432:14;:26::i;:::-;15278:192;15108:369;;;:::o;16002:1006::-;16123:7;;16170:6;;16123:7;-1:-1:-1;;;;;16254:23:0;;16272:4;16254:23;;;;:53;;-1:-1:-1;;;;;;16281:26:0;;16302:4;16281:26;;16254:53;16250:715;;;16328:31;16341:6;16349:9;16328:12;:31::i;:::-;16324:630;;;16412:1;16384:25;16391:6;16399:9;16384:6;:25::i;:::-;:29;16380:455;;;16450:102;16504:25;16511:6;16519:9;16504:6;:25::i;:::-;16461:11;;16450:23;;:6;;:10;:23::i;:::-;:27;;:102::i;:::-;16620:4;16602:24;;;;:9;:24;;;;;;16438:114;;-1:-1:-1;16602:87:0;;16438:114;16602:28;:87::i;:::-;16593:4;16575:24;;;;:9;:24;;;;;;;:114;;;;16717:42;;-1:-1:-1;;;;;16717:42:0;;;;;;;16749:9;1361:25:1;;1349:2;1334:18;;1215:177;16717:42:0;;;;;;;;16794:21;:6;16805:9;16794:10;:21::i;:::-;16784:31;;16380:455;16324:630;;;16892:4;;-1:-1:-1;;;;;16879:17:0;;;16892:4;;16879:17;:38;;;;-1:-1:-1;4259:7:0;4286:6;-1:-1:-1;;;;;16900:17:0;;;4286:6;;16900:17;;16879:38;16875:63;;;16929:9;16919:19;;16875:63;-1:-1:-1;16983:7:0;;;;-1:-1:-1;16002:1006:0;-1:-1:-1;;;;16002:1006:0:o;345:98::-;403:7;430:5;434:1;430;:5;:::i;14595:505::-;14770:14;;14835:4;14727;9154:18;;;:9;:18;;;;;;14891:8;;14727:4;;14760:24;;;;;-1:-1:-1;;14817:42:0;;14891:8;;;;;14890:9;:37;;;;-1:-1:-1;14916:11:0;;;;14890:37;:68;;;;-1:-1:-1;14944:14:0;;-1:-1:-1;;;14944:14:0;;;;14890:68;:93;;;;;14975:8;14890:93;:137;;;;-1:-1:-1;;;;;;15001:26:0;;;;;;:18;:26;;;;;;;;15000:27;14890:137;:171;;;;-1:-1:-1;15057:4:0;;-1:-1:-1;;;;;15044:17:0;;;15057:4;;15044:17;14890:171;:202;;;;;15078:14;14890:202;14870:222;14595:505;-1:-1:-1;;;;;;14595:505:0:o;12610:1174::-;7329:8;:15;;-1:-1:-1;;7329:15:0;;;;;12761:10:::1;::::0;12743:12:::1;::::0;12719::::1;::::0;7329:15;;12704:86:::1;::::0;12788:1:::1;::::0;12719:53:::1;::::0;12761:10;12719:37:::1;::::0;;;7340:4;12719:16:::1;:19::i;:::-;:23:::0;::::1;:37::i;12704:86::-;12681:109;;12801:32;12836:66;12879:12;12836:24;12847:12;;12836:6;:10;;:24;;;;:::i;:::-;:28:::0;::::1;:66::i;:::-;12801:101:::0;-1:-1:-1;12913:14:0::1;12930:36;:6:::0;12801:101;12930:10:::1;:36::i;:::-;12913:53:::0;-1:-1:-1;13002:21:0::1;13034:24;12913:53:::0;13034:16:::1;:24::i;:::-;13069:20;13092:41;:21;13118:14:::0;13092:25:::1;:41::i;:::-;13069:64;;13144:19;13166:48;13183:30;13200:12;;13183;:16;;:30;;;;:::i;:::-;13166:12:::0;;:16:::1;:48::i;:::-;13144:70;;13225:29;13257;13273:12;;13257:11;:15;;:29;;;;:::i;:::-;13225:61:::0;-1:-1:-1;13301:34:0;;13297:128:::1;;13352:61;13365:24;13391:21;13352:12;:61::i;:::-;13481:12;::::0;13435:20:::1;::::0;13458:36:::1;::::0;:18:::1;:11:::0;13474:1:::1;13458:15;:18::i;:36::-;13435:59:::0;-1:-1:-1;13509:16:0;;13505:96:::1;;13542:47;::::0;7630:42:::1;::::0;13542:47;::::1;;;::::0;13576:12;;13542:47:::1;::::0;;;13576:12;7630:42;13542:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;13505:96;13638:21;13674:29:::0;;13670:107:::1;;13720:45;::::0;7528:42:::1;::::0;13720:45;::::1;;;::::0;13748:16;;13720:45:::1;::::0;;;13748:16;7528:42;13720:45;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;13670:107;-1:-1:-1::0;;7367:8:0;:16;;-1:-1:-1;;7367:16:0;;;-1:-1:-1;;;;;;;;12610:1174:0:o;15485:205::-;-1:-1:-1;;;;;15622:26:0;;15592:4;15622:26;;;:18;:26;;;;;;;;15621:27;:61;;;;-1:-1:-1;;;;;;;15653:29:0;;;;;:18;:29;;;;;;;;15652:30;;15485:205;-1:-1:-1;15485:205:0:o;15698:296::-;15841:4;;15799:7;;-1:-1:-1;;;;;15841:4:0;;;15828:17;;;;15824:64;;-1:-1:-1;15869:7:0;;15862:14;;15824:64;15912:4;;-1:-1:-1;;;;;15912:4:0;;;15902:14;;;;15898:60;;-1:-1:-1;15940:6:0;;15933:13;;15898:60;-1:-1:-1;15975:11:0;;15698:296;;;;:::o;663:98::-;721:7;748:5;752:1;748;:5;:::i;557:98::-;615:7;642:5;646:1;642;:5;:::i;14143:444::-;14233:16;;;14247:1;14233:16;;;;;;;;14209:21;;14233:16;;;;;;;;;;-1:-1:-1;14233:16:0;14209:40;;14278:4;14260;14265:1;14260:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14260:23:0;;;:7;;;;;;;;;;:23;;;;14304:6;;:13;;;-1:-1:-1;;;14304:13:0;;;;:6;;;;;:11;;:13;;;;;14260:7;;14304:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14294:4;14299:1;14294:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14294:23:0;;;:7;;;;;;;;;:23;14360:6;;14328:53;;14345:4;;14360:6;14369:11;14328:8;:53::i;:::-;14392:6;;:187;;-1:-1:-1;;;14392:187:0;;-1:-1:-1;;;;;14392:6:0;;;;:57;;:187;;14464:11;;14392:6;;14506:4;;14533;;14553:15;;14392:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14198:389;14143:444;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2047:247::-;2106:6;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;2214:9;2201:23;2233:31;2258:5;2233:31;:::i;2507:388::-;2575:6;2583;2636:2;2624:9;2615:7;2611:23;2607:32;2604:52;;;2652:1;2649;2642:12;2604:52;2691:9;2678:23;2710:31;2735:5;2710:31;:::i;:::-;2760:5;-1:-1:-1;2817:2:1;2802:18;;2789:32;2830:33;2789:32;2830:33;:::i;:::-;2882:7;2872:17;;;2507:388;;;;;:::o;2900:180::-;2959:6;3012:2;3000:9;2991:7;2987:23;2983:32;2980:52;;;3028:1;3025;3018:12;2980:52;-1:-1:-1;3051:23:1;;2900:180;-1:-1:-1;2900:180:1:o;3085:356::-;3287:2;3269:21;;;3306:18;;;3299:30;3365:34;3360:2;3345:18;;3338:62;3432:2;3417:18;;3085:356::o;4143:251::-;4213:6;4266:2;4254:9;4245:7;4241:23;4237:32;4234:52;;;4282:1;4279;4272:12;4234:52;4314:9;4308:16;4333:31;4358:5;4333:31;:::i;5927:127::-;5988:10;5983:3;5979:20;5976:1;5969:31;6019:4;6016:1;6009:15;6043:4;6040:1;6033:15;6059:128;6126:9;;;6147:11;;;6144:37;;;6161:18;;:::i;6804:306::-;6892:6;6900;6908;6961:2;6949:9;6940:7;6936:23;6932:32;6929:52;;;6977:1;6974;6967:12;6929:52;7006:9;7000:16;6990:26;;7056:2;7045:9;7041:18;7035:25;7025:35;;7100:2;7089:9;7085:18;7079:25;7069:35;;6804:306;;;;;:::o;9383:125::-;9448:9;;;9469:10;;;9466:36;;;9482:18;;:::i;9513:217::-;9553:1;9579;9569:132;;9623:10;9618:3;9614:20;9611:1;9604:31;9658:4;9655:1;9648:15;9686:4;9683:1;9676:15;9569:132;-1:-1:-1;9715:9:1;;9513:217::o;9735:168::-;9808:9;;;9839;;9856:15;;;9850:22;;9836:37;9826:71;;9877:18;;:::i;10040:127::-;10101:10;10096:3;10092:20;10089:1;10082:31;10132:4;10129:1;10122:15;10156:4;10153:1;10146:15;10172:980;10434:4;10482:3;10471:9;10467:19;10513:6;10502:9;10495:25;10539:2;10577:6;10572:2;10561:9;10557:18;10550:34;10620:3;10615:2;10604:9;10600:18;10593:31;10644:6;10679;10673:13;10710:6;10702;10695:22;10748:3;10737:9;10733:19;10726:26;;10787:2;10779:6;10775:15;10761:29;;10808:1;10818:195;10832:6;10829:1;10826:13;10818:195;;;10897:13;;-1:-1:-1;;;;;10893:39:1;10881:52;;10988:15;;;;10953:12;;;;10929:1;10847:9;10818:195;;;-1:-1:-1;;;;;;;11069:32:1;;;;11064:2;11049:18;;11042:60;-1:-1:-1;;;11133:3:1;11118:19;11111:35;11030:3;10172:980;-1:-1:-1;;;10172:980:1:o

Swarm Source

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