ETH Price: $3,057.30 (-7.57%)
Gas: 5.93 Gwei
 

Overview

Max Total Supply

1,000,000 CEO

Holders

160

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.836487621970422114 CEO

Value
$0.00
0x90573449348cf14e4e9a4bb5050c1f83aede4e2e
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
CEO

Compiler Version
v0.8.17+commit.8df45f5f

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-08
*/

/**

Twitter: https://twitter.com/BecomeACEO
Telegram: https://t.me/CEOPortal

*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.17;

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
   
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

library Address {
    function sendValue(address payable recipient, uint256 amount) internal returns(bool){
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        return success;
    }
}

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }

        _transfer(sender, recipient, 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) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

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

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

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

contract CEO is ERC20, Ownable {
    using Address for address payable;

    IUniswapV2Router02 public uniswapV2Router;
    address public  uniswapV2Pair;

    mapping (address => bool) private _isExcludedFromFees;

    uint256 public  marketingFeeOnBuy;
    uint256 public  marketingFeeOnSell;

    uint256 public  marketingFeeOnTransfer;

    address public  marketingWallet;

    uint256 public  swapTokensAtAmount;
    bool    private swapping;

    bool    public swapEnabled;

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event MarketingWalletChanged(address marketingWallet);
    event UpdateFees(uint256 marketingFeeOnBuy, uint256 marketingFeeOnSell);
    event SwapAndSendMarketing(uint256 tokensSwapped, uint256 bnbSend);
    event SwapTokensAtAmountUpdated(uint256 swapTokensAtAmount);

    constructor () ERC20("CEO", "CEO") 
    {   
        address router;
        if (block.chainid == 56) {
            router = 0x10ED43C718714eb63d5aA57B78B54704E256024E; // BSC Pancake Mainnet Router
        } else if (block.chainid == 97) {
            router = 0xD99D1c33F9fC3444f8101754aBC46c52416550D1; // BSC Pancake Testnet Router
        } else if (block.chainid == 1 || block.chainid == 5) {
            router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // ETH Uniswap Mainnet % Testnet
        } else {
            revert();
        }

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router);
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair   = _uniswapV2Pair;

        _approve(address(this), address(uniswapV2Router), type(uint256).max);

        marketingFeeOnBuy  = 5;
        marketingFeeOnSell = 5;

        marketingFeeOnTransfer = 5;

        marketingWallet = 0x2C837311D261783fE6758Fa270D75E734669d4AD;

        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[address(0xdead)] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[0x407993575c91ce7643a4d4cCACc9A98c36eE1BBE] = true; //pinklock

        _mint(owner(), 1e6 * (10 ** decimals()));
        swapTokensAtAmount = totalSupply() / 5_000;

        tradingEnabled = false;
        swapEnabled = false;
    }

    receive() external payable {

  	}

    function claimStuckTokens(address token) external onlyOwner {
        require(token != address(this), "Owner cannot claim contract's balance of its own tokens");
        if (token == address(0x0)) {
            payable(msg.sender).sendValue(address(this).balance);
            return;
        }
        IERC20 ERC20token = IERC20(token);
        uint256 balance = ERC20token.balanceOf(address(this));
        ERC20token.transfer(msg.sender, balance);
    }

    function excludeFromFees(address account, bool excluded) external onlyOwner{
        require(_isExcludedFromFees[account] != excluded,"Account is already the value of 'excluded'");
        _isExcludedFromFees[account] = excluded;

        emit ExcludeFromFees(account, excluded);
    }

    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }

    function updateFees(uint256 _marketingFeeOnSell, uint256 _marketingFeeOnBuy, uint256 _marketingFeeOnTransfer) external onlyOwner {
        marketingFeeOnSell = _marketingFeeOnSell;
        marketingFeeOnBuy = _marketingFeeOnBuy;
        marketingFeeOnTransfer = _marketingFeeOnTransfer;

        require(marketingFeeOnBuy <= 5, "Total Fees cannot exceed the maximum");
        require(marketingFeeOnSell <= 5, "Total Fees cannot exceed the maximum");
        require(marketingFeeOnTransfer <= 5, "Total Fees cannot exceed the maximum");

        emit UpdateFees(marketingFeeOnSell, marketingFeeOnBuy);
    }

    function changeMarketingWallet(address _marketingWallet) external onlyOwner{
        require(_marketingWallet != marketingWallet,"Marketing wallet is already that address");
        require(_marketingWallet != address(0),"Marketing wallet cannot be the zero address");
        marketingWallet = _marketingWallet;

        emit MarketingWalletChanged(marketingWallet);
    }

    bool public tradingEnabled;

    function enableTrading() external onlyOwner{
        require(!tradingEnabled, "Trading already enabled.");
        tradingEnabled = true;
        swapEnabled = true;
    }

    function _transfer(address from,address to,uint256 amount) internal  override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(tradingEnabled || _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading not yet enabled!");
       
        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

		uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (canSwap &&
            !swapping &&
            to == uniswapV2Pair &&
            swapEnabled
        ) {
            swapping = true;

            swapAndSendMarketing(contractTokenBalance);     

            swapping = false;
        }

        uint256 _totalFees;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to] || swapping) {
            _totalFees = 0;
        } else if (from == uniswapV2Pair) {
            _totalFees = marketingFeeOnBuy;
        } else if (to == uniswapV2Pair) {
            _totalFees =  marketingFeeOnSell;
        } else {
            _totalFees = marketingFeeOnTransfer;
        }

        if (_totalFees > 0) {
            uint256 fees = (amount * _totalFees) / 100;
            amount = amount - fees;
            super._transfer(from, address(this), fees);
        }


        super._transfer(from, to, amount);
    }

    function setSwapEnabled(bool _enabled) external onlyOwner{
        require(swapEnabled != _enabled, "swapEnabled already at this state.");
        swapEnabled = _enabled;
    }

    function setSwapTokensAtAmount(uint256 newAmount) external onlyOwner{
        require(newAmount > totalSupply() / 1_000_000, "SwapTokensAtAmount must be greater than 0.0001% of total supply");
        swapTokensAtAmount = newAmount;

        emit SwapTokensAtAmountUpdated(swapTokensAtAmount);
    }

    function swapAndSendMarketing(uint256 tokenAmount) private {
        uint256 initialBalance = address(this).balance;

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

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp);

        uint256 newBalance = address(this).balance - initialBalance;

        payable(marketingWallet).sendValue(newBalance);

        emit SwapAndSendMarketing(tokenAmount, newBalance);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketingWallet","type":"address"}],"name":"MarketingWalletChanged","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":"bnbSend","type":"uint256"}],"name":"SwapAndSendMarketing","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"SwapTokensAtAmountUpdated","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":false,"internalType":"uint256","name":"marketingFeeOnBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"marketingFeeOnSell","type":"uint256"}],"name":"UpdateFees","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":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"changeMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","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":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","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":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnTransfer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"_marketingFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"_marketingFeeOnTransfer","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040523480156200001157600080fd5b506040518060400160405280600381526020017f43454f00000000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f43454f000000000000000000000000000000000000000000000000000000000081525081600390816200008f919062000cd8565b508060049081620000a1919062000cd8565b5050506000620000b6620006c660201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000603846036200017d577310ed43c718714eb63d5aa57b78b54704e256024e9050620001dd565b60614603620001a35773d99d1c33f9fc3444f8101754abc46c52416550d19050620001dc565b6001461480620001b35750600546145b15620001d657737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001db565b600080fd5b5b5b600081905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000230573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000256919062000e29565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e4919062000e29565b6040518363ffffffff1660e01b81526004016200030392919062000e6c565b6020604051808303816000875af115801562000323573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000349919062000e29565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200042230600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620006ce60201b60201c565b60056009819055506005600a819055506005600b81905550732c837311d261783fe6758fa270d75e734669d4ad600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000620004a56200089f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016008600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016008600073407993575c91ce7643a4d4ccacc9a98c36ee1bbe73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000662620006286200089f60201b60201c565b62000638620008c960201b60201c565b600a62000646919062001029565b620f42406200065691906200107a565b620008d260201b60201c565b6113886200067562000a4a60201b60201c565b620006819190620010f4565b600d819055506000600e60026101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff02191690831515021790555050505062001348565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000740576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200073790620011b3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620007b2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007a9906200124b565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516200089291906200127e565b60405180910390a3505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000944576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200093b90620012eb565b60405180910390fd5b620009586000838362000a5460201b60201c565b80600260008282546200096c91906200130d565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620009c391906200130d565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a2a91906200127e565b60405180910390a362000a466000838362000a5960201b60201c565b5050565b6000600254905090565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000ae057607f821691505b60208210810362000af65762000af562000a98565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000b607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b21565b62000b6c868362000b21565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000bb962000bb362000bad8462000b84565b62000b8e565b62000b84565b9050919050565b6000819050919050565b62000bd58362000b98565b62000bed62000be48262000bc0565b84845462000b2e565b825550505050565b600090565b62000c0462000bf5565b62000c1181848462000bca565b505050565b5b8181101562000c395762000c2d60008262000bfa565b60018101905062000c17565b5050565b601f82111562000c885762000c528162000afc565b62000c5d8462000b11565b8101602085101562000c6d578190505b62000c8562000c7c8562000b11565b83018262000c16565b50505b505050565b600082821c905092915050565b600062000cad6000198460080262000c8d565b1980831691505092915050565b600062000cc8838362000c9a565b9150826002028217905092915050565b62000ce38262000a5e565b67ffffffffffffffff81111562000cff5762000cfe62000a69565b5b62000d0b825462000ac7565b62000d1882828562000c3d565b600060209050601f83116001811462000d50576000841562000d3b578287015190505b62000d47858262000cba565b86555062000db7565b601f19841662000d608662000afc565b60005b8281101562000d8a5784890151825560018201915060208501945060208101905062000d63565b8683101562000daa578489015162000da6601f89168262000c9a565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000df18262000dc4565b9050919050565b62000e038162000de4565b811462000e0f57600080fd5b50565b60008151905062000e238162000df8565b92915050565b60006020828403121562000e425762000e4162000dbf565b5b600062000e528482850162000e12565b91505092915050565b62000e668162000de4565b82525050565b600060408201905062000e83600083018562000e5b565b62000e92602083018462000e5b565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000f275780860481111562000eff5762000efe62000e99565b5b600185161562000f0f5780820291505b808102905062000f1f8562000ec8565b945062000edf565b94509492505050565b60008262000f42576001905062001015565b8162000f52576000905062001015565b816001811462000f6b576002811462000f765762000fac565b600191505062001015565b60ff84111562000f8b5762000f8a62000e99565b5b8360020a91508482111562000fa55762000fa462000e99565b5b5062001015565b5060208310610133831016604e8410600b841016171562000fe65782820a90508381111562000fe05762000fdf62000e99565b5b62001015565b62000ff5848484600162000ed5565b925090508184048111156200100f576200100e62000e99565b5b81810290505b9392505050565b600060ff82169050919050565b6000620010368262000b84565b915062001043836200101c565b9250620010727fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000f30565b905092915050565b6000620010878262000b84565b9150620010948362000b84565b9250828202620010a48162000b84565b91508282048414831517620010be57620010bd62000e99565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620011018262000b84565b91506200110e8362000b84565b925082620011215762001120620010c5565b5b828204905092915050565b600082825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006200119b6024836200112c565b9150620011a8826200113d565b604082019050919050565b60006020820190508181036000830152620011ce816200118c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000620012336022836200112c565b91506200124082620011d5565b604082019050919050565b60006020820190508181036000830152620012668162001224565b9050919050565b620012788162000b84565b82525050565b60006020820190506200129560008301846200126d565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620012d3601f836200112c565b9150620012e0826200129b565b602082019050919050565b600060208201905081810360008301526200130681620012c4565b9050919050565b60006200131a8262000b84565b9150620013278362000b84565b925082820190508082111562001342576200134162000e99565b5b92915050565b613c8480620013586000396000f3fe6080604052600436106101dc5760003560e01c806375f0a87411610102578063bb85c6d111610095578063e01af92c11610064578063e01af92c146106d1578063e2f45605146106fa578063f2fde38b14610725578063f9d0831a1461074e576101e3565b8063bb85c6d114610617578063c024666814610640578063dc4c7dbc14610669578063dd62ed3e14610694576101e3565b8063a457c2d7116100d1578063a457c2d714610549578063a9059cbb14610586578063ae288023146105c3578063afa4f3b2146105ee576101e3565b806375f0a874146104b15780638a8c523c146104dc5780638da5cb5b146104f357806395d89b411461051e576101e3565b8063395093511161017a5780635fc2e596116101495780635fc2e596146104075780636ddd17131461043257806370a082311461045d578063715018a61461049a576101e3565b8063395093511461033757806349bd5a5e146103745780634ada218b1461039f5780634fbee193146103ca576101e3565b806318160ddd116101b657806318160ddd1461027b57806322429085146102a657806323b872dd146102cf578063313ce5671461030c576101e3565b806306fdde03146101e8578063095ea7b3146102135780631694505e14610250576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd610777565b60405161020a9190612959565b60405180910390f35b34801561021f57600080fd5b5061023a60048036038101906102359190612a14565b610809565b6040516102479190612a6f565b60405180910390f35b34801561025c57600080fd5b50610265610827565b6040516102729190612ae9565b60405180910390f35b34801561028757600080fd5b5061029061084d565b60405161029d9190612b13565b60405180910390f35b3480156102b257600080fd5b506102cd60048036038101906102c89190612b2e565b610857565b005b3480156102db57600080fd5b506102f660048036038101906102f19190612b81565b610a17565b6040516103039190612a6f565b60405180910390f35b34801561031857600080fd5b50610321610b36565b60405161032e9190612bf0565b60405180910390f35b34801561034357600080fd5b5061035e60048036038101906103599190612a14565b610b3f565b60405161036b9190612a6f565b60405180910390f35b34801561038057600080fd5b50610389610beb565b6040516103969190612c1a565b60405180910390f35b3480156103ab57600080fd5b506103b4610c11565b6040516103c19190612a6f565b60405180910390f35b3480156103d657600080fd5b506103f160048036038101906103ec9190612c35565b610c24565b6040516103fe9190612a6f565b60405180910390f35b34801561041357600080fd5b5061041c610c7a565b6040516104299190612b13565b60405180910390f35b34801561043e57600080fd5b50610447610c80565b6040516104549190612a6f565b60405180910390f35b34801561046957600080fd5b50610484600480360381019061047f9190612c35565b610c93565b6040516104919190612b13565b60405180910390f35b3480156104a657600080fd5b506104af610cdb565b005b3480156104bd57600080fd5b506104c6610e33565b6040516104d39190612c1a565b60405180910390f35b3480156104e857600080fd5b506104f1610e59565b005b3480156104ff57600080fd5b50610508610f78565b6040516105159190612c1a565b60405180910390f35b34801561052a57600080fd5b50610533610fa2565b6040516105409190612959565b60405180910390f35b34801561055557600080fd5b50610570600480360381019061056b9190612a14565b611034565b60405161057d9190612a6f565b60405180910390f35b34801561059257600080fd5b506105ad60048036038101906105a89190612a14565b61111f565b6040516105ba9190612a6f565b60405180910390f35b3480156105cf57600080fd5b506105d861113d565b6040516105e59190612b13565b60405180910390f35b3480156105fa57600080fd5b5061061560048036038101906106109190612c62565b611143565b005b34801561062357600080fd5b5061063e60048036038101906106399190612c35565b611274565b005b34801561064c57600080fd5b5061066760048036038101906106629190612cbb565b6114a7565b005b34801561067557600080fd5b5061067e611679565b60405161068b9190612b13565b60405180910390f35b3480156106a057600080fd5b506106bb60048036038101906106b69190612cfb565b61167f565b6040516106c89190612b13565b60405180910390f35b3480156106dd57600080fd5b506106f860048036038101906106f39190612d3b565b611706565b005b34801561070657600080fd5b5061070f61180f565b60405161071c9190612b13565b60405180910390f35b34801561073157600080fd5b5061074c60048036038101906107479190612c35565b611815565b005b34801561075a57600080fd5b5061077560048036038101906107709190612c35565b6119db565b005b60606003805461078690612d97565b80601f01602080910402602001604051908101604052809291908181526020018280546107b290612d97565b80156107ff5780601f106107d4576101008083540402835291602001916107ff565b820191906000526020600020905b8154815290600101906020018083116107e257829003601f168201915b5050505050905090565b600061081d610816611c4b565b8484611c53565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b61085f611c4b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e590612e14565b60405180910390fd5b82600a819055508160098190555080600b8190555060056009541115610949576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094090612ea6565b60405180910390fd5b6005600a54111561098f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098690612ea6565b60405180910390fd5b6005600b5411156109d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cc90612ea6565b60405180910390fd5b7f53482196ef67ac615caab1c3eca2c270acbfdcd75e57c5f24c1b98b10c8e6e04600a54600954604051610a0a929190612ec6565b60405180910390a1505050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a63611c4b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610b1f5782811015610b0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0190612f61565b60405180910390fd5b610b1e85610b16611c4b565b858403611c53565b5b610b2a858585611e1c565b60019150509392505050565b60006012905090565b6000610be1610b4c611c4b565b848460016000610b5a611c4b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bdc9190612fb0565b611c53565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e60029054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60095481565b600e60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ce3611c4b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6990612e14565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e61611c4b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ef0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee790612e14565b60405180910390fd5b600e60029054906101000a900460ff1615610f40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3790613030565b60405180910390fd5b6001600e60026101000a81548160ff0219169083151502179055506001600e60016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610fb190612d97565b80601f0160208091040260200160405190810160405280929190818152602001828054610fdd90612d97565b801561102a5780601f10610fff5761010080835404028352916020019161102a565b820191906000526020600020905b81548152906001019060200180831161100d57829003601f168201915b5050505050905090565b60008060016000611043611c4b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611100576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f7906130c2565b60405180910390fd5b61111461110b611c4b565b85858403611c53565b600191505092915050565b600061113361112c611c4b565b8484611e1c565b6001905092915050565b600b5481565b61114b611c4b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d190612e14565b60405180910390fd5b620f42406111e661084d565b6111f09190613111565b8111611231576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611228906131b4565b60405180910390fd5b80600d819055507f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b145600d546040516112699190612b13565b60405180910390a150565b61127c611c4b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461130b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130290612e14565b60405180910390fd5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361139b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139290613246565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361140a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611401906132d8565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161149c9190612c1a565b60405180910390a150565b6114af611c4b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461153e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153590612e14565b60405180910390fd5b801515600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036115d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c79061336a565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161166d9190612a6f565b60405180910390a25050565b600a5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61170e611c4b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461179d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179490612e14565b60405180910390fd5b801515600e60019054906101000a900460ff161515036117f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e9906133fc565b60405180910390fd5b80600e60016101000a81548160ff02191690831515021790555050565b600d5481565b61181d611c4b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a390612e14565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361191b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119129061348e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6119e3611c4b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6990612e14565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ae0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad790613520565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b4357611b3d473373ffffffffffffffffffffffffffffffffffffffff166122d390919063ffffffff16565b50611c48565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611b839190612c1a565b602060405180830381865afa158015611ba0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc49190613555565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611c01929190613582565b6020604051808303816000875af1158015611c20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4491906135c0565b5050505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb99061365f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d28906136f1565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e0f9190612b13565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8290613783565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611efa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef190613815565b60405180910390fd5b600e60029054906101000a900460ff1680611f5e5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611fb25750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe890613881565b60405180910390fd5b6000810361200a576120058383600061238e565b6122ce565b600061201530610c93565b90506000600d54821015905080801561203b5750600e60009054906101000a900460ff16155b80156120945750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156120ac5750600e60019054906101000a900460ff165b156120f1576001600e60006101000a81548160ff0219169083151502179055506120d58261260d565b6000600e60006101000a81548160ff0219169083151502179055505b6000600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121945750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806121ab5750600e60009054906101000a900460ff165b156121b9576000905061227f565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361221857600954905061227e565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361227757600a54905061227d565b600b5490505b5b5b60008111156122bf5760006064828661229891906138a1565b6122a29190613111565b905080856122b091906138e3565b94506122bd87308361238e565b505b6122ca86868661238e565b5050505b505050565b600081471015612318576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230f90613963565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff168360405161233e906139b4565b60006040518083038185875af1925050503d806000811461237b576040519150601f19603f3d011682016040523d82523d6000602084013e612380565b606091505b505090508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f490613783565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361246c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246390613815565b60405180910390fd5b6124778383836128bf565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156124fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f490613a3b565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125909190612fb0565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125f49190612b13565b60405180910390a36126078484846128c4565b50505050565b60004790506000600267ffffffffffffffff81111561262f5761262e613a5b565b5b60405190808252806020026020018201604052801561265d5781602001602082028036833780820191505090505b509050308160008151811061267557612674613a8a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561271c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127409190613ace565b8160018151811061275457612753613a8a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b81526004016127f2959493929190613bf4565b600060405180830381600087803b15801561280c57600080fd5b505af1158015612820573d6000803e3d6000fd5b505050506000824761283291906138e3565b905061287f81600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166122d390919063ffffffff16565b507f957ad1fc6d4d41da6d1a8d37303289ef3c4b78e0285ff5df1e12070ef0e6299984826040516128b1929190612ec6565b60405180910390a150505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129035780820151818401526020810190506128e8565b60008484015250505050565b6000601f19601f8301169050919050565b600061292b826128c9565b61293581856128d4565b93506129458185602086016128e5565b61294e8161290f565b840191505092915050565b600060208201905081810360008301526129738184612920565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006129ab82612980565b9050919050565b6129bb816129a0565b81146129c657600080fd5b50565b6000813590506129d8816129b2565b92915050565b6000819050919050565b6129f1816129de565b81146129fc57600080fd5b50565b600081359050612a0e816129e8565b92915050565b60008060408385031215612a2b57612a2a61297b565b5b6000612a39858286016129c9565b9250506020612a4a858286016129ff565b9150509250929050565b60008115159050919050565b612a6981612a54565b82525050565b6000602082019050612a846000830184612a60565b92915050565b6000819050919050565b6000612aaf612aaa612aa584612980565b612a8a565b612980565b9050919050565b6000612ac182612a94565b9050919050565b6000612ad382612ab6565b9050919050565b612ae381612ac8565b82525050565b6000602082019050612afe6000830184612ada565b92915050565b612b0d816129de565b82525050565b6000602082019050612b286000830184612b04565b92915050565b600080600060608486031215612b4757612b4661297b565b5b6000612b55868287016129ff565b9350506020612b66868287016129ff565b9250506040612b77868287016129ff565b9150509250925092565b600080600060608486031215612b9a57612b9961297b565b5b6000612ba8868287016129c9565b9350506020612bb9868287016129c9565b9250506040612bca868287016129ff565b9150509250925092565b600060ff82169050919050565b612bea81612bd4565b82525050565b6000602082019050612c056000830184612be1565b92915050565b612c14816129a0565b82525050565b6000602082019050612c2f6000830184612c0b565b92915050565b600060208284031215612c4b57612c4a61297b565b5b6000612c59848285016129c9565b91505092915050565b600060208284031215612c7857612c7761297b565b5b6000612c86848285016129ff565b91505092915050565b612c9881612a54565b8114612ca357600080fd5b50565b600081359050612cb581612c8f565b92915050565b60008060408385031215612cd257612cd161297b565b5b6000612ce0858286016129c9565b9250506020612cf185828601612ca6565b9150509250929050565b60008060408385031215612d1257612d1161297b565b5b6000612d20858286016129c9565b9250506020612d31858286016129c9565b9150509250929050565b600060208284031215612d5157612d5061297b565b5b6000612d5f84828501612ca6565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612daf57607f821691505b602082108103612dc257612dc1612d68565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612dfe6020836128d4565b9150612e0982612dc8565b602082019050919050565b60006020820190508181036000830152612e2d81612df1565b9050919050565b7f546f74616c20466565732063616e6e6f742065786365656420746865206d617860008201527f696d756d00000000000000000000000000000000000000000000000000000000602082015250565b6000612e906024836128d4565b9150612e9b82612e34565b604082019050919050565b60006020820190508181036000830152612ebf81612e83565b9050919050565b6000604082019050612edb6000830185612b04565b612ee86020830184612b04565b9392505050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612f4b6028836128d4565b9150612f5682612eef565b604082019050919050565b60006020820190508181036000830152612f7a81612f3e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612fbb826129de565b9150612fc6836129de565b9250828201905080821115612fde57612fdd612f81565b5b92915050565b7f54726164696e6720616c726561647920656e61626c65642e0000000000000000600082015250565b600061301a6018836128d4565b915061302582612fe4565b602082019050919050565b600060208201905081810360008301526130498161300d565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006130ac6025836128d4565b91506130b782613050565b604082019050919050565b600060208201905081810360008301526130db8161309f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061311c826129de565b9150613127836129de565b925082613137576131366130e2565b5b828204905092915050565b7f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460008201527f6572207468616e20302e3030303125206f6620746f74616c20737570706c7900602082015250565b600061319e603f836128d4565b91506131a982613142565b604082019050919050565b600060208201905081810360008301526131cd81613191565b9050919050565b7f4d61726b6574696e672077616c6c657420697320616c7265616479207468617460008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b60006132306028836128d4565b915061323b826131d4565b604082019050919050565b6000602082019050818103600083015261325f81613223565b9050919050565b7f4d61726b6574696e672077616c6c65742063616e6e6f7420626520746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b60006132c2602b836128d4565b91506132cd82613266565b604082019050919050565b600060208201905081810360008301526132f1816132b5565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000613354602a836128d4565b915061335f826132f8565b604082019050919050565b6000602082019050818103600083015261338381613347565b9050919050565b7f73776170456e61626c656420616c72656164792061742074686973207374617460008201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b60006133e66022836128d4565b91506133f18261338a565b604082019050919050565b60006020820190508181036000830152613415816133d9565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006134786026836128d4565b91506134838261341c565b604082019050919050565b600060208201905081810360008301526134a78161346b565b9050919050565b7f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160008201527f6c616e6365206f6620697473206f776e20746f6b656e73000000000000000000602082015250565b600061350a6037836128d4565b9150613515826134ae565b604082019050919050565b60006020820190508181036000830152613539816134fd565b9050919050565b60008151905061354f816129e8565b92915050565b60006020828403121561356b5761356a61297b565b5b600061357984828501613540565b91505092915050565b60006040820190506135976000830185612c0b565b6135a46020830184612b04565b9392505050565b6000815190506135ba81612c8f565b92915050565b6000602082840312156135d6576135d561297b565b5b60006135e4848285016135ab565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006136496024836128d4565b9150613654826135ed565b604082019050919050565b600060208201905081810360008301526136788161363c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006136db6022836128d4565b91506136e68261367f565b604082019050919050565b6000602082019050818103600083015261370a816136ce565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061376d6025836128d4565b915061377882613711565b604082019050919050565b6000602082019050818103600083015261379c81613760565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006137ff6023836128d4565b915061380a826137a3565b604082019050919050565b6000602082019050818103600083015261382e816137f2565b9050919050565b7f54726164696e67206e6f742079657420656e61626c6564210000000000000000600082015250565b600061386b6018836128d4565b915061387682613835565b602082019050919050565b6000602082019050818103600083015261389a8161385e565b9050919050565b60006138ac826129de565b91506138b7836129de565b92508282026138c5816129de565b915082820484148315176138dc576138db612f81565b5b5092915050565b60006138ee826129de565b91506138f9836129de565b925082820390508181111561391157613910612f81565b5b92915050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b600061394d601d836128d4565b915061395882613917565b602082019050919050565b6000602082019050818103600083015261397c81613940565b9050919050565b600081905092915050565b50565b600061399e600083613983565b91506139a98261398e565b600082019050919050565b60006139bf82613991565b9150819050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613a256026836128d4565b9150613a30826139c9565b604082019050919050565b60006020820190508181036000830152613a5481613a18565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613ac8816129b2565b92915050565b600060208284031215613ae457613ae361297b565b5b6000613af284828501613ab9565b91505092915050565b6000819050919050565b6000613b20613b1b613b1684613afb565b612a8a565b6129de565b9050919050565b613b3081613b05565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613b6b816129a0565b82525050565b6000613b7d8383613b62565b60208301905092915050565b6000602082019050919050565b6000613ba182613b36565b613bab8185613b41565b9350613bb683613b52565b8060005b83811015613be7578151613bce8882613b71565b9750613bd983613b89565b925050600181019050613bba565b5085935050505092915050565b600060a082019050613c096000830188612b04565b613c166020830187613b27565b8181036040830152613c288186613b96565b9050613c376060830185612c0b565b613c446080830184612b04565b969550505050505056fea26469706673582212209b8c9b647e3d640dd9c36bb17eab6eabd8fb9a576df0018a8a5cb18b4550dde264736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101dc5760003560e01c806375f0a87411610102578063bb85c6d111610095578063e01af92c11610064578063e01af92c146106d1578063e2f45605146106fa578063f2fde38b14610725578063f9d0831a1461074e576101e3565b8063bb85c6d114610617578063c024666814610640578063dc4c7dbc14610669578063dd62ed3e14610694576101e3565b8063a457c2d7116100d1578063a457c2d714610549578063a9059cbb14610586578063ae288023146105c3578063afa4f3b2146105ee576101e3565b806375f0a874146104b15780638a8c523c146104dc5780638da5cb5b146104f357806395d89b411461051e576101e3565b8063395093511161017a5780635fc2e596116101495780635fc2e596146104075780636ddd17131461043257806370a082311461045d578063715018a61461049a576101e3565b8063395093511461033757806349bd5a5e146103745780634ada218b1461039f5780634fbee193146103ca576101e3565b806318160ddd116101b657806318160ddd1461027b57806322429085146102a657806323b872dd146102cf578063313ce5671461030c576101e3565b806306fdde03146101e8578063095ea7b3146102135780631694505e14610250576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd610777565b60405161020a9190612959565b60405180910390f35b34801561021f57600080fd5b5061023a60048036038101906102359190612a14565b610809565b6040516102479190612a6f565b60405180910390f35b34801561025c57600080fd5b50610265610827565b6040516102729190612ae9565b60405180910390f35b34801561028757600080fd5b5061029061084d565b60405161029d9190612b13565b60405180910390f35b3480156102b257600080fd5b506102cd60048036038101906102c89190612b2e565b610857565b005b3480156102db57600080fd5b506102f660048036038101906102f19190612b81565b610a17565b6040516103039190612a6f565b60405180910390f35b34801561031857600080fd5b50610321610b36565b60405161032e9190612bf0565b60405180910390f35b34801561034357600080fd5b5061035e60048036038101906103599190612a14565b610b3f565b60405161036b9190612a6f565b60405180910390f35b34801561038057600080fd5b50610389610beb565b6040516103969190612c1a565b60405180910390f35b3480156103ab57600080fd5b506103b4610c11565b6040516103c19190612a6f565b60405180910390f35b3480156103d657600080fd5b506103f160048036038101906103ec9190612c35565b610c24565b6040516103fe9190612a6f565b60405180910390f35b34801561041357600080fd5b5061041c610c7a565b6040516104299190612b13565b60405180910390f35b34801561043e57600080fd5b50610447610c80565b6040516104549190612a6f565b60405180910390f35b34801561046957600080fd5b50610484600480360381019061047f9190612c35565b610c93565b6040516104919190612b13565b60405180910390f35b3480156104a657600080fd5b506104af610cdb565b005b3480156104bd57600080fd5b506104c6610e33565b6040516104d39190612c1a565b60405180910390f35b3480156104e857600080fd5b506104f1610e59565b005b3480156104ff57600080fd5b50610508610f78565b6040516105159190612c1a565b60405180910390f35b34801561052a57600080fd5b50610533610fa2565b6040516105409190612959565b60405180910390f35b34801561055557600080fd5b50610570600480360381019061056b9190612a14565b611034565b60405161057d9190612a6f565b60405180910390f35b34801561059257600080fd5b506105ad60048036038101906105a89190612a14565b61111f565b6040516105ba9190612a6f565b60405180910390f35b3480156105cf57600080fd5b506105d861113d565b6040516105e59190612b13565b60405180910390f35b3480156105fa57600080fd5b5061061560048036038101906106109190612c62565b611143565b005b34801561062357600080fd5b5061063e60048036038101906106399190612c35565b611274565b005b34801561064c57600080fd5b5061066760048036038101906106629190612cbb565b6114a7565b005b34801561067557600080fd5b5061067e611679565b60405161068b9190612b13565b60405180910390f35b3480156106a057600080fd5b506106bb60048036038101906106b69190612cfb565b61167f565b6040516106c89190612b13565b60405180910390f35b3480156106dd57600080fd5b506106f860048036038101906106f39190612d3b565b611706565b005b34801561070657600080fd5b5061070f61180f565b60405161071c9190612b13565b60405180910390f35b34801561073157600080fd5b5061074c60048036038101906107479190612c35565b611815565b005b34801561075a57600080fd5b5061077560048036038101906107709190612c35565b6119db565b005b60606003805461078690612d97565b80601f01602080910402602001604051908101604052809291908181526020018280546107b290612d97565b80156107ff5780601f106107d4576101008083540402835291602001916107ff565b820191906000526020600020905b8154815290600101906020018083116107e257829003601f168201915b5050505050905090565b600061081d610816611c4b565b8484611c53565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b61085f611c4b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e590612e14565b60405180910390fd5b82600a819055508160098190555080600b8190555060056009541115610949576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094090612ea6565b60405180910390fd5b6005600a54111561098f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098690612ea6565b60405180910390fd5b6005600b5411156109d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cc90612ea6565b60405180910390fd5b7f53482196ef67ac615caab1c3eca2c270acbfdcd75e57c5f24c1b98b10c8e6e04600a54600954604051610a0a929190612ec6565b60405180910390a1505050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a63611c4b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610b1f5782811015610b0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0190612f61565b60405180910390fd5b610b1e85610b16611c4b565b858403611c53565b5b610b2a858585611e1c565b60019150509392505050565b60006012905090565b6000610be1610b4c611c4b565b848460016000610b5a611c4b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bdc9190612fb0565b611c53565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e60029054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60095481565b600e60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ce3611c4b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6990612e14565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e61611c4b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ef0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee790612e14565b60405180910390fd5b600e60029054906101000a900460ff1615610f40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3790613030565b60405180910390fd5b6001600e60026101000a81548160ff0219169083151502179055506001600e60016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610fb190612d97565b80601f0160208091040260200160405190810160405280929190818152602001828054610fdd90612d97565b801561102a5780601f10610fff5761010080835404028352916020019161102a565b820191906000526020600020905b81548152906001019060200180831161100d57829003601f168201915b5050505050905090565b60008060016000611043611c4b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611100576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f7906130c2565b60405180910390fd5b61111461110b611c4b565b85858403611c53565b600191505092915050565b600061113361112c611c4b565b8484611e1c565b6001905092915050565b600b5481565b61114b611c4b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d190612e14565b60405180910390fd5b620f42406111e661084d565b6111f09190613111565b8111611231576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611228906131b4565b60405180910390fd5b80600d819055507f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b145600d546040516112699190612b13565b60405180910390a150565b61127c611c4b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461130b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130290612e14565b60405180910390fd5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361139b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139290613246565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361140a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611401906132d8565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161149c9190612c1a565b60405180910390a150565b6114af611c4b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461153e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153590612e14565b60405180910390fd5b801515600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036115d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c79061336a565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161166d9190612a6f565b60405180910390a25050565b600a5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61170e611c4b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461179d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179490612e14565b60405180910390fd5b801515600e60019054906101000a900460ff161515036117f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e9906133fc565b60405180910390fd5b80600e60016101000a81548160ff02191690831515021790555050565b600d5481565b61181d611c4b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a390612e14565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361191b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119129061348e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6119e3611c4b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6990612e14565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ae0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad790613520565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b4357611b3d473373ffffffffffffffffffffffffffffffffffffffff166122d390919063ffffffff16565b50611c48565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611b839190612c1a565b602060405180830381865afa158015611ba0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc49190613555565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611c01929190613582565b6020604051808303816000875af1158015611c20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4491906135c0565b5050505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb99061365f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d28906136f1565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e0f9190612b13565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8290613783565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611efa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef190613815565b60405180910390fd5b600e60029054906101000a900460ff1680611f5e5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611fb25750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe890613881565b60405180910390fd5b6000810361200a576120058383600061238e565b6122ce565b600061201530610c93565b90506000600d54821015905080801561203b5750600e60009054906101000a900460ff16155b80156120945750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156120ac5750600e60019054906101000a900460ff165b156120f1576001600e60006101000a81548160ff0219169083151502179055506120d58261260d565b6000600e60006101000a81548160ff0219169083151502179055505b6000600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121945750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806121ab5750600e60009054906101000a900460ff165b156121b9576000905061227f565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361221857600954905061227e565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361227757600a54905061227d565b600b5490505b5b5b60008111156122bf5760006064828661229891906138a1565b6122a29190613111565b905080856122b091906138e3565b94506122bd87308361238e565b505b6122ca86868661238e565b5050505b505050565b600081471015612318576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230f90613963565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff168360405161233e906139b4565b60006040518083038185875af1925050503d806000811461237b576040519150601f19603f3d011682016040523d82523d6000602084013e612380565b606091505b505090508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f490613783565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361246c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246390613815565b60405180910390fd5b6124778383836128bf565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156124fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f490613a3b565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125909190612fb0565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125f49190612b13565b60405180910390a36126078484846128c4565b50505050565b60004790506000600267ffffffffffffffff81111561262f5761262e613a5b565b5b60405190808252806020026020018201604052801561265d5781602001602082028036833780820191505090505b509050308160008151811061267557612674613a8a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561271c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127409190613ace565b8160018151811061275457612753613a8a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b81526004016127f2959493929190613bf4565b600060405180830381600087803b15801561280c57600080fd5b505af1158015612820573d6000803e3d6000fd5b505050506000824761283291906138e3565b905061287f81600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166122d390919063ffffffff16565b507f957ad1fc6d4d41da6d1a8d37303289ef3c4b78e0285ff5df1e12070ef0e6299984826040516128b1929190612ec6565b60405180910390a150505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129035780820151818401526020810190506128e8565b60008484015250505050565b6000601f19601f8301169050919050565b600061292b826128c9565b61293581856128d4565b93506129458185602086016128e5565b61294e8161290f565b840191505092915050565b600060208201905081810360008301526129738184612920565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006129ab82612980565b9050919050565b6129bb816129a0565b81146129c657600080fd5b50565b6000813590506129d8816129b2565b92915050565b6000819050919050565b6129f1816129de565b81146129fc57600080fd5b50565b600081359050612a0e816129e8565b92915050565b60008060408385031215612a2b57612a2a61297b565b5b6000612a39858286016129c9565b9250506020612a4a858286016129ff565b9150509250929050565b60008115159050919050565b612a6981612a54565b82525050565b6000602082019050612a846000830184612a60565b92915050565b6000819050919050565b6000612aaf612aaa612aa584612980565b612a8a565b612980565b9050919050565b6000612ac182612a94565b9050919050565b6000612ad382612ab6565b9050919050565b612ae381612ac8565b82525050565b6000602082019050612afe6000830184612ada565b92915050565b612b0d816129de565b82525050565b6000602082019050612b286000830184612b04565b92915050565b600080600060608486031215612b4757612b4661297b565b5b6000612b55868287016129ff565b9350506020612b66868287016129ff565b9250506040612b77868287016129ff565b9150509250925092565b600080600060608486031215612b9a57612b9961297b565b5b6000612ba8868287016129c9565b9350506020612bb9868287016129c9565b9250506040612bca868287016129ff565b9150509250925092565b600060ff82169050919050565b612bea81612bd4565b82525050565b6000602082019050612c056000830184612be1565b92915050565b612c14816129a0565b82525050565b6000602082019050612c2f6000830184612c0b565b92915050565b600060208284031215612c4b57612c4a61297b565b5b6000612c59848285016129c9565b91505092915050565b600060208284031215612c7857612c7761297b565b5b6000612c86848285016129ff565b91505092915050565b612c9881612a54565b8114612ca357600080fd5b50565b600081359050612cb581612c8f565b92915050565b60008060408385031215612cd257612cd161297b565b5b6000612ce0858286016129c9565b9250506020612cf185828601612ca6565b9150509250929050565b60008060408385031215612d1257612d1161297b565b5b6000612d20858286016129c9565b9250506020612d31858286016129c9565b9150509250929050565b600060208284031215612d5157612d5061297b565b5b6000612d5f84828501612ca6565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612daf57607f821691505b602082108103612dc257612dc1612d68565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612dfe6020836128d4565b9150612e0982612dc8565b602082019050919050565b60006020820190508181036000830152612e2d81612df1565b9050919050565b7f546f74616c20466565732063616e6e6f742065786365656420746865206d617860008201527f696d756d00000000000000000000000000000000000000000000000000000000602082015250565b6000612e906024836128d4565b9150612e9b82612e34565b604082019050919050565b60006020820190508181036000830152612ebf81612e83565b9050919050565b6000604082019050612edb6000830185612b04565b612ee86020830184612b04565b9392505050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612f4b6028836128d4565b9150612f5682612eef565b604082019050919050565b60006020820190508181036000830152612f7a81612f3e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612fbb826129de565b9150612fc6836129de565b9250828201905080821115612fde57612fdd612f81565b5b92915050565b7f54726164696e6720616c726561647920656e61626c65642e0000000000000000600082015250565b600061301a6018836128d4565b915061302582612fe4565b602082019050919050565b600060208201905081810360008301526130498161300d565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006130ac6025836128d4565b91506130b782613050565b604082019050919050565b600060208201905081810360008301526130db8161309f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061311c826129de565b9150613127836129de565b925082613137576131366130e2565b5b828204905092915050565b7f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460008201527f6572207468616e20302e3030303125206f6620746f74616c20737570706c7900602082015250565b600061319e603f836128d4565b91506131a982613142565b604082019050919050565b600060208201905081810360008301526131cd81613191565b9050919050565b7f4d61726b6574696e672077616c6c657420697320616c7265616479207468617460008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b60006132306028836128d4565b915061323b826131d4565b604082019050919050565b6000602082019050818103600083015261325f81613223565b9050919050565b7f4d61726b6574696e672077616c6c65742063616e6e6f7420626520746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b60006132c2602b836128d4565b91506132cd82613266565b604082019050919050565b600060208201905081810360008301526132f1816132b5565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000613354602a836128d4565b915061335f826132f8565b604082019050919050565b6000602082019050818103600083015261338381613347565b9050919050565b7f73776170456e61626c656420616c72656164792061742074686973207374617460008201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b60006133e66022836128d4565b91506133f18261338a565b604082019050919050565b60006020820190508181036000830152613415816133d9565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006134786026836128d4565b91506134838261341c565b604082019050919050565b600060208201905081810360008301526134a78161346b565b9050919050565b7f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160008201527f6c616e6365206f6620697473206f776e20746f6b656e73000000000000000000602082015250565b600061350a6037836128d4565b9150613515826134ae565b604082019050919050565b60006020820190508181036000830152613539816134fd565b9050919050565b60008151905061354f816129e8565b92915050565b60006020828403121561356b5761356a61297b565b5b600061357984828501613540565b91505092915050565b60006040820190506135976000830185612c0b565b6135a46020830184612b04565b9392505050565b6000815190506135ba81612c8f565b92915050565b6000602082840312156135d6576135d561297b565b5b60006135e4848285016135ab565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006136496024836128d4565b9150613654826135ed565b604082019050919050565b600060208201905081810360008301526136788161363c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006136db6022836128d4565b91506136e68261367f565b604082019050919050565b6000602082019050818103600083015261370a816136ce565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061376d6025836128d4565b915061377882613711565b604082019050919050565b6000602082019050818103600083015261379c81613760565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006137ff6023836128d4565b915061380a826137a3565b604082019050919050565b6000602082019050818103600083015261382e816137f2565b9050919050565b7f54726164696e67206e6f742079657420656e61626c6564210000000000000000600082015250565b600061386b6018836128d4565b915061387682613835565b602082019050919050565b6000602082019050818103600083015261389a8161385e565b9050919050565b60006138ac826129de565b91506138b7836129de565b92508282026138c5816129de565b915082820484148315176138dc576138db612f81565b5b5092915050565b60006138ee826129de565b91506138f9836129de565b925082820390508181111561391157613910612f81565b5b92915050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b600061394d601d836128d4565b915061395882613917565b602082019050919050565b6000602082019050818103600083015261397c81613940565b9050919050565b600081905092915050565b50565b600061399e600083613983565b91506139a98261398e565b600082019050919050565b60006139bf82613991565b9150819050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613a256026836128d4565b9150613a30826139c9565b604082019050919050565b60006020820190508181036000830152613a5481613a18565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613ac8816129b2565b92915050565b600060208284031215613ae457613ae361297b565b5b6000613af284828501613ab9565b91505092915050565b6000819050919050565b6000613b20613b1b613b1684613afb565b612a8a565b6129de565b9050919050565b613b3081613b05565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613b6b816129a0565b82525050565b6000613b7d8383613b62565b60208301905092915050565b6000602082019050919050565b6000613ba182613b36565b613bab8185613b41565b9350613bb683613b52565b8060005b83811015613be7578151613bce8882613b71565b9750613bd983613b89565b925050600181019050613bba565b5085935050505092915050565b600060a082019050613c096000830188612b04565b613c166020830187613b27565b8181036040830152613c288186613b96565b9050613c376060830185612c0b565b613c446080830184612b04565b969550505050505056fea26469706673582212209b8c9b647e3d640dd9c36bb17eab6eabd8fb9a576df0018a8a5cb18b4550dde264736f6c63430008110033

Deployed Bytecode Sourcemap

15794:7262:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11079:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11993:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15874:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11400:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19160:617;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12170:573;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11299:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12751:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15922:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20172:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19027:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16022:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16266:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11516:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10266:148;;;;;;;;;;;;;:::i;:::-;;16152:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20207:175;;;;;;;;;;;;;:::i;:::-;;10052:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11187:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12974:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11651:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16105:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22094:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19785:379;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18729:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16062:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11834:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21907:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16192:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10422:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18256:465;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11079:100;11133:13;11166:5;11159:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11079:100;:::o;11993:169::-;12076:4;12093:39;12102:12;:10;:12::i;:::-;12116:7;12125:6;12093:8;:39::i;:::-;12150:4;12143:11;;11993:169;;;;:::o;15874:41::-;;;;;;;;;;;;;:::o;11400:108::-;11461:7;11488:12;;11481:19;;11400:108;:::o;19160:617::-;10189:12;:10;:12::i;:::-;10179:22;;:6;;;;;;;;;;;:22;;;10171:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19321:19:::1;19300:18;:40;;;;19371:18;19351:17;:38;;;;19425:23;19400:22;:48;;;;19490:1;19469:17;;:22;;19461:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;19573:1;19551:18;;:23;;19543:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;19660:1;19634:22;;:27;;19626:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;19720:49;19731:18;;19751:17;;19720:49;;;;;;;:::i;:::-;;;;;;;;19160:617:::0;;;:::o;12170:573::-;12310:4;12327:24;12354:11;:19;12366:6;12354:19;;;;;;;;;;;;;;;:33;12374:12;:10;:12::i;:::-;12354:33;;;;;;;;;;;;;;;;12327:60;;12422:17;12402:16;:37;12398:265;;12484:6;12464:16;:26;;12456:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;12579:57;12588:6;12596:12;:10;:12::i;:::-;12629:6;12610:16;:25;12579:8;:57::i;:::-;12398:265;12675:36;12685:6;12693:9;12704:6;12675:9;:36::i;:::-;12731:4;12724:11;;;12170:573;;;;;:::o;11299:93::-;11357:5;11382:2;11375:9;;11299:93;:::o;12751:215::-;12839:4;12856:80;12865:12;:10;:12::i;:::-;12879:7;12925:10;12888:11;:25;12900:12;:10;:12::i;:::-;12888:25;;;;;;;;;;;;;;;:34;12914:7;12888:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;12856:8;:80::i;:::-;12954:4;12947:11;;12751:215;;;;:::o;15922:29::-;;;;;;;;;;;;;:::o;20172:26::-;;;;;;;;;;;;;:::o;19027:125::-;19092:4;19116:19;:28;19136:7;19116:28;;;;;;;;;;;;;;;;;;;;;;;;;19109:35;;19027:125;;;:::o;16022:33::-;;;;:::o;16266:26::-;;;;;;;;;;;;;:::o;11516:127::-;11590:7;11617:9;:18;11627:7;11617:18;;;;;;;;;;;;;;;;11610:25;;11516:127;;;:::o;10266:148::-;10189:12;:10;:12::i;:::-;10179:22;;:6;;;;;;;;;;;:22;;;10171:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10373:1:::1;10336:40;;10357:6;;;;;;;;;;;10336:40;;;;;;;;;;;;10404:1;10387:6;;:19;;;;;;;;;;;;;;;;;;10266:148::o:0;16152:31::-;;;;;;;;;;;;;:::o;20207:175::-;10189:12;:10;:12::i;:::-;10179:22;;:6;;;;;;;;;;;:22;;;10171:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20270:14:::1;;;;;;;;;;;20269:15;20261:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;20341:4;20324:14;;:21;;;;;;;;;;;;;;;;;;20370:4;20356:11;;:18;;;;;;;;;;;;;;;;;;20207:175::o:0;10052:79::-;10090:7;10117:6;;;;;;;;;;;10110:13;;10052:79;:::o;11187:104::-;11243:13;11276:7;11269:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11187:104;:::o;12974:413::-;13067:4;13084:24;13111:11;:25;13123:12;:10;:12::i;:::-;13111:25;;;;;;;;;;;;;;;:34;13137:7;13111:34;;;;;;;;;;;;;;;;13084:61;;13184:15;13164:16;:35;;13156:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;13277:67;13286:12;:10;:12::i;:::-;13300:7;13328:15;13309:16;:34;13277:8;:67::i;:::-;13375:4;13368:11;;;12974:413;;;;:::o;11651:175::-;11737:4;11754:42;11764:12;:10;:12::i;:::-;11778:9;11789:6;11754:9;:42::i;:::-;11814:4;11807:11;;11651:175;;;;:::o;16105:38::-;;;;:::o;22094:304::-;10189:12;:10;:12::i;:::-;10179:22;;:6;;;;;;;;;;;:22;;;10171:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22209:9:::1;22193:13;:11;:13::i;:::-;:25;;;;:::i;:::-;22181:9;:37;22173:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;22318:9;22297:18;:30;;;;22345:45;22371:18;;22345:45;;;;;;:::i;:::-;;;;;;;;22094:304:::0;:::o;19785:379::-;10189:12;:10;:12::i;:::-;10179:22;;:6;;;;;;;;;;;:22;;;10171:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19899:15:::1;;;;;;;;;;;19879:35;;:16;:35;;::::0;19871:87:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20005:1;19977:30;;:16;:30;;::::0;19969:85:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20083:16;20065:15;;:34;;;;;;;;;;;;;;;;;;20117:39;20140:15;;;;;;;;;;;20117:39;;;;;;:::i;:::-;;;;;;;;19785:379:::0;:::o;18729:290::-;10189:12;:10;:12::i;:::-;10179:22;;:6;;;;;;;;;;;:22;;;10171:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18855:8:::1;18823:40;;:19;:28;18843:7;18823:28;;;;;;;;;;;;;;;;;;;;;;;;;:40;;::::0;18815:94:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18951:8;18920:19;:28;18940:7;18920:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;18993:7;18977:34;;;19002:8;18977:34;;;;;;:::i;:::-;;;;;;;;18729:290:::0;;:::o;16062:34::-;;;;:::o;11834:151::-;11923:7;11950:11;:18;11962:5;11950:18;;;;;;;;;;;;;;;:27;11969:7;11950:27;;;;;;;;;;;;;;;;11943:34;;11834:151;;;;:::o;21907:179::-;10189:12;:10;:12::i;:::-;10179:22;;:6;;;;;;;;;;;:22;;;10171:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21998:8:::1;21983:23;;:11;;;;;;;;;;;:23;;::::0;21975:70:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22070:8;22056:11;;:22;;;;;;;;;;;;;;;;;;21907:179:::0;:::o;16192:34::-;;;;:::o;10422:244::-;10189:12;:10;:12::i;:::-;10179:22;;:6;;;;;;;;;;;:22;;;10171:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10531:1:::1;10511:22;;:8;:22;;::::0;10503:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10621:8;10592:38;;10613:6;;;;;;;;;;;10592:38;;;;;;;;;;;;10650:8;10641:6;;:17;;;;;;;;;;;;;;;;;;10422:244:::0;:::o;18256:465::-;10189:12;:10;:12::i;:::-;10179:22;;:6;;;;;;;;;;;:22;;;10171:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18352:4:::1;18335:22;;:5;:22;;::::0;18327:90:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18449:3;18432:21;;:5;:21;;::::0;18428:127:::1;;18470:52;18500:21;18478:10;18470:29;;;;:52;;;;:::i;:::-;;18537:7;;18428:127;18565:17;18592:5;18565:33;;18609:15;18627:10;:20;;;18656:4;18627:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18609:53;;18673:10;:19;;;18693:10;18705:7;18673:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18316:405;;10249:1;18256:465:::0;:::o;9375:98::-;9428:7;9455:10;9448:17;;9375:98;:::o;15142:380::-;15295:1;15278:19;;:5;:19;;;15270:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15376:1;15357:21;;:7;:21;;;15349:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15460:6;15430:11;:18;15442:5;15430:18;;;;;;;;;;;;;;;:27;15449:7;15430:27;;;;;;;;;;;;;;;:36;;;;15498:7;15482:32;;15491:5;15482:32;;;15507:6;15482:32;;;;;;:::i;:::-;;;;;;;;15142:380;;;:::o;20390:1509::-;20503:1;20487:18;;:4;:18;;;20479:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20580:1;20566:16;;:2;:16;;;20558:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;20641:14;;;;;;;;;;;:43;;;;20659:19;:25;20679:4;20659:25;;;;;;;;;;;;;;;;;;;;;;;;;20641:43;:70;;;;20688:19;:23;20708:2;20688:23;;;;;;;;;;;;;;;;;;;;;;;;;20641:70;20633:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;20774:1;20764:6;:11;20760:93;;20792:28;20808:4;20814:2;20818:1;20792:15;:28::i;:::-;20835:7;;20760:93;20859:28;20890:24;20908:4;20890:9;:24::i;:::-;20859:55;;20927:12;20966:18;;20942:20;:42;;20927:57;;21001:7;:33;;;;;21026:8;;;;;;;;;;;21025:9;21001:33;:69;;;;;21057:13;;;;;;;;;;;21051:19;;:2;:19;;;21001:69;:97;;;;;21087:11;;;;;;;;;;;21001:97;20997:252;;;21136:4;21125:8;;:15;;;;;;;;;;;;;;;;;;21157:42;21178:20;21157;:42::i;:::-;21232:5;21221:8;;:16;;;;;;;;;;;;;;;;;;20997:252;21261:18;21294:19;:25;21314:4;21294:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;21323:19;:23;21343:2;21323:23;;;;;;;;;;;;;;;;;;;;;;;;;21294:52;:64;;;;21350:8;;;;;;;;;;;21294:64;21290:359;;;21388:1;21375:14;;21290:359;;;21419:13;;;;;;;;;;;21411:21;;:4;:21;;;21407:242;;21462:17;;21449:30;;21407:242;;;21507:13;;;;;;;;;;;21501:19;;:2;:19;;;21497:152;;21551:18;;21537:32;;21497:152;;;21615:22;;21602:35;;21497:152;21407:242;21290:359;21678:1;21665:10;:14;21661:183;;;21696:12;21735:3;21721:10;21712:6;:19;;;;:::i;:::-;21711:27;;;;:::i;:::-;21696:42;;21771:4;21762:6;:13;;;;:::i;:::-;21753:22;;21790:42;21806:4;21820;21827;21790:15;:42::i;:::-;21681:163;21661:183;21858:33;21874:4;21880:2;21884:6;21858:15;:33::i;:::-;20468:1431;;;20390:1509;;;;:::o;9069:266::-;9148:4;9197:6;9172:21;:31;;9164:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;9251:12;9269:9;:14;;9291:6;9269:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9250:52;;;9320:7;9313:14;;;9069:266;;;;:::o;13395:733::-;13553:1;13535:20;;:6;:20;;;13527:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;13637:1;13616:23;;:9;:23;;;13608:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13692:47;13713:6;13721:9;13732:6;13692:20;:47::i;:::-;13752:21;13776:9;:17;13786:6;13776:17;;;;;;;;;;;;;;;;13752:41;;13829:6;13812:13;:23;;13804:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;13950:6;13934:13;:22;13914:9;:17;13924:6;13914:17;;;;;;;;;;;;;;;:42;;;;14002:6;13978:9;:20;13988:9;13978:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;14043:9;14026:35;;14035:6;14026:35;;;14054:6;14026:35;;;;;;:::i;:::-;;;;;;;;14074:46;14094:6;14102:9;14113:6;14074:19;:46::i;:::-;13516:612;13395:733;;;:::o;22406:647::-;22476:22;22501:21;22476:46;;22535:21;22573:1;22559:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22535:40;;22604:4;22586;22591:1;22586:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;22630:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22620:4;22625:1;22620:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;22665:15;;;;;;;;;;;:66;;;22746:11;22772:1;22788:4;22815;22835:15;22665:186;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22864:18;22909:14;22885:21;:38;;;;:::i;:::-;22864:59;;22936:46;22971:10;22944:15;;;;;;;;;;;22936:34;;;;:46;;;;:::i;:::-;;23000:45;23021:11;23034:10;23000:45;;;;;;;:::i;:::-;;;;;;;;22465:588;;;22406:647;:::o;15530:125::-;;;;:::o;15663:124::-;;;;:::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;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:::-;5473:6;5481;5489;5538:2;5526:9;5517:7;5513:23;5509:32;5506:119;;;5544:79;;:::i;:::-;5506:119;5664:1;5689:53;5734:7;5725:6;5714:9;5710:22;5689:53;:::i;:::-;5679:63;;5635:117;5791:2;5817:53;5862:7;5853:6;5842:9;5838:22;5817:53;:::i;:::-;5807:63;;5762:118;5919:2;5945:53;5990:7;5981:6;5970:9;5966:22;5945:53;:::i;:::-;5935:63;;5890:118;5396:619;;;;;:::o;6021:86::-;6056:7;6096:4;6089:5;6085:16;6074:27;;6021:86;;;:::o;6113:112::-;6196:22;6212:5;6196:22;:::i;:::-;6191:3;6184:35;6113:112;;:::o;6231:214::-;6320:4;6358:2;6347:9;6343:18;6335:26;;6371:67;6435:1;6424:9;6420:17;6411:6;6371:67;:::i;:::-;6231:214;;;;:::o;6451:118::-;6538:24;6556:5;6538:24;:::i;:::-;6533:3;6526:37;6451:118;;:::o;6575:222::-;6668:4;6706:2;6695:9;6691:18;6683:26;;6719:71;6787:1;6776:9;6772:17;6763:6;6719:71;:::i;:::-;6575:222;;;;:::o;6803:329::-;6862:6;6911:2;6899:9;6890:7;6886:23;6882:32;6879:119;;;6917:79;;:::i;:::-;6879:119;7037:1;7062:53;7107:7;7098:6;7087:9;7083:22;7062:53;:::i;:::-;7052:63;;7008:117;6803:329;;;;:::o;7138:::-;7197:6;7246:2;7234:9;7225:7;7221:23;7217:32;7214:119;;;7252:79;;:::i;:::-;7214:119;7372:1;7397:53;7442:7;7433:6;7422:9;7418:22;7397:53;:::i;:::-;7387:63;;7343:117;7138:329;;;;:::o;7473:116::-;7543:21;7558:5;7543:21;:::i;:::-;7536:5;7533:32;7523:60;;7579:1;7576;7569:12;7523:60;7473:116;:::o;7595:133::-;7638:5;7676:6;7663:20;7654:29;;7692:30;7716:5;7692:30;:::i;:::-;7595:133;;;;:::o;7734:468::-;7799:6;7807;7856:2;7844:9;7835:7;7831:23;7827:32;7824:119;;;7862:79;;:::i;:::-;7824:119;7982:1;8007:53;8052:7;8043:6;8032:9;8028:22;8007:53;:::i;:::-;7997:63;;7953:117;8109:2;8135:50;8177:7;8168:6;8157:9;8153:22;8135:50;:::i;:::-;8125:60;;8080:115;7734:468;;;;;:::o;8208:474::-;8276:6;8284;8333:2;8321:9;8312:7;8308:23;8304:32;8301:119;;;8339:79;;:::i;:::-;8301:119;8459:1;8484:53;8529:7;8520:6;8509:9;8505:22;8484:53;:::i;:::-;8474:63;;8430:117;8586:2;8612:53;8657:7;8648:6;8637:9;8633:22;8612:53;:::i;:::-;8602:63;;8557:118;8208:474;;;;;:::o;8688:323::-;8744:6;8793:2;8781:9;8772:7;8768:23;8764:32;8761:119;;;8799:79;;:::i;:::-;8761:119;8919:1;8944:50;8986:7;8977:6;8966:9;8962:22;8944:50;:::i;:::-;8934:60;;8890:114;8688:323;;;;:::o;9017:180::-;9065:77;9062:1;9055:88;9162:4;9159:1;9152:15;9186:4;9183:1;9176:15;9203:320;9247:6;9284:1;9278:4;9274:12;9264:22;;9331:1;9325:4;9321:12;9352:18;9342:81;;9408:4;9400:6;9396:17;9386:27;;9342:81;9470:2;9462:6;9459:14;9439:18;9436:38;9433:84;;9489:18;;:::i;:::-;9433:84;9254:269;9203:320;;;:::o;9529:182::-;9669:34;9665:1;9657:6;9653:14;9646:58;9529:182;:::o;9717:366::-;9859:3;9880:67;9944:2;9939:3;9880:67;:::i;:::-;9873:74;;9956:93;10045:3;9956:93;:::i;:::-;10074:2;10069:3;10065:12;10058:19;;9717:366;;;:::o;10089:419::-;10255:4;10293:2;10282:9;10278:18;10270:26;;10342:9;10336:4;10332:20;10328:1;10317:9;10313:17;10306:47;10370:131;10496:4;10370:131;:::i;:::-;10362:139;;10089:419;;;:::o;10514:223::-;10654:34;10650:1;10642:6;10638:14;10631:58;10723:6;10718:2;10710:6;10706:15;10699:31;10514:223;:::o;10743:366::-;10885:3;10906:67;10970:2;10965:3;10906:67;:::i;:::-;10899:74;;10982:93;11071:3;10982:93;:::i;:::-;11100:2;11095:3;11091:12;11084:19;;10743:366;;;:::o;11115:419::-;11281:4;11319:2;11308:9;11304:18;11296:26;;11368:9;11362:4;11358:20;11354:1;11343:9;11339:17;11332:47;11396:131;11522:4;11396:131;:::i;:::-;11388:139;;11115:419;;;:::o;11540:332::-;11661:4;11699:2;11688:9;11684:18;11676:26;;11712:71;11780:1;11769:9;11765:17;11756:6;11712:71;:::i;:::-;11793:72;11861:2;11850:9;11846:18;11837:6;11793:72;:::i;:::-;11540:332;;;;;:::o;11878:227::-;12018:34;12014:1;12006:6;12002:14;11995:58;12087:10;12082:2;12074:6;12070:15;12063:35;11878:227;:::o;12111:366::-;12253:3;12274:67;12338:2;12333:3;12274:67;:::i;:::-;12267:74;;12350:93;12439:3;12350:93;:::i;:::-;12468:2;12463:3;12459:12;12452:19;;12111:366;;;:::o;12483:419::-;12649:4;12687:2;12676:9;12672:18;12664:26;;12736:9;12730:4;12726:20;12722:1;12711:9;12707:17;12700:47;12764:131;12890:4;12764:131;:::i;:::-;12756:139;;12483:419;;;:::o;12908:180::-;12956:77;12953:1;12946:88;13053:4;13050:1;13043:15;13077:4;13074:1;13067:15;13094:191;13134:3;13153:20;13171:1;13153:20;:::i;:::-;13148:25;;13187:20;13205:1;13187:20;:::i;:::-;13182:25;;13230:1;13227;13223:9;13216:16;;13251:3;13248:1;13245:10;13242:36;;;13258:18;;:::i;:::-;13242:36;13094:191;;;;:::o;13291:174::-;13431:26;13427:1;13419:6;13415:14;13408:50;13291:174;:::o;13471:366::-;13613:3;13634:67;13698:2;13693:3;13634:67;:::i;:::-;13627:74;;13710:93;13799:3;13710:93;:::i;:::-;13828:2;13823:3;13819:12;13812:19;;13471:366;;;:::o;13843:419::-;14009:4;14047:2;14036:9;14032:18;14024:26;;14096:9;14090:4;14086:20;14082:1;14071:9;14067:17;14060:47;14124:131;14250:4;14124:131;:::i;:::-;14116:139;;13843:419;;;:::o;14268:224::-;14408:34;14404:1;14396:6;14392:14;14385:58;14477:7;14472:2;14464:6;14460:15;14453:32;14268:224;:::o;14498:366::-;14640:3;14661:67;14725:2;14720:3;14661:67;:::i;:::-;14654:74;;14737:93;14826:3;14737:93;:::i;:::-;14855:2;14850:3;14846:12;14839:19;;14498:366;;;:::o;14870:419::-;15036:4;15074:2;15063:9;15059:18;15051:26;;15123:9;15117:4;15113:20;15109:1;15098:9;15094:17;15087:47;15151:131;15277:4;15151:131;:::i;:::-;15143:139;;14870:419;;;:::o;15295:180::-;15343:77;15340:1;15333:88;15440:4;15437:1;15430:15;15464:4;15461:1;15454:15;15481:185;15521:1;15538:20;15556:1;15538:20;:::i;:::-;15533:25;;15572:20;15590:1;15572:20;:::i;:::-;15567:25;;15611:1;15601:35;;15616:18;;:::i;:::-;15601:35;15658:1;15655;15651:9;15646:14;;15481:185;;;;:::o;15672:250::-;15812:34;15808:1;15800:6;15796:14;15789:58;15881:33;15876:2;15868:6;15864:15;15857:58;15672:250;:::o;15928:366::-;16070:3;16091:67;16155:2;16150:3;16091:67;:::i;:::-;16084:74;;16167:93;16256:3;16167:93;:::i;:::-;16285:2;16280:3;16276:12;16269:19;;15928:366;;;:::o;16300:419::-;16466:4;16504:2;16493:9;16489:18;16481:26;;16553:9;16547:4;16543:20;16539:1;16528:9;16524:17;16517:47;16581:131;16707:4;16581:131;:::i;:::-;16573:139;;16300:419;;;:::o;16725:227::-;16865:34;16861:1;16853:6;16849:14;16842:58;16934:10;16929:2;16921:6;16917:15;16910:35;16725:227;:::o;16958:366::-;17100:3;17121:67;17185:2;17180:3;17121:67;:::i;:::-;17114:74;;17197:93;17286:3;17197:93;:::i;:::-;17315:2;17310:3;17306:12;17299:19;;16958:366;;;:::o;17330:419::-;17496:4;17534:2;17523:9;17519:18;17511:26;;17583:9;17577:4;17573:20;17569:1;17558:9;17554:17;17547:47;17611:131;17737:4;17611:131;:::i;:::-;17603:139;;17330:419;;;:::o;17755:230::-;17895:34;17891:1;17883:6;17879:14;17872:58;17964:13;17959:2;17951:6;17947:15;17940:38;17755:230;:::o;17991:366::-;18133:3;18154:67;18218:2;18213:3;18154:67;:::i;:::-;18147:74;;18230:93;18319:3;18230:93;:::i;:::-;18348:2;18343:3;18339:12;18332:19;;17991:366;;;:::o;18363:419::-;18529:4;18567:2;18556:9;18552:18;18544:26;;18616:9;18610:4;18606:20;18602:1;18591:9;18587:17;18580:47;18644:131;18770:4;18644:131;:::i;:::-;18636:139;;18363:419;;;:::o;18788:229::-;18928:34;18924:1;18916:6;18912:14;18905:58;18997:12;18992:2;18984:6;18980:15;18973:37;18788:229;:::o;19023:366::-;19165:3;19186:67;19250:2;19245:3;19186:67;:::i;:::-;19179:74;;19262:93;19351:3;19262:93;:::i;:::-;19380:2;19375:3;19371:12;19364:19;;19023:366;;;:::o;19395:419::-;19561:4;19599:2;19588:9;19584:18;19576:26;;19648:9;19642:4;19638:20;19634:1;19623:9;19619:17;19612:47;19676:131;19802:4;19676:131;:::i;:::-;19668:139;;19395:419;;;:::o;19820:221::-;19960:34;19956:1;19948:6;19944:14;19937:58;20029:4;20024:2;20016:6;20012:15;20005:29;19820:221;:::o;20047:366::-;20189:3;20210:67;20274:2;20269:3;20210:67;:::i;:::-;20203:74;;20286:93;20375:3;20286:93;:::i;:::-;20404:2;20399:3;20395:12;20388:19;;20047:366;;;:::o;20419:419::-;20585:4;20623:2;20612:9;20608:18;20600:26;;20672:9;20666:4;20662:20;20658:1;20647:9;20643:17;20636:47;20700:131;20826:4;20700:131;:::i;:::-;20692:139;;20419:419;;;:::o;20844:225::-;20984:34;20980:1;20972:6;20968:14;20961:58;21053:8;21048:2;21040:6;21036:15;21029:33;20844:225;:::o;21075:366::-;21217:3;21238:67;21302:2;21297:3;21238:67;:::i;:::-;21231:74;;21314:93;21403:3;21314:93;:::i;:::-;21432:2;21427:3;21423:12;21416:19;;21075:366;;;:::o;21447:419::-;21613:4;21651:2;21640:9;21636:18;21628:26;;21700:9;21694:4;21690:20;21686:1;21675:9;21671:17;21664:47;21728:131;21854:4;21728:131;:::i;:::-;21720:139;;21447:419;;;:::o;21872:242::-;22012:34;22008:1;22000:6;21996:14;21989:58;22081:25;22076:2;22068:6;22064:15;22057:50;21872:242;:::o;22120:366::-;22262:3;22283:67;22347:2;22342:3;22283:67;:::i;:::-;22276:74;;22359:93;22448:3;22359:93;:::i;:::-;22477:2;22472:3;22468:12;22461:19;;22120:366;;;:::o;22492:419::-;22658:4;22696:2;22685:9;22681:18;22673:26;;22745:9;22739:4;22735:20;22731:1;22720:9;22716:17;22709:47;22773:131;22899:4;22773:131;:::i;:::-;22765:139;;22492:419;;;:::o;22917:143::-;22974:5;23005:6;22999:13;22990:22;;23021:33;23048:5;23021:33;:::i;:::-;22917:143;;;;:::o;23066:351::-;23136:6;23185:2;23173:9;23164:7;23160:23;23156:32;23153:119;;;23191:79;;:::i;:::-;23153:119;23311:1;23336:64;23392:7;23383:6;23372:9;23368:22;23336:64;:::i;:::-;23326:74;;23282:128;23066:351;;;;:::o;23423:332::-;23544:4;23582:2;23571:9;23567:18;23559:26;;23595:71;23663:1;23652:9;23648:17;23639:6;23595:71;:::i;:::-;23676:72;23744:2;23733:9;23729:18;23720:6;23676:72;:::i;:::-;23423:332;;;;;:::o;23761:137::-;23815:5;23846:6;23840:13;23831:22;;23862:30;23886:5;23862:30;:::i;:::-;23761:137;;;;:::o;23904:345::-;23971:6;24020:2;24008:9;23999:7;23995:23;23991:32;23988:119;;;24026:79;;:::i;:::-;23988:119;24146:1;24171:61;24224:7;24215:6;24204:9;24200:22;24171:61;:::i;:::-;24161:71;;24117:125;23904:345;;;;:::o;24255:223::-;24395:34;24391:1;24383:6;24379:14;24372:58;24464:6;24459:2;24451:6;24447:15;24440:31;24255:223;:::o;24484:366::-;24626:3;24647:67;24711:2;24706:3;24647:67;:::i;:::-;24640:74;;24723:93;24812:3;24723:93;:::i;:::-;24841:2;24836:3;24832:12;24825:19;;24484:366;;;:::o;24856:419::-;25022:4;25060:2;25049:9;25045:18;25037:26;;25109:9;25103:4;25099:20;25095:1;25084:9;25080:17;25073:47;25137:131;25263:4;25137:131;:::i;:::-;25129:139;;24856:419;;;:::o;25281:221::-;25421:34;25417:1;25409:6;25405:14;25398:58;25490:4;25485:2;25477:6;25473:15;25466:29;25281:221;:::o;25508:366::-;25650:3;25671:67;25735:2;25730:3;25671:67;:::i;:::-;25664:74;;25747:93;25836:3;25747:93;:::i;:::-;25865:2;25860:3;25856:12;25849:19;;25508:366;;;:::o;25880:419::-;26046:4;26084:2;26073:9;26069:18;26061:26;;26133:9;26127:4;26123:20;26119:1;26108:9;26104:17;26097:47;26161:131;26287:4;26161:131;:::i;:::-;26153:139;;25880:419;;;:::o;26305:224::-;26445:34;26441:1;26433:6;26429:14;26422:58;26514:7;26509:2;26501:6;26497:15;26490:32;26305:224;:::o;26535:366::-;26677:3;26698:67;26762:2;26757:3;26698:67;:::i;:::-;26691:74;;26774:93;26863:3;26774:93;:::i;:::-;26892:2;26887:3;26883:12;26876:19;;26535:366;;;:::o;26907:419::-;27073:4;27111:2;27100:9;27096:18;27088:26;;27160:9;27154:4;27150:20;27146:1;27135:9;27131:17;27124:47;27188:131;27314:4;27188:131;:::i;:::-;27180:139;;26907:419;;;:::o;27332:222::-;27472:34;27468:1;27460:6;27456:14;27449:58;27541:5;27536:2;27528:6;27524:15;27517:30;27332:222;:::o;27560:366::-;27702:3;27723:67;27787:2;27782:3;27723:67;:::i;:::-;27716:74;;27799:93;27888:3;27799:93;:::i;:::-;27917:2;27912:3;27908:12;27901:19;;27560:366;;;:::o;27932:419::-;28098:4;28136:2;28125:9;28121:18;28113:26;;28185:9;28179:4;28175:20;28171:1;28160:9;28156:17;28149:47;28213:131;28339:4;28213:131;:::i;:::-;28205:139;;27932:419;;;:::o;28357:174::-;28497:26;28493:1;28485:6;28481:14;28474:50;28357:174;:::o;28537:366::-;28679:3;28700:67;28764:2;28759:3;28700:67;:::i;:::-;28693:74;;28776:93;28865:3;28776:93;:::i;:::-;28894:2;28889:3;28885:12;28878:19;;28537:366;;;:::o;28909:419::-;29075:4;29113:2;29102:9;29098:18;29090:26;;29162:9;29156:4;29152:20;29148:1;29137:9;29133:17;29126:47;29190:131;29316:4;29190:131;:::i;:::-;29182:139;;28909:419;;;:::o;29334:410::-;29374:7;29397:20;29415:1;29397:20;:::i;:::-;29392:25;;29431:20;29449:1;29431:20;:::i;:::-;29426:25;;29486:1;29483;29479:9;29508:30;29526:11;29508:30;:::i;:::-;29497:41;;29687:1;29678:7;29674:15;29671:1;29668:22;29648:1;29641:9;29621:83;29598:139;;29717:18;;:::i;:::-;29598:139;29382:362;29334:410;;;;:::o;29750:194::-;29790:4;29810:20;29828:1;29810:20;:::i;:::-;29805:25;;29844:20;29862:1;29844:20;:::i;:::-;29839:25;;29888:1;29885;29881:9;29873:17;;29912:1;29906:4;29903:11;29900:37;;;29917:18;;:::i;:::-;29900:37;29750:194;;;;:::o;29950:179::-;30090:31;30086:1;30078:6;30074:14;30067:55;29950:179;:::o;30135:366::-;30277:3;30298:67;30362:2;30357:3;30298:67;:::i;:::-;30291:74;;30374:93;30463:3;30374:93;:::i;:::-;30492:2;30487:3;30483:12;30476:19;;30135:366;;;:::o;30507:419::-;30673:4;30711:2;30700:9;30696:18;30688:26;;30760:9;30754:4;30750:20;30746:1;30735:9;30731:17;30724:47;30788:131;30914:4;30788:131;:::i;:::-;30780:139;;30507:419;;;:::o;30932:147::-;31033:11;31070:3;31055:18;;30932:147;;;;:::o;31085:114::-;;:::o;31205:398::-;31364:3;31385:83;31466:1;31461:3;31385:83;:::i;:::-;31378:90;;31477:93;31566:3;31477:93;:::i;:::-;31595:1;31590:3;31586:11;31579:18;;31205:398;;;:::o;31609:379::-;31793:3;31815:147;31958:3;31815:147;:::i;:::-;31808:154;;31979:3;31972:10;;31609:379;;;:::o;31994:225::-;32134:34;32130:1;32122:6;32118:14;32111:58;32203:8;32198:2;32190:6;32186:15;32179:33;31994:225;:::o;32225:366::-;32367:3;32388:67;32452:2;32447:3;32388:67;:::i;:::-;32381:74;;32464:93;32553:3;32464:93;:::i;:::-;32582:2;32577:3;32573:12;32566:19;;32225:366;;;:::o;32597:419::-;32763:4;32801:2;32790:9;32786:18;32778:26;;32850:9;32844:4;32840:20;32836:1;32825:9;32821:17;32814:47;32878:131;33004:4;32878:131;:::i;:::-;32870:139;;32597:419;;;:::o;33022:180::-;33070:77;33067:1;33060:88;33167:4;33164:1;33157:15;33191:4;33188:1;33181:15;33208:180;33256:77;33253:1;33246:88;33353:4;33350:1;33343:15;33377:4;33374:1;33367:15;33394:143;33451:5;33482:6;33476:13;33467:22;;33498:33;33525:5;33498:33;:::i;:::-;33394:143;;;;:::o;33543:351::-;33613:6;33662:2;33650:9;33641:7;33637:23;33633:32;33630:119;;;33668:79;;:::i;:::-;33630:119;33788:1;33813:64;33869:7;33860:6;33849:9;33845:22;33813:64;:::i;:::-;33803:74;;33759:128;33543:351;;;;:::o;33900:85::-;33945:7;33974:5;33963:16;;33900:85;;;:::o;33991:158::-;34049:9;34082:61;34100:42;34109:32;34135:5;34109:32;:::i;:::-;34100:42;:::i;:::-;34082:61;:::i;:::-;34069:74;;33991:158;;;:::o;34155:147::-;34250:45;34289:5;34250:45;:::i;:::-;34245:3;34238:58;34155:147;;:::o;34308:114::-;34375:6;34409:5;34403:12;34393:22;;34308:114;;;:::o;34428:184::-;34527:11;34561:6;34556:3;34549:19;34601:4;34596:3;34592:14;34577:29;;34428:184;;;;:::o;34618:132::-;34685:4;34708:3;34700:11;;34738:4;34733:3;34729:14;34721:22;;34618:132;;;:::o;34756:108::-;34833:24;34851:5;34833:24;:::i;:::-;34828:3;34821:37;34756:108;;:::o;34870:179::-;34939:10;34960:46;35002:3;34994:6;34960:46;:::i;:::-;35038:4;35033:3;35029:14;35015:28;;34870:179;;;;:::o;35055:113::-;35125:4;35157;35152:3;35148:14;35140:22;;35055:113;;;:::o;35204:732::-;35323:3;35352:54;35400:5;35352:54;:::i;:::-;35422:86;35501:6;35496:3;35422:86;:::i;:::-;35415:93;;35532:56;35582:5;35532:56;:::i;:::-;35611:7;35642:1;35627:284;35652:6;35649:1;35646:13;35627:284;;;35728:6;35722:13;35755:63;35814:3;35799:13;35755:63;:::i;:::-;35748:70;;35841:60;35894:6;35841:60;:::i;:::-;35831:70;;35687:224;35674:1;35671;35667:9;35662:14;;35627:284;;;35631:14;35927:3;35920:10;;35328:608;;;35204:732;;;;:::o;35942:831::-;36205:4;36243:3;36232:9;36228:19;36220:27;;36257:71;36325:1;36314:9;36310:17;36301:6;36257:71;:::i;:::-;36338:80;36414:2;36403:9;36399:18;36390:6;36338:80;:::i;:::-;36465:9;36459:4;36455:20;36450:2;36439:9;36435:18;36428:48;36493:108;36596:4;36587:6;36493:108;:::i;:::-;36485:116;;36611:72;36679:2;36668:9;36664:18;36655:6;36611:72;:::i;:::-;36693:73;36761:3;36750:9;36746:19;36737:6;36693:73;:::i;:::-;35942:831;;;;;;;;:::o

Swarm Source

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