ETH Price: $3,000.76 (+2.94%)
Gas: 2 Gwei

Token

On-Chain Dynamics (OCD)
 

Overview

Max Total Supply

1,000,000,000 OCD

Holders

3,187 ( -0.063%)

Market

Price

$0.00 @ 0.000000 ETH (+4.69%)

Onchain Market Cap

$1,306,770.00

Circulating Supply Market Cap

$530,669.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,068,900.204386724016893578 OCD

Value
$1,396.81 ( ~0.465485785568025 Eth) [0.1069%]
0xab1ec9a030004f101b19b5c6fd0f69ca025fbf29
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume
1
Uniswap V2 (Ethereum)
0X017E9DB34FC69AF0DC7C7B4B33511226971CDDC7-0XC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2$0.0013
0.0000004 Eth
$730.99
560,069.970 0X017E9DB34FC69AF0DC7C7B4B33511226971CDDC7
99.4566%
2
Matcha (Ethereum)
0X017E9DB34FC69AF0DC7C7B4B33511226971CDDC7-0XC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2$0.0017
0.0000005 Eth
$5.07
3,060.232 0X017E9DB34FC69AF0DC7C7B4B33511226971CDDC7
0.5434%

Contract Source Code Verified (Exact Match)

Contract Name:
OCD

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/*
 ██████╗ ███╗   ██╗       ██████╗██╗  ██╗ █████╗ ██╗███╗   ██╗    ██████╗ ██╗   ██╗███╗   ██╗ █████╗ ███╗   ███╗██╗ ██████╗███████╗
██╔═══██╗████╗  ██║      ██╔════╝██║  ██║██╔══██╗██║████╗  ██║    ██╔══██╗╚██╗ ██╔╝████╗  ██║██╔══██╗████╗ ████║██║██╔════╝██╔════╝
██║   ██║██╔██╗ ██║█████╗██║     ███████║███████║██║██╔██╗ ██║    ██║  ██║ ╚████╔╝ ██╔██╗ ██║███████║██╔████╔██║██║██║     ███████╗
██║   ██║██║╚██╗██║╚════╝██║     ██╔══██║██╔══██║██║██║╚██╗██║    ██║  ██║  ╚██╔╝  ██║╚██╗██║██╔══██║██║╚██╔╝██║██║██║     ╚════██║
╚██████╔╝██║ ╚████║      ╚██████╗██║  ██║██║  ██║██║██║ ╚████║    ██████╔╝   ██║   ██║ ╚████║██║  ██║██║ ╚═╝ ██║██║╚██████╗███████║
 ╚═════╝ ╚═╝  ╚═══╝       ╚═════╝╚═╝  ╚═╝╚═╝  ╚═╝╚═╝╚═╝  ╚═══╝    ╚═════╝    ╚═╝   ╚═╝  ╚═══╝╚═╝  ╚═╝╚═╝     ╚═╝╚═╝ ╚═════╝╚══════╝
                                                              OCD                                                                     
*/
// SPDX-License-Identifier:MIT
pragma solidity 0.8.18;

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

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

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

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

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

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

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

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

// Dex Factory contract interface
interface IDexFactory {
    function createPair(
        address tokenA,
        address tokenB
    ) external returns (address pair);
}

// Dex Router contract interface
interface IDexRouter {
    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;
}

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

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

contract Ownable is Context {
    address private _owner;

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

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

    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 = payable(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

abstract contract ReentrancyGuard {
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    /**
     * @dev Unauthorized reentrant call.
     */
    error ReentrancyGuardReentrantCall();

    constructor() {
        _status = _NOT_ENTERED;
    }

    modifier nonReentrant() {
        _nonReentrantBefore();
        _;
        _nonReentrantAfter();
    }

    function _nonReentrantBefore() private {
        // On the first call to nonReentrant, _status will be _NOT_ENTERED
        if (_status == _ENTERED) {
            revert ReentrancyGuardReentrantCall();
        }

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;
    }

    function _nonReentrantAfter() private {
        _status = _NOT_ENTERED;
    }

    function _reentrancyGuardEntered() internal view returns (bool) {
        return _status == _ENTERED;
    }
}

// Library dex swap
library Utils {
    function swapTokensForEth(
        address routerAddress,
        uint256 tokenAmount
    ) internal {
        IDexRouter dexRouter = IDexRouter(routerAddress);

        // generate the Dex pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        // make the swap
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp + 300
        );
    }
}

//On-Chain Dynamics $OCD

contract OCD is Context, IERC20, Ownable, ReentrancyGuard {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    mapping(address => bool) public isExcludedFromFee;

    string private _name = "On-Chain Dynamics";
    string private _symbol = "OCD";
    uint8 private _decimals = 18;
    uint256 private _totalSupply = 1_000_000_000 * 1e18; //1 Billion

    uint256 public minSwapAmount = _totalSupply / (2000);
    uint256 public percentDivider = 100;

    bool public distributeAndLiquifyStatus = true; 
    bool public feesStatus = true; // enable by default

    IDexRouter public dexRouter; //Uniswap  router declaration

    address public dexPair; //Uniswap  pair address declaration
    address public marketWallet;

    address private constant DEAD = address(0xdead);

    uint256 public marketFeeOnBuy = 0;

    uint256 public marketFeeOnSell = 0;

    event ExcludeFromFee(address indexed account, bool isExcluded);
    event NewSwapAmount(uint256 newAmount);
    event DistributionStatus(bool Status);
    event FeeStatus(bool Status);
    event FeeUpdated(uint256 amount);

    event marketWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    constructor() {
        _balances[
            address(0xeCAB3064B0FCa52fdcc8422280a927EF8f51fE8D)
        ] = _totalSupply; // Deployer

        marketWallet = address(0xdBBa71D308125218B1cD0fa4f93662EbDc28b43D); //Marketing & Development

        IDexRouter _dexRouter = IDexRouter(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        // Create a dex pair for this new ERC20
        address _dexPair = IDexFactory(_dexRouter.factory()).createPair(
            address(this),
            _dexRouter.WETH()
        );
        dexPair = _dexPair;

        // set the rest of the contract variables
        dexRouter = _dexRouter;

        //exclude owner and this contract from fee
        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[address(dexRouter)] = true;
        isExcludedFromFee[
            address(0x71B5759d73262FBb223956913ecF4ecC51057641)
        ] = true; // Pinklock

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

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //Ownable functions

    function setIncludeOrExcludeFromFee(
        address account,
        bool value
    ) external onlyOwner {
        isExcludedFromFee[account] = value;
        emit ExcludeFromFee(account, value);
    }

    function updateSwapAmount(uint256 _amount) external onlyOwner {
        require(_amount > 0, "min swap amount should be greater than zero");
        minSwapAmount = _amount * 1e18;
        emit NewSwapAmount(minSwapAmount);
    }

    function updateBuyFee(uint256 _marketFee) external onlyOwner {
        require(_marketFee <= 10, "max buy fee is 10");
        marketFeeOnBuy = _marketFee;
        emit FeeUpdated(marketFeeOnBuy);
    }

    function updateSellFee(uint256 _marketFee) external onlyOwner {
        require(_marketFee <= 10, "max sell fee is 10");
        marketFeeOnSell = _marketFee;
        emit FeeUpdated(marketFeeOnSell);
    }

    function setDistributionStatus(bool _value) external onlyOwner {
        // Check if the new value is different from the current state
        require(
            _value != distributeAndLiquifyStatus,
            "Value must be different from current state"
        );
        distributeAndLiquifyStatus = _value;
        emit DistributionStatus(_value);
    }

    function enableOrDisableFees(bool _value) external onlyOwner {
        // Check if the new value is different from the current state
        require(
            _value != feesStatus,
            "Value must be different from current state"
        );
        feesStatus = _value;
        emit FeeStatus(_value);
    }

    function updatemarketWallet(address newmarketWallet) external onlyOwner {
        require(
            newmarketWallet != address(0),
            "Ownable: new marketWallet is the zero address"
        );
        emit marketWalletUpdated(newmarketWallet, marketWallet);
        marketWallet = newmarketWallet;
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////

    //to receive ETH from dexRouter when swapping
    receive() external payable {}

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // Public viewable functions

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

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

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

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

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

    function transfer(
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(_msgSender(), 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(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()] - amount
        );
        return true;
    }

    function increaseAllowance(
        address spender,
        uint256 addedValue
    ) public virtual returns (bool) {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender] + (addedValue)
        );
        return true;
    }

    function decreaseAllowance(
        address spender,
        uint256 subtractedValue
    ) public virtual returns (bool) {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender] - subtractedValue
        );
        return true;
    }

    function totalBuyFeePerTx(uint256 amount) public view returns (uint256) {
        uint256 fee = (amount * marketFeeOnBuy) / percentDivider;
        return fee;
    }

    function totalSellFeePerTx(uint256 amount) public view returns (uint256) {
        uint256 fee = (amount * marketFeeOnSell) / percentDivider;
        return fee;
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "OCD: approve from the zero address");
        require(spender != address(0), "OCD: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "OCD: transfer from the zero address");
        require(to != address(0), "OCD: transfer to the zero address");
        require(amount > 0, "OCD: Amount must be greater than zero");

        // swap and liquify
        distributeAndLiquify(from, to);

        //indicates if fee should be deducted from transfer
        bool takeFee = true;

        //if any account belongs to isExcludedFromFee account then remove the fee
        if (isExcludedFromFee[from] || isExcludedFromFee[to] || !feesStatus) {
            takeFee = false;
        }

        //transfer amount, it will take tax, burn, liquidity fee
        _tokenTransfer(from, to, amount, takeFee);
    }

    //this method is responsible for processing all fee, if takeFee is true
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (dexPair == sender && takeFee) {
            uint256 allFee;
            uint256 tTransferAmount;
            allFee = totalBuyFeePerTx(amount);
            tTransferAmount = amount - allFee;

            _balances[sender] = _balances[sender] - amount;
            _balances[recipient] = _balances[recipient] + tTransferAmount;
            emit Transfer(sender, recipient, tTransferAmount);

            takeTokenFee(sender, allFee);
        } else if (dexPair == recipient && takeFee) {
            uint256 allFee = totalSellFeePerTx(amount);
            uint256 tTransferAmount = amount - allFee;
            _balances[sender] = _balances[sender] - amount;
            _balances[recipient] = _balances[recipient] + tTransferAmount;
            emit Transfer(sender, recipient, tTransferAmount);

            takeTokenFee(sender, allFee);
        } else {
            _balances[sender] = _balances[sender] - amount;
            _balances[recipient] = _balances[recipient] + (amount);
            emit Transfer(sender, recipient, amount);
        }
    }

    function takeTokenFee(address sender, uint256 amount) private {
        _balances[address(this)] = _balances[address(this)] + amount;

        emit Transfer(sender, address(this), amount);
    }

    // to withdarw ETH from contract
    function withdrawETH(uint256 _amount) external onlyOwner {
        require(address(this).balance >= _amount, "Invalid Amount");
        payable(msg.sender).transfer(_amount);

        emit Transfer(address(this), msg.sender, _amount);
    }

    function distributeAndLiquify(address from, address to) private {
        uint256 contractTokenBalance = balanceOf(address(this));

        if (
            contractTokenBalance >= minSwapAmount &&
            from != dexPair &&
            distributeAndLiquifyStatus &&
            !(from == address(this) && to == dexPair) // swap 1 time
        ) {
            // approve contract
            _approve(address(this), address(dexRouter), minSwapAmount);

            // lock into liquidty pool
            Utils.swapTokensForEth(address(dexRouter), minSwapAmount);
            uint256 ethForMarketing = address(this).balance;

            // sending Eth to Marketing wallet
            if (ethForMarketing > 0)
                payable(marketWallet).transfer(ethForMarketing);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"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":"bool","name":"Status","type":"bool"}],"name":"DistributionStatus","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"FeeStatus","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"FeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"NewSwapAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketWalletUpdated","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributeAndLiquifyStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"enableOrDisableFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feesStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentDivider","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"setDistributionStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setIncludeOrExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"totalBuyFeePerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"totalSellFeePerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketFee","type":"uint256"}],"name":"updateBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketFee","type":"uint256"}],"name":"updateSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"updateSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newmarketWallet","type":"address"}],"name":"updatemarketWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526040518060400160405280601181526020017f4f6e2d436861696e2044796e616d696373000000000000000000000000000000815250600590816200004a919062000980565b506040518060400160405280600381526020017f4f434400000000000000000000000000000000000000000000000000000000008152506006908162000091919062000980565b506012600760006101000a81548160ff021916908360ff1602179055506b033b2e3c9fd0803ce80000006008556107d0600854620000d0919062000a96565b6009556064600a556001600b60006101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff0219169083151502179055506000600e556000600f553480156200012557600080fd5b5062000136620006d560201b60201c565b6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600180819055506008546002600073ecab3064b0fca52fdcc8422280a927ef8f51fe8d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073dbba71d308125218b1cd0fa4f93662ebdc28b43d600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200030d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000333919062000b38565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200039b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c1919062000b38565b6040518363ffffffff1660e01b8152600401620003e092919062000b7b565b6020604051808303816000875af115801562000400573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000426919062000b38565b905080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600b60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000620004c0620006dd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460007371b5759d73262fbb223956913ecf4ecc5105764173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555073ecab3064b0fca52fdcc8422280a927ef8f51fe8d73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600854604051620006c5919062000bb9565b60405180910390a3505062000bd6565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200078857607f821691505b6020821081036200079e576200079d62000740565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620008087fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620007c9565b620008148683620007c9565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620008616200085b62000855846200082c565b62000836565b6200082c565b9050919050565b6000819050919050565b6200087d8362000840565b620008956200088c8262000868565b848454620007d6565b825550505050565b600090565b620008ac6200089d565b620008b981848462000872565b505050565b5b81811015620008e157620008d5600082620008a2565b600181019050620008bf565b5050565b601f8211156200093057620008fa81620007a4565b6200090584620007b9565b8101602085101562000915578190505b6200092d6200092485620007b9565b830182620008be565b50505b505050565b600082821c905092915050565b6000620009556000198460080262000935565b1980831691505092915050565b600062000970838362000942565b9150826002028217905092915050565b6200098b8262000706565b67ffffffffffffffff811115620009a757620009a662000711565b5b620009b382546200076f565b620009c0828285620008e5565b600060209050601f831160018114620009f85760008415620009e3578287015190505b620009ef858262000962565b86555062000a5f565b601f19841662000a0886620007a4565b60005b8281101562000a325784890151825560018201915060208501945060208101905062000a0b565b8683101562000a52578489015162000a4e601f89168262000942565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000aa3826200082c565b915062000ab0836200082c565b92508262000ac35762000ac262000a67565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b008262000ad3565b9050919050565b62000b128162000af3565b811462000b1e57600080fd5b50565b60008151905062000b328162000b07565b92915050565b60006020828403121562000b515762000b5062000ace565b5b600062000b618482850162000b21565b91505092915050565b62000b758162000af3565b82525050565b600060408201905062000b92600083018562000b6a565b62000ba1602083018462000b6a565b9392505050565b62000bb3816200082c565b82525050565b600060208201905062000bd0600083018462000ba8565b92915050565b6138818062000be66000396000f3fe6080604052600436106101fd5760003560e01c80638da5cb5b1161010d578063dd62ed3e116100a0578063f14210a61161006f578063f14210a614610768578063f242ab4114610791578063f2fde38b146107bc578063f4b3dbc3146107e5578063fe6f1b051461082257610204565b8063dd62ed3e14610698578063dd96022c146106d5578063e4440a8614610700578063ed4214291461072b57610204565b8063a457c2d7116100dc578063a457c2d7146105cc578063a9059cbb14610609578063ab3b554514610646578063b0bc2a2d1461066f57610204565b80638da5cb5b1461052457806392596c8c1461054f57806395d89b411461057857806396c24e4b146105a357610204565b8063338246e21161019057806370a082311161015f57806370a082311461044f578063715018a61461048c57806375cc5450146104a357806379777b4e146104ce578063879dd3c5146104f957610204565b8063338246e21461038157806339509351146103ac578063467abe0a146103e95780635342acb41461041257610204565b806318160ddd116101cc57806318160ddd146102c55780631d933a4a146102f057806323b872dd14610319578063313ce5671461035657610204565b806306fdde03146102095780630758d92414610234578063095ea7b31461025f5780630a2d140c1461029c57610204565b3661020457005b600080fd5b34801561021557600080fd5b5061021e61084d565b60405161022b9190612a57565b60405180910390f35b34801561024057600080fd5b506102496108df565b6040516102569190612af8565b60405180910390f35b34801561026b57600080fd5b5061028660048036038101906102819190612b8c565b610905565b6040516102939190612be7565b60405180910390f35b3480156102a857600080fd5b506102c360048036038101906102be9190612c2e565b610923565b005b3480156102d157600080fd5b506102da610a61565b6040516102e79190612c6a565b60405180910390f35b3480156102fc57600080fd5b5061031760048036038101906103129190612c85565b610a6b565b005b34801561032557600080fd5b50610340600480360381019061033b9190612cb2565b610b87565b60405161034d9190612be7565b60405180910390f35b34801561036257600080fd5b5061036b610c3f565b6040516103789190612d21565b60405180910390f35b34801561038d57600080fd5b50610396610c56565b6040516103a39190612c6a565b60405180910390f35b3480156103b857600080fd5b506103d360048036038101906103ce9190612b8c565b610c5c565b6040516103e09190612be7565b60405180910390f35b3480156103f557600080fd5b50610410600480360381019061040b9190612c85565b610d08565b005b34801561041e57600080fd5b5061043960048036038101906104349190612d3c565b610e24565b6040516104469190612be7565b60405180910390f35b34801561045b57600080fd5b5061047660048036038101906104719190612d3c565b610e44565b6040516104839190612c6a565b60405180910390f35b34801561049857600080fd5b506104a1610e8d565b005b3480156104af57600080fd5b506104b8610fe0565b6040516104c59190612c6a565b60405180910390f35b3480156104da57600080fd5b506104e3610fe6565b6040516104f09190612be7565b60405180910390f35b34801561050557600080fd5b5061050e610ff9565b60405161051b9190612be7565b60405180910390f35b34801561053057600080fd5b5061053961100c565b6040516105469190612d78565b60405180910390f35b34801561055b57600080fd5b5061057660048036038101906105719190612d93565b611035565b005b34801561058457600080fd5b5061058d611173565b60405161059a9190612a57565b60405180910390f35b3480156105af57600080fd5b506105ca60048036038101906105c59190612d3c565b611205565b005b3480156105d857600080fd5b506105f360048036038101906105ee9190612b8c565b6113c9565b6040516106009190612be7565b60405180910390f35b34801561061557600080fd5b50610630600480360381019061062b9190612b8c565b611475565b60405161063d9190612be7565b60405180910390f35b34801561065257600080fd5b5061066d60048036038101906106689190612c85565b611493565b005b34801561067b57600080fd5b5061069660048036038101906106919190612c2e565b6115c1565b005b3480156106a457600080fd5b506106bf60048036038101906106ba9190612dd3565b6116ff565b6040516106cc9190612c6a565b60405180910390f35b3480156106e157600080fd5b506106ea611786565b6040516106f79190612c6a565b60405180910390f35b34801561070c57600080fd5b5061071561178c565b6040516107229190612d78565b60405180910390f35b34801561073757600080fd5b50610752600480360381019061074d9190612c85565b6117b2565b60405161075f9190612c6a565b60405180910390f35b34801561077457600080fd5b5061078f600480360381019061078a9190612c85565b6117db565b005b34801561079d57600080fd5b506107a6611962565b6040516107b39190612d78565b60405180910390f35b3480156107c857600080fd5b506107e360048036038101906107de9190612d3c565b611988565b005b3480156107f157600080fd5b5061080c60048036038101906108079190612c85565b611b49565b6040516108199190612c6a565b60405180910390f35b34801561082e57600080fd5b50610837611b72565b6040516108449190612c6a565b60405180910390f35b60606005805461085c90612e42565b80601f016020809104026020016040519081016040528092919081815260200182805461088890612e42565b80156108d55780601f106108aa576101008083540402835291602001916108d5565b820191906000526020600020905b8154815290600101906020018083116108b857829003601f168201915b5050505050905090565b600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610919610912611b78565b8484611b80565b6001905092915050565b61092b611b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109af90612ebf565b60405180910390fd5b600b60009054906101000a900460ff16151581151503610a0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0490612f51565b60405180910390fd5b80600b60006101000a81548160ff0219169083151502179055507f0ff846c521f32cbf9b5885504ef4a918e437ceb78c26a4b3bdde29162fc36dd381604051610a569190612be7565b60405180910390a150565b6000600854905090565b610a73611b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af790612ebf565b60405180910390fd5b600a811115610b44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3b90612fbd565b60405180910390fd5b80600f819055507f8c4d35e54a3f2ef1134138fd8ea3daee6a3c89e10d2665996babdf70261e2c76600f54604051610b7c9190612c6a565b60405180910390a150565b6000610b94848484611d49565b610c3484610ba0611b78565b84600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610bea611b78565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c2f919061300c565b611b80565b600190509392505050565b6000600760009054906101000a900460ff16905090565b60095481565b6000610cfe610c69611b78565b848460036000610c77611b78565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610cf99190613040565b611b80565b6001905092915050565b610d10611b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9490612ebf565b60405180910390fd5b600a811115610de1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd8906130c0565b60405180910390fd5b80600e819055507f8c4d35e54a3f2ef1134138fd8ea3daee6a3c89e10d2665996babdf70261e2c76600e54604051610e199190612c6a565b60405180910390a150565b60046020528060005260406000206000915054906101000a900460ff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e95611b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1990612ebf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f5481565b600b60009054906101000a900460ff1681565b600b60019054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61103d611b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c190612ebf565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fd5144d2a6c8ff9b87b7a40852df5102cab2ce561c06b56cc6fe7ccf1fa7f8c2d826040516111679190612be7565b60405180910390a25050565b60606006805461118290612e42565b80601f01602080910402602001604051908101604052809291908181526020018280546111ae90612e42565b80156111fb5780601f106111d0576101008083540402835291602001916111fb565b820191906000526020600020905b8154815290600101906020018083116111de57829003601f168201915b5050505050905090565b61120d611b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461129a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129190612ebf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611309576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130090613152565b60405180910390fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167ffbc4855d2e668d02a931a2a40a0bc9b0be8adde30550851b1a650aabc0d498f160405160405180910390a380600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061146b6113d6611b78565b8484600360006113e4611b78565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611466919061300c565b611b80565b6001905092915050565b6000611489611482611b78565b8484611d49565b6001905092915050565b61149b611b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611528576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151f90612ebf565b60405180910390fd5b6000811161156b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611562906131e4565b60405180910390fd5b670de0b6b3a76400008161157f9190613204565b6009819055507f2e6bb606f8e40581f3aead29e6b2d80455a891e6b1a8cee3624f74a93f0155936009546040516115b69190612c6a565b60405180910390a150565b6115c9611b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611656576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164d90612ebf565b60405180910390fd5b600b60019054906101000a900460ff161515811515036116ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a290612f51565b60405180910390fd5b80600b60016101000a81548160ff0219169083151502179055507f257582677437c495f1b305cc04a478c3678e6859529c07c31ca8a2efd7e0c0b8816040516116f49190612be7565b60405180910390a150565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600e5481565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600a54600e54846117c69190613204565b6117d09190613275565b905080915050919050565b6117e3611b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611870576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186790612ebf565b60405180910390fd5b804710156118b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118aa906132f2565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156118f9573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119579190612c6a565b60405180910390a350565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611990611b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1490612ebf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8390613384565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600a54600f5484611b5d9190613204565b611b679190613275565b905080915050919050565b600a5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be690613416565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5590613482565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d3c9190612c6a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611db8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611daf90613514565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1e906135a6565b60405180910390fd5b60008111611e6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6190613638565b60405180910390fd5b611e748383611f4f565b600060019050600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611f1b5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611f335750600b60019054906101000a900460ff16155b15611f3d57600090505b611f4984848484612146565b50505050565b6000611f5a30610e44565b90506009548110158015611fbc5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611fd45750600b60009054906101000a900460ff165b801561206557503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120635750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b155b156121415761209930600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600954611b80565b6120c7600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009546126ea565b6000479050600081111561213f57600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561213d573d6000803e3d6000fd5b505b505b505050565b8373ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156121a05750805b15612353576000806121b1846117b2565b915081846121bf919061300c565b905083600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461220c919061300c565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461229a9190613040565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161233a9190612c6a565b60405180910390a361234c86836128d0565b50506126e4565b8273ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156123ad5750805b156125615760006123bd83611b49565b9050600081846123cd919061300c565b905083600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461241a919061300c565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124a89190613040565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125489190612c6a565b60405180910390a361255a86836128d0565b50506126e3565b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ac919061300c565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263a9190613040565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126da9190612c6a565b60405180910390a35b5b50505050565b60008290506000600267ffffffffffffffff81111561270c5761270b613658565b5b60405190808252806020026020018201604052801561273a5781602001602082028036833780820191505090505b509050308160008151811061275257612751613687565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127fb91906136cb565b8160018151811061280f5761280e613687565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663791ac947846000843061012c426128789190613040565b6040518663ffffffff1660e01b81526004016128989594939291906137f1565b600060405180830381600087803b1580156128b257600080fd5b505af11580156128c6573d6000803e3d6000fd5b5050505050505050565b80600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461291b9190613040565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516129bb9190612c6a565b60405180910390a35050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a015780820151818401526020810190506129e6565b60008484015250505050565b6000601f19601f8301169050919050565b6000612a29826129c7565b612a3381856129d2565b9350612a438185602086016129e3565b612a4c81612a0d565b840191505092915050565b60006020820190508181036000830152612a718184612a1e565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000612abe612ab9612ab484612a79565b612a99565b612a79565b9050919050565b6000612ad082612aa3565b9050919050565b6000612ae282612ac5565b9050919050565b612af281612ad7565b82525050565b6000602082019050612b0d6000830184612ae9565b92915050565b600080fd5b6000612b2382612a79565b9050919050565b612b3381612b18565b8114612b3e57600080fd5b50565b600081359050612b5081612b2a565b92915050565b6000819050919050565b612b6981612b56565b8114612b7457600080fd5b50565b600081359050612b8681612b60565b92915050565b60008060408385031215612ba357612ba2612b13565b5b6000612bb185828601612b41565b9250506020612bc285828601612b77565b9150509250929050565b60008115159050919050565b612be181612bcc565b82525050565b6000602082019050612bfc6000830184612bd8565b92915050565b612c0b81612bcc565b8114612c1657600080fd5b50565b600081359050612c2881612c02565b92915050565b600060208284031215612c4457612c43612b13565b5b6000612c5284828501612c19565b91505092915050565b612c6481612b56565b82525050565b6000602082019050612c7f6000830184612c5b565b92915050565b600060208284031215612c9b57612c9a612b13565b5b6000612ca984828501612b77565b91505092915050565b600080600060608486031215612ccb57612cca612b13565b5b6000612cd986828701612b41565b9350506020612cea86828701612b41565b9250506040612cfb86828701612b77565b9150509250925092565b600060ff82169050919050565b612d1b81612d05565b82525050565b6000602082019050612d366000830184612d12565b92915050565b600060208284031215612d5257612d51612b13565b5b6000612d6084828501612b41565b91505092915050565b612d7281612b18565b82525050565b6000602082019050612d8d6000830184612d69565b92915050565b60008060408385031215612daa57612da9612b13565b5b6000612db885828601612b41565b9250506020612dc985828601612c19565b9150509250929050565b60008060408385031215612dea57612de9612b13565b5b6000612df885828601612b41565b9250506020612e0985828601612b41565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612e5a57607f821691505b602082108103612e6d57612e6c612e13565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612ea96020836129d2565b9150612eb482612e73565b602082019050919050565b60006020820190508181036000830152612ed881612e9c565b9050919050565b7f56616c7565206d75737420626520646966666572656e742066726f6d2063757260008201527f72656e7420737461746500000000000000000000000000000000000000000000602082015250565b6000612f3b602a836129d2565b9150612f4682612edf565b604082019050919050565b60006020820190508181036000830152612f6a81612f2e565b9050919050565b7f6d61782073656c6c206665652069732031300000000000000000000000000000600082015250565b6000612fa76012836129d2565b9150612fb282612f71565b602082019050919050565b60006020820190508181036000830152612fd681612f9a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061301782612b56565b915061302283612b56565b925082820390508181111561303a57613039612fdd565b5b92915050565b600061304b82612b56565b915061305683612b56565b925082820190508082111561306e5761306d612fdd565b5b92915050565b7f6d61782062757920666565206973203130000000000000000000000000000000600082015250565b60006130aa6011836129d2565b91506130b582613074565b602082019050919050565b600060208201905081810360008301526130d98161309d565b9050919050565b7f4f776e61626c653a206e6577206d61726b657457616c6c65742069732074686560008201527f207a65726f206164647265737300000000000000000000000000000000000000602082015250565b600061313c602d836129d2565b9150613147826130e0565b604082019050919050565b6000602082019050818103600083015261316b8161312f565b9050919050565b7f6d696e207377617020616d6f756e742073686f756c642062652067726561746560008201527f72207468616e207a65726f000000000000000000000000000000000000000000602082015250565b60006131ce602b836129d2565b91506131d982613172565b604082019050919050565b600060208201905081810360008301526131fd816131c1565b9050919050565b600061320f82612b56565b915061321a83612b56565b925082820261322881612b56565b9150828204841483151761323f5761323e612fdd565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061328082612b56565b915061328b83612b56565b92508261329b5761329a613246565b5b828204905092915050565b7f496e76616c696420416d6f756e74000000000000000000000000000000000000600082015250565b60006132dc600e836129d2565b91506132e7826132a6565b602082019050919050565b6000602082019050818103600083015261330b816132cf565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061336e6026836129d2565b915061337982613312565b604082019050919050565b6000602082019050818103600083015261339d81613361565b9050919050565b7f4f43443a20617070726f76652066726f6d20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006134006022836129d2565b915061340b826133a4565b604082019050919050565b6000602082019050818103600083015261342f816133f3565b9050919050565b7f4f43443a20617070726f766520746f20746865207a65726f2061646472657373600082015250565b600061346c6020836129d2565b915061347782613436565b602082019050919050565b6000602082019050818103600083015261349b8161345f565b9050919050565b7f4f43443a207472616e736665722066726f6d20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006134fe6023836129d2565b9150613509826134a2565b604082019050919050565b6000602082019050818103600083015261352d816134f1565b9050919050565b7f4f43443a207472616e7366657220746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006135906021836129d2565b915061359b82613534565b604082019050919050565b600060208201905081810360008301526135bf81613583565b9050919050565b7f4f43443a20416d6f756e74206d7573742062652067726561746572207468616e60008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006136226025836129d2565b915061362d826135c6565b604082019050919050565b6000602082019050818103600083015261365181613615565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506136c581612b2a565b92915050565b6000602082840312156136e1576136e0612b13565b5b60006136ef848285016136b6565b91505092915050565b6000819050919050565b600061371d613718613713846136f8565b612a99565b612b56565b9050919050565b61372d81613702565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61376881612b18565b82525050565b600061377a838361375f565b60208301905092915050565b6000602082019050919050565b600061379e82613733565b6137a8818561373e565b93506137b38361374f565b8060005b838110156137e45781516137cb888261376e565b97506137d683613786565b9250506001810190506137b7565b5085935050505092915050565b600060a0820190506138066000830188612c5b565b6138136020830187613724565b81810360408301526138258186613793565b90506138346060830185612d69565b6138416080830184612c5b565b969550505050505056fea26469706673582212204ab4abf862314bc272f53dcaac5761eed048095562e30d6b5d9d3a31fab1831a64736f6c63430008120033

Deployed Bytecode

0x6080604052600436106101fd5760003560e01c80638da5cb5b1161010d578063dd62ed3e116100a0578063f14210a61161006f578063f14210a614610768578063f242ab4114610791578063f2fde38b146107bc578063f4b3dbc3146107e5578063fe6f1b051461082257610204565b8063dd62ed3e14610698578063dd96022c146106d5578063e4440a8614610700578063ed4214291461072b57610204565b8063a457c2d7116100dc578063a457c2d7146105cc578063a9059cbb14610609578063ab3b554514610646578063b0bc2a2d1461066f57610204565b80638da5cb5b1461052457806392596c8c1461054f57806395d89b411461057857806396c24e4b146105a357610204565b8063338246e21161019057806370a082311161015f57806370a082311461044f578063715018a61461048c57806375cc5450146104a357806379777b4e146104ce578063879dd3c5146104f957610204565b8063338246e21461038157806339509351146103ac578063467abe0a146103e95780635342acb41461041257610204565b806318160ddd116101cc57806318160ddd146102c55780631d933a4a146102f057806323b872dd14610319578063313ce5671461035657610204565b806306fdde03146102095780630758d92414610234578063095ea7b31461025f5780630a2d140c1461029c57610204565b3661020457005b600080fd5b34801561021557600080fd5b5061021e61084d565b60405161022b9190612a57565b60405180910390f35b34801561024057600080fd5b506102496108df565b6040516102569190612af8565b60405180910390f35b34801561026b57600080fd5b5061028660048036038101906102819190612b8c565b610905565b6040516102939190612be7565b60405180910390f35b3480156102a857600080fd5b506102c360048036038101906102be9190612c2e565b610923565b005b3480156102d157600080fd5b506102da610a61565b6040516102e79190612c6a565b60405180910390f35b3480156102fc57600080fd5b5061031760048036038101906103129190612c85565b610a6b565b005b34801561032557600080fd5b50610340600480360381019061033b9190612cb2565b610b87565b60405161034d9190612be7565b60405180910390f35b34801561036257600080fd5b5061036b610c3f565b6040516103789190612d21565b60405180910390f35b34801561038d57600080fd5b50610396610c56565b6040516103a39190612c6a565b60405180910390f35b3480156103b857600080fd5b506103d360048036038101906103ce9190612b8c565b610c5c565b6040516103e09190612be7565b60405180910390f35b3480156103f557600080fd5b50610410600480360381019061040b9190612c85565b610d08565b005b34801561041e57600080fd5b5061043960048036038101906104349190612d3c565b610e24565b6040516104469190612be7565b60405180910390f35b34801561045b57600080fd5b5061047660048036038101906104719190612d3c565b610e44565b6040516104839190612c6a565b60405180910390f35b34801561049857600080fd5b506104a1610e8d565b005b3480156104af57600080fd5b506104b8610fe0565b6040516104c59190612c6a565b60405180910390f35b3480156104da57600080fd5b506104e3610fe6565b6040516104f09190612be7565b60405180910390f35b34801561050557600080fd5b5061050e610ff9565b60405161051b9190612be7565b60405180910390f35b34801561053057600080fd5b5061053961100c565b6040516105469190612d78565b60405180910390f35b34801561055b57600080fd5b5061057660048036038101906105719190612d93565b611035565b005b34801561058457600080fd5b5061058d611173565b60405161059a9190612a57565b60405180910390f35b3480156105af57600080fd5b506105ca60048036038101906105c59190612d3c565b611205565b005b3480156105d857600080fd5b506105f360048036038101906105ee9190612b8c565b6113c9565b6040516106009190612be7565b60405180910390f35b34801561061557600080fd5b50610630600480360381019061062b9190612b8c565b611475565b60405161063d9190612be7565b60405180910390f35b34801561065257600080fd5b5061066d60048036038101906106689190612c85565b611493565b005b34801561067b57600080fd5b5061069660048036038101906106919190612c2e565b6115c1565b005b3480156106a457600080fd5b506106bf60048036038101906106ba9190612dd3565b6116ff565b6040516106cc9190612c6a565b60405180910390f35b3480156106e157600080fd5b506106ea611786565b6040516106f79190612c6a565b60405180910390f35b34801561070c57600080fd5b5061071561178c565b6040516107229190612d78565b60405180910390f35b34801561073757600080fd5b50610752600480360381019061074d9190612c85565b6117b2565b60405161075f9190612c6a565b60405180910390f35b34801561077457600080fd5b5061078f600480360381019061078a9190612c85565b6117db565b005b34801561079d57600080fd5b506107a6611962565b6040516107b39190612d78565b60405180910390f35b3480156107c857600080fd5b506107e360048036038101906107de9190612d3c565b611988565b005b3480156107f157600080fd5b5061080c60048036038101906108079190612c85565b611b49565b6040516108199190612c6a565b60405180910390f35b34801561082e57600080fd5b50610837611b72565b6040516108449190612c6a565b60405180910390f35b60606005805461085c90612e42565b80601f016020809104026020016040519081016040528092919081815260200182805461088890612e42565b80156108d55780601f106108aa576101008083540402835291602001916108d5565b820191906000526020600020905b8154815290600101906020018083116108b857829003601f168201915b5050505050905090565b600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610919610912611b78565b8484611b80565b6001905092915050565b61092b611b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109af90612ebf565b60405180910390fd5b600b60009054906101000a900460ff16151581151503610a0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0490612f51565b60405180910390fd5b80600b60006101000a81548160ff0219169083151502179055507f0ff846c521f32cbf9b5885504ef4a918e437ceb78c26a4b3bdde29162fc36dd381604051610a569190612be7565b60405180910390a150565b6000600854905090565b610a73611b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af790612ebf565b60405180910390fd5b600a811115610b44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3b90612fbd565b60405180910390fd5b80600f819055507f8c4d35e54a3f2ef1134138fd8ea3daee6a3c89e10d2665996babdf70261e2c76600f54604051610b7c9190612c6a565b60405180910390a150565b6000610b94848484611d49565b610c3484610ba0611b78565b84600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610bea611b78565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c2f919061300c565b611b80565b600190509392505050565b6000600760009054906101000a900460ff16905090565b60095481565b6000610cfe610c69611b78565b848460036000610c77611b78565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610cf99190613040565b611b80565b6001905092915050565b610d10611b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9490612ebf565b60405180910390fd5b600a811115610de1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd8906130c0565b60405180910390fd5b80600e819055507f8c4d35e54a3f2ef1134138fd8ea3daee6a3c89e10d2665996babdf70261e2c76600e54604051610e199190612c6a565b60405180910390a150565b60046020528060005260406000206000915054906101000a900460ff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e95611b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1990612ebf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f5481565b600b60009054906101000a900460ff1681565b600b60019054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61103d611b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c190612ebf565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fd5144d2a6c8ff9b87b7a40852df5102cab2ce561c06b56cc6fe7ccf1fa7f8c2d826040516111679190612be7565b60405180910390a25050565b60606006805461118290612e42565b80601f01602080910402602001604051908101604052809291908181526020018280546111ae90612e42565b80156111fb5780601f106111d0576101008083540402835291602001916111fb565b820191906000526020600020905b8154815290600101906020018083116111de57829003601f168201915b5050505050905090565b61120d611b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461129a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129190612ebf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611309576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130090613152565b60405180910390fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167ffbc4855d2e668d02a931a2a40a0bc9b0be8adde30550851b1a650aabc0d498f160405160405180910390a380600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061146b6113d6611b78565b8484600360006113e4611b78565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611466919061300c565b611b80565b6001905092915050565b6000611489611482611b78565b8484611d49565b6001905092915050565b61149b611b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611528576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151f90612ebf565b60405180910390fd5b6000811161156b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611562906131e4565b60405180910390fd5b670de0b6b3a76400008161157f9190613204565b6009819055507f2e6bb606f8e40581f3aead29e6b2d80455a891e6b1a8cee3624f74a93f0155936009546040516115b69190612c6a565b60405180910390a150565b6115c9611b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611656576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164d90612ebf565b60405180910390fd5b600b60019054906101000a900460ff161515811515036116ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a290612f51565b60405180910390fd5b80600b60016101000a81548160ff0219169083151502179055507f257582677437c495f1b305cc04a478c3678e6859529c07c31ca8a2efd7e0c0b8816040516116f49190612be7565b60405180910390a150565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600e5481565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600a54600e54846117c69190613204565b6117d09190613275565b905080915050919050565b6117e3611b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611870576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186790612ebf565b60405180910390fd5b804710156118b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118aa906132f2565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156118f9573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119579190612c6a565b60405180910390a350565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611990611b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1490612ebf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8390613384565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600a54600f5484611b5d9190613204565b611b679190613275565b905080915050919050565b600a5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be690613416565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5590613482565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d3c9190612c6a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611db8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611daf90613514565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1e906135a6565b60405180910390fd5b60008111611e6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6190613638565b60405180910390fd5b611e748383611f4f565b600060019050600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611f1b5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611f335750600b60019054906101000a900460ff16155b15611f3d57600090505b611f4984848484612146565b50505050565b6000611f5a30610e44565b90506009548110158015611fbc5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611fd45750600b60009054906101000a900460ff165b801561206557503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120635750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b155b156121415761209930600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600954611b80565b6120c7600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009546126ea565b6000479050600081111561213f57600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561213d573d6000803e3d6000fd5b505b505b505050565b8373ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156121a05750805b15612353576000806121b1846117b2565b915081846121bf919061300c565b905083600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461220c919061300c565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461229a9190613040565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161233a9190612c6a565b60405180910390a361234c86836128d0565b50506126e4565b8273ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156123ad5750805b156125615760006123bd83611b49565b9050600081846123cd919061300c565b905083600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461241a919061300c565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124a89190613040565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125489190612c6a565b60405180910390a361255a86836128d0565b50506126e3565b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ac919061300c565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263a9190613040565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126da9190612c6a565b60405180910390a35b5b50505050565b60008290506000600267ffffffffffffffff81111561270c5761270b613658565b5b60405190808252806020026020018201604052801561273a5781602001602082028036833780820191505090505b509050308160008151811061275257612751613687565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127fb91906136cb565b8160018151811061280f5761280e613687565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663791ac947846000843061012c426128789190613040565b6040518663ffffffff1660e01b81526004016128989594939291906137f1565b600060405180830381600087803b1580156128b257600080fd5b505af11580156128c6573d6000803e3d6000fd5b5050505050505050565b80600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461291b9190613040565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516129bb9190612c6a565b60405180910390a35050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a015780820151818401526020810190506129e6565b60008484015250505050565b6000601f19601f8301169050919050565b6000612a29826129c7565b612a3381856129d2565b9350612a438185602086016129e3565b612a4c81612a0d565b840191505092915050565b60006020820190508181036000830152612a718184612a1e565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000612abe612ab9612ab484612a79565b612a99565b612a79565b9050919050565b6000612ad082612aa3565b9050919050565b6000612ae282612ac5565b9050919050565b612af281612ad7565b82525050565b6000602082019050612b0d6000830184612ae9565b92915050565b600080fd5b6000612b2382612a79565b9050919050565b612b3381612b18565b8114612b3e57600080fd5b50565b600081359050612b5081612b2a565b92915050565b6000819050919050565b612b6981612b56565b8114612b7457600080fd5b50565b600081359050612b8681612b60565b92915050565b60008060408385031215612ba357612ba2612b13565b5b6000612bb185828601612b41565b9250506020612bc285828601612b77565b9150509250929050565b60008115159050919050565b612be181612bcc565b82525050565b6000602082019050612bfc6000830184612bd8565b92915050565b612c0b81612bcc565b8114612c1657600080fd5b50565b600081359050612c2881612c02565b92915050565b600060208284031215612c4457612c43612b13565b5b6000612c5284828501612c19565b91505092915050565b612c6481612b56565b82525050565b6000602082019050612c7f6000830184612c5b565b92915050565b600060208284031215612c9b57612c9a612b13565b5b6000612ca984828501612b77565b91505092915050565b600080600060608486031215612ccb57612cca612b13565b5b6000612cd986828701612b41565b9350506020612cea86828701612b41565b9250506040612cfb86828701612b77565b9150509250925092565b600060ff82169050919050565b612d1b81612d05565b82525050565b6000602082019050612d366000830184612d12565b92915050565b600060208284031215612d5257612d51612b13565b5b6000612d6084828501612b41565b91505092915050565b612d7281612b18565b82525050565b6000602082019050612d8d6000830184612d69565b92915050565b60008060408385031215612daa57612da9612b13565b5b6000612db885828601612b41565b9250506020612dc985828601612c19565b9150509250929050565b60008060408385031215612dea57612de9612b13565b5b6000612df885828601612b41565b9250506020612e0985828601612b41565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612e5a57607f821691505b602082108103612e6d57612e6c612e13565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612ea96020836129d2565b9150612eb482612e73565b602082019050919050565b60006020820190508181036000830152612ed881612e9c565b9050919050565b7f56616c7565206d75737420626520646966666572656e742066726f6d2063757260008201527f72656e7420737461746500000000000000000000000000000000000000000000602082015250565b6000612f3b602a836129d2565b9150612f4682612edf565b604082019050919050565b60006020820190508181036000830152612f6a81612f2e565b9050919050565b7f6d61782073656c6c206665652069732031300000000000000000000000000000600082015250565b6000612fa76012836129d2565b9150612fb282612f71565b602082019050919050565b60006020820190508181036000830152612fd681612f9a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061301782612b56565b915061302283612b56565b925082820390508181111561303a57613039612fdd565b5b92915050565b600061304b82612b56565b915061305683612b56565b925082820190508082111561306e5761306d612fdd565b5b92915050565b7f6d61782062757920666565206973203130000000000000000000000000000000600082015250565b60006130aa6011836129d2565b91506130b582613074565b602082019050919050565b600060208201905081810360008301526130d98161309d565b9050919050565b7f4f776e61626c653a206e6577206d61726b657457616c6c65742069732074686560008201527f207a65726f206164647265737300000000000000000000000000000000000000602082015250565b600061313c602d836129d2565b9150613147826130e0565b604082019050919050565b6000602082019050818103600083015261316b8161312f565b9050919050565b7f6d696e207377617020616d6f756e742073686f756c642062652067726561746560008201527f72207468616e207a65726f000000000000000000000000000000000000000000602082015250565b60006131ce602b836129d2565b91506131d982613172565b604082019050919050565b600060208201905081810360008301526131fd816131c1565b9050919050565b600061320f82612b56565b915061321a83612b56565b925082820261322881612b56565b9150828204841483151761323f5761323e612fdd565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061328082612b56565b915061328b83612b56565b92508261329b5761329a613246565b5b828204905092915050565b7f496e76616c696420416d6f756e74000000000000000000000000000000000000600082015250565b60006132dc600e836129d2565b91506132e7826132a6565b602082019050919050565b6000602082019050818103600083015261330b816132cf565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061336e6026836129d2565b915061337982613312565b604082019050919050565b6000602082019050818103600083015261339d81613361565b9050919050565b7f4f43443a20617070726f76652066726f6d20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006134006022836129d2565b915061340b826133a4565b604082019050919050565b6000602082019050818103600083015261342f816133f3565b9050919050565b7f4f43443a20617070726f766520746f20746865207a65726f2061646472657373600082015250565b600061346c6020836129d2565b915061347782613436565b602082019050919050565b6000602082019050818103600083015261349b8161345f565b9050919050565b7f4f43443a207472616e736665722066726f6d20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006134fe6023836129d2565b9150613509826134a2565b604082019050919050565b6000602082019050818103600083015261352d816134f1565b9050919050565b7f4f43443a207472616e7366657220746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006135906021836129d2565b915061359b82613534565b604082019050919050565b600060208201905081810360008301526135bf81613583565b9050919050565b7f4f43443a20416d6f756e74206d7573742062652067726561746572207468616e60008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006136226025836129d2565b915061362d826135c6565b604082019050919050565b6000602082019050818103600083015261365181613615565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506136c581612b2a565b92915050565b6000602082840312156136e1576136e0612b13565b5b60006136ef848285016136b6565b91505092915050565b6000819050919050565b600061371d613718613713846136f8565b612a99565b612b56565b9050919050565b61372d81613702565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61376881612b18565b82525050565b600061377a838361375f565b60208301905092915050565b6000602082019050919050565b600061379e82613733565b6137a8818561373e565b93506137b38361374f565b8060005b838110156137e45781516137cb888261376e565b97506137d683613786565b9250506001810190506137b7565b5085935050505092915050565b600060a0820190506138066000830188612c5b565b6138136020830187613724565b81810360408301526138258186613793565b90506138346060830185612d69565b6138416080830184612c5b565b969550505050505056fea26469706673582212204ab4abf862314bc272f53dcaac5761eed048095562e30d6b5d9d3a31fab1831a64736f6c63430008120033

Deployed Bytecode Sourcemap

6985:11333:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12030:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7644:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12918:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10631:369;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12307:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10413:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13112:350;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12216:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7429:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13470:292;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10199:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7178:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12415:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4862:157;;;;;;;;;;;;;:::i;:::-;;7909:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7532:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7585:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4648:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9742:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12121:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11342:322;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13770:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12542:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9958:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11008:326;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12742:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7867:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7775:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14078:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17249:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7710:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5027:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14254:170;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7488:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12030:83;12067:13;12100:5;12093:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12030:83;:::o;7644:27::-;;;;;;;;;;;;;:::o;12918:186::-;13018:4;13035:39;13044:12;:10;:12::i;:::-;13058:7;13067:6;13035:8;:39::i;:::-;13092:4;13085:11;;12918:186;;;;:::o;10631:369::-;4785:12;:10;:12::i;:::-;4775:22;;:6;;;;;;;;;;:22;;;4767:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10808:26:::1;;;;;;;;;;;10798:36;;:6;:36;;::::0;10776:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10944:6;10915:26;;:35;;;;;;;;;;;;;;;;;;10966:26;10985:6;10966:26;;;;;;:::i;:::-;;;;;;;;10631:369:::0;:::o;12307:100::-;12360:7;12387:12;;12380:19;;12307:100;:::o;10413:210::-;4785:12;:10;:12::i;:::-;4775:22;;:6;;;;;;;;;;:22;;;4767:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10508:2:::1;10494:10;:16;;10486:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;10562:10;10544:15;:28;;;;10588:27;10599:15;;10588:27;;;;;;:::i;:::-;;;;;;;;10413:210:::0;:::o;13112:350::-;13244:4;13261:36;13271:6;13279:9;13290:6;13261:9;:36::i;:::-;13308:124;13331:6;13352:12;:10;:12::i;:::-;13415:6;13379:11;:19;13391:6;13379:19;;;;;;;;;;;;;;;:33;13399:12;:10;:12::i;:::-;13379:33;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;13308:8;:124::i;:::-;13450:4;13443:11;;13112:350;;;;;:::o;12216:83::-;12257:5;12282:9;;;;;;;;;;;12275:16;;12216:83;:::o;7429:52::-;;;;:::o;13470:292::-;13583:4;13600:132;13623:12;:10;:12::i;:::-;13650:7;13710:10;13672:11;:25;13684:12;:10;:12::i;:::-;13672:25;;;;;;;;;;;;;;;:34;13698:7;13672:34;;;;;;;;;;;;;;;;:49;;;;:::i;:::-;13600:8;:132::i;:::-;13750:4;13743:11;;13470:292;;;;:::o;10199:206::-;4785:12;:10;:12::i;:::-;4775:22;;:6;;;;;;;;;;:22;;;4767:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10293:2:::1;10279:10;:16;;10271:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;10345:10;10328:14;:27;;;;10371:26;10382:14;;10371:26;;;;;;:::i;:::-;;;;;;;;10199:206:::0;:::o;7178:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;12415:119::-;12481:7;12508:9;:18;12518:7;12508:18;;;;;;;;;;;;;;;;12501:25;;12415:119;;;:::o;4862:157::-;4785:12;:10;:12::i;:::-;4775:22;;:6;;;;;;;;;;:22;;;4767:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4969:1:::1;4932:40;;4953:6;::::0;::::1;;;;;;;;4932:40;;;;;;;;;;;;5008:1;4983:6:::0;::::1;:28;;;;;;;;;;;;;;;;;;4862:157::o:0;7909:34::-;;;;:::o;7532:45::-;;;;;;;;;;;;;:::o;7585:29::-;;;;;;;;;;;;;:::o;4648:79::-;4686:7;4713:6;;;;;;;;;;;4706:13;;4648:79;:::o;9742:208::-;4785:12;:10;:12::i;:::-;4775:22;;:6;;;;;;;;;;:22;;;4767:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9891:5:::1;9862:17;:26;9880:7;9862:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;9927:7;9912:30;;;9936:5;9912:30;;;;;;:::i;:::-;;;;;;;;9742:208:::0;;:::o;12121:87::-;12160:13;12193:7;12186:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12121:87;:::o;11342:322::-;4785:12;:10;:12::i;:::-;4775:22;;:6;;;;;;;;;;:22;;;4767:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11474:1:::1;11447:29;;:15;:29;;::::0;11425:124:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11602:12;;;;;;;;;;;11565:50;;11585:15;11565:50;;;;;;;;;;;;11641:15;11626:12;;:30;;;;;;;;;;;;;;;;;;11342:322:::0;:::o;13770:300::-;13888:4;13905:135;13928:12;:10;:12::i;:::-;13955:7;14014:15;13977:11;:25;13989:12;:10;:12::i;:::-;13977:25;;;;;;;;;;;;;;;:34;14003:7;13977:34;;;;;;;;;;;;;;;;:52;;;;:::i;:::-;13905:8;:135::i;:::-;14058:4;14051:11;;13770:300;;;;:::o;12542:192::-;12645:4;12662:42;12672:12;:10;:12::i;:::-;12686:9;12697:6;12662:9;:42::i;:::-;12722:4;12715:11;;12542:192;;;;:::o;9958:233::-;4785:12;:10;:12::i;:::-;4775:22;;:6;;;;;;;;;;:22;;;4767:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10049:1:::1;10039:7;:11;10031:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10135:4;10125:7;:14;;;;:::i;:::-;10109:13;:30;;;;10155:28;10169:13;;10155:28;;;;;;:::i;:::-;;;;;;;;9958:233:::0;:::o;11008:326::-;4785:12;:10;:12::i;:::-;4775:22;;:6;;;;;;;;;;:22;;;4767:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11183:10:::1;;;;;;;;;;;11173:20;;:6;:20;;::::0;11151:112:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11287:6;11274:10;;:19;;;;;;;;;;;;;;;;;;11309:17;11319:6;11309:17;;;;;;:::i;:::-;;;;;;;;11008:326:::0;:::o;12742:168::-;12848:7;12875:11;:18;12887:5;12875:18;;;;;;;;;;;;;;;:27;12894:7;12875:27;;;;;;;;;;;;;;;;12868:34;;12742:168;;;;:::o;7867:33::-;;;;:::o;7775:27::-;;;;;;;;;;;;;:::o;14078:168::-;14141:7;14161:11;14203:14;;14185;;14176:6;:23;;;;:::i;:::-;14175:42;;;;:::i;:::-;14161:56;;14235:3;14228:10;;;14078:168;;;:::o;17249:245::-;4785:12;:10;:12::i;:::-;4775:22;;:6;;;;;;;;;;:22;;;4767:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17350:7:::1;17325:21;:32;;17317:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;17395:10;17387:28;;:37;17416:7;17387:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;17466:10;17442:44;;17459:4;17442:44;;;17478:7;17442:44;;;;;;:::i;:::-;;;;;;;;17249:245:::0;:::o;7710:22::-;;;;;;;;;;;;;:::o;5027:281::-;4785:12;:10;:12::i;:::-;4775:22;;:6;;;;;;;;;;:22;;;4767:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5150:1:::1;5130:22;;:8;:22;;::::0;5108:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;5263:8;5234:38;;5255:6;::::0;::::1;;;;;;;;5234:38;;;;;;;;;;;;5292:8;5283:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;5027:281:::0;:::o;14254:170::-;14318:7;14338:11;14381:14;;14362:15;;14353:6;:24;;;;:::i;:::-;14352:43;;;;:::i;:::-;14338:57;;14413:3;14406:10;;;14254:170;;;:::o;7488:35::-;;;;:::o;3984:115::-;4037:15;4080:10;4065:26;;3984:115;:::o;14550:333::-;14660:1;14643:19;;:5;:19;;;14635:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;14739:1;14720:21;;:7;:21;;;14712:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;14821:6;14791:11;:18;14803:5;14791:18;;;;;;;;;;;;;;;:27;14810:7;14791:27;;;;;;;;;;;;;;;:36;;;;14859:7;14843:32;;14852:5;14843:32;;;14868:6;14843:32;;;;;;:::i;:::-;;;;;;;;14550:333;;;:::o;14891:789::-;14995:1;14979:18;;:4;:18;;;14971:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;15070:1;15056:16;;:2;:16;;;15048:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;15138:1;15129:6;:10;15121:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;15223:30;15244:4;15250:2;15223:20;:30::i;:::-;15327:12;15342:4;15327:19;;15446:17;:23;15464:4;15446:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;15473:17;:21;15491:2;15473:21;;;;;;;;;;;;;;;;;;;;;;;;;15446:48;:63;;;;15499:10;;;;;;;;;;;15498:11;15446:63;15442:111;;;15536:5;15526:15;;15442:111;15631:41;15646:4;15652:2;15656:6;15664:7;15631:14;:41::i;:::-;14960:720;14891:789;;;:::o;17502:813::-;17577:28;17608:24;17626:4;17608:9;:24::i;:::-;17577:55;;17687:13;;17663:20;:37;;:69;;;;;17725:7;;;;;;;;;;;17717:15;;:4;:15;;;;17663:69;:112;;;;;17749:26;;;;;;;;;;;17663:112;:170;;;;;17810:4;17794:21;;:4;:21;;;:38;;;;;17825:7;;;;;;;;;;;17819:13;;:2;:13;;;17794:38;17792:41;17663:170;17645:663;;;17908:58;17925:4;17940:9;;;;;;;;;;;17952:13;;17908:8;:58::i;:::-;18023:57;18054:9;;;;;;;;;;;18066:13;;18023:22;:57::i;:::-;18095:23;18121:21;18095:47;;18229:1;18211:15;:19;18207:89;;;18257:12;;;;;;;;;;;18249:30;;:47;18280:15;18249:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18207:89;17860:448;17645:663;17566:749;17502:813;;:::o;15765:1232::-;15931:6;15920:17;;:7;;;;;;;;;;;:17;;;:28;;;;;15941:7;15920:28;15916:1074;;;15965:14;15994:23;16041:24;16058:6;16041:16;:24::i;:::-;16032:33;;16107:6;16098;:15;;;;:::i;:::-;16080:33;;16170:6;16150:9;:17;16160:6;16150:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;16130:9;:17;16140:6;16130:17;;;;;;;;;;;;;;;:46;;;;16237:15;16214:9;:20;16224:9;16214:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;16191:9;:20;16201:9;16191:20;;;;;;;;;;;;;;;:61;;;;16289:9;16272:44;;16281:6;16272:44;;;16300:15;16272:44;;;;;;:::i;:::-;;;;;;;;16333:28;16346:6;16354;16333:12;:28::i;:::-;15950:423;;15916:1074;;;16394:9;16383:20;;:7;;;;;;;;;;;:20;;;:31;;;;;16407:7;16383:31;16379:611;;;16431:14;16448:25;16466:6;16448:17;:25::i;:::-;16431:42;;16488:23;16523:6;16514;:15;;;;:::i;:::-;16488:41;;16584:6;16564:9;:17;16574:6;16564:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;16544:9;:17;16554:6;16544:17;;;;;;;;;;;;;;;:46;;;;16651:15;16628:9;:20;16638:9;16628:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;16605:9;:20;16615:9;16605:20;;;;;;;;;;;;;;;:61;;;;16703:9;16686:44;;16695:6;16686:44;;;16714:15;16686:44;;;;;;:::i;:::-;;;;;;;;16747:28;16760:6;16768;16747:12;:28::i;:::-;16416:371;;16379:611;;;16848:6;16828:9;:17;16838:6;16828:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;16808:9;:17;16818:6;16808:17;;;;;;;;;;;;;;;:46;;;;16916:6;16892:9;:20;16902:9;16892:20;;;;;;;;;;;;;;;;:31;;;;:::i;:::-;16869:9;:20;16879:9;16869:20;;;;;;;;;;;;;;;:54;;;;16960:9;16943:35;;16952:6;16943:35;;;16971:6;16943:35;;;;;;:::i;:::-;;;;;;;;16379:611;15916:1074;15765:1232;;;;:::o;6336:614::-;6451:20;6485:13;6451:48;;6568:21;6606:1;6592:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6568:40;;6637:4;6619;6624:1;6619:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;6663:9;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6653:4;6658:1;6653:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;6718:9;:60;;;6793:11;6819:1;6863:4;6890;6928:3;6910:15;:21;;;;:::i;:::-;6718:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6440:510;;6336:614;;:::o;17005:198::-;17132:6;17105:9;:24;17123:4;17105:24;;;;;;;;;;;;;;;;:33;;;;:::i;:::-;17078:9;:24;17096:4;17078:24;;;;;;;;;;;;;;;:60;;;;17181:4;17156:39;;17165:6;17156:39;;;17188:6;17156:39;;;;;;:::i;:::-;;;;;;;;17005:198;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:126::-;1386:7;1426:42;1419:5;1415:54;1404:65;;1349:126;;;:::o;1481:60::-;1509:3;1530:5;1523:12;;1481:60;;;:::o;1547:142::-;1597:9;1630:53;1648:34;1657:24;1675:5;1657:24;:::i;:::-;1648:34;:::i;:::-;1630:53;:::i;:::-;1617:66;;1547:142;;;:::o;1695:126::-;1745:9;1778:37;1809:5;1778:37;:::i;:::-;1765:50;;1695:126;;;:::o;1827:144::-;1895:9;1928:37;1959:5;1928:37;:::i;:::-;1915:50;;1827:144;;;:::o;1977:167::-;2082:55;2131:5;2082:55;:::i;:::-;2077:3;2070:68;1977:167;;:::o;2150:258::-;2261:4;2299:2;2288:9;2284:18;2276:26;;2312:89;2398:1;2387:9;2383:17;2374:6;2312:89;:::i;:::-;2150:258;;;;:::o;2495:117::-;2604:1;2601;2594:12;2741:96;2778:7;2807:24;2825:5;2807:24;:::i;:::-;2796:35;;2741:96;;;:::o;2843:122::-;2916:24;2934:5;2916:24;:::i;:::-;2909:5;2906:35;2896:63;;2955:1;2952;2945:12;2896:63;2843:122;:::o;2971:139::-;3017:5;3055:6;3042:20;3033:29;;3071:33;3098:5;3071:33;:::i;:::-;2971:139;;;;:::o;3116:77::-;3153:7;3182:5;3171:16;;3116:77;;;:::o;3199:122::-;3272:24;3290:5;3272:24;:::i;:::-;3265:5;3262:35;3252:63;;3311:1;3308;3301:12;3252:63;3199:122;:::o;3327:139::-;3373:5;3411:6;3398:20;3389:29;;3427:33;3454:5;3427:33;:::i;:::-;3327:139;;;;:::o;3472:474::-;3540:6;3548;3597:2;3585:9;3576:7;3572:23;3568:32;3565:119;;;3603:79;;:::i;:::-;3565:119;3723:1;3748:53;3793:7;3784:6;3773:9;3769:22;3748:53;:::i;:::-;3738:63;;3694:117;3850:2;3876:53;3921:7;3912:6;3901:9;3897:22;3876:53;:::i;:::-;3866:63;;3821:118;3472:474;;;;;:::o;3952:90::-;3986:7;4029:5;4022:13;4015:21;4004:32;;3952:90;;;:::o;4048:109::-;4129:21;4144:5;4129:21;:::i;:::-;4124:3;4117:34;4048:109;;:::o;4163:210::-;4250:4;4288:2;4277:9;4273:18;4265:26;;4301:65;4363:1;4352:9;4348:17;4339:6;4301:65;:::i;:::-;4163:210;;;;:::o;4379:116::-;4449:21;4464:5;4449:21;:::i;:::-;4442:5;4439:32;4429:60;;4485:1;4482;4475:12;4429:60;4379:116;:::o;4501:133::-;4544:5;4582:6;4569:20;4560:29;;4598:30;4622:5;4598:30;:::i;:::-;4501:133;;;;:::o;4640:323::-;4696:6;4745:2;4733:9;4724:7;4720:23;4716:32;4713:119;;;4751:79;;:::i;:::-;4713:119;4871:1;4896:50;4938:7;4929:6;4918:9;4914:22;4896:50;:::i;:::-;4886:60;;4842:114;4640:323;;;;:::o;4969:118::-;5056:24;5074:5;5056:24;:::i;:::-;5051:3;5044:37;4969:118;;:::o;5093:222::-;5186:4;5224:2;5213:9;5209:18;5201:26;;5237:71;5305:1;5294:9;5290:17;5281:6;5237:71;:::i;:::-;5093:222;;;;:::o;5321:329::-;5380:6;5429:2;5417:9;5408:7;5404:23;5400:32;5397:119;;;5435:79;;:::i;:::-;5397:119;5555:1;5580:53;5625:7;5616:6;5605:9;5601:22;5580:53;:::i;:::-;5570:63;;5526:117;5321:329;;;;:::o;5656:619::-;5733:6;5741;5749;5798:2;5786:9;5777:7;5773:23;5769:32;5766:119;;;5804:79;;:::i;:::-;5766:119;5924:1;5949:53;5994:7;5985:6;5974:9;5970:22;5949:53;:::i;:::-;5939:63;;5895:117;6051:2;6077:53;6122:7;6113:6;6102:9;6098:22;6077:53;:::i;:::-;6067:63;;6022:118;6179:2;6205:53;6250:7;6241:6;6230:9;6226:22;6205:53;:::i;:::-;6195:63;;6150:118;5656:619;;;;;:::o;6281:86::-;6316:7;6356:4;6349:5;6345:16;6334:27;;6281:86;;;:::o;6373:112::-;6456:22;6472:5;6456:22;:::i;:::-;6451:3;6444:35;6373:112;;:::o;6491:214::-;6580:4;6618:2;6607:9;6603:18;6595:26;;6631:67;6695:1;6684:9;6680:17;6671:6;6631:67;:::i;:::-;6491:214;;;;:::o;6711:329::-;6770:6;6819:2;6807:9;6798:7;6794:23;6790:32;6787:119;;;6825:79;;:::i;:::-;6787:119;6945:1;6970:53;7015:7;7006:6;6995:9;6991:22;6970:53;:::i;:::-;6960:63;;6916:117;6711:329;;;;:::o;7046:118::-;7133:24;7151:5;7133:24;:::i;:::-;7128:3;7121:37;7046:118;;:::o;7170:222::-;7263:4;7301:2;7290:9;7286:18;7278:26;;7314:71;7382:1;7371:9;7367:17;7358:6;7314:71;:::i;:::-;7170:222;;;;:::o;7398:468::-;7463:6;7471;7520:2;7508:9;7499:7;7495:23;7491:32;7488:119;;;7526:79;;:::i;:::-;7488:119;7646:1;7671:53;7716:7;7707:6;7696:9;7692:22;7671:53;:::i;:::-;7661:63;;7617:117;7773:2;7799:50;7841:7;7832:6;7821:9;7817:22;7799:50;:::i;:::-;7789:60;;7744:115;7398:468;;;;;:::o;7872:474::-;7940:6;7948;7997:2;7985:9;7976:7;7972:23;7968:32;7965:119;;;8003:79;;:::i;:::-;7965:119;8123:1;8148:53;8193:7;8184:6;8173:9;8169:22;8148:53;:::i;:::-;8138:63;;8094:117;8250:2;8276:53;8321:7;8312:6;8301:9;8297:22;8276:53;:::i;:::-;8266:63;;8221:118;7872:474;;;;;:::o;8352:180::-;8400:77;8397:1;8390:88;8497:4;8494:1;8487:15;8521:4;8518:1;8511:15;8538:320;8582:6;8619:1;8613:4;8609:12;8599:22;;8666:1;8660:4;8656:12;8687:18;8677:81;;8743:4;8735:6;8731:17;8721:27;;8677:81;8805:2;8797:6;8794:14;8774:18;8771:38;8768:84;;8824:18;;:::i;:::-;8768:84;8589:269;8538:320;;;:::o;8864:182::-;9004:34;9000:1;8992:6;8988:14;8981:58;8864:182;:::o;9052:366::-;9194:3;9215:67;9279:2;9274:3;9215:67;:::i;:::-;9208:74;;9291:93;9380:3;9291:93;:::i;:::-;9409:2;9404:3;9400:12;9393:19;;9052:366;;;:::o;9424:419::-;9590:4;9628:2;9617:9;9613:18;9605:26;;9677:9;9671:4;9667:20;9663:1;9652:9;9648:17;9641:47;9705:131;9831:4;9705:131;:::i;:::-;9697:139;;9424:419;;;:::o;9849:229::-;9989:34;9985:1;9977:6;9973:14;9966:58;10058:12;10053:2;10045:6;10041:15;10034:37;9849:229;:::o;10084:366::-;10226:3;10247:67;10311:2;10306:3;10247:67;:::i;:::-;10240:74;;10323:93;10412:3;10323:93;:::i;:::-;10441:2;10436:3;10432:12;10425:19;;10084:366;;;:::o;10456:419::-;10622:4;10660:2;10649:9;10645:18;10637:26;;10709:9;10703:4;10699:20;10695:1;10684:9;10680:17;10673:47;10737:131;10863:4;10737:131;:::i;:::-;10729:139;;10456:419;;;:::o;10881:168::-;11021:20;11017:1;11009:6;11005:14;10998:44;10881:168;:::o;11055:366::-;11197:3;11218:67;11282:2;11277:3;11218:67;:::i;:::-;11211:74;;11294:93;11383:3;11294:93;:::i;:::-;11412:2;11407:3;11403:12;11396:19;;11055:366;;;:::o;11427:419::-;11593:4;11631:2;11620:9;11616:18;11608:26;;11680:9;11674:4;11670:20;11666:1;11655:9;11651:17;11644:47;11708:131;11834:4;11708:131;:::i;:::-;11700:139;;11427:419;;;:::o;11852:180::-;11900:77;11897:1;11890:88;11997:4;11994:1;11987:15;12021:4;12018:1;12011:15;12038:194;12078:4;12098:20;12116:1;12098:20;:::i;:::-;12093:25;;12132:20;12150:1;12132:20;:::i;:::-;12127:25;;12176:1;12173;12169:9;12161:17;;12200:1;12194:4;12191:11;12188:37;;;12205:18;;:::i;:::-;12188:37;12038:194;;;;:::o;12238:191::-;12278:3;12297:20;12315:1;12297:20;:::i;:::-;12292:25;;12331:20;12349:1;12331:20;:::i;:::-;12326:25;;12374:1;12371;12367:9;12360:16;;12395:3;12392:1;12389:10;12386:36;;;12402:18;;:::i;:::-;12386:36;12238:191;;;;:::o;12435:167::-;12575:19;12571:1;12563:6;12559:14;12552:43;12435:167;:::o;12608:366::-;12750:3;12771:67;12835:2;12830:3;12771:67;:::i;:::-;12764:74;;12847:93;12936:3;12847:93;:::i;:::-;12965:2;12960:3;12956:12;12949:19;;12608:366;;;:::o;12980:419::-;13146:4;13184:2;13173:9;13169:18;13161:26;;13233:9;13227:4;13223:20;13219:1;13208:9;13204:17;13197:47;13261:131;13387:4;13261:131;:::i;:::-;13253:139;;12980:419;;;:::o;13405:232::-;13545:34;13541:1;13533:6;13529:14;13522:58;13614:15;13609:2;13601:6;13597:15;13590:40;13405:232;:::o;13643:366::-;13785:3;13806:67;13870:2;13865:3;13806:67;:::i;:::-;13799:74;;13882:93;13971:3;13882:93;:::i;:::-;14000:2;13995:3;13991:12;13984:19;;13643:366;;;:::o;14015:419::-;14181:4;14219:2;14208:9;14204:18;14196:26;;14268:9;14262:4;14258:20;14254:1;14243:9;14239:17;14232:47;14296:131;14422:4;14296:131;:::i;:::-;14288:139;;14015:419;;;:::o;14440:230::-;14580:34;14576:1;14568:6;14564:14;14557:58;14649:13;14644:2;14636:6;14632:15;14625:38;14440:230;:::o;14676:366::-;14818:3;14839:67;14903:2;14898:3;14839:67;:::i;:::-;14832:74;;14915:93;15004:3;14915:93;:::i;:::-;15033:2;15028:3;15024:12;15017:19;;14676:366;;;:::o;15048:419::-;15214:4;15252:2;15241:9;15237:18;15229:26;;15301:9;15295:4;15291:20;15287:1;15276:9;15272:17;15265:47;15329:131;15455:4;15329:131;:::i;:::-;15321:139;;15048:419;;;:::o;15473:410::-;15513:7;15536:20;15554:1;15536:20;:::i;:::-;15531:25;;15570:20;15588:1;15570:20;:::i;:::-;15565:25;;15625:1;15622;15618:9;15647:30;15665:11;15647:30;:::i;:::-;15636:41;;15826:1;15817:7;15813:15;15810:1;15807:22;15787:1;15780:9;15760:83;15737:139;;15856:18;;:::i;:::-;15737:139;15521:362;15473:410;;;;:::o;15889:180::-;15937:77;15934:1;15927:88;16034:4;16031:1;16024:15;16058:4;16055:1;16048:15;16075:185;16115:1;16132:20;16150:1;16132:20;:::i;:::-;16127:25;;16166:20;16184:1;16166:20;:::i;:::-;16161:25;;16205:1;16195:35;;16210:18;;:::i;:::-;16195:35;16252:1;16249;16245:9;16240:14;;16075:185;;;;:::o;16266:164::-;16406:16;16402:1;16394:6;16390:14;16383:40;16266:164;:::o;16436:366::-;16578:3;16599:67;16663:2;16658:3;16599:67;:::i;:::-;16592:74;;16675:93;16764:3;16675:93;:::i;:::-;16793:2;16788:3;16784:12;16777:19;;16436:366;;;:::o;16808:419::-;16974:4;17012:2;17001:9;16997:18;16989:26;;17061:9;17055:4;17051:20;17047:1;17036:9;17032:17;17025:47;17089:131;17215:4;17089:131;:::i;:::-;17081:139;;16808:419;;;:::o;17233:225::-;17373:34;17369:1;17361:6;17357:14;17350:58;17442:8;17437:2;17429:6;17425:15;17418:33;17233:225;:::o;17464:366::-;17606:3;17627:67;17691:2;17686:3;17627:67;:::i;:::-;17620:74;;17703:93;17792:3;17703:93;:::i;:::-;17821:2;17816:3;17812:12;17805:19;;17464:366;;;:::o;17836:419::-;18002:4;18040:2;18029:9;18025:18;18017:26;;18089:9;18083:4;18079:20;18075:1;18064:9;18060:17;18053:47;18117:131;18243:4;18117:131;:::i;:::-;18109:139;;17836:419;;;:::o;18261:221::-;18401:34;18397:1;18389:6;18385:14;18378:58;18470:4;18465:2;18457:6;18453:15;18446:29;18261:221;:::o;18488:366::-;18630:3;18651:67;18715:2;18710:3;18651:67;:::i;:::-;18644:74;;18727:93;18816:3;18727:93;:::i;:::-;18845:2;18840:3;18836:12;18829:19;;18488:366;;;:::o;18860:419::-;19026:4;19064:2;19053:9;19049:18;19041:26;;19113:9;19107:4;19103:20;19099:1;19088:9;19084:17;19077:47;19141:131;19267:4;19141:131;:::i;:::-;19133:139;;18860:419;;;:::o;19285:182::-;19425:34;19421:1;19413:6;19409:14;19402:58;19285:182;:::o;19473:366::-;19615:3;19636:67;19700:2;19695:3;19636:67;:::i;:::-;19629:74;;19712:93;19801:3;19712:93;:::i;:::-;19830:2;19825:3;19821:12;19814:19;;19473:366;;;:::o;19845:419::-;20011:4;20049:2;20038:9;20034:18;20026:26;;20098:9;20092:4;20088:20;20084:1;20073:9;20069:17;20062:47;20126:131;20252:4;20126:131;:::i;:::-;20118:139;;19845:419;;;:::o;20270:222::-;20410:34;20406:1;20398:6;20394:14;20387:58;20479:5;20474:2;20466:6;20462:15;20455:30;20270:222;:::o;20498:366::-;20640:3;20661:67;20725:2;20720:3;20661:67;:::i;:::-;20654:74;;20737:93;20826:3;20737:93;:::i;:::-;20855:2;20850:3;20846:12;20839:19;;20498:366;;;:::o;20870:419::-;21036:4;21074:2;21063:9;21059:18;21051:26;;21123:9;21117:4;21113:20;21109:1;21098:9;21094:17;21087:47;21151:131;21277:4;21151:131;:::i;:::-;21143:139;;20870:419;;;:::o;21295:220::-;21435:34;21431:1;21423:6;21419:14;21412:58;21504:3;21499:2;21491:6;21487:15;21480:28;21295:220;:::o;21521:366::-;21663:3;21684:67;21748:2;21743:3;21684:67;:::i;:::-;21677:74;;21760:93;21849:3;21760:93;:::i;:::-;21878:2;21873:3;21869:12;21862:19;;21521:366;;;:::o;21893:419::-;22059:4;22097:2;22086:9;22082:18;22074:26;;22146:9;22140:4;22136:20;22132:1;22121:9;22117:17;22110:47;22174:131;22300:4;22174:131;:::i;:::-;22166:139;;21893:419;;;:::o;22318:224::-;22458:34;22454:1;22446:6;22442:14;22435:58;22527:7;22522:2;22514:6;22510:15;22503:32;22318:224;:::o;22548:366::-;22690:3;22711:67;22775:2;22770:3;22711:67;:::i;:::-;22704:74;;22787:93;22876:3;22787:93;:::i;:::-;22905:2;22900:3;22896:12;22889:19;;22548:366;;;:::o;22920:419::-;23086:4;23124:2;23113:9;23109:18;23101:26;;23173:9;23167:4;23163:20;23159:1;23148:9;23144:17;23137:47;23201:131;23327:4;23201:131;:::i;:::-;23193:139;;22920:419;;;:::o;23345:180::-;23393:77;23390:1;23383:88;23490:4;23487:1;23480:15;23514:4;23511:1;23504:15;23531:180;23579:77;23576:1;23569:88;23676:4;23673:1;23666:15;23700:4;23697:1;23690:15;23717:143;23774:5;23805:6;23799:13;23790:22;;23821:33;23848:5;23821:33;:::i;:::-;23717:143;;;;:::o;23866:351::-;23936:6;23985:2;23973:9;23964:7;23960:23;23956:32;23953:119;;;23991:79;;:::i;:::-;23953:119;24111:1;24136:64;24192:7;24183:6;24172:9;24168:22;24136:64;:::i;:::-;24126:74;;24082:128;23866:351;;;;:::o;24223:85::-;24268:7;24297:5;24286:16;;24223:85;;;:::o;24314:158::-;24372:9;24405:61;24423:42;24432:32;24458:5;24432:32;:::i;:::-;24423:42;:::i;:::-;24405:61;:::i;:::-;24392:74;;24314:158;;;:::o;24478:147::-;24573:45;24612:5;24573:45;:::i;:::-;24568:3;24561:58;24478:147;;:::o;24631:114::-;24698:6;24732:5;24726:12;24716:22;;24631:114;;;:::o;24751:184::-;24850:11;24884:6;24879:3;24872:19;24924:4;24919:3;24915:14;24900:29;;24751:184;;;;:::o;24941:132::-;25008:4;25031:3;25023:11;;25061:4;25056:3;25052:14;25044:22;;24941:132;;;:::o;25079:108::-;25156:24;25174:5;25156:24;:::i;:::-;25151:3;25144:37;25079:108;;:::o;25193:179::-;25262:10;25283:46;25325:3;25317:6;25283:46;:::i;:::-;25361:4;25356:3;25352:14;25338:28;;25193:179;;;;:::o;25378:113::-;25448:4;25480;25475:3;25471:14;25463:22;;25378:113;;;:::o;25527:732::-;25646:3;25675:54;25723:5;25675:54;:::i;:::-;25745:86;25824:6;25819:3;25745:86;:::i;:::-;25738:93;;25855:56;25905:5;25855:56;:::i;:::-;25934:7;25965:1;25950:284;25975:6;25972:1;25969:13;25950:284;;;26051:6;26045:13;26078:63;26137:3;26122:13;26078:63;:::i;:::-;26071:70;;26164:60;26217:6;26164:60;:::i;:::-;26154:70;;26010:224;25997:1;25994;25990:9;25985:14;;25950:284;;;25954:14;26250:3;26243:10;;25651:608;;;25527:732;;;;:::o;26265:831::-;26528:4;26566:3;26555:9;26551:19;26543:27;;26580:71;26648:1;26637:9;26633:17;26624:6;26580:71;:::i;:::-;26661:80;26737:2;26726:9;26722:18;26713:6;26661:80;:::i;:::-;26788:9;26782:4;26778:20;26773:2;26762:9;26758:18;26751:48;26816:108;26919:4;26910:6;26816:108;:::i;:::-;26808:116;;26934:72;27002:2;26991:9;26987:18;26978:6;26934:72;:::i;:::-;27016:73;27084:3;27073:9;27069:19;27060:6;27016:73;:::i;:::-;26265:831;;;;;;;;:::o

Swarm Source

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