ETH Price: $2,471.57 (-2.15%)

Token

Burnny Inu (BURNNY)
 

Overview

Max Total Supply

420,000,000,000 BURNNY

Holders

43

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 BURNNY

Value
$0.00
0x17742db5c8a192c6bf7f644130d37606fa2c74d5
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:
BURNNY

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-26
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.19;
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;
    }
}

interface IBEP20 {
    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 IBEP20Metadata is IBEP20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

contract BEP20 is Context, IBEP20, IBEP20Metadata {
    mapping(address => uint256) internal _balances;
    mapping(address => mapping(address => uint256)) internal _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;

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

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {BEP20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IBEP20-balanceOf} and {IBEP20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IBEP20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IBEP20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IBEP20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IBEP20-allowance}.
     */
    function allowance(address owner, address spender)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IBEP20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IBEP20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {BEP20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "BEP20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IBEP20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IBEP20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "BEP20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "BEP20: transfer from the zero address");
        require(recipient != address(0), "BEP20: transfer to the zero address");
        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "BEP20: transfer amount exceeds balance");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    /** This function will be used to generate the total supply
    * while deploying the contract
    *
    * This function can never be called again after deploying contract
    */
    function _tokengeneration(address account, uint256 amount) internal virtual {
        _totalSupply = amount;
        _balances[account] = amount;
        emit Transfer(address(0), account, amount);
    }
  
    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "BEP20: approve from the zero address");
        require(spender != address(0), "BEP20: approve to the zero address");
        _allowances[owner][spender] = amount;
        
        emit Approval(owner, spender, amount);
    }
}

library Address {
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

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

    constructor() {
        _setOwner(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

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

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

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

contract BURNNY is BEP20, Ownable {
    using Address for address payable;
    IRouter private router;
    address private pair;
    bool private _interlock = false;
    bool private providingLiquidity = false;
    bool public tradingEnabled = false;
    uint256 public swapTokens = 1260000000 * 10**18;
    address public marketingWallet1 = (0xb4b563854672767043cea30E0559A11560662BF8);
    address public marketingWallet2 = (0xF177D1a37FC7Baaf9e84d00635D3818F98f9b5A9);
    address public constant deadWallet = 0x000000000000000000000000000000000000dEaD;

    struct Taxes {
         uint256 marketing1;
         uint256 marketing2;
         uint256 liquidity;
    }

    Taxes public buytaxes = Taxes(2, 2, 0);
    Taxes public sellTaxes = Taxes(2, 2, 0); 
    mapping(address => bool) public exemptFee;

   //event
    event ExcludeFromFeeUpdated(address indexed account);
    event includeFromFeeUpdated(address indexed account);
    event ERC20TokensRecovered(uint256 indexed _amount);
    event ETHBalanceRecovered();
    event TradingOpenUpdated();
 
    modifier lockTheSwap() {
        if (!_interlock) {
            _interlock = true;
            _;
            _interlock = false;
        }
    }

    constructor() BEP20("Burnny Inu", "BURNNY") {
        _tokengeneration(msg.sender, 420000000000 * 10**decimals());
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
        router = _router;
        pair = _pair;
        exemptFee[msg.sender] = true;
        exemptFee[address(this)] = true;
        exemptFee[marketingWallet1] = true;
        exemptFee[marketingWallet2] = true;
        exemptFee[deadWallet] = true;
        exemptFee[0x407993575c91ce7643a4d4cCACc9A98c36eE1BBE] = true; // BSC PinkSale Locker
        exemptFee[0x71B5759d73262FBb223956913ecF4ecC51057641] = true; // ETH PinkSale Locker
    }
   
    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "BEP20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        override
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "BEP20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

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

    function _transfer(address sender, address recipient, uint256 amount) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");

        if (!exemptFee[sender] && !exemptFee[recipient]) {
            require(tradingEnabled, "Trading not enabled");
        }

        uint256 feeswap;
        uint256 feesum;
        uint256 fee;
        Taxes memory currentTaxes;

        if (_interlock || exemptFee[sender] || exemptFee[recipient])
            fee = 0;

        else if (recipient == pair) {
            feeswap = sellTaxes.liquidity + sellTaxes.marketing1 + sellTaxes.marketing2;
            feesum = feeswap;
            currentTaxes = sellTaxes;
        } else if (recipient != pair) {
            feeswap = buytaxes.liquidity + buytaxes.marketing1 + buytaxes.marketing2;
            feesum = feeswap;
            currentTaxes = buytaxes;
        }

        fee = (amount * feesum) / 100;

        //send fees if threshold has been reached
        //don't do this on buys, breaks swap
        if (providingLiquidity && sender != pair) Liquify(feeswap, currentTaxes);

        //rest to recipient
        super._transfer(sender, recipient, amount - fee);
        if (fee > 0) {
            //send the fee to the contract
            if (feeswap > 0) {
                uint256 feeAmount = (amount * feeswap) / 100 ;
                super._transfer(sender, address(this), feeAmount);
            }

        }
    }

    function Liquify(uint256 feeswap, Taxes memory swapTaxes) private lockTheSwap {
        if(feeswap == 0){
            return;
        }

        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= swapTokens) {
            if (swapTokens > 1) {
                contractBalance = swapTokens;
            }

            uint256 denominator = feeswap * 2;
            uint256 tokensToAddLiquidityWith = (contractBalance * swapTaxes.liquidity) / denominator;
            uint256 toSwap = contractBalance - tokensToAddLiquidityWith;
            uint256 initialBalance = address(this).balance;
            swapTokensForETH(toSwap);
            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 unitBalance = deltaBalance / (denominator - swapTaxes.liquidity);
            uint256 ethToAddLiquidityWith = unitBalance * swapTaxes.liquidity;

            if (ethToAddLiquidityWith > 0) {
                addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
            }

            uint256 marketing1Amt = unitBalance * 2 * swapTaxes.marketing1;
            if (marketing1Amt > 0) {
                payable(marketingWallet1).sendValue(marketing1Amt);
            }
            
            uint256 marketing2Amt = unitBalance * 2 * swapTaxes.marketing2;
             if (marketing2Amt > 0) {
                payable(marketingWallet2).sendValue(marketing2Amt);
            }

        }
    }

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{ value: ethAmount }(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            deadWallet,
            block.timestamp
        );
    }

    function setSwapBackEnable(bool state) external onlyOwner {
        providingLiquidity = state;
    }

    function setSwapTokens(uint256 new_amount) external onlyOwner {
        require(new_amount <= 4200000000, "Swap threshold amount should be lower or equal to 1% of tokens");
        require(new_amount >= 420000000,  "Swap threshold amount should be greater than or equal to 0.1% of tokens");
        swapTokens = new_amount * 10**decimals();
    }

   
     function setBuyTaxes(uint256 _marketing1, uint256 _marketing2, uint256 _liquidity) external onlyOwner {
        buytaxes = Taxes(_marketing1, _marketing2, _liquidity);
        require((_marketing1 + _marketing2 + _liquidity) <= 10,"Must keep fees at 10% or less");
    }

    function setSellTaxes(uint256 _marketing1, uint256 _marketing2, uint256 _liquidity) external onlyOwner {
        sellTaxes = Taxes(_marketing1, _marketing2, _liquidity);
        require((_marketing1 + _marketing2 + _liquidity) <= 10,"Must keep fees at 10% or less");
    }

    function enableTrading() external onlyOwner {
        require(!tradingEnabled, "Cannot re-enable trading");
        tradingEnabled = true;
        providingLiquidity = true;
       emit TradingOpenUpdated();
    }

    function excludeFromFee(address _address) external onlyOwner {
        require(exemptFee[_address] != true,"Account is already excluded");
        exemptFee[_address] = true;
       emit ExcludeFromFeeUpdated(_address);
    }
   
    function includeFromFee(address _address) external onlyOwner {
        require(exemptFee[_address] != false,"Account is already excluded");
        exemptFee[_address] = false;
       emit includeFromFeeUpdated(_address);
    }

   function recoverERC20FromContract(address _tokenAddy, uint256 _amount) external onlyOwner {
        require(_tokenAddy != address(this), "Owner can't claim contract's balance of its own tokens");
        require(_amount > 0, "Amount should be greater than zero");
        require(_amount <= IBEP20(_tokenAddy).balanceOf(address(this)), "Insufficient Amount");
        IBEP20(_tokenAddy).transfer(marketingWallet1, _amount);
      emit ERC20TokensRecovered(_amount); 
    }
   
    function recoverETHfromContract() external {
        uint256 contractETHBalance = address(this).balance;
        require(contractETHBalance > 0, "Amount should be greater than zero");
        require(contractETHBalance <= address(this).balance, "Insufficient Amount");
        payable(address(marketingWallet1)).transfer(contractETHBalance);
      emit ETHBalanceRecovered();
    }

    // fallbacks
    receive() external payable {}
}

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":"uint256","name":"_amount","type":"uint256"}],"name":"ERC20TokensRecovered","type":"event"},{"anonymous":false,"inputs":[],"name":"ETHBalanceRecovered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"ExcludeFromFeeUpdated","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":[],"name":"TradingOpenUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"includeFromFeeUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buytaxes","outputs":[{"internalType":"uint256","name":"marketing1","type":"uint256"},{"internalType":"uint256","name":"marketing2","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"includeFromFee","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":[],"name":"marketingWallet1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet2","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":[{"internalType":"address","name":"_tokenAddy","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"recoverERC20FromContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"recoverETHfromContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing1","type":"uint256"},{"internalType":"uint256","name":"marketing2","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing1","type":"uint256"},{"internalType":"uint256","name":"_marketing2","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing1","type":"uint256"},{"internalType":"uint256","name":"_marketing2","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setSwapBackEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"setSwapTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokens","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"},{"stateMutability":"payable","type":"receive"}]

60806040526000600760146101000a81548160ff0219169083151502179055506000600760156101000a81548160ff0219169083151502179055506000600760166101000a81548160ff0219169083151502179055506b04123f60ddd8a1946c00000060085573b4b563854672767043cea30e0559a11560662bf8600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f177d1a37fc7baaf9e84d00635d3818f98f9b5a9600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051806060016040528060028152602001600281526020016000815250600b6000820151816000015560208201518160010155604082015181600201555050604051806060016040528060028152602001600281526020016000815250600e60008201518160000155602082015181600101556040820151816002015550503480156200019c57600080fd5b506040518060400160405280600a81526020017f4275726e6e7920496e75000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f4255524e4e59000000000000000000000000000000000000000000000000000081525081600390816200021a919062000b79565b5080600490816200022c919062000b79565b5050506200024f620002436200077260201b60201c565b6200077a60201b60201c565b6200029033620002646200084060201b60201c565b600a62000272919062000df0565b6461c9f3680062000284919062000e41565b6200084960201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031d919062000ef6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000385573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ab919062000ef6565b6040518363ffffffff1660e01b8152600401620003ca92919062000f39565b6020604051808303816000875af1158015620003ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000410919062000ef6565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016011600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016011600073407993575c91ce7643a4d4ccacc9a98c36ee1bbe73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160007371b5759d73262fbb223956913ecf4ecc5105764173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062000f94565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b80600281905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620008f3919062000f77565b60405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200098157607f821691505b60208210810362000997576200099662000939565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000a017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620009c2565b62000a0d8683620009c2565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000a5a62000a5462000a4e8462000a25565b62000a2f565b62000a25565b9050919050565b6000819050919050565b62000a768362000a39565b62000a8e62000a858262000a61565b848454620009cf565b825550505050565b600090565b62000aa562000a96565b62000ab281848462000a6b565b505050565b5b8181101562000ada5762000ace60008262000a9b565b60018101905062000ab8565b5050565b601f82111562000b295762000af3816200099d565b62000afe84620009b2565b8101602085101562000b0e578190505b62000b2662000b1d85620009b2565b83018262000ab7565b50505b505050565b600082821c905092915050565b600062000b4e6000198460080262000b2e565b1980831691505092915050565b600062000b69838362000b3b565b9150826002028217905092915050565b62000b8482620008ff565b67ffffffffffffffff81111562000ba05762000b9f6200090a565b5b62000bac825462000968565b62000bb982828562000ade565b600060209050601f83116001811462000bf1576000841562000bdc578287015190505b62000be8858262000b5b565b86555062000c58565b601f19841662000c01866200099d565b60005b8281101562000c2b5784890151825560018201915060208501945060208101905062000c04565b8683101562000c4b578489015162000c47601f89168262000b3b565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000cee5780860481111562000cc65762000cc562000c60565b5b600185161562000cd65780820291505b808102905062000ce68562000c8f565b945062000ca6565b94509492505050565b60008262000d09576001905062000ddc565b8162000d19576000905062000ddc565b816001811462000d32576002811462000d3d5762000d73565b600191505062000ddc565b60ff84111562000d525762000d5162000c60565b5b8360020a91508482111562000d6c5762000d6b62000c60565b5b5062000ddc565b5060208310610133831016604e8410600b841016171562000dad5782820a90508381111562000da75762000da662000c60565b5b62000ddc565b62000dbc848484600162000c9c565b9250905081840481111562000dd65762000dd562000c60565b5b81810290505b9392505050565b600060ff82169050919050565b600062000dfd8262000a25565b915062000e0a8362000de3565b925062000e397fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000cf7565b905092915050565b600062000e4e8262000a25565b915062000e5b8362000a25565b925082820262000e6b8162000a25565b9150828204841483151762000e855762000e8462000c60565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ebe8262000e91565b9050919050565b62000ed08162000eb1565b811462000edc57600080fd5b50565b60008151905062000ef08162000ec5565b92915050565b60006020828403121562000f0f5762000f0e62000e8c565b5b600062000f1f8482850162000edf565b91505092915050565b62000f338162000eb1565b82525050565b600060408201905062000f50600083018562000f28565b62000f5f602083018462000f28565b9392505050565b62000f718162000a25565b82525050565b600060208201905062000f8e600083018462000f66565b92915050565b6140e88062000fa46000396000f3fe6080604052600436106101dc5760003560e01c806370a0823111610102578063a9059cbb11610095578063dd62ed3e11610064578063dd62ed3e146106a9578063f2fde38b146106e6578063f66895a31461070f578063ff5118281461073c576101e3565b8063a9059cbb146105ef578063bf6642e71461062c578063c5d32bb214610655578063ce831ed514610692576101e3565b80638a8c523c116100d15780638a8c523c146105455780638da5cb5b1461055c57806395d89b4114610587578063a457c2d7146105b2576101e3565b806370a082311461049b578063715018a6146104d857806373d00224146104ef57806385141a771461051a576101e3565b806323b872dd1161017a5780634ada218b116101495780634ada218b146103f3578063520361ee1461041e5780636dff2eeb146104475780636e4af82c14610470576101e3565b806323b872dd14610325578063313ce56714610362578063395093511461038d578063437823ec146103ca576101e3565b80630b1d01f3116101b65780630b1d01f3146102795780630d0020f2146102a657806318160ddd146102d15780631870517a146102fc576101e3565b806306fdde03146101e85780630873321414610213578063095ea7b31461023c576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd610765565b60405161020a9190612b55565b60405180910390f35b34801561021f57600080fd5b5061023a60048036038101906102359190612bb2565b6107f7565b005b34801561024857600080fd5b50610263600480360381019061025e9190612c63565b610910565b6040516102709190612cbe565b60405180910390f35b34801561028557600080fd5b5061028e61092e565b60405161029d93929190612ce8565b60405180910390f35b3480156102b257600080fd5b506102bb610946565b6040516102c89190612d2e565b60405180910390f35b3480156102dd57600080fd5b506102e661096c565b6040516102f39190612d49565b60405180910390f35b34801561030857600080fd5b50610323600480360381019061031e9190612bb2565b610976565b005b34801561033157600080fd5b5061034c60048036038101906103479190612d64565b610a8f565b6040516103599190612cbe565b60405180910390f35b34801561036e57600080fd5b50610377610b90565b6040516103849190612dd3565b60405180910390f35b34801561039957600080fd5b506103b460048036038101906103af9190612c63565b610b99565b6040516103c19190612cbe565b60405180910390f35b3480156103d657600080fd5b506103f160048036038101906103ec9190612dee565b610c45565b005b3480156103ff57600080fd5b50610408610df2565b6040516104159190612cbe565b60405180910390f35b34801561042a57600080fd5b5061044560048036038101906104409190612e47565b610e05565b005b34801561045357600080fd5b5061046e60048036038101906104699190612c63565b610e9e565b005b34801561047c57600080fd5b50610485611159565b6040516104929190612d2e565b60405180910390f35b3480156104a757600080fd5b506104c260048036038101906104bd9190612dee565b61117f565b6040516104cf9190612d49565b60405180910390f35b3480156104e457600080fd5b506104ed6111c7565b005b3480156104fb57600080fd5b5061050461124f565b6040516105119190612d49565b60405180910390f35b34801561052657600080fd5b5061052f611255565b60405161053c9190612d2e565b60405180910390f35b34801561055157600080fd5b5061055a61125b565b005b34801561056857600080fd5b5061057161138b565b60405161057e9190612d2e565b60405180910390f35b34801561059357600080fd5b5061059c6113b5565b6040516105a99190612b55565b60405180910390f35b3480156105be57600080fd5b506105d960048036038101906105d49190612c63565b611447565b6040516105e69190612cbe565b60405180910390f35b3480156105fb57600080fd5b5061061660048036038101906106119190612c63565b61153b565b6040516106239190612cbe565b60405180910390f35b34801561063857600080fd5b50610653600480360381019061064e9190612e74565b611552565b005b34801561066157600080fd5b5061067c60048036038101906106779190612dee565b611684565b6040516106899190612cbe565b60405180910390f35b34801561069e57600080fd5b506106a76116a4565b005b3480156106b557600080fd5b506106d060048036038101906106cb9190612ea1565b6117c7565b6040516106dd9190612d49565b60405180910390f35b3480156106f257600080fd5b5061070d60048036038101906107089190612dee565b61184e565b005b34801561071b57600080fd5b50610724611945565b60405161073393929190612ce8565b60405180910390f35b34801561074857600080fd5b50610763600480360381019061075e9190612dee565b61195d565b005b60606003805461077490612f10565b80601f01602080910402602001604051908101604052809291908181526020018280546107a090612f10565b80156107ed5780601f106107c2576101008083540402835291602001916107ed565b820191906000526020600020905b8154815290600101906020018083116107d057829003601f168201915b5050505050905090565b6107ff611b0a565b73ffffffffffffffffffffffffffffffffffffffff1661081d61138b565b73ffffffffffffffffffffffffffffffffffffffff1614610873576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086a90612f8d565b60405180910390fd5b604051806060016040528084815260200183815260200182815250600e600082015181600001556020820151816001015560408201518160020155905050600a8183856108c09190612fdc565b6108ca9190612fdc565b111561090b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109029061305c565b60405180910390fd5b505050565b600061092461091d611b0a565b8484611b12565b6001905092915050565b600b8060000154908060010154908060020154905083565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b61097e611b0a565b73ffffffffffffffffffffffffffffffffffffffff1661099c61138b565b73ffffffffffffffffffffffffffffffffffffffff16146109f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e990612f8d565b60405180910390fd5b604051806060016040528084815260200183815260200182815250600b600082015181600001556020820151816001015560408201518160020155905050600a818385610a3f9190612fdc565b610a499190612fdc565b1115610a8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a819061305c565b60405180910390fd5b505050565b6000610a9c848484611cdb565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ae7611b0a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610b67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5e906130ee565b60405180910390fd5b610b8485610b73611b0a565b8584610b7f919061310e565b611b12565b60019150509392505050565b60006012905090565b6000610c3b610ba6611b0a565b848460016000610bb4611b0a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c369190612fdc565b611b12565b6001905092915050565b610c4d611b0a565b73ffffffffffffffffffffffffffffffffffffffff16610c6b61138b565b73ffffffffffffffffffffffffffffffffffffffff1614610cc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb890612f8d565b60405180910390fd5b60011515601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610d54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4b9061318e565b60405180910390fd5b6001601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f7168e8adb718597b3ac83e2dfe415bea8ebaabb57fe933ffac2e0ed93b80718e60405160405180910390a250565b600760169054906101000a900460ff1681565b610e0d611b0a565b73ffffffffffffffffffffffffffffffffffffffff16610e2b61138b565b73ffffffffffffffffffffffffffffffffffffffff1614610e81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7890612f8d565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b610ea6611b0a565b73ffffffffffffffffffffffffffffffffffffffff16610ec461138b565b73ffffffffffffffffffffffffffffffffffffffff1614610f1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1190612f8d565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7f90613220565b60405180910390fd5b60008111610fcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc2906132b2565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110049190612d2e565b602060405180830381865afa158015611021573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104591906132e7565b811115611087576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107e90613360565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016110e4929190613380565b6020604051808303816000875af1158015611103573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112791906133be565b50807fc3cafad8c1a78aa542c18679d54d2e14cf1f08b516ac12071dcf9fd2d3701c2260405160405180910390a25050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111cf611b0a565b73ffffffffffffffffffffffffffffffffffffffff166111ed61138b565b73ffffffffffffffffffffffffffffffffffffffff1614611243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123a90612f8d565b60405180910390fd5b61124d600061213b565b565b60085481565b61dead81565b611263611b0a565b73ffffffffffffffffffffffffffffffffffffffff1661128161138b565b73ffffffffffffffffffffffffffffffffffffffff16146112d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ce90612f8d565b60405180910390fd5b600760169054906101000a900460ff1615611327576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131e90613437565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff0219169083151502179055507f0d151bf744092c3011c9f50766da412cca73acdbcaa74b879a5858adc258f93560405160405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546113c490612f10565b80601f01602080910402602001604051908101604052809291908181526020018280546113f090612f10565b801561143d5780601f106114125761010080835404028352916020019161143d565b820191906000526020600020905b81548152906001019060200180831161142057829003601f168201915b5050505050905090565b60008060016000611456611b0a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611513576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150a906134c9565b60405180910390fd5b61153061151e611b0a565b85858461152b919061310e565b611b12565b600191505092915050565b6000611548338484611cdb565b6001905092915050565b61155a611b0a565b73ffffffffffffffffffffffffffffffffffffffff1661157861138b565b73ffffffffffffffffffffffffffffffffffffffff16146115ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c590612f8d565b60405180910390fd5b63fa56ea00811115611615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160c9061355b565b60405180910390fd5b631908b10081101561165c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165390613613565b60405180910390fd5b611664610b90565b600a6116709190613766565b8161167b91906137b1565b60088190555050565b60116020528060005260406000206000915054906101000a900460ff1681565b6000479050600081116116ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e3906132b2565b60405180910390fd5b4781111561172f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172690613360565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611797573d6000803e3d6000fd5b507fc680f238873c988c7dc872ec40caca9d70edfe000c3d44a1b9410684db93767560405160405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611856611b0a565b73ffffffffffffffffffffffffffffffffffffffff1661187461138b565b73ffffffffffffffffffffffffffffffffffffffff16146118ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c190612f8d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611939576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193090613865565b60405180910390fd5b6119428161213b565b50565b600e8060000154908060010154908060020154905083565b611965611b0a565b73ffffffffffffffffffffffffffffffffffffffff1661198361138b565b73ffffffffffffffffffffffffffffffffffffffff16146119d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d090612f8d565b60405180910390fd5b60001515601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611a6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a639061318e565b60405180910390fd5b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167fdff643e1b752e1138794c958b6f565e4f003ba18d45383a40b582de82ced091e60405160405180910390a250565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b78906138f7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be790613989565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611cce9190612d49565b60405180910390a3505050565b60008111611d1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1590613a1b565b60405180910390fd5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611dc25750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e1757600760169054906101000a900460ff16611e16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0d90613a87565b60405180910390fd5b5b6000806000611e24612aa4565b600760149054906101000a900460ff1680611e885750601160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611edc5750601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611eea576000915061204c565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603611f9c57600e60010154600e60000154600e60020154611f5b9190612fdc565b611f659190612fdc565b9350839250600e6040518060600160405290816000820154815260200160018201548152602001600282015481525050905061204b565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161461204a57600b60010154600b60000154600b6002015461200d9190612fdc565b6120179190612fdc565b9350839250600b604051806060016040529081600082015481526020016001820154815260200160028201548152505090505b5b5b6064838661205a91906137b1565b6120649190613ad6565b9150600760159054906101000a900460ff1680156120d05750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b156120e0576120df8482612201565b5b6120f6878784886120f1919061310e565b61241b565b60008211156121325760008411156121315760006064858761211891906137b1565b6121229190613ad6565b905061212f88308361241b565b505b5b50505050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff16612417576001600760146101000a81548160ff02191690831515021790555060008203156123fb5760006122443061117f565b905060085481106123f957600160085411156122605760085490505b600060028461226f91906137b1565b905060008184604001518461228491906137b1565b61228e9190613ad6565b90506000818461229e919061310e565b905060004790506122ae8261268d565b600081476122bc919061310e565b905060008760400151866122d0919061310e565b826122db9190613ad6565b905060008860400151826122ef91906137b1565b905060008111156123055761230486826128d0565b5b6000896000015160028461231991906137b1565b61232391906137b1565b9050600081111561237a5761237981600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166129b090919063ffffffff16565b5b60008a6020015160028561238e91906137b1565b61239891906137b1565b905060008111156123ef576123ee81600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166129b090919063ffffffff16565b5b5050505050505050505b505b6000600760146101000a81548160ff0219169083151502179055505b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361248a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248190613b79565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f090613c0b565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561257f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257690613c9d565b60405180910390fd5b818161258b919061310e565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461261b9190612fdc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161267f9190612d49565b60405180910390a350505050565b6000600267ffffffffffffffff8111156126aa576126a9613cbd565b5b6040519080825280602002602001820160405280156126d85781602001602082028036833780820191505090505b50905030816000815181106126f0576126ef613cec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612797573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127bb9190613d30565b816001815181106127cf576127ce613cec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061283630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b12565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161289a959493929190613e60565b600060405180830381600087803b1580156128b457600080fd5b505af11580156128c8573d6000803e3d6000fd5b505050505050565b6128fd30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b12565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161296696959493929190613eba565b60606040518083038185885af1158015612984573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906129a99190613f1b565b5050505050565b804710156129f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ea90613fba565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612a199061400b565b60006040518083038185875af1925050503d8060008114612a56576040519150601f19603f3d011682016040523d82523d6000602084013e612a5b565b606091505b5050905080612a9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9690614092565b60405180910390fd5b505050565b60405180606001604052806000815260200160008152602001600081525090565b600081519050919050565b600082825260208201905092915050565b60005b83811015612aff578082015181840152602081019050612ae4565b60008484015250505050565b6000601f19601f8301169050919050565b6000612b2782612ac5565b612b318185612ad0565b9350612b41818560208601612ae1565b612b4a81612b0b565b840191505092915050565b60006020820190508181036000830152612b6f8184612b1c565b905092915050565b600080fd5b6000819050919050565b612b8f81612b7c565b8114612b9a57600080fd5b50565b600081359050612bac81612b86565b92915050565b600080600060608486031215612bcb57612bca612b77565b5b6000612bd986828701612b9d565b9350506020612bea86828701612b9d565b9250506040612bfb86828701612b9d565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c3082612c05565b9050919050565b612c4081612c25565b8114612c4b57600080fd5b50565b600081359050612c5d81612c37565b92915050565b60008060408385031215612c7a57612c79612b77565b5b6000612c8885828601612c4e565b9250506020612c9985828601612b9d565b9150509250929050565b60008115159050919050565b612cb881612ca3565b82525050565b6000602082019050612cd36000830184612caf565b92915050565b612ce281612b7c565b82525050565b6000606082019050612cfd6000830186612cd9565b612d0a6020830185612cd9565b612d176040830184612cd9565b949350505050565b612d2881612c25565b82525050565b6000602082019050612d436000830184612d1f565b92915050565b6000602082019050612d5e6000830184612cd9565b92915050565b600080600060608486031215612d7d57612d7c612b77565b5b6000612d8b86828701612c4e565b9350506020612d9c86828701612c4e565b9250506040612dad86828701612b9d565b9150509250925092565b600060ff82169050919050565b612dcd81612db7565b82525050565b6000602082019050612de86000830184612dc4565b92915050565b600060208284031215612e0457612e03612b77565b5b6000612e1284828501612c4e565b91505092915050565b612e2481612ca3565b8114612e2f57600080fd5b50565b600081359050612e4181612e1b565b92915050565b600060208284031215612e5d57612e5c612b77565b5b6000612e6b84828501612e32565b91505092915050565b600060208284031215612e8a57612e89612b77565b5b6000612e9884828501612b9d565b91505092915050565b60008060408385031215612eb857612eb7612b77565b5b6000612ec685828601612c4e565b9250506020612ed785828601612c4e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612f2857607f821691505b602082108103612f3b57612f3a612ee1565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612f77602083612ad0565b9150612f8282612f41565b602082019050919050565b60006020820190508181036000830152612fa681612f6a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612fe782612b7c565b9150612ff283612b7c565b925082820190508082111561300a57613009612fad565b5b92915050565b7f4d757374206b656570206665657320617420313025206f72206c657373000000600082015250565b6000613046601d83612ad0565b915061305182613010565b602082019050919050565b6000602082019050818103600083015261307581613039565b9050919050565b7f42455032303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006130d8602883612ad0565b91506130e38261307c565b604082019050919050565b60006020820190508181036000830152613107816130cb565b9050919050565b600061311982612b7c565b915061312483612b7c565b925082820390508181111561313c5761313b612fad565b5b92915050565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b6000613178601b83612ad0565b915061318382613142565b602082019050919050565b600060208201905081810360008301526131a78161316b565b9050919050565b7f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c60008201527f616e6365206f6620697473206f776e20746f6b656e7300000000000000000000602082015250565b600061320a603683612ad0565b9150613215826131ae565b604082019050919050565b60006020820190508181036000830152613239816131fd565b9050919050565b7f416d6f756e742073686f756c642062652067726561746572207468616e207a6560008201527f726f000000000000000000000000000000000000000000000000000000000000602082015250565b600061329c602283612ad0565b91506132a782613240565b604082019050919050565b600060208201905081810360008301526132cb8161328f565b9050919050565b6000815190506132e181612b86565b92915050565b6000602082840312156132fd576132fc612b77565b5b600061330b848285016132d2565b91505092915050565b7f496e73756666696369656e7420416d6f756e7400000000000000000000000000600082015250565b600061334a601383612ad0565b915061335582613314565b602082019050919050565b600060208201905081810360008301526133798161333d565b9050919050565b60006040820190506133956000830185612d1f565b6133a26020830184612cd9565b9392505050565b6000815190506133b881612e1b565b92915050565b6000602082840312156133d4576133d3612b77565b5b60006133e2848285016133a9565b91505092915050565b7f43616e6e6f742072652d656e61626c652074726164696e670000000000000000600082015250565b6000613421601883612ad0565b915061342c826133eb565b602082019050919050565b6000602082019050818103600083015261345081613414565b9050919050565b7f42455032303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006134b3602583612ad0565b91506134be82613457565b604082019050919050565b600060208201905081810360008301526134e2816134a6565b9050919050565b7f53776170207468726573686f6c6420616d6f756e742073686f756c642062652060008201527f6c6f776572206f7220657175616c20746f203125206f6620746f6b656e730000602082015250565b6000613545603e83612ad0565b9150613550826134e9565b604082019050919050565b6000602082019050818103600083015261357481613538565b9050919050565b7f53776170207468726573686f6c6420616d6f756e742073686f756c642062652060008201527f67726561746572207468616e206f7220657175616c20746f20302e3125206f6660208201527f20746f6b656e7300000000000000000000000000000000000000000000000000604082015250565b60006135fd604783612ad0565b91506136088261357b565b606082019050919050565b6000602082019050818103600083015261362c816135f0565b9050919050565b60008160011c9050919050565b6000808291508390505b600185111561368a5780860481111561366657613665612fad565b5b60018516156136755780820291505b808102905061368385613633565b945061364a565b94509492505050565b6000826136a3576001905061375f565b816136b1576000905061375f565b81600181146136c757600281146136d157613700565b600191505061375f565b60ff8411156136e3576136e2612fad565b5b8360020a9150848211156136fa576136f9612fad565b5b5061375f565b5060208310610133831016604e8410600b84101617156137355782820a9050838111156137305761372f612fad565b5b61375f565b6137428484846001613640565b9250905081840481111561375957613758612fad565b5b81810290505b9392505050565b600061377182612b7c565b915061377c83612db7565b92506137a97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613693565b905092915050565b60006137bc82612b7c565b91506137c783612b7c565b92508282026137d581612b7c565b915082820484148315176137ec576137eb612fad565b5b5092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061384f602683612ad0565b915061385a826137f3565b604082019050919050565b6000602082019050818103600083015261387e81613842565b9050919050565b7f42455032303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006138e1602483612ad0565b91506138ec82613885565b604082019050919050565b60006020820190508181036000830152613910816138d4565b9050919050565b7f42455032303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613973602283612ad0565b915061397e82613917565b604082019050919050565b600060208201905081810360008301526139a281613966565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613a05602983612ad0565b9150613a10826139a9565b604082019050919050565b60006020820190508181036000830152613a34816139f8565b9050919050565b7f54726164696e67206e6f7420656e61626c656400000000000000000000000000600082015250565b6000613a71601383612ad0565b9150613a7c82613a3b565b602082019050919050565b60006020820190508181036000830152613aa081613a64565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ae182612b7c565b9150613aec83612b7c565b925082613afc57613afb613aa7565b5b828204905092915050565b7f42455032303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613b63602583612ad0565b9150613b6e82613b07565b604082019050919050565b60006020820190508181036000830152613b9281613b56565b9050919050565b7f42455032303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613bf5602383612ad0565b9150613c0082613b99565b604082019050919050565b60006020820190508181036000830152613c2481613be8565b9050919050565b7f42455032303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613c87602683612ad0565b9150613c9282613c2b565b604082019050919050565b60006020820190508181036000830152613cb681613c7a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613d2a81612c37565b92915050565b600060208284031215613d4657613d45612b77565b5b6000613d5484828501613d1b565b91505092915050565b6000819050919050565b6000819050919050565b6000613d8c613d87613d8284613d5d565b613d67565b612b7c565b9050919050565b613d9c81613d71565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613dd781612c25565b82525050565b6000613de98383613dce565b60208301905092915050565b6000602082019050919050565b6000613e0d82613da2565b613e178185613dad565b9350613e2283613dbe565b8060005b83811015613e53578151613e3a8882613ddd565b9750613e4583613df5565b925050600181019050613e26565b5085935050505092915050565b600060a082019050613e756000830188612cd9565b613e826020830187613d93565b8181036040830152613e948186613e02565b9050613ea36060830185612d1f565b613eb06080830184612cd9565b9695505050505050565b600060c082019050613ecf6000830189612d1f565b613edc6020830188612cd9565b613ee96040830187613d93565b613ef66060830186613d93565b613f036080830185612d1f565b613f1060a0830184612cd9565b979650505050505050565b600080600060608486031215613f3457613f33612b77565b5b6000613f42868287016132d2565b9350506020613f53868287016132d2565b9250506040613f64868287016132d2565b9150509250925092565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000613fa4601d83612ad0565b9150613faf82613f6e565b602082019050919050565b60006020820190508181036000830152613fd381613f97565b9050919050565b600081905092915050565b50565b6000613ff5600083613fda565b915061400082613fe5565b600082019050919050565b600061401682613fe8565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b600061407c603a83612ad0565b915061408782614020565b604082019050919050565b600060208201905081810360008301526140ab8161406f565b905091905056fea264697066735822122089f32dcc9d2791a0e20f520638cd22fd7b085c2d73cadb22f565185244cb139464736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101dc5760003560e01c806370a0823111610102578063a9059cbb11610095578063dd62ed3e11610064578063dd62ed3e146106a9578063f2fde38b146106e6578063f66895a31461070f578063ff5118281461073c576101e3565b8063a9059cbb146105ef578063bf6642e71461062c578063c5d32bb214610655578063ce831ed514610692576101e3565b80638a8c523c116100d15780638a8c523c146105455780638da5cb5b1461055c57806395d89b4114610587578063a457c2d7146105b2576101e3565b806370a082311461049b578063715018a6146104d857806373d00224146104ef57806385141a771461051a576101e3565b806323b872dd1161017a5780634ada218b116101495780634ada218b146103f3578063520361ee1461041e5780636dff2eeb146104475780636e4af82c14610470576101e3565b806323b872dd14610325578063313ce56714610362578063395093511461038d578063437823ec146103ca576101e3565b80630b1d01f3116101b65780630b1d01f3146102795780630d0020f2146102a657806318160ddd146102d15780631870517a146102fc576101e3565b806306fdde03146101e85780630873321414610213578063095ea7b31461023c576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd610765565b60405161020a9190612b55565b60405180910390f35b34801561021f57600080fd5b5061023a60048036038101906102359190612bb2565b6107f7565b005b34801561024857600080fd5b50610263600480360381019061025e9190612c63565b610910565b6040516102709190612cbe565b60405180910390f35b34801561028557600080fd5b5061028e61092e565b60405161029d93929190612ce8565b60405180910390f35b3480156102b257600080fd5b506102bb610946565b6040516102c89190612d2e565b60405180910390f35b3480156102dd57600080fd5b506102e661096c565b6040516102f39190612d49565b60405180910390f35b34801561030857600080fd5b50610323600480360381019061031e9190612bb2565b610976565b005b34801561033157600080fd5b5061034c60048036038101906103479190612d64565b610a8f565b6040516103599190612cbe565b60405180910390f35b34801561036e57600080fd5b50610377610b90565b6040516103849190612dd3565b60405180910390f35b34801561039957600080fd5b506103b460048036038101906103af9190612c63565b610b99565b6040516103c19190612cbe565b60405180910390f35b3480156103d657600080fd5b506103f160048036038101906103ec9190612dee565b610c45565b005b3480156103ff57600080fd5b50610408610df2565b6040516104159190612cbe565b60405180910390f35b34801561042a57600080fd5b5061044560048036038101906104409190612e47565b610e05565b005b34801561045357600080fd5b5061046e60048036038101906104699190612c63565b610e9e565b005b34801561047c57600080fd5b50610485611159565b6040516104929190612d2e565b60405180910390f35b3480156104a757600080fd5b506104c260048036038101906104bd9190612dee565b61117f565b6040516104cf9190612d49565b60405180910390f35b3480156104e457600080fd5b506104ed6111c7565b005b3480156104fb57600080fd5b5061050461124f565b6040516105119190612d49565b60405180910390f35b34801561052657600080fd5b5061052f611255565b60405161053c9190612d2e565b60405180910390f35b34801561055157600080fd5b5061055a61125b565b005b34801561056857600080fd5b5061057161138b565b60405161057e9190612d2e565b60405180910390f35b34801561059357600080fd5b5061059c6113b5565b6040516105a99190612b55565b60405180910390f35b3480156105be57600080fd5b506105d960048036038101906105d49190612c63565b611447565b6040516105e69190612cbe565b60405180910390f35b3480156105fb57600080fd5b5061061660048036038101906106119190612c63565b61153b565b6040516106239190612cbe565b60405180910390f35b34801561063857600080fd5b50610653600480360381019061064e9190612e74565b611552565b005b34801561066157600080fd5b5061067c60048036038101906106779190612dee565b611684565b6040516106899190612cbe565b60405180910390f35b34801561069e57600080fd5b506106a76116a4565b005b3480156106b557600080fd5b506106d060048036038101906106cb9190612ea1565b6117c7565b6040516106dd9190612d49565b60405180910390f35b3480156106f257600080fd5b5061070d60048036038101906107089190612dee565b61184e565b005b34801561071b57600080fd5b50610724611945565b60405161073393929190612ce8565b60405180910390f35b34801561074857600080fd5b50610763600480360381019061075e9190612dee565b61195d565b005b60606003805461077490612f10565b80601f01602080910402602001604051908101604052809291908181526020018280546107a090612f10565b80156107ed5780601f106107c2576101008083540402835291602001916107ed565b820191906000526020600020905b8154815290600101906020018083116107d057829003601f168201915b5050505050905090565b6107ff611b0a565b73ffffffffffffffffffffffffffffffffffffffff1661081d61138b565b73ffffffffffffffffffffffffffffffffffffffff1614610873576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086a90612f8d565b60405180910390fd5b604051806060016040528084815260200183815260200182815250600e600082015181600001556020820151816001015560408201518160020155905050600a8183856108c09190612fdc565b6108ca9190612fdc565b111561090b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109029061305c565b60405180910390fd5b505050565b600061092461091d611b0a565b8484611b12565b6001905092915050565b600b8060000154908060010154908060020154905083565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b61097e611b0a565b73ffffffffffffffffffffffffffffffffffffffff1661099c61138b565b73ffffffffffffffffffffffffffffffffffffffff16146109f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e990612f8d565b60405180910390fd5b604051806060016040528084815260200183815260200182815250600b600082015181600001556020820151816001015560408201518160020155905050600a818385610a3f9190612fdc565b610a499190612fdc565b1115610a8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a819061305c565b60405180910390fd5b505050565b6000610a9c848484611cdb565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ae7611b0a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610b67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5e906130ee565b60405180910390fd5b610b8485610b73611b0a565b8584610b7f919061310e565b611b12565b60019150509392505050565b60006012905090565b6000610c3b610ba6611b0a565b848460016000610bb4611b0a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c369190612fdc565b611b12565b6001905092915050565b610c4d611b0a565b73ffffffffffffffffffffffffffffffffffffffff16610c6b61138b565b73ffffffffffffffffffffffffffffffffffffffff1614610cc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb890612f8d565b60405180910390fd5b60011515601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610d54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4b9061318e565b60405180910390fd5b6001601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f7168e8adb718597b3ac83e2dfe415bea8ebaabb57fe933ffac2e0ed93b80718e60405160405180910390a250565b600760169054906101000a900460ff1681565b610e0d611b0a565b73ffffffffffffffffffffffffffffffffffffffff16610e2b61138b565b73ffffffffffffffffffffffffffffffffffffffff1614610e81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7890612f8d565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b610ea6611b0a565b73ffffffffffffffffffffffffffffffffffffffff16610ec461138b565b73ffffffffffffffffffffffffffffffffffffffff1614610f1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1190612f8d565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7f90613220565b60405180910390fd5b60008111610fcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc2906132b2565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110049190612d2e565b602060405180830381865afa158015611021573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104591906132e7565b811115611087576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107e90613360565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016110e4929190613380565b6020604051808303816000875af1158015611103573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112791906133be565b50807fc3cafad8c1a78aa542c18679d54d2e14cf1f08b516ac12071dcf9fd2d3701c2260405160405180910390a25050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111cf611b0a565b73ffffffffffffffffffffffffffffffffffffffff166111ed61138b565b73ffffffffffffffffffffffffffffffffffffffff1614611243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123a90612f8d565b60405180910390fd5b61124d600061213b565b565b60085481565b61dead81565b611263611b0a565b73ffffffffffffffffffffffffffffffffffffffff1661128161138b565b73ffffffffffffffffffffffffffffffffffffffff16146112d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ce90612f8d565b60405180910390fd5b600760169054906101000a900460ff1615611327576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131e90613437565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff0219169083151502179055507f0d151bf744092c3011c9f50766da412cca73acdbcaa74b879a5858adc258f93560405160405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546113c490612f10565b80601f01602080910402602001604051908101604052809291908181526020018280546113f090612f10565b801561143d5780601f106114125761010080835404028352916020019161143d565b820191906000526020600020905b81548152906001019060200180831161142057829003601f168201915b5050505050905090565b60008060016000611456611b0a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611513576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150a906134c9565b60405180910390fd5b61153061151e611b0a565b85858461152b919061310e565b611b12565b600191505092915050565b6000611548338484611cdb565b6001905092915050565b61155a611b0a565b73ffffffffffffffffffffffffffffffffffffffff1661157861138b565b73ffffffffffffffffffffffffffffffffffffffff16146115ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c590612f8d565b60405180910390fd5b63fa56ea00811115611615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160c9061355b565b60405180910390fd5b631908b10081101561165c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165390613613565b60405180910390fd5b611664610b90565b600a6116709190613766565b8161167b91906137b1565b60088190555050565b60116020528060005260406000206000915054906101000a900460ff1681565b6000479050600081116116ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e3906132b2565b60405180910390fd5b4781111561172f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172690613360565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611797573d6000803e3d6000fd5b507fc680f238873c988c7dc872ec40caca9d70edfe000c3d44a1b9410684db93767560405160405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611856611b0a565b73ffffffffffffffffffffffffffffffffffffffff1661187461138b565b73ffffffffffffffffffffffffffffffffffffffff16146118ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c190612f8d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611939576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193090613865565b60405180910390fd5b6119428161213b565b50565b600e8060000154908060010154908060020154905083565b611965611b0a565b73ffffffffffffffffffffffffffffffffffffffff1661198361138b565b73ffffffffffffffffffffffffffffffffffffffff16146119d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d090612f8d565b60405180910390fd5b60001515601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611a6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a639061318e565b60405180910390fd5b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167fdff643e1b752e1138794c958b6f565e4f003ba18d45383a40b582de82ced091e60405160405180910390a250565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b78906138f7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be790613989565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611cce9190612d49565b60405180910390a3505050565b60008111611d1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1590613a1b565b60405180910390fd5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611dc25750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e1757600760169054906101000a900460ff16611e16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0d90613a87565b60405180910390fd5b5b6000806000611e24612aa4565b600760149054906101000a900460ff1680611e885750601160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611edc5750601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611eea576000915061204c565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603611f9c57600e60010154600e60000154600e60020154611f5b9190612fdc565b611f659190612fdc565b9350839250600e6040518060600160405290816000820154815260200160018201548152602001600282015481525050905061204b565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161461204a57600b60010154600b60000154600b6002015461200d9190612fdc565b6120179190612fdc565b9350839250600b604051806060016040529081600082015481526020016001820154815260200160028201548152505090505b5b5b6064838661205a91906137b1565b6120649190613ad6565b9150600760159054906101000a900460ff1680156120d05750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b156120e0576120df8482612201565b5b6120f6878784886120f1919061310e565b61241b565b60008211156121325760008411156121315760006064858761211891906137b1565b6121229190613ad6565b905061212f88308361241b565b505b5b50505050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff16612417576001600760146101000a81548160ff02191690831515021790555060008203156123fb5760006122443061117f565b905060085481106123f957600160085411156122605760085490505b600060028461226f91906137b1565b905060008184604001518461228491906137b1565b61228e9190613ad6565b90506000818461229e919061310e565b905060004790506122ae8261268d565b600081476122bc919061310e565b905060008760400151866122d0919061310e565b826122db9190613ad6565b905060008860400151826122ef91906137b1565b905060008111156123055761230486826128d0565b5b6000896000015160028461231991906137b1565b61232391906137b1565b9050600081111561237a5761237981600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166129b090919063ffffffff16565b5b60008a6020015160028561238e91906137b1565b61239891906137b1565b905060008111156123ef576123ee81600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166129b090919063ffffffff16565b5b5050505050505050505b505b6000600760146101000a81548160ff0219169083151502179055505b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361248a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248190613b79565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f090613c0b565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561257f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257690613c9d565b60405180910390fd5b818161258b919061310e565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461261b9190612fdc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161267f9190612d49565b60405180910390a350505050565b6000600267ffffffffffffffff8111156126aa576126a9613cbd565b5b6040519080825280602002602001820160405280156126d85781602001602082028036833780820191505090505b50905030816000815181106126f0576126ef613cec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612797573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127bb9190613d30565b816001815181106127cf576127ce613cec565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061283630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b12565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161289a959493929190613e60565b600060405180830381600087803b1580156128b457600080fd5b505af11580156128c8573d6000803e3d6000fd5b505050505050565b6128fd30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b12565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161296696959493929190613eba565b60606040518083038185885af1158015612984573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906129a99190613f1b565b5050505050565b804710156129f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ea90613fba565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612a199061400b565b60006040518083038185875af1925050503d8060008114612a56576040519150601f19603f3d011682016040523d82523d6000602084013e612a5b565b606091505b5050905080612a9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9690614092565b60405180910390fd5b505050565b60405180606001604052806000815260200160008152602001600081525090565b600081519050919050565b600082825260208201905092915050565b60005b83811015612aff578082015181840152602081019050612ae4565b60008484015250505050565b6000601f19601f8301169050919050565b6000612b2782612ac5565b612b318185612ad0565b9350612b41818560208601612ae1565b612b4a81612b0b565b840191505092915050565b60006020820190508181036000830152612b6f8184612b1c565b905092915050565b600080fd5b6000819050919050565b612b8f81612b7c565b8114612b9a57600080fd5b50565b600081359050612bac81612b86565b92915050565b600080600060608486031215612bcb57612bca612b77565b5b6000612bd986828701612b9d565b9350506020612bea86828701612b9d565b9250506040612bfb86828701612b9d565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c3082612c05565b9050919050565b612c4081612c25565b8114612c4b57600080fd5b50565b600081359050612c5d81612c37565b92915050565b60008060408385031215612c7a57612c79612b77565b5b6000612c8885828601612c4e565b9250506020612c9985828601612b9d565b9150509250929050565b60008115159050919050565b612cb881612ca3565b82525050565b6000602082019050612cd36000830184612caf565b92915050565b612ce281612b7c565b82525050565b6000606082019050612cfd6000830186612cd9565b612d0a6020830185612cd9565b612d176040830184612cd9565b949350505050565b612d2881612c25565b82525050565b6000602082019050612d436000830184612d1f565b92915050565b6000602082019050612d5e6000830184612cd9565b92915050565b600080600060608486031215612d7d57612d7c612b77565b5b6000612d8b86828701612c4e565b9350506020612d9c86828701612c4e565b9250506040612dad86828701612b9d565b9150509250925092565b600060ff82169050919050565b612dcd81612db7565b82525050565b6000602082019050612de86000830184612dc4565b92915050565b600060208284031215612e0457612e03612b77565b5b6000612e1284828501612c4e565b91505092915050565b612e2481612ca3565b8114612e2f57600080fd5b50565b600081359050612e4181612e1b565b92915050565b600060208284031215612e5d57612e5c612b77565b5b6000612e6b84828501612e32565b91505092915050565b600060208284031215612e8a57612e89612b77565b5b6000612e9884828501612b9d565b91505092915050565b60008060408385031215612eb857612eb7612b77565b5b6000612ec685828601612c4e565b9250506020612ed785828601612c4e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612f2857607f821691505b602082108103612f3b57612f3a612ee1565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612f77602083612ad0565b9150612f8282612f41565b602082019050919050565b60006020820190508181036000830152612fa681612f6a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612fe782612b7c565b9150612ff283612b7c565b925082820190508082111561300a57613009612fad565b5b92915050565b7f4d757374206b656570206665657320617420313025206f72206c657373000000600082015250565b6000613046601d83612ad0565b915061305182613010565b602082019050919050565b6000602082019050818103600083015261307581613039565b9050919050565b7f42455032303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006130d8602883612ad0565b91506130e38261307c565b604082019050919050565b60006020820190508181036000830152613107816130cb565b9050919050565b600061311982612b7c565b915061312483612b7c565b925082820390508181111561313c5761313b612fad565b5b92915050565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b6000613178601b83612ad0565b915061318382613142565b602082019050919050565b600060208201905081810360008301526131a78161316b565b9050919050565b7f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c60008201527f616e6365206f6620697473206f776e20746f6b656e7300000000000000000000602082015250565b600061320a603683612ad0565b9150613215826131ae565b604082019050919050565b60006020820190508181036000830152613239816131fd565b9050919050565b7f416d6f756e742073686f756c642062652067726561746572207468616e207a6560008201527f726f000000000000000000000000000000000000000000000000000000000000602082015250565b600061329c602283612ad0565b91506132a782613240565b604082019050919050565b600060208201905081810360008301526132cb8161328f565b9050919050565b6000815190506132e181612b86565b92915050565b6000602082840312156132fd576132fc612b77565b5b600061330b848285016132d2565b91505092915050565b7f496e73756666696369656e7420416d6f756e7400000000000000000000000000600082015250565b600061334a601383612ad0565b915061335582613314565b602082019050919050565b600060208201905081810360008301526133798161333d565b9050919050565b60006040820190506133956000830185612d1f565b6133a26020830184612cd9565b9392505050565b6000815190506133b881612e1b565b92915050565b6000602082840312156133d4576133d3612b77565b5b60006133e2848285016133a9565b91505092915050565b7f43616e6e6f742072652d656e61626c652074726164696e670000000000000000600082015250565b6000613421601883612ad0565b915061342c826133eb565b602082019050919050565b6000602082019050818103600083015261345081613414565b9050919050565b7f42455032303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006134b3602583612ad0565b91506134be82613457565b604082019050919050565b600060208201905081810360008301526134e2816134a6565b9050919050565b7f53776170207468726573686f6c6420616d6f756e742073686f756c642062652060008201527f6c6f776572206f7220657175616c20746f203125206f6620746f6b656e730000602082015250565b6000613545603e83612ad0565b9150613550826134e9565b604082019050919050565b6000602082019050818103600083015261357481613538565b9050919050565b7f53776170207468726573686f6c6420616d6f756e742073686f756c642062652060008201527f67726561746572207468616e206f7220657175616c20746f20302e3125206f6660208201527f20746f6b656e7300000000000000000000000000000000000000000000000000604082015250565b60006135fd604783612ad0565b91506136088261357b565b606082019050919050565b6000602082019050818103600083015261362c816135f0565b9050919050565b60008160011c9050919050565b6000808291508390505b600185111561368a5780860481111561366657613665612fad565b5b60018516156136755780820291505b808102905061368385613633565b945061364a565b94509492505050565b6000826136a3576001905061375f565b816136b1576000905061375f565b81600181146136c757600281146136d157613700565b600191505061375f565b60ff8411156136e3576136e2612fad565b5b8360020a9150848211156136fa576136f9612fad565b5b5061375f565b5060208310610133831016604e8410600b84101617156137355782820a9050838111156137305761372f612fad565b5b61375f565b6137428484846001613640565b9250905081840481111561375957613758612fad565b5b81810290505b9392505050565b600061377182612b7c565b915061377c83612db7565b92506137a97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613693565b905092915050565b60006137bc82612b7c565b91506137c783612b7c565b92508282026137d581612b7c565b915082820484148315176137ec576137eb612fad565b5b5092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061384f602683612ad0565b915061385a826137f3565b604082019050919050565b6000602082019050818103600083015261387e81613842565b9050919050565b7f42455032303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006138e1602483612ad0565b91506138ec82613885565b604082019050919050565b60006020820190508181036000830152613910816138d4565b9050919050565b7f42455032303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613973602283612ad0565b915061397e82613917565b604082019050919050565b600060208201905081810360008301526139a281613966565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613a05602983612ad0565b9150613a10826139a9565b604082019050919050565b60006020820190508181036000830152613a34816139f8565b9050919050565b7f54726164696e67206e6f7420656e61626c656400000000000000000000000000600082015250565b6000613a71601383612ad0565b9150613a7c82613a3b565b602082019050919050565b60006020820190508181036000830152613aa081613a64565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ae182612b7c565b9150613aec83612b7c565b925082613afc57613afb613aa7565b5b828204905092915050565b7f42455032303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613b63602583612ad0565b9150613b6e82613b07565b604082019050919050565b60006020820190508181036000830152613b9281613b56565b9050919050565b7f42455032303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613bf5602383612ad0565b9150613c0082613b99565b604082019050919050565b60006020820190508181036000830152613c2481613be8565b9050919050565b7f42455032303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613c87602683612ad0565b9150613c9282613c2b565b604082019050919050565b60006020820190508181036000830152613cb681613c7a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613d2a81612c37565b92915050565b600060208284031215613d4657613d45612b77565b5b6000613d5484828501613d1b565b91505092915050565b6000819050919050565b6000819050919050565b6000613d8c613d87613d8284613d5d565b613d67565b612b7c565b9050919050565b613d9c81613d71565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613dd781612c25565b82525050565b6000613de98383613dce565b60208301905092915050565b6000602082019050919050565b6000613e0d82613da2565b613e178185613dad565b9350613e2283613dbe565b8060005b83811015613e53578151613e3a8882613ddd565b9750613e4583613df5565b925050600181019050613e26565b5085935050505092915050565b600060a082019050613e756000830188612cd9565b613e826020830187613d93565b8181036040830152613e948186613e02565b9050613ea36060830185612d1f565b613eb06080830184612cd9565b9695505050505050565b600060c082019050613ecf6000830189612d1f565b613edc6020830188612cd9565b613ee96040830187613d93565b613ef66060830186613d93565b613f036080830185612d1f565b613f1060a0830184612cd9565b979650505050505050565b600080600060608486031215613f3457613f33612b77565b5b6000613f42868287016132d2565b9350506020613f53868287016132d2565b9250506040613f64868287016132d2565b9150509250925092565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000613fa4601d83612ad0565b9150613faf82613f6e565b602082019050919050565b60006020820190508181036000830152613fd381613f97565b9050919050565b600081905092915050565b50565b6000613ff5600083613fda565b915061400082613fe5565b600082019050919050565b600061401682613fe8565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b600061407c603a83612ad0565b915061408782614020565b604082019050919050565b600060208201905081810360008301526140ab8161406f565b905091905056fea264697066735822122089f32dcc9d2791a0e20f520638cd22fd7b085c2d73cadb22f565185244cb139464736f6c63430008130033

Deployed Bytecode Sourcemap

11214:10019:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1845:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19312:275;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13222:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11906:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;11615:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2965:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19031:273;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13391:448;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2807:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13847:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19821:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11435:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18556:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20299:478;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11530:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3136:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9879:94;;;;;;;;;;;;;:::i;:::-;;11476:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11700:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19595:218;;;;;;;;;;;;;:::i;:::-;;9656:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2064:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14103:410;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14521:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18667:350;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11998:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20788:387;;;;;;;;;;;;;:::i;:::-;;3755:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9981:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11951:39;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;20061:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1845:100;1899:13;1932:5;1925:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1845:100;:::o;19312:275::-;9802:12;:10;:12::i;:::-;9791:23;;:7;:5;:7::i;:::-;:23;;;9783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19438:43:::1;;;;;;;;19444:11;19438:43;;;;19457:11;19438:43;;;;19470:10;19438:43;;::::0;19426:9:::1;:55;;;;;;;;;;;;;;;;;;;;;;;;;;;19544:2;19529:10;19515:11;19501;:25;;;;:::i;:::-;:38;;;;:::i;:::-;19500:46;;19492:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;19312:275:::0;;;:::o;13222:161::-;13297:4;13314:39;13323:12;:10;:12::i;:::-;13337:7;13346:6;13314:8;:39::i;:::-;13371:4;13364:11;;13222:161;;;;:::o;11906:38::-;;;;;;;;;;;;;;;;;;;:::o;11615:78::-;;;;;;;;;;;;;:::o;2965:108::-;3026:7;3053:12;;3046:19;;2965:108;:::o;19031:273::-;9802:12;:10;:12::i;:::-;9791:23;;:7;:5;:7::i;:::-;:23;;;9783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19155:43:::1;;;;;;;;19161:11;19155:43;;;;19174:11;19155:43;;;;19187:10;19155:43;;::::0;19144:8:::1;:54;;;;;;;;;;;;;;;;;;;;;;;;;;;19261:2;19246:10;19232:11;19218;:25;;;;:::i;:::-;:38;;;;:::i;:::-;19217:46;;19209:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;19031:273:::0;;;:::o;13391:448::-;13523:4;13540:36;13550:6;13558:9;13569:6;13540:9;:36::i;:::-;13589:24;13616:11;:19;13628:6;13616:19;;;;;;;;;;;;;;;:33;13636:12;:10;:12::i;:::-;13616:33;;;;;;;;;;;;;;;;13589:60;;13688:6;13668:16;:26;;13660:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;13750:57;13759:6;13767:12;:10;:12::i;:::-;13800:6;13781:16;:25;;;;:::i;:::-;13750:8;:57::i;:::-;13827:4;13820:11;;;13391:448;;;;;:::o;2807:93::-;2865:5;2890:2;2883:9;;2807:93;:::o;13847:248::-;13963:4;13985:80;13994:12;:10;:12::i;:::-;14008:7;14054:10;14017:11;:25;14029:12;:10;:12::i;:::-;14017:25;;;;;;;;;;;;;;;:34;14043:7;14017:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;13985:8;:80::i;:::-;14083:4;14076:11;;13847:248;;;;:::o;19821:229::-;9802:12;:10;:12::i;:::-;9791:23;;:7;:5;:7::i;:::-;:23;;;9783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19924:4:::1;19901:27;;:9;:19;19911:8;19901:19;;;;;;;;;;;;;;;;;;;;;;;;;:27;;::::0;19893:66:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19992:4;19970:9;:19;19980:8;19970:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;20033:8;20011:31;;;;;;;;;;;;19821:229:::0;:::o;11435:34::-;;;;;;;;;;;;;:::o;18556:103::-;9802:12;:10;:12::i;:::-;9791:23;;:7;:5;:7::i;:::-;:23;;;9783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18646:5:::1;18625:18;;:26;;;;;;;;;;;;;;;;;;18556:103:::0;:::o;20299:478::-;9802:12;:10;:12::i;:::-;9791:23;;:7;:5;:7::i;:::-;:23;;;9783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20430:4:::1;20408:27;;:10;:27;;::::0;20400:94:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20523:1;20513:7;:11;20505:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;20600:10;20593:28;;;20630:4;20593:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20582:7;:54;;20574:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;20678:10;20671:27;;;20699:16;;;;;;;;;;;20717:7;20671:54;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20760:7;20739:29;;;;;;;;;;20299:478:::0;;:::o;11530:78::-;;;;;;;;;;;;;:::o;3136:127::-;3210:7;3237:9;:18;3247:7;3237:18;;;;;;;;;;;;;;;;3230:25;;3136:127;;;:::o;9879:94::-;9802:12;:10;:12::i;:::-;9791:23;;:7;:5;:7::i;:::-;:23;;;9783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9944:21:::1;9962:1;9944:9;:21::i;:::-;9879:94::o:0;11476:47::-;;;;:::o;11700:79::-;11737:42;11700:79;:::o;19595:218::-;9802:12;:10;:12::i;:::-;9791:23;;:7;:5;:7::i;:::-;:23;;;9783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19659:14:::1;;;;;;;;;;;19658:15;19650:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;19730:4;19713:14;;:21;;;;;;;;;;;;;;;;;;19766:4;19745:18;;:25;;;;;;;;;;;;;;;;;;19785:20;;;;;;;;;;19595:218::o:0;9656:87::-;9702:7;9729:6;;;;;;;;;;;9722:13;;9656:87;:::o;2064:104::-;2120:13;2153:7;2146:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2064:104;:::o;14103:410::-;14224:4;14246:24;14273:11;:25;14285:12;:10;:12::i;:::-;14273:25;;;;;;;;;;;;;;;:34;14299:7;14273:34;;;;;;;;;;;;;;;;14246:61;;14346:15;14326:16;:35;;14318:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;14414:67;14423:12;:10;:12::i;:::-;14437:7;14465:15;14446:16;:34;;;;:::i;:::-;14414:8;:67::i;:::-;14501:4;14494:11;;;14103:410;;;;:::o;14521:165::-;14599:4;14616:40;14626:10;14638:9;14649:6;14616:9;:40::i;:::-;14674:4;14667:11;;14521:165;;;;:::o;18667:350::-;9802:12;:10;:12::i;:::-;9791:23;;:7;:5;:7::i;:::-;:23;;;9783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18762:10:::1;18748;:24;;18740:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;18872:9;18858:10;:23;;18850:108;;;;;;;;;;;;:::i;:::-;;;;;;;;;18999:10;:8;:10::i;:::-;18995:2;:14;;;;:::i;:::-;18982:10;:27;;;;:::i;:::-;18969:10;:40;;;;18667:350:::0;:::o;11998:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;20788:387::-;20842:26;20871:21;20842:50;;20932:1;20911:18;:22;20903:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;21013:21;20991:18;:43;;20983:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;21085:16;;;;;;;;;;;21069:43;;:63;21113:18;21069:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21146:21;;;;;;;;;;20831:344;20788:387::o;3755:201::-;3889:7;3921:11;:18;3933:5;3921:18;;;;;;;;;;;;;;;:27;3940:7;3921:27;;;;;;;;;;;;;;;;3914:34;;3755:201;;;;:::o;9981:192::-;9802:12;:10;:12::i;:::-;9791:23;;:7;:5;:7::i;:::-;:23;;;9783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10090:1:::1;10070:22;;:8;:22;;::::0;10062:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10146:19;10156:8;10146:9;:19::i;:::-;9981:192:::0;:::o;11951:39::-;;;;;;;;;;;;;;;;;;;:::o;20061:231::-;9802:12;:10;:12::i;:::-;9791:23;;:7;:5;:7::i;:::-;:23;;;9783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20164:5:::1;20141:28;;:9;:19;20151:8;20141:19;;;;;;;;;;;;;;;;;;;;;;;;;:28;;::::0;20133:67:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20233:5;20211:9;:19;20221:8;20211:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;20275:8;20253:31;;;;;;;;;;;;20061:231:::0;:::o;94:98::-;147:7;174:10;167:17;;94:98;:::o;8685:388::-;8838:1;8821:19;;:5;:19;;;8813:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8919:1;8900:21;;:7;:21;;;8892:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9001:6;8971:11;:18;8983:5;8971:18;;;;;;;;;;;;;;;:27;8990:7;8971:27;;;;;;;;;;;;;;;:36;;;;9049:7;9033:32;;9042:5;9033:32;;;9058:6;9033:32;;;;;;:::i;:::-;;;;;;;;8685:388;;;:::o;14694:1493::-;14810:1;14801:6;:10;14793:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14875:9;:17;14885:6;14875:17;;;;;;;;;;;;;;;;;;;;;;;;;14874:18;:43;;;;;14897:9;:20;14907:9;14897:20;;;;;;;;;;;;;;;;;;;;;;;;;14896:21;14874:43;14870:122;;;14942:14;;;;;;;;;;;14934:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;14870:122;15004:15;15030:14;15055:11;15077:25;;:::i;:::-;15119:10;;;;;;;;;;;:31;;;;15133:9;:17;15143:6;15133:17;;;;;;;;;;;;;;;;;;;;;;;;;15119:31;:55;;;;15154:9;:20;15164:9;15154:20;;;;;;;;;;;;;;;;;;;;;;;;;15119:55;15115:491;;;15195:1;15189:7;;15115:491;;;15231:4;;;;;;;;;;;15218:17;;:9;:17;;;15214:392;;15307:9;:20;;;15284:9;:20;;;15262:9;:19;;;:42;;;;:::i;:::-;:65;;;;:::i;:::-;15252:75;;15351:7;15342:16;;15388:9;15373:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15214:392;;;15432:4;;;;;;;;;;;15419:17;;:9;:17;;;15415:191;;15506:8;:19;;;15484:8;:19;;;15463:8;:18;;;:40;;;;:::i;:::-;:62;;;;:::i;:::-;15453:72;;15549:7;15540:16;;15586:8;15571:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15415:191;15214:392;15115:491;15644:3;15634:6;15625;:15;;;;:::i;:::-;15624:23;;;;:::i;:::-;15618:29;;15761:18;;;;;;;;;;;:36;;;;;15793:4;;;;;;;;;;;15783:14;;:6;:14;;;;15761:36;15757:72;;;15799:30;15807:7;15816:12;15799:7;:30::i;:::-;15757:72;15871:48;15887:6;15895:9;15915:3;15906:6;:12;;;;:::i;:::-;15871:15;:48::i;:::-;15940:1;15934:3;:7;15930:250;;;16016:1;16006:7;:11;16002:165;;;16038:17;16079:3;16068:7;16059:6;:16;;;;:::i;:::-;16058:24;;;;:::i;:::-;16038:44;;16102:49;16118:6;16134:4;16141:9;16102:15;:49::i;:::-;16019:148;16002:165;15930:250;14782:1405;;;;14694:1493;;;:::o;10181:173::-;10237:16;10256:6;;;;;;;;;;;10237:25;;10282:8;10273:6;;:17;;;;;;;;;;;;;;;;;;10337:8;10306:40;;10327:8;10306:40;;;;;;;;;;;;10226:128;10181:173;:::o;16195:1492::-;12345:10;;;;;;;;;;;12340:110;;12385:4;12372:10;;:17;;;;;;;;;;;;;;;;;;16298:1:::1;16287:7;:12:::0;16284:49;16315:7:::1;16284:49;16345:23;16371:24;16389:4;16371:9;:24::i;:::-;16345:50;;16429:10;;16410:15;:29;16406:1274;;16473:1;16460:10;;:14;16456:83;;;16513:10;;16495:28;;16456:83;16555:19;16587:1;16577:7;:11;;;;:::i;:::-;16555:33;;16603:32;16680:11;16657:9;:19;;;16639:15;:37;;;;:::i;:::-;16638:53;;;;:::i;:::-;16603:88;;16706:14;16741:24;16723:15;:42;;;;:::i;:::-;16706:59;;16780:22;16805:21;16780:46;;16841:24;16858:6;16841:16;:24::i;:::-;16880:20;16927:14;16903:21;:38;;;;:::i;:::-;16880:61;;16956:19;17008:9;:19;;;16994:11;:33;;;;:::i;:::-;16978:12;:50;;;;:::i;:::-;16956:72;;17043:29;17089:9;:19;;;17075:11;:33;;;;:::i;:::-;17043:65;;17153:1;17129:21;:25;17125:127;;;17175:61;17188:24;17214:21;17175:12;:61::i;:::-;17125:127;17268:21;17310:9;:20;;;17306:1;17292:11;:15;;;;:::i;:::-;:38;;;;:::i;:::-;17268:62;;17365:1;17349:13;:17;17345:108;;;17387:50;17423:13;17395:16;;;;;;;;;;;17387:35;;;;:50;;;;:::i;:::-;17345:108;17481:21;17523:9;:20;;;17519:1;17505:11;:15;;;;:::i;:::-;:38;;;;:::i;:::-;17481:62;;17579:1;17563:13;:17;17559:108;;;17601:50;17637:13;17609:16;;;;;;;;;;;17601:35;;;;:50;;;;:::i;:::-;17559:108;16441:1239;;;;;;;;;16406:1274;16273:1414;12404:1;12433:5:::0;12420:10;;:18;;;;;;;;;;;;;;;;;;12340:110;16195:1492;;:::o;7266:576::-;7424:1;7406:20;;:6;:20;;;7398:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7508:1;7487:23;;:9;:23;;;7479:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7561:21;7585:9;:17;7595:6;7585:17;;;;;;;;;;;;;;;;7561:41;;7638:6;7621:13;:23;;7613:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;7734:6;7718:13;:22;;;;:::i;:::-;7698:9;:17;7708:6;7698:17;;;;;;;;;;;;;;;:42;;;;7775:6;7751:9;:20;7761:9;7751:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;7816:9;7799:35;;7808:6;7799:35;;;7827:6;7799:35;;;;;;:::i;:::-;;;;;;;;7387:455;7266:576;;;:::o;17695:444::-;17761:21;17799:1;17785:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17761:40;;17830:4;17812;17817:1;17812:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;17856:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17846:4;17851:1;17846:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;17880:53;17897:4;17912:6;;;;;;;;;;;17921:11;17880:8;:53::i;:::-;17944:6;;;;;;;;;;;:57;;;18016:11;18042:1;18058:4;18085;18105:15;17944:187;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17750:389;17695:444;:::o;18147:401::-;18228:53;18245:4;18260:6;;;;;;;;;;;18269:11;18228:8;:53::i;:::-;18292:6;;;;;;;;;;;:22;;;18323:9;18357:4;18377:11;18403:1;18446;11737:42;18514:15;18292:248;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18147:401;;:::o;9103:317::-;9218:6;9193:21;:31;;9185:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;9270:12;9288:9;:14;;9311:6;9288:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9269:54;;;9342:7;9334:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;9174:246;9103:317;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::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:77;1713:7;1742:5;1731:16;;1676:77;;;:::o;1759:122::-;1832:24;1850:5;1832:24;:::i;:::-;1825:5;1822:35;1812:63;;1871:1;1868;1861:12;1812:63;1759:122;:::o;1887:139::-;1933:5;1971:6;1958:20;1949:29;;1987:33;2014:5;1987:33;:::i;:::-;1887:139;;;;:::o;2032:619::-;2109:6;2117;2125;2174:2;2162:9;2153:7;2149:23;2145:32;2142:119;;;2180:79;;:::i;:::-;2142:119;2300:1;2325:53;2370:7;2361:6;2350:9;2346:22;2325:53;:::i;:::-;2315:63;;2271:117;2427:2;2453:53;2498:7;2489:6;2478:9;2474:22;2453:53;:::i;:::-;2443:63;;2398:118;2555:2;2581:53;2626:7;2617:6;2606:9;2602:22;2581:53;:::i;:::-;2571:63;;2526:118;2032:619;;;;;:::o;2657:126::-;2694:7;2734:42;2727:5;2723:54;2712:65;;2657:126;;;:::o;2789:96::-;2826:7;2855:24;2873:5;2855:24;:::i;:::-;2844:35;;2789:96;;;:::o;2891:122::-;2964:24;2982:5;2964:24;:::i;:::-;2957:5;2954:35;2944:63;;3003:1;3000;2993:12;2944:63;2891:122;:::o;3019:139::-;3065:5;3103:6;3090:20;3081:29;;3119:33;3146:5;3119:33;:::i;:::-;3019:139;;;;:::o;3164:474::-;3232:6;3240;3289:2;3277:9;3268:7;3264:23;3260:32;3257:119;;;3295:79;;:::i;:::-;3257:119;3415:1;3440:53;3485:7;3476:6;3465:9;3461:22;3440:53;:::i;:::-;3430:63;;3386:117;3542:2;3568:53;3613:7;3604:6;3593:9;3589:22;3568:53;:::i;:::-;3558:63;;3513:118;3164:474;;;;;:::o;3644:90::-;3678:7;3721:5;3714:13;3707:21;3696:32;;3644:90;;;:::o;3740:109::-;3821:21;3836:5;3821:21;:::i;:::-;3816:3;3809:34;3740:109;;:::o;3855:210::-;3942:4;3980:2;3969:9;3965:18;3957:26;;3993:65;4055:1;4044:9;4040:17;4031:6;3993:65;:::i;:::-;3855:210;;;;:::o;4071:118::-;4158:24;4176:5;4158:24;:::i;:::-;4153:3;4146:37;4071:118;;:::o;4195:442::-;4344:4;4382:2;4371:9;4367:18;4359:26;;4395:71;4463:1;4452:9;4448:17;4439:6;4395:71;:::i;:::-;4476:72;4544:2;4533:9;4529:18;4520:6;4476:72;:::i;:::-;4558;4626:2;4615:9;4611:18;4602:6;4558:72;:::i;:::-;4195:442;;;;;;:::o;4643:118::-;4730:24;4748:5;4730:24;:::i;:::-;4725:3;4718:37;4643:118;;:::o;4767:222::-;4860:4;4898:2;4887:9;4883:18;4875:26;;4911:71;4979:1;4968:9;4964:17;4955:6;4911:71;:::i;:::-;4767:222;;;;:::o;4995:::-;5088:4;5126:2;5115:9;5111:18;5103:26;;5139:71;5207:1;5196:9;5192:17;5183:6;5139:71;:::i;:::-;4995:222;;;;:::o;5223:619::-;5300:6;5308;5316;5365:2;5353:9;5344:7;5340:23;5336:32;5333:119;;;5371:79;;:::i;:::-;5333:119;5491:1;5516:53;5561:7;5552:6;5541:9;5537:22;5516:53;:::i;:::-;5506:63;;5462:117;5618:2;5644:53;5689:7;5680:6;5669:9;5665:22;5644:53;:::i;:::-;5634:63;;5589:118;5746:2;5772:53;5817:7;5808:6;5797:9;5793:22;5772:53;:::i;:::-;5762:63;;5717:118;5223:619;;;;;:::o;5848:86::-;5883:7;5923:4;5916:5;5912:16;5901:27;;5848:86;;;:::o;5940:112::-;6023:22;6039:5;6023:22;:::i;:::-;6018:3;6011:35;5940:112;;:::o;6058:214::-;6147:4;6185:2;6174:9;6170:18;6162:26;;6198:67;6262:1;6251:9;6247:17;6238:6;6198:67;:::i;:::-;6058:214;;;;:::o;6278:329::-;6337:6;6386:2;6374:9;6365:7;6361:23;6357:32;6354:119;;;6392:79;;:::i;:::-;6354:119;6512:1;6537:53;6582:7;6573:6;6562:9;6558:22;6537:53;:::i;:::-;6527:63;;6483:117;6278:329;;;;:::o;6613:116::-;6683:21;6698:5;6683:21;:::i;:::-;6676:5;6673:32;6663:60;;6719:1;6716;6709:12;6663:60;6613:116;:::o;6735:133::-;6778:5;6816:6;6803:20;6794:29;;6832:30;6856:5;6832:30;:::i;:::-;6735:133;;;;:::o;6874:323::-;6930:6;6979:2;6967:9;6958:7;6954:23;6950:32;6947:119;;;6985:79;;:::i;:::-;6947:119;7105:1;7130:50;7172:7;7163:6;7152:9;7148:22;7130:50;:::i;:::-;7120:60;;7076:114;6874:323;;;;:::o;7203:329::-;7262:6;7311:2;7299:9;7290:7;7286:23;7282:32;7279:119;;;7317:79;;:::i;:::-;7279:119;7437:1;7462:53;7507:7;7498:6;7487:9;7483:22;7462:53;:::i;:::-;7452:63;;7408:117;7203:329;;;;:::o;7538:474::-;7606:6;7614;7663:2;7651:9;7642:7;7638:23;7634:32;7631:119;;;7669:79;;:::i;:::-;7631:119;7789:1;7814:53;7859:7;7850:6;7839:9;7835:22;7814:53;:::i;:::-;7804:63;;7760:117;7916:2;7942:53;7987:7;7978:6;7967:9;7963:22;7942:53;:::i;:::-;7932:63;;7887:118;7538:474;;;;;:::o;8018:180::-;8066:77;8063:1;8056:88;8163:4;8160:1;8153:15;8187:4;8184:1;8177:15;8204:320;8248:6;8285:1;8279:4;8275:12;8265:22;;8332:1;8326:4;8322:12;8353:18;8343:81;;8409:4;8401:6;8397:17;8387:27;;8343:81;8471:2;8463:6;8460:14;8440:18;8437:38;8434:84;;8490:18;;:::i;:::-;8434:84;8255:269;8204:320;;;:::o;8530:182::-;8670:34;8666:1;8658:6;8654:14;8647:58;8530:182;:::o;8718:366::-;8860:3;8881:67;8945:2;8940:3;8881:67;:::i;:::-;8874:74;;8957:93;9046:3;8957:93;:::i;:::-;9075:2;9070:3;9066:12;9059:19;;8718:366;;;:::o;9090:419::-;9256:4;9294:2;9283:9;9279:18;9271:26;;9343:9;9337:4;9333:20;9329:1;9318:9;9314:17;9307:47;9371:131;9497:4;9371:131;:::i;:::-;9363:139;;9090:419;;;:::o;9515:180::-;9563:77;9560:1;9553:88;9660:4;9657:1;9650:15;9684:4;9681:1;9674:15;9701:191;9741:3;9760:20;9778:1;9760:20;:::i;:::-;9755:25;;9794:20;9812:1;9794:20;:::i;:::-;9789:25;;9837:1;9834;9830:9;9823:16;;9858:3;9855:1;9852:10;9849:36;;;9865:18;;:::i;:::-;9849:36;9701:191;;;;:::o;9898:179::-;10038:31;10034:1;10026:6;10022:14;10015:55;9898:179;:::o;10083:366::-;10225:3;10246:67;10310:2;10305:3;10246:67;:::i;:::-;10239:74;;10322:93;10411:3;10322:93;:::i;:::-;10440:2;10435:3;10431:12;10424:19;;10083:366;;;:::o;10455:419::-;10621:4;10659:2;10648:9;10644:18;10636:26;;10708:9;10702:4;10698:20;10694:1;10683:9;10679:17;10672:47;10736:131;10862:4;10736:131;:::i;:::-;10728:139;;10455:419;;;:::o;10880:227::-;11020:34;11016:1;11008:6;11004:14;10997:58;11089:10;11084:2;11076:6;11072:15;11065:35;10880:227;:::o;11113:366::-;11255:3;11276:67;11340:2;11335:3;11276:67;:::i;:::-;11269:74;;11352:93;11441:3;11352:93;:::i;:::-;11470:2;11465:3;11461:12;11454:19;;11113:366;;;:::o;11485:419::-;11651:4;11689:2;11678:9;11674:18;11666:26;;11738:9;11732:4;11728:20;11724:1;11713:9;11709:17;11702:47;11766:131;11892:4;11766:131;:::i;:::-;11758:139;;11485:419;;;:::o;11910:194::-;11950:4;11970:20;11988:1;11970:20;:::i;:::-;11965:25;;12004:20;12022:1;12004:20;:::i;:::-;11999:25;;12048:1;12045;12041:9;12033:17;;12072:1;12066:4;12063:11;12060:37;;;12077:18;;:::i;:::-;12060:37;11910:194;;;;:::o;12110:177::-;12250:29;12246:1;12238:6;12234:14;12227:53;12110:177;:::o;12293:366::-;12435:3;12456:67;12520:2;12515:3;12456:67;:::i;:::-;12449:74;;12532:93;12621:3;12532:93;:::i;:::-;12650:2;12645:3;12641:12;12634:19;;12293:366;;;:::o;12665:419::-;12831:4;12869:2;12858:9;12854:18;12846:26;;12918:9;12912:4;12908:20;12904:1;12893:9;12889:17;12882:47;12946:131;13072:4;12946:131;:::i;:::-;12938:139;;12665:419;;;:::o;13090:241::-;13230:34;13226:1;13218:6;13214:14;13207:58;13299:24;13294:2;13286:6;13282:15;13275:49;13090:241;:::o;13337:366::-;13479:3;13500:67;13564:2;13559:3;13500:67;:::i;:::-;13493:74;;13576:93;13665:3;13576:93;:::i;:::-;13694:2;13689:3;13685:12;13678:19;;13337:366;;;:::o;13709:419::-;13875:4;13913:2;13902:9;13898:18;13890:26;;13962:9;13956:4;13952:20;13948:1;13937:9;13933:17;13926:47;13990:131;14116:4;13990:131;:::i;:::-;13982:139;;13709:419;;;:::o;14134:221::-;14274:34;14270:1;14262:6;14258:14;14251:58;14343:4;14338:2;14330:6;14326:15;14319:29;14134:221;:::o;14361:366::-;14503:3;14524:67;14588:2;14583:3;14524:67;:::i;:::-;14517:74;;14600:93;14689:3;14600:93;:::i;:::-;14718:2;14713:3;14709:12;14702:19;;14361:366;;;:::o;14733:419::-;14899:4;14937:2;14926:9;14922:18;14914:26;;14986:9;14980:4;14976:20;14972:1;14961:9;14957:17;14950:47;15014:131;15140:4;15014:131;:::i;:::-;15006:139;;14733:419;;;:::o;15158:143::-;15215:5;15246:6;15240:13;15231:22;;15262:33;15289:5;15262:33;:::i;:::-;15158:143;;;;:::o;15307:351::-;15377:6;15426:2;15414:9;15405:7;15401:23;15397:32;15394:119;;;15432:79;;:::i;:::-;15394:119;15552:1;15577:64;15633:7;15624:6;15613:9;15609:22;15577:64;:::i;:::-;15567:74;;15523:128;15307:351;;;;:::o;15664:169::-;15804:21;15800:1;15792:6;15788:14;15781:45;15664:169;:::o;15839:366::-;15981:3;16002:67;16066:2;16061:3;16002:67;:::i;:::-;15995:74;;16078:93;16167:3;16078:93;:::i;:::-;16196:2;16191:3;16187:12;16180:19;;15839:366;;;:::o;16211:419::-;16377:4;16415:2;16404:9;16400:18;16392:26;;16464:9;16458:4;16454:20;16450:1;16439:9;16435:17;16428:47;16492:131;16618:4;16492:131;:::i;:::-;16484:139;;16211:419;;;:::o;16636:332::-;16757:4;16795:2;16784:9;16780:18;16772:26;;16808:71;16876:1;16865:9;16861:17;16852:6;16808:71;:::i;:::-;16889:72;16957:2;16946:9;16942:18;16933:6;16889:72;:::i;:::-;16636:332;;;;;:::o;16974:137::-;17028:5;17059:6;17053:13;17044:22;;17075:30;17099:5;17075:30;:::i;:::-;16974:137;;;;:::o;17117:345::-;17184:6;17233:2;17221:9;17212:7;17208:23;17204:32;17201:119;;;17239:79;;:::i;:::-;17201:119;17359:1;17384:61;17437:7;17428:6;17417:9;17413:22;17384:61;:::i;:::-;17374:71;;17330:125;17117:345;;;;:::o;17468:174::-;17608:26;17604:1;17596:6;17592:14;17585:50;17468:174;:::o;17648:366::-;17790:3;17811:67;17875:2;17870:3;17811:67;:::i;:::-;17804:74;;17887:93;17976:3;17887:93;:::i;:::-;18005:2;18000:3;17996:12;17989:19;;17648:366;;;:::o;18020:419::-;18186:4;18224:2;18213:9;18209:18;18201:26;;18273:9;18267:4;18263:20;18259:1;18248:9;18244:17;18237:47;18301:131;18427:4;18301:131;:::i;:::-;18293:139;;18020:419;;;:::o;18445:224::-;18585:34;18581:1;18573:6;18569:14;18562:58;18654:7;18649:2;18641:6;18637:15;18630:32;18445:224;:::o;18675:366::-;18817:3;18838:67;18902:2;18897:3;18838:67;:::i;:::-;18831:74;;18914:93;19003:3;18914:93;:::i;:::-;19032:2;19027:3;19023:12;19016:19;;18675:366;;;:::o;19047:419::-;19213:4;19251:2;19240:9;19236:18;19228:26;;19300:9;19294:4;19290:20;19286:1;19275:9;19271:17;19264:47;19328:131;19454:4;19328:131;:::i;:::-;19320:139;;19047:419;;;:::o;19472:249::-;19612:34;19608:1;19600:6;19596:14;19589:58;19681:32;19676:2;19668:6;19664:15;19657:57;19472:249;:::o;19727:366::-;19869:3;19890:67;19954:2;19949:3;19890:67;:::i;:::-;19883:74;;19966:93;20055:3;19966:93;:::i;:::-;20084:2;20079:3;20075:12;20068:19;;19727:366;;;:::o;20099:419::-;20265:4;20303:2;20292:9;20288:18;20280:26;;20352:9;20346:4;20342:20;20338:1;20327:9;20323:17;20316:47;20380:131;20506:4;20380:131;:::i;:::-;20372:139;;20099:419;;;:::o;20524:295::-;20664:34;20660:1;20652:6;20648:14;20641:58;20733:34;20728:2;20720:6;20716:15;20709:59;20802:9;20797:2;20789:6;20785:15;20778:34;20524:295;:::o;20825:366::-;20967:3;20988:67;21052:2;21047:3;20988:67;:::i;:::-;20981:74;;21064:93;21153:3;21064:93;:::i;:::-;21182:2;21177:3;21173:12;21166:19;;20825:366;;;:::o;21197:419::-;21363:4;21401:2;21390:9;21386:18;21378:26;;21450:9;21444:4;21440:20;21436:1;21425:9;21421:17;21414:47;21478:131;21604:4;21478:131;:::i;:::-;21470:139;;21197:419;;;:::o;21622:102::-;21664:8;21711:5;21708:1;21704:13;21683:34;;21622:102;;;:::o;21730:848::-;21791:5;21798:4;21822:6;21813:15;;21846:5;21837:14;;21860:712;21881:1;21871:8;21868:15;21860:712;;;21976:4;21971:3;21967:14;21961:4;21958:24;21955:50;;;21985:18;;:::i;:::-;21955:50;22035:1;22025:8;22021:16;22018:451;;;22450:4;22443:5;22439:16;22430:25;;22018:451;22500:4;22494;22490:15;22482:23;;22530:32;22553:8;22530:32;:::i;:::-;22518:44;;21860:712;;;21730:848;;;;;;;:::o;22584:1073::-;22638:5;22829:8;22819:40;;22850:1;22841:10;;22852:5;;22819:40;22878:4;22868:36;;22895:1;22886:10;;22897:5;;22868:36;22964:4;23012:1;23007:27;;;;23048:1;23043:191;;;;22957:277;;23007:27;23025:1;23016:10;;23027:5;;;23043:191;23088:3;23078:8;23075:17;23072:43;;;23095:18;;:::i;:::-;23072:43;23144:8;23141:1;23137:16;23128:25;;23179:3;23172:5;23169:14;23166:40;;;23186:18;;:::i;:::-;23166:40;23219:5;;;22957:277;;23343:2;23333:8;23330:16;23324:3;23318:4;23315:13;23311:36;23293:2;23283:8;23280:16;23275:2;23269:4;23266:12;23262:35;23246:111;23243:246;;;23399:8;23393:4;23389:19;23380:28;;23434:3;23427:5;23424:14;23421:40;;;23441:18;;:::i;:::-;23421:40;23474:5;;23243:246;23514:42;23552:3;23542:8;23536:4;23533:1;23514:42;:::i;:::-;23499:57;;;;23588:4;23583:3;23579:14;23572:5;23569:25;23566:51;;;23597:18;;:::i;:::-;23566:51;23646:4;23639:5;23635:16;23626:25;;22584:1073;;;;;;:::o;23663:281::-;23721:5;23745:23;23763:4;23745:23;:::i;:::-;23737:31;;23789:25;23805:8;23789:25;:::i;:::-;23777:37;;23833:104;23870:66;23860:8;23854:4;23833:104;:::i;:::-;23824:113;;23663:281;;;;:::o;23950:410::-;23990:7;24013:20;24031:1;24013:20;:::i;:::-;24008:25;;24047:20;24065:1;24047:20;:::i;:::-;24042:25;;24102:1;24099;24095:9;24124:30;24142:11;24124:30;:::i;:::-;24113:41;;24303:1;24294:7;24290:15;24287:1;24284:22;24264:1;24257:9;24237:83;24214:139;;24333:18;;:::i;:::-;24214:139;23998:362;23950:410;;;;:::o;24366:225::-;24506:34;24502:1;24494:6;24490:14;24483:58;24575:8;24570:2;24562:6;24558:15;24551:33;24366:225;:::o;24597:366::-;24739:3;24760:67;24824:2;24819:3;24760:67;:::i;:::-;24753:74;;24836:93;24925:3;24836:93;:::i;:::-;24954:2;24949:3;24945:12;24938:19;;24597:366;;;:::o;24969:419::-;25135:4;25173:2;25162:9;25158:18;25150:26;;25222:9;25216:4;25212:20;25208:1;25197:9;25193:17;25186:47;25250:131;25376:4;25250:131;:::i;:::-;25242:139;;24969:419;;;:::o;25394:223::-;25534:34;25530:1;25522:6;25518:14;25511:58;25603:6;25598:2;25590:6;25586:15;25579:31;25394:223;:::o;25623:366::-;25765:3;25786:67;25850:2;25845:3;25786:67;:::i;:::-;25779:74;;25862:93;25951:3;25862:93;:::i;:::-;25980:2;25975:3;25971:12;25964:19;;25623:366;;;:::o;25995:419::-;26161:4;26199:2;26188:9;26184:18;26176:26;;26248:9;26242:4;26238:20;26234:1;26223:9;26219:17;26212:47;26276:131;26402:4;26276:131;:::i;:::-;26268:139;;25995:419;;;:::o;26420:221::-;26560:34;26556:1;26548:6;26544:14;26537:58;26629:4;26624:2;26616:6;26612:15;26605:29;26420:221;:::o;26647:366::-;26789:3;26810:67;26874:2;26869:3;26810:67;:::i;:::-;26803:74;;26886:93;26975:3;26886:93;:::i;:::-;27004:2;26999:3;26995:12;26988:19;;26647:366;;;:::o;27019:419::-;27185:4;27223:2;27212:9;27208:18;27200:26;;27272:9;27266:4;27262:20;27258:1;27247:9;27243:17;27236:47;27300:131;27426:4;27300:131;:::i;:::-;27292:139;;27019:419;;;:::o;27444:228::-;27584:34;27580:1;27572:6;27568:14;27561:58;27653:11;27648:2;27640:6;27636:15;27629:36;27444:228;:::o;27678:366::-;27820:3;27841:67;27905:2;27900:3;27841:67;:::i;:::-;27834:74;;27917:93;28006:3;27917:93;:::i;:::-;28035:2;28030:3;28026:12;28019:19;;27678:366;;;:::o;28050:419::-;28216:4;28254:2;28243:9;28239:18;28231:26;;28303:9;28297:4;28293:20;28289:1;28278:9;28274:17;28267:47;28331:131;28457:4;28331:131;:::i;:::-;28323:139;;28050:419;;;:::o;28475:169::-;28615:21;28611:1;28603:6;28599:14;28592:45;28475:169;:::o;28650:366::-;28792:3;28813:67;28877:2;28872:3;28813:67;:::i;:::-;28806:74;;28889:93;28978:3;28889:93;:::i;:::-;29007:2;29002:3;28998:12;28991:19;;28650:366;;;:::o;29022:419::-;29188:4;29226:2;29215:9;29211:18;29203:26;;29275:9;29269:4;29265:20;29261:1;29250:9;29246:17;29239:47;29303:131;29429:4;29303:131;:::i;:::-;29295:139;;29022:419;;;:::o;29447:180::-;29495:77;29492:1;29485:88;29592:4;29589:1;29582:15;29616:4;29613:1;29606:15;29633:185;29673:1;29690:20;29708:1;29690:20;:::i;:::-;29685:25;;29724:20;29742:1;29724:20;:::i;:::-;29719:25;;29763:1;29753:35;;29768:18;;:::i;:::-;29753:35;29810:1;29807;29803:9;29798:14;;29633:185;;;;:::o;29824:224::-;29964:34;29960:1;29952:6;29948:14;29941:58;30033:7;30028:2;30020:6;30016:15;30009:32;29824:224;:::o;30054:366::-;30196:3;30217:67;30281:2;30276:3;30217:67;:::i;:::-;30210:74;;30293:93;30382:3;30293:93;:::i;:::-;30411:2;30406:3;30402:12;30395:19;;30054:366;;;:::o;30426:419::-;30592:4;30630:2;30619:9;30615:18;30607:26;;30679:9;30673:4;30669:20;30665:1;30654:9;30650:17;30643:47;30707:131;30833:4;30707:131;:::i;:::-;30699:139;;30426:419;;;:::o;30851:222::-;30991:34;30987:1;30979:6;30975:14;30968:58;31060:5;31055:2;31047:6;31043:15;31036:30;30851:222;:::o;31079:366::-;31221:3;31242:67;31306:2;31301:3;31242:67;:::i;:::-;31235:74;;31318:93;31407:3;31318:93;:::i;:::-;31436:2;31431:3;31427:12;31420:19;;31079:366;;;:::o;31451:419::-;31617:4;31655:2;31644:9;31640:18;31632:26;;31704:9;31698:4;31694:20;31690:1;31679:9;31675:17;31668:47;31732:131;31858:4;31732:131;:::i;:::-;31724:139;;31451:419;;;:::o;31876:225::-;32016:34;32012:1;32004:6;32000:14;31993:58;32085:8;32080:2;32072:6;32068:15;32061:33;31876:225;:::o;32107:366::-;32249:3;32270:67;32334:2;32329:3;32270:67;:::i;:::-;32263:74;;32346:93;32435:3;32346:93;:::i;:::-;32464:2;32459:3;32455:12;32448:19;;32107:366;;;:::o;32479:419::-;32645:4;32683:2;32672:9;32668:18;32660:26;;32732:9;32726:4;32722:20;32718:1;32707:9;32703:17;32696:47;32760:131;32886:4;32760:131;:::i;:::-;32752:139;;32479:419;;;:::o;32904:180::-;32952:77;32949:1;32942:88;33049:4;33046:1;33039:15;33073:4;33070:1;33063:15;33090:180;33138:77;33135:1;33128:88;33235:4;33232:1;33225:15;33259:4;33256:1;33249:15;33276:143;33333:5;33364:6;33358:13;33349:22;;33380:33;33407:5;33380:33;:::i;:::-;33276:143;;;;:::o;33425:351::-;33495:6;33544:2;33532:9;33523:7;33519:23;33515:32;33512:119;;;33550:79;;:::i;:::-;33512:119;33670:1;33695:64;33751:7;33742:6;33731:9;33727:22;33695:64;:::i;:::-;33685:74;;33641:128;33425:351;;;;:::o;33782:85::-;33827:7;33856:5;33845:16;;33782:85;;;:::o;33873:60::-;33901:3;33922:5;33915:12;;33873:60;;;:::o;33939:158::-;33997:9;34030:61;34048:42;34057:32;34083:5;34057:32;:::i;:::-;34048:42;:::i;:::-;34030:61;:::i;:::-;34017:74;;33939:158;;;:::o;34103:147::-;34198:45;34237:5;34198:45;:::i;:::-;34193:3;34186:58;34103:147;;:::o;34256:114::-;34323:6;34357:5;34351:12;34341:22;;34256:114;;;:::o;34376:184::-;34475:11;34509:6;34504:3;34497:19;34549:4;34544:3;34540:14;34525:29;;34376:184;;;;:::o;34566:132::-;34633:4;34656:3;34648:11;;34686:4;34681:3;34677:14;34669:22;;34566:132;;;:::o;34704:108::-;34781:24;34799:5;34781:24;:::i;:::-;34776:3;34769:37;34704:108;;:::o;34818:179::-;34887:10;34908:46;34950:3;34942:6;34908:46;:::i;:::-;34986:4;34981:3;34977:14;34963:28;;34818:179;;;;:::o;35003:113::-;35073:4;35105;35100:3;35096:14;35088:22;;35003:113;;;:::o;35152:732::-;35271:3;35300:54;35348:5;35300:54;:::i;:::-;35370:86;35449:6;35444:3;35370:86;:::i;:::-;35363:93;;35480:56;35530:5;35480:56;:::i;:::-;35559:7;35590:1;35575:284;35600:6;35597:1;35594:13;35575:284;;;35676:6;35670:13;35703:63;35762:3;35747:13;35703:63;:::i;:::-;35696:70;;35789:60;35842:6;35789:60;:::i;:::-;35779:70;;35635:224;35622:1;35619;35615:9;35610:14;;35575:284;;;35579:14;35875:3;35868:10;;35276:608;;;35152:732;;;;:::o;35890:831::-;36153:4;36191:3;36180:9;36176:19;36168:27;;36205:71;36273:1;36262:9;36258:17;36249:6;36205:71;:::i;:::-;36286:80;36362:2;36351:9;36347:18;36338:6;36286:80;:::i;:::-;36413:9;36407:4;36403:20;36398:2;36387:9;36383:18;36376:48;36441:108;36544:4;36535:6;36441:108;:::i;:::-;36433:116;;36559:72;36627:2;36616:9;36612:18;36603:6;36559:72;:::i;:::-;36641:73;36709:3;36698:9;36694:19;36685:6;36641:73;:::i;:::-;35890:831;;;;;;;;:::o;36727:807::-;36976:4;37014:3;37003:9;36999:19;36991:27;;37028:71;37096:1;37085:9;37081:17;37072:6;37028:71;:::i;:::-;37109:72;37177:2;37166:9;37162:18;37153:6;37109:72;:::i;:::-;37191:80;37267:2;37256:9;37252:18;37243:6;37191:80;:::i;:::-;37281;37357:2;37346:9;37342:18;37333:6;37281:80;:::i;:::-;37371:73;37439:3;37428:9;37424:19;37415:6;37371:73;:::i;:::-;37454;37522:3;37511:9;37507:19;37498:6;37454:73;:::i;:::-;36727:807;;;;;;;;;:::o;37540:663::-;37628:6;37636;37644;37693:2;37681:9;37672:7;37668:23;37664:32;37661:119;;;37699:79;;:::i;:::-;37661:119;37819:1;37844:64;37900:7;37891:6;37880:9;37876:22;37844:64;:::i;:::-;37834:74;;37790:128;37957:2;37983:64;38039:7;38030:6;38019:9;38015:22;37983:64;:::i;:::-;37973:74;;37928:129;38096:2;38122:64;38178:7;38169:6;38158:9;38154:22;38122:64;:::i;:::-;38112:74;;38067:129;37540:663;;;;;:::o;38209:179::-;38349:31;38345:1;38337:6;38333:14;38326:55;38209:179;:::o;38394:366::-;38536:3;38557:67;38621:2;38616:3;38557:67;:::i;:::-;38550:74;;38633:93;38722:3;38633:93;:::i;:::-;38751:2;38746:3;38742:12;38735:19;;38394:366;;;:::o;38766:419::-;38932:4;38970:2;38959:9;38955:18;38947:26;;39019:9;39013:4;39009:20;39005:1;38994:9;38990:17;38983:47;39047:131;39173:4;39047:131;:::i;:::-;39039:139;;38766:419;;;:::o;39191:147::-;39292:11;39329:3;39314:18;;39191:147;;;;:::o;39344:114::-;;:::o;39464:398::-;39623:3;39644:83;39725:1;39720:3;39644:83;:::i;:::-;39637:90;;39736:93;39825:3;39736:93;:::i;:::-;39854:1;39849:3;39845:11;39838:18;;39464:398;;;:::o;39868:379::-;40052:3;40074:147;40217:3;40074:147;:::i;:::-;40067:154;;40238:3;40231:10;;39868:379;;;:::o;40253:245::-;40393:34;40389:1;40381:6;40377:14;40370:58;40462:28;40457:2;40449:6;40445:15;40438:53;40253:245;:::o;40504:366::-;40646:3;40667:67;40731:2;40726:3;40667:67;:::i;:::-;40660:74;;40743:93;40832:3;40743:93;:::i;:::-;40861:2;40856:3;40852:12;40845:19;;40504:366;;;:::o;40876:419::-;41042:4;41080:2;41069:9;41065:18;41057:26;;41129:9;41123:4;41119:20;41115:1;41104:9;41100:17;41093:47;41157:131;41283:4;41157:131;:::i;:::-;41149:139;;40876:419;;;:::o

Swarm Source

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