ETH Price: $3,400.13 (+1.97%)
Gas: 3.02 Gwei

Token

0xAi (0XAI)
 

Overview

Max Total Supply

1,000,000,000 0XAI

Holders

106

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
2,329,455.173957718098607522 0XAI

Value
$0.00
0xc9dcda9380cadaa529832d79fe99f100937aba56
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:
zeroxai

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 2024-12-19
*/

//SPDX-License-Identifier: MIT

// 0xAi - Your imagination just Ai level up.
// W: https://www.zeroxai.app/
// T: https://t.me/OXAIofficial
// X: https://x.com/official0xai

pragma solidity 0.8.19;

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

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    )
        external
        payable
        returns (uint amountToken, uint amountETH, uint liquidity);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(
        address recipient,
        uint256 amount
    ) external returns (bool);
    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

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

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

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

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

        _transfer(sender, recipient, amount);

        return true;
    }

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

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

        return true;
    }

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

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

        emit Transfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    mapping(address => bool) private _isExcludedFromFees;

    address public marketingFeeReceiver;
    uint256 public tradingEnabledTime;

    bool private inSwapAndLiquify;
    bool public swapEnabled;
    bool public tradingEnabled;

    uint256 public marketingFee;
    uint256 public maxSwapThreshold;
    uint256 public maxWalletSize;

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event SwapAndSendFee(uint256 tokensSwapped, uint256 bnbSend);
    event MarketingFeeReceiverChanged(address marketingFeeReceiver);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 bnbReceived,
        uint256 tokensIntoLiqudity
    );
    event ToggleSwapping(bool swapEnabled);
    event FeesLowered(uint256 _new);
    event MaxWalletSizeRaised(uint256 _new);
    event MaxSwapThresholdUpdated(uint256 _new);

    constructor(address _router, address _feeReceiver, uint256 _initalLiquidity) payable ERC20("0xAi", "0XAI") { //uniswapv2router address, feereceiving wallet, Tokenname, symbol
        
        marketingFee = 25;

        marketingFeeReceiver = _feeReceiver;
        uniswapV2Router = IUniswapV2Router02(_router);

        //Excluding wallets from fees
        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[address(0xdead)] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[marketingFeeReceiver] = true;

        uint256 ownerSupply = 1000000000 * 10**decimals() - _initalLiquidity;

        _mint(owner(), ownerSupply);
        _mint(address(this), _initalLiquidity);

        maxWalletSize = 10000000*10**decimals();
        maxSwapThreshold = 1000000*10**decimals();
        
        swapEnabled = false;
        tradingEnabled = false;

    }

    receive() external payable {}

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

        IERC20(token).transfer(
            msg.sender,
            IERC20(token).balanceOf(address(this))
        );
    }

    function excludeFromFees(
        address account,
        bool excluded
    ) external onlyOwner {
        _isExcludedFromFees[account] = excluded;

        emit ExcludeFromFees(account, excluded);
    }

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

    function changeFeeReceiver(
        address _marketingFeeReceiver
    ) external onlyOwner {
        require(
            _marketingFeeReceiver != address(0) &&
            _marketingFeeReceiver != address(0xdead),
            "Marketing Fee receiver cannot be the zero or dead address"
        );
        marketingFeeReceiver = _marketingFeeReceiver;

        emit MarketingFeeReceiverChanged(marketingFeeReceiver);
    }

    event TradingEnabled(bool tradingEnabled, uint256 tradingEnabledTime);

    function enableTrading() external onlyOwner {
        require(tradingEnabled == false, "0xAi: trading already enabled!");
        _approve(address(this), address(uniswapV2Router), type(uint256).max);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        tradingEnabled = true;
        swapEnabled = true;
        tradingEnabledTime = block.timestamp;
        _isExcludedFromFees[uniswapV2Pair] = true;

        emit TradingEnabled(tradingEnabled, tradingEnabledTime);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "Transfer from the zero address");
        require(to != address(0), "Transfer to the zero address");
        require(tradingEnabled 
                || _isExcludedFromFees[from] 
                || _isExcludedFromFees[to],
            "Trading not yet enabled!"
        );

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        uint256 _totalFees;
        if (_isExcludedFromFees[from] && _isExcludedFromFees[to] && inSwapAndLiquify) {
            _totalFees = 0;
        } else if (from == uniswapV2Pair || to == uniswapV2Pair && tradingEnabled) {
            _totalFees = marketingFee;
        } else {
            _totalFees = 0;
        }

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

        if(to == uniswapV2Pair) {
            if (contractTokenBalance > maxSwapThreshold && !inSwapAndLiquify && swapEnabled) {
                inSwapAndLiquify = true;

                _swapAndSendMarketing(maxSwapThreshold);
                
                inSwapAndLiquify = false;
            }
        }

        if(tradingEnabled && !_isExcludedFromFees[to] && !inSwapAndLiquify) {
            uint256 toWalletSize = balanceOf(to);
            require(toWalletSize + amount <= maxWalletSize, "Maximum wallet size exceeded!");
        }

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

    function toggleSwapping(bool _swapEnabled) external onlyOwner {
        require(swapEnabled != _swapEnabled, "Currently at the same stage");
        swapEnabled = _swapEnabled;
        emit ToggleSwapping(swapEnabled);
    }

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

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

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

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

        payable(marketingFeeReceiver).sendValue(newBalance);

        emit SwapAndSendFee(tokenAmount, newBalance);
    }

    function sellFees() public onlyOwner() {
        uint256 contractBalance = balanceOf(address(this));
        _swapAndSendMarketing(contractBalance);
    }

    function lowerFees(uint256 _newFee) public onlyOwner() {
        require(_newFee < marketingFee, "0xAi: New fee must be lower than old fee!");

        marketingFee = _newFee;

        emit FeesLowered(_newFee);
    }

    function raiseMaxLimit(uint256 _newLimit) public onlyOwner() {
        require(_newLimit > maxWalletSize, "0xAi: New limit must be higher than older!");

        maxWalletSize = _newLimit;

        emit MaxWalletSizeRaised(_newLimit);
    }

    function setSwapThreshold(uint256 _newThreshold) public onlyOwner {
        maxSwapThreshold = _newThreshold;

        emit MaxSwapThresholdUpdated(_newThreshold);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_router","type":"address"},{"internalType":"address","name":"_feeReceiver","type":"address"},{"internalType":"uint256","name":"_initalLiquidity","type":"uint256"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_new","type":"uint256"}],"name":"FeesLowered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketingFeeReceiver","type":"address"}],"name":"MarketingFeeReceiverChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_new","type":"uint256"}],"name":"MaxSwapThresholdUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_new","type":"uint256"}],"name":"MaxWalletSizeRaised","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbSend","type":"uint256"}],"name":"SwapAndSendFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"swapEnabled","type":"bool"}],"name":"ToggleSwapping","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"tradingEnabled","type":"bool"},{"indexed":false,"internalType":"uint256","name":"tradingEnabledTime","type":"uint256"}],"name":"TradingEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"changeFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"lowerFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLimit","type":"uint256"}],"name":"raiseMaxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newThreshold","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwapping","outputs":[],"stateMutability":"nonpayable","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":[],"name":"tradingEnabledTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052604051620050fb380380620050fb8339818101604052810190620000299190620006d4565b6040518060400160405280600481526020017f30784169000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f30584149000000000000000000000000000000000000000000000000000000008152508160039081620000a69190620009a0565b508060049081620000b89190620009a0565b5050506000620000cd620004a460201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506019600c8190555081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860006200020c620004ac60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016008600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000816200039c620004d660201b60201c565b600a620003aa919062000c17565b633b9aca00620003bb919062000c68565b620003c7919062000cb3565b9050620003ea620003dd620004ac60201b60201c565b82620004df60201b60201c565b620003fc3083620004df60201b60201c565b6200040c620004d660201b60201c565b600a6200041a919062000c17565b629896806200042a919062000c68565b600e8190555062000440620004d660201b60201c565b600a6200044e919062000c17565b620f42406200045e919062000c68565b600d819055506000600b60016101000a81548160ff0219169083151502179055506000600b60026101000a81548160ff0219169083151502179055505050505062000dda565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000551576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005489062000d4f565b60405180910390fd5b806002600082825462000565919062000d71565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620005bc919062000d71565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000623919062000dbd565b60405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620006618262000634565b9050919050565b620006738162000654565b81146200067f57600080fd5b50565b600081519050620006938162000668565b92915050565b6000819050919050565b620006ae8162000699565b8114620006ba57600080fd5b50565b600081519050620006ce81620006a3565b92915050565b600080600060608486031215620006f057620006ef6200062f565b5b6000620007008682870162000682565b9350506020620007138682870162000682565b92505060406200072686828701620006bd565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620007b257607f821691505b602082108103620007c857620007c76200076a565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620008327fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620007f3565b6200083e8683620007f3565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620008816200087b620008758462000699565b62000856565b62000699565b9050919050565b6000819050919050565b6200089d8362000860565b620008b5620008ac8262000888565b84845462000800565b825550505050565b600090565b620008cc620008bd565b620008d981848462000892565b505050565b5b818110156200090157620008f5600082620008c2565b600181019050620008df565b5050565b601f82111562000950576200091a81620007ce565b6200092584620007e3565b8101602085101562000935578190505b6200094d6200094485620007e3565b830182620008de565b50505b505050565b600082821c905092915050565b6000620009756000198460080262000955565b1980831691505092915050565b600062000990838362000962565b9150826002028217905092915050565b620009ab8262000730565b67ffffffffffffffff811115620009c757620009c66200073b565b5b620009d3825462000799565b620009e082828562000905565b600060209050601f83116001811462000a18576000841562000a03578287015190505b62000a0f858262000982565b86555062000a7f565b601f19841662000a2886620007ce565b60005b8281101562000a525784890151825560018201915060208501945060208101905062000a2b565b8683101562000a72578489015162000a6e601f89168262000962565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000b155780860481111562000aed5762000aec62000a87565b5b600185161562000afd5780820291505b808102905062000b0d8562000ab6565b945062000acd565b94509492505050565b60008262000b30576001905062000c03565b8162000b40576000905062000c03565b816001811462000b59576002811462000b645762000b9a565b600191505062000c03565b60ff84111562000b795762000b7862000a87565b5b8360020a91508482111562000b935762000b9262000a87565b5b5062000c03565b5060208310610133831016604e8410600b841016171562000bd45782820a90508381111562000bce5762000bcd62000a87565b5b62000c03565b62000be3848484600162000ac3565b9250905081840481111562000bfd5762000bfc62000a87565b5b81810290505b9392505050565b600060ff82169050919050565b600062000c248262000699565b915062000c318362000c0a565b925062000c607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000b1e565b905092915050565b600062000c758262000699565b915062000c828362000699565b925082820262000c928162000699565b9150828204841483151762000cac5762000cab62000a87565b5b5092915050565b600062000cc08262000699565b915062000ccd8362000699565b925082820390508181111562000ce85762000ce762000a87565b5b92915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000d37601f8362000cee565b915062000d448262000cff565b602082019050919050565b6000602082019050818103600083015262000d6a8162000d28565b9050919050565b600062000d7e8262000699565b915062000d8b8362000699565b925082820190508082111562000da65762000da562000a87565b5b92915050565b62000db78162000699565b82525050565b600060208201905062000dd4600083018462000dac565b92915050565b6143118062000dea6000396000f3fe6080604052600436106101f25760003560e01c8063715018a61161010d578063a9059cbb116100a0578063e0f3ccf51161006f578063e0f3ccf514610710578063e3b24c8014610727578063e96fada214610750578063f2fde38b1461077b578063f9d0831a146107a4576101f9565b8063a9059cbb14610642578063acef1a441461067f578063c0246668146106aa578063dd62ed3e146106d3576101f9565b80638f3fa860116100dc5780638f3fa8601461058657806395d89b41146105b15780639d0014b1146105dc578063a457c2d714610605576101f9565b8063715018a6146105045780637c08b9641461051b5780638a8c523c146105445780638da5cb5b1461055b576101f9565b806339509351116101855780636b67c4df116101545780636b67c4df146104465780636ddd1713146104715780636fd8fb7a1461049c57806370a08231146104c7576101f9565b8063395093511461037657806349bd5a5e146103b35780634ada218b146103de5780634fbee19314610409576101f9565b806318160ddd116101c157806318160ddd146102ba578063239be29a146102e557806323b872dd1461030e578063313ce5671461034b576101f9565b806306fdde03146101fe578063095ea7b3146102295780630f198ee8146102665780631694505e1461028f576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b506102136107cd565b6040516102209190612f39565b60405180910390f35b34801561023557600080fd5b50610250600480360381019061024b9190612ff4565b61085f565b60405161025d919061304f565b60405180910390f35b34801561027257600080fd5b5061028d6004803603810190610288919061306a565b61087d565b005b34801561029b57600080fd5b506102a4610999565b6040516102b191906130f6565b60405180910390f35b3480156102c657600080fd5b506102cf6109bf565b6040516102dc9190613120565b60405180910390f35b3480156102f157600080fd5b5061030c60048036038101906103079190613167565b6109c9565b005b34801561031a57600080fd5b5061033560048036038101906103309190613194565b610b18565b604051610342919061304f565b60405180910390f35b34801561035757600080fd5b50610360610c37565b60405161036d9190613203565b60405180910390f35b34801561038257600080fd5b5061039d60048036038101906103989190612ff4565b610c40565b6040516103aa919061304f565b60405180910390f35b3480156103bf57600080fd5b506103c8610cec565b6040516103d5919061322d565b60405180910390f35b3480156103ea57600080fd5b506103f3610d12565b604051610400919061304f565b60405180910390f35b34801561041557600080fd5b50610430600480360381019061042b9190613248565b610d25565b60405161043d919061304f565b60405180910390f35b34801561045257600080fd5b5061045b610d7b565b6040516104689190613120565b60405180910390f35b34801561047d57600080fd5b50610486610d81565b604051610493919061304f565b60405180910390f35b3480156104a857600080fd5b506104b1610d94565b6040516104be9190613120565b60405180910390f35b3480156104d357600080fd5b506104ee60048036038101906104e99190613248565b610d9a565b6040516104fb9190613120565b60405180910390f35b34801561051057600080fd5b50610519610de2565b005b34801561052757600080fd5b50610542600480360381019061053d9190613248565b610f3a565b005b34801561055057600080fd5b50610559611118565b005b34801561056757600080fd5b506105706116d2565b60405161057d919061322d565b60405180910390f35b34801561059257600080fd5b5061059b6116fc565b6040516105a89190613120565b60405180910390f35b3480156105bd57600080fd5b506105c6611702565b6040516105d39190612f39565b60405180910390f35b3480156105e857600080fd5b5061060360048036038101906105fe919061306a565b611794565b005b34801561061157600080fd5b5061062c60048036038101906106279190612ff4565b61186c565b604051610639919061304f565b60405180910390f35b34801561064e57600080fd5b5061066960048036038101906106649190612ff4565b611957565b604051610676919061304f565b60405180910390f35b34801561068b57600080fd5b50610694611975565b6040516106a19190613120565b60405180910390f35b3480156106b657600080fd5b506106d160048036038101906106cc9190613275565b61197b565b005b3480156106df57600080fd5b506106fa60048036038101906106f591906132b5565b611abb565b6040516107079190613120565b60405180910390f35b34801561071c57600080fd5b50610725611b42565b005b34801561073357600080fd5b5061074e6004803603810190610749919061306a565b611bf2565b005b34801561075c57600080fd5b50610765611d0e565b604051610772919061322d565b60405180910390f35b34801561078757600080fd5b506107a2600480360381019061079d9190613248565b611d34565b005b3480156107b057600080fd5b506107cb60048036038101906107c69190613248565b611efa565b005b6060600380546107dc90613324565b80601f016020809104026020016040519081016040528092919081815260200182805461080890613324565b80156108555780601f1061082a57610100808354040283529160200191610855565b820191906000526020600020905b81548152906001019060200180831161083857829003601f168201915b5050505050905090565b600061087361086c61215e565b8484612166565b6001905092915050565b61088561215e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610914576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090b906133a1565b60405180910390fd5b600c548110610958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094f90613433565b60405180910390fd5b80600c819055507f521fe74e1c24ea5dc1327c29145ebc90bae09bc5a6f6bea118b4ad87793327a58160405161098e9190613120565b60405180910390a150565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6109d161215e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a57906133a1565b60405180910390fd5b801515600b60019054906101000a900460ff16151503610ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aac9061349f565b60405180910390fd5b80600b60016101000a81548160ff0219169083151502179055507f0b24deddd077e0149099adf20869b94ebb4b0898a1068e9af5e30529f596e532600b60019054906101000a900460ff16604051610b0d919061304f565b60405180910390a150565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b6461215e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610c205782811015610c0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0290613531565b60405180910390fd5b610c1f85610c1761215e565b858403612166565b5b610c2b85858561232f565b60019150509392505050565b60006012905090565b6000610ce2610c4d61215e565b848460016000610c5b61215e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610cdd9190613580565b612166565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60029054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600c5481565b600b60019054906101000a900460ff1681565b600a5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610dea61215e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e70906133a1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610f4261215e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc8906133a1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561103c575061dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b61107b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107290613626565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fce24358e1d81b90be8bb8786b891404133aa63ffde0e56b69ccf25a5e3c4df06600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161110d919061322d565b60405180910390a150565b61112061215e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a6906133a1565b60405180910390fd5b60001515600b60029054906101000a900460ff16151514611205576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fc90613692565b60405180910390fd5b61125230600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612166565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e391906136c7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561136c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139091906136c7565b6040518363ffffffff1660e01b81526004016113ad9291906136f4565b6020604051808303816000875af11580156113cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f091906136c7565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061147930610d9a565b6000806114846116d2565b426040518863ffffffff1660e01b81526004016114a696959493929190613758565b60606040518083038185885af11580156114c4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906114e991906137ce565b505050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161158b929190613821565b6020604051808303816000875af11580156115aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ce919061385f565b506001600b60026101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff02191690831515021790555042600a81905550600160086000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f3eb2d65e1de77434db1b2cb0645de0085059e6e514d7b9641fdc2978d8e40c40600b60029054906101000a900460ff16600a546040516116c892919061388c565b60405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e5481565b60606004805461171190613324565b80601f016020809104026020016040519081016040528092919081815260200182805461173d90613324565b801561178a5780601f1061175f5761010080835404028352916020019161178a565b820191906000526020600020905b81548152906001019060200180831161176d57829003601f168201915b5050505050905090565b61179c61215e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461182b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611822906133a1565b60405180910390fd5b80600d819055507fb090ae518da13bb076e9fad6694791d1d427db3284f7ac7321fbeafac08c7b27816040516118619190613120565b60405180910390a150565b6000806001600061187b61215e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192f90613927565b60405180910390fd5b61194c61194361215e565b85858403612166565b600191505092915050565b600061196b61196461215e565b848461232f565b6001905092915050565b600d5481565b61198361215e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a09906133a1565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611aaf919061304f565b60405180910390a25050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611b4a61215e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd0906133a1565b60405180910390fd5b6000611be430610d9a565b9050611bef816128d3565b50565b611bfa61215e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c80906133a1565b60405180910390fd5b600e548111611ccd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc4906139b9565b60405180910390fd5b80600e819055507f69626ae9392dcbdfaecc4d3af4d6c00e0bb3888f512459d89551c2762e406c4181604051611d039190613120565b60405180910390a150565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611d3c61215e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc2906133a1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3190613a4b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611f0261215e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f88906133a1565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611fff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff690613add565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036120625761205c473373ffffffffffffffffffffffffffffffffffffffff16612b8590919063ffffffff16565b5061215b565b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016120b8919061322d565b602060405180830381865afa1580156120d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f99190613afd565b6040518363ffffffff1660e01b8152600401612116929190613821565b6020604051808303816000875af1158015612135573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612159919061385f565b505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cc90613b9c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223b90613c2e565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516123229190613120565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361239e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239590613c9a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361240d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240490613d06565b60405180910390fd5b600b60029054906101000a900460ff16806124715750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806124c55750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612504576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124fb90613d72565b60405180910390fd5b6000810361251d5761251883836000612c40565b6128ce565b600061252830610d9a565b90506000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156125ce5750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80156125e65750600b60009054906101000a900460ff165b156125f457600090506126ca565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806126b55750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156126b45750600b60029054906101000a900460ff165b5b156126c457600c5490506126c9565b600090505b5b600081111561270a576000606482856126e39190613d92565b6126ed9190613e03565b905080846126fb9190613e34565b9350612708863083612c40565b505b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036127dd57600d548211801561277d5750600b60009054906101000a900460ff16155b80156127955750600b60019054906101000a900460ff165b156127dc576001600b60006101000a81548160ff0219169083151502179055506127c0600d546128d3565b6000600b60006101000a81548160ff0219169083151502179055505b5b600b60029054906101000a900460ff1680156128435750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561285c5750600b60009054906101000a900460ff16155b156128c057600061286c85610d9a565b9050600e54848261287d9190613580565b11156128be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b590613eb4565b60405180910390fd5b505b6128cb858585612c40565b50505b505050565b60004790506000600267ffffffffffffffff8111156128f5576128f4613ed4565b5b6040519080825280602002602001820160405280156129235781602001602082028036833780820191505090505b509050308160008151811061293b5761293a613f03565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a0691906136c7565b81600181518110612a1a57612a19613f03565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b8152600401612ab8959493929190613ff0565b600060405180830381600087803b158015612ad257600080fd5b505af1158015612ae6573d6000803e3d6000fd5b5050505060008247612af89190613e34565b9050612b4581600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612b8590919063ffffffff16565b507f54c5e193a68e36b996e0c85b164c5953625d951c488fbad0e67aa32e1c45307b8482604051612b7792919061404a565b60405180910390a150505050565b600081471015612bca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc1906140bf565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff1683604051612bf090614110565b60006040518083038185875af1925050503d8060008114612c2d576040519150601f19603f3d011682016040523d82523d6000602084013e612c32565b606091505b505090508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612caf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca690614197565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1590614229565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9b906142bb565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612e379190613580565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612e9b9190613120565b60405180910390a350505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612ee3578082015181840152602081019050612ec8565b60008484015250505050565b6000601f19601f8301169050919050565b6000612f0b82612ea9565b612f158185612eb4565b9350612f25818560208601612ec5565b612f2e81612eef565b840191505092915050565b60006020820190508181036000830152612f538184612f00565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f8b82612f60565b9050919050565b612f9b81612f80565b8114612fa657600080fd5b50565b600081359050612fb881612f92565b92915050565b6000819050919050565b612fd181612fbe565b8114612fdc57600080fd5b50565b600081359050612fee81612fc8565b92915050565b6000806040838503121561300b5761300a612f5b565b5b600061301985828601612fa9565b925050602061302a85828601612fdf565b9150509250929050565b60008115159050919050565b61304981613034565b82525050565b60006020820190506130646000830184613040565b92915050565b6000602082840312156130805761307f612f5b565b5b600061308e84828501612fdf565b91505092915050565b6000819050919050565b60006130bc6130b76130b284612f60565b613097565b612f60565b9050919050565b60006130ce826130a1565b9050919050565b60006130e0826130c3565b9050919050565b6130f0816130d5565b82525050565b600060208201905061310b60008301846130e7565b92915050565b61311a81612fbe565b82525050565b60006020820190506131356000830184613111565b92915050565b61314481613034565b811461314f57600080fd5b50565b6000813590506131618161313b565b92915050565b60006020828403121561317d5761317c612f5b565b5b600061318b84828501613152565b91505092915050565b6000806000606084860312156131ad576131ac612f5b565b5b60006131bb86828701612fa9565b93505060206131cc86828701612fa9565b92505060406131dd86828701612fdf565b9150509250925092565b600060ff82169050919050565b6131fd816131e7565b82525050565b600060208201905061321860008301846131f4565b92915050565b61322781612f80565b82525050565b6000602082019050613242600083018461321e565b92915050565b60006020828403121561325e5761325d612f5b565b5b600061326c84828501612fa9565b91505092915050565b6000806040838503121561328c5761328b612f5b565b5b600061329a85828601612fa9565b92505060206132ab85828601613152565b9150509250929050565b600080604083850312156132cc576132cb612f5b565b5b60006132da85828601612fa9565b92505060206132eb85828601612fa9565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061333c57607f821691505b60208210810361334f5761334e6132f5565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061338b602083612eb4565b915061339682613355565b602082019050919050565b600060208201905081810360008301526133ba8161337e565b9050919050565b7f307841693a204e657720666565206d757374206265206c6f776572207468616e60008201527f206f6c6420666565210000000000000000000000000000000000000000000000602082015250565b600061341d602983612eb4565b9150613428826133c1565b604082019050919050565b6000602082019050818103600083015261344c81613410565b9050919050565b7f43757272656e746c79206174207468652073616d652073746167650000000000600082015250565b6000613489601b83612eb4565b915061349482613453565b602082019050919050565b600060208201905081810360008301526134b88161347c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061351b602883612eb4565b9150613526826134bf565b604082019050919050565b6000602082019050818103600083015261354a8161350e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061358b82612fbe565b915061359683612fbe565b92508282019050808211156135ae576135ad613551565b5b92915050565b7f4d61726b6574696e67204665652072656365697665722063616e6e6f7420626560008201527f20746865207a65726f206f722064656164206164647265737300000000000000602082015250565b6000613610603983612eb4565b915061361b826135b4565b604082019050919050565b6000602082019050818103600083015261363f81613603565b9050919050565b7f307841693a2074726164696e6720616c726561647920656e61626c6564210000600082015250565b600061367c601e83612eb4565b915061368782613646565b602082019050919050565b600060208201905081810360008301526136ab8161366f565b9050919050565b6000815190506136c181612f92565b92915050565b6000602082840312156136dd576136dc612f5b565b5b60006136eb848285016136b2565b91505092915050565b6000604082019050613709600083018561321e565b613716602083018461321e565b9392505050565b6000819050919050565b600061374261373d6137388461371d565b613097565b612fbe565b9050919050565b61375281613727565b82525050565b600060c08201905061376d600083018961321e565b61377a6020830188613111565b6137876040830187613749565b6137946060830186613749565b6137a1608083018561321e565b6137ae60a0830184613111565b979650505050505050565b6000815190506137c881612fc8565b92915050565b6000806000606084860312156137e7576137e6612f5b565b5b60006137f5868287016137b9565b9350506020613806868287016137b9565b9250506040613817868287016137b9565b9150509250925092565b6000604082019050613836600083018561321e565b6138436020830184613111565b9392505050565b6000815190506138598161313b565b92915050565b60006020828403121561387557613874612f5b565b5b60006138838482850161384a565b91505092915050565b60006040820190506138a16000830185613040565b6138ae6020830184613111565b9392505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613911602583612eb4565b915061391c826138b5565b604082019050919050565b6000602082019050818103600083015261394081613904565b9050919050565b7f307841693a204e6577206c696d6974206d75737420626520686967686572207460008201527f68616e206f6c6465722100000000000000000000000000000000000000000000602082015250565b60006139a3602a83612eb4565b91506139ae82613947565b604082019050919050565b600060208201905081810360008301526139d281613996565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613a35602683612eb4565b9150613a40826139d9565b604082019050919050565b60006020820190508181036000830152613a6481613a28565b9050919050565b7f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160008201527f6c616e6365206f6620697473206f776e20746f6b656e73000000000000000000602082015250565b6000613ac7603783612eb4565b9150613ad282613a6b565b604082019050919050565b60006020820190508181036000830152613af681613aba565b9050919050565b600060208284031215613b1357613b12612f5b565b5b6000613b21848285016137b9565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613b86602483612eb4565b9150613b9182613b2a565b604082019050919050565b60006020820190508181036000830152613bb581613b79565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c18602283612eb4565b9150613c2382613bbc565b604082019050919050565b60006020820190508181036000830152613c4781613c0b565b9050919050565b7f5472616e736665722066726f6d20746865207a65726f20616464726573730000600082015250565b6000613c84601e83612eb4565b9150613c8f82613c4e565b602082019050919050565b60006020820190508181036000830152613cb381613c77565b9050919050565b7f5472616e7366657220746f20746865207a65726f206164647265737300000000600082015250565b6000613cf0601c83612eb4565b9150613cfb82613cba565b602082019050919050565b60006020820190508181036000830152613d1f81613ce3565b9050919050565b7f54726164696e67206e6f742079657420656e61626c6564210000000000000000600082015250565b6000613d5c601883612eb4565b9150613d6782613d26565b602082019050919050565b60006020820190508181036000830152613d8b81613d4f565b9050919050565b6000613d9d82612fbe565b9150613da883612fbe565b9250828202613db681612fbe565b91508282048414831517613dcd57613dcc613551565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613e0e82612fbe565b9150613e1983612fbe565b925082613e2957613e28613dd4565b5b828204905092915050565b6000613e3f82612fbe565b9150613e4a83612fbe565b9250828203905081811115613e6257613e61613551565b5b92915050565b7f4d6178696d756d2077616c6c65742073697a6520657863656564656421000000600082015250565b6000613e9e601d83612eb4565b9150613ea982613e68565b602082019050919050565b60006020820190508181036000830152613ecd81613e91565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613f6781612f80565b82525050565b6000613f798383613f5e565b60208301905092915050565b6000602082019050919050565b6000613f9d82613f32565b613fa78185613f3d565b9350613fb283613f4e565b8060005b83811015613fe3578151613fca8882613f6d565b9750613fd583613f85565b925050600181019050613fb6565b5085935050505092915050565b600060a0820190506140056000830188613111565b6140126020830187613749565b81810360408301526140248186613f92565b9050614033606083018561321e565b6140406080830184613111565b9695505050505050565b600060408201905061405f6000830185613111565b61406c6020830184613111565b9392505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b60006140a9601d83612eb4565b91506140b482614073565b602082019050919050565b600060208201905081810360008301526140d88161409c565b9050919050565b600081905092915050565b50565b60006140fa6000836140df565b9150614105826140ea565b600082019050919050565b600061411b826140ed565b9150819050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614181602583612eb4565b915061418c82614125565b604082019050919050565b600060208201905081810360008301526141b081614174565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614213602383612eb4565b915061421e826141b7565b604082019050919050565b6000602082019050818103600083015261424281614206565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006142a5602683612eb4565b91506142b082614249565b604082019050919050565b600060208201905081810360008301526142d481614298565b905091905056fea2646970667358221220100f71edd4eac6e821c9684dd5ee167f636de76873974617802f0e6492f0f57e64736f6c634300081300330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000008d8943752ace652ae81caf4d5b51384665def6cb000000000000000000000000000000000000000002e87669c308736a04000000

Deployed Bytecode

0x6080604052600436106101f25760003560e01c8063715018a61161010d578063a9059cbb116100a0578063e0f3ccf51161006f578063e0f3ccf514610710578063e3b24c8014610727578063e96fada214610750578063f2fde38b1461077b578063f9d0831a146107a4576101f9565b8063a9059cbb14610642578063acef1a441461067f578063c0246668146106aa578063dd62ed3e146106d3576101f9565b80638f3fa860116100dc5780638f3fa8601461058657806395d89b41146105b15780639d0014b1146105dc578063a457c2d714610605576101f9565b8063715018a6146105045780637c08b9641461051b5780638a8c523c146105445780638da5cb5b1461055b576101f9565b806339509351116101855780636b67c4df116101545780636b67c4df146104465780636ddd1713146104715780636fd8fb7a1461049c57806370a08231146104c7576101f9565b8063395093511461037657806349bd5a5e146103b35780634ada218b146103de5780634fbee19314610409576101f9565b806318160ddd116101c157806318160ddd146102ba578063239be29a146102e557806323b872dd1461030e578063313ce5671461034b576101f9565b806306fdde03146101fe578063095ea7b3146102295780630f198ee8146102665780631694505e1461028f576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b506102136107cd565b6040516102209190612f39565b60405180910390f35b34801561023557600080fd5b50610250600480360381019061024b9190612ff4565b61085f565b60405161025d919061304f565b60405180910390f35b34801561027257600080fd5b5061028d6004803603810190610288919061306a565b61087d565b005b34801561029b57600080fd5b506102a4610999565b6040516102b191906130f6565b60405180910390f35b3480156102c657600080fd5b506102cf6109bf565b6040516102dc9190613120565b60405180910390f35b3480156102f157600080fd5b5061030c60048036038101906103079190613167565b6109c9565b005b34801561031a57600080fd5b5061033560048036038101906103309190613194565b610b18565b604051610342919061304f565b60405180910390f35b34801561035757600080fd5b50610360610c37565b60405161036d9190613203565b60405180910390f35b34801561038257600080fd5b5061039d60048036038101906103989190612ff4565b610c40565b6040516103aa919061304f565b60405180910390f35b3480156103bf57600080fd5b506103c8610cec565b6040516103d5919061322d565b60405180910390f35b3480156103ea57600080fd5b506103f3610d12565b604051610400919061304f565b60405180910390f35b34801561041557600080fd5b50610430600480360381019061042b9190613248565b610d25565b60405161043d919061304f565b60405180910390f35b34801561045257600080fd5b5061045b610d7b565b6040516104689190613120565b60405180910390f35b34801561047d57600080fd5b50610486610d81565b604051610493919061304f565b60405180910390f35b3480156104a857600080fd5b506104b1610d94565b6040516104be9190613120565b60405180910390f35b3480156104d357600080fd5b506104ee60048036038101906104e99190613248565b610d9a565b6040516104fb9190613120565b60405180910390f35b34801561051057600080fd5b50610519610de2565b005b34801561052757600080fd5b50610542600480360381019061053d9190613248565b610f3a565b005b34801561055057600080fd5b50610559611118565b005b34801561056757600080fd5b506105706116d2565b60405161057d919061322d565b60405180910390f35b34801561059257600080fd5b5061059b6116fc565b6040516105a89190613120565b60405180910390f35b3480156105bd57600080fd5b506105c6611702565b6040516105d39190612f39565b60405180910390f35b3480156105e857600080fd5b5061060360048036038101906105fe919061306a565b611794565b005b34801561061157600080fd5b5061062c60048036038101906106279190612ff4565b61186c565b604051610639919061304f565b60405180910390f35b34801561064e57600080fd5b5061066960048036038101906106649190612ff4565b611957565b604051610676919061304f565b60405180910390f35b34801561068b57600080fd5b50610694611975565b6040516106a19190613120565b60405180910390f35b3480156106b657600080fd5b506106d160048036038101906106cc9190613275565b61197b565b005b3480156106df57600080fd5b506106fa60048036038101906106f591906132b5565b611abb565b6040516107079190613120565b60405180910390f35b34801561071c57600080fd5b50610725611b42565b005b34801561073357600080fd5b5061074e6004803603810190610749919061306a565b611bf2565b005b34801561075c57600080fd5b50610765611d0e565b604051610772919061322d565b60405180910390f35b34801561078757600080fd5b506107a2600480360381019061079d9190613248565b611d34565b005b3480156107b057600080fd5b506107cb60048036038101906107c69190613248565b611efa565b005b6060600380546107dc90613324565b80601f016020809104026020016040519081016040528092919081815260200182805461080890613324565b80156108555780601f1061082a57610100808354040283529160200191610855565b820191906000526020600020905b81548152906001019060200180831161083857829003601f168201915b5050505050905090565b600061087361086c61215e565b8484612166565b6001905092915050565b61088561215e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610914576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090b906133a1565b60405180910390fd5b600c548110610958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094f90613433565b60405180910390fd5b80600c819055507f521fe74e1c24ea5dc1327c29145ebc90bae09bc5a6f6bea118b4ad87793327a58160405161098e9190613120565b60405180910390a150565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6109d161215e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a57906133a1565b60405180910390fd5b801515600b60019054906101000a900460ff16151503610ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aac9061349f565b60405180910390fd5b80600b60016101000a81548160ff0219169083151502179055507f0b24deddd077e0149099adf20869b94ebb4b0898a1068e9af5e30529f596e532600b60019054906101000a900460ff16604051610b0d919061304f565b60405180910390a150565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b6461215e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610c205782811015610c0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0290613531565b60405180910390fd5b610c1f85610c1761215e565b858403612166565b5b610c2b85858561232f565b60019150509392505050565b60006012905090565b6000610ce2610c4d61215e565b848460016000610c5b61215e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610cdd9190613580565b612166565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60029054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600c5481565b600b60019054906101000a900460ff1681565b600a5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610dea61215e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e70906133a1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610f4261215e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc8906133a1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561103c575061dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b61107b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107290613626565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fce24358e1d81b90be8bb8786b891404133aa63ffde0e56b69ccf25a5e3c4df06600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161110d919061322d565b60405180910390a150565b61112061215e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a6906133a1565b60405180910390fd5b60001515600b60029054906101000a900460ff16151514611205576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fc90613692565b60405180910390fd5b61125230600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612166565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e391906136c7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561136c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139091906136c7565b6040518363ffffffff1660e01b81526004016113ad9291906136f4565b6020604051808303816000875af11580156113cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f091906136c7565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061147930610d9a565b6000806114846116d2565b426040518863ffffffff1660e01b81526004016114a696959493929190613758565b60606040518083038185885af11580156114c4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906114e991906137ce565b505050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161158b929190613821565b6020604051808303816000875af11580156115aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ce919061385f565b506001600b60026101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff02191690831515021790555042600a81905550600160086000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f3eb2d65e1de77434db1b2cb0645de0085059e6e514d7b9641fdc2978d8e40c40600b60029054906101000a900460ff16600a546040516116c892919061388c565b60405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e5481565b60606004805461171190613324565b80601f016020809104026020016040519081016040528092919081815260200182805461173d90613324565b801561178a5780601f1061175f5761010080835404028352916020019161178a565b820191906000526020600020905b81548152906001019060200180831161176d57829003601f168201915b5050505050905090565b61179c61215e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461182b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611822906133a1565b60405180910390fd5b80600d819055507fb090ae518da13bb076e9fad6694791d1d427db3284f7ac7321fbeafac08c7b27816040516118619190613120565b60405180910390a150565b6000806001600061187b61215e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192f90613927565b60405180910390fd5b61194c61194361215e565b85858403612166565b600191505092915050565b600061196b61196461215e565b848461232f565b6001905092915050565b600d5481565b61198361215e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a09906133a1565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611aaf919061304f565b60405180910390a25050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611b4a61215e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd0906133a1565b60405180910390fd5b6000611be430610d9a565b9050611bef816128d3565b50565b611bfa61215e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c80906133a1565b60405180910390fd5b600e548111611ccd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc4906139b9565b60405180910390fd5b80600e819055507f69626ae9392dcbdfaecc4d3af4d6c00e0bb3888f512459d89551c2762e406c4181604051611d039190613120565b60405180910390a150565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611d3c61215e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc2906133a1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3190613a4b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611f0261215e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f88906133a1565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611fff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff690613add565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036120625761205c473373ffffffffffffffffffffffffffffffffffffffff16612b8590919063ffffffff16565b5061215b565b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016120b8919061322d565b602060405180830381865afa1580156120d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f99190613afd565b6040518363ffffffff1660e01b8152600401612116929190613821565b6020604051808303816000875af1158015612135573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612159919061385f565b505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cc90613b9c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223b90613c2e565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516123229190613120565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361239e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239590613c9a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361240d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240490613d06565b60405180910390fd5b600b60029054906101000a900460ff16806124715750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806124c55750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612504576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124fb90613d72565b60405180910390fd5b6000810361251d5761251883836000612c40565b6128ce565b600061252830610d9a565b90506000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156125ce5750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80156125e65750600b60009054906101000a900460ff165b156125f457600090506126ca565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806126b55750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156126b45750600b60029054906101000a900460ff165b5b156126c457600c5490506126c9565b600090505b5b600081111561270a576000606482856126e39190613d92565b6126ed9190613e03565b905080846126fb9190613e34565b9350612708863083612c40565b505b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036127dd57600d548211801561277d5750600b60009054906101000a900460ff16155b80156127955750600b60019054906101000a900460ff165b156127dc576001600b60006101000a81548160ff0219169083151502179055506127c0600d546128d3565b6000600b60006101000a81548160ff0219169083151502179055505b5b600b60029054906101000a900460ff1680156128435750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561285c5750600b60009054906101000a900460ff16155b156128c057600061286c85610d9a565b9050600e54848261287d9190613580565b11156128be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b590613eb4565b60405180910390fd5b505b6128cb858585612c40565b50505b505050565b60004790506000600267ffffffffffffffff8111156128f5576128f4613ed4565b5b6040519080825280602002602001820160405280156129235781602001602082028036833780820191505090505b509050308160008151811061293b5761293a613f03565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a0691906136c7565b81600181518110612a1a57612a19613f03565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b8152600401612ab8959493929190613ff0565b600060405180830381600087803b158015612ad257600080fd5b505af1158015612ae6573d6000803e3d6000fd5b5050505060008247612af89190613e34565b9050612b4581600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612b8590919063ffffffff16565b507f54c5e193a68e36b996e0c85b164c5953625d951c488fbad0e67aa32e1c45307b8482604051612b7792919061404a565b60405180910390a150505050565b600081471015612bca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc1906140bf565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff1683604051612bf090614110565b60006040518083038185875af1925050503d8060008114612c2d576040519150601f19603f3d011682016040523d82523d6000602084013e612c32565b606091505b505090508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612caf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca690614197565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1590614229565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9b906142bb565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612e379190613580565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612e9b9190613120565b60405180910390a350505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612ee3578082015181840152602081019050612ec8565b60008484015250505050565b6000601f19601f8301169050919050565b6000612f0b82612ea9565b612f158185612eb4565b9350612f25818560208601612ec5565b612f2e81612eef565b840191505092915050565b60006020820190508181036000830152612f538184612f00565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f8b82612f60565b9050919050565b612f9b81612f80565b8114612fa657600080fd5b50565b600081359050612fb881612f92565b92915050565b6000819050919050565b612fd181612fbe565b8114612fdc57600080fd5b50565b600081359050612fee81612fc8565b92915050565b6000806040838503121561300b5761300a612f5b565b5b600061301985828601612fa9565b925050602061302a85828601612fdf565b9150509250929050565b60008115159050919050565b61304981613034565b82525050565b60006020820190506130646000830184613040565b92915050565b6000602082840312156130805761307f612f5b565b5b600061308e84828501612fdf565b91505092915050565b6000819050919050565b60006130bc6130b76130b284612f60565b613097565b612f60565b9050919050565b60006130ce826130a1565b9050919050565b60006130e0826130c3565b9050919050565b6130f0816130d5565b82525050565b600060208201905061310b60008301846130e7565b92915050565b61311a81612fbe565b82525050565b60006020820190506131356000830184613111565b92915050565b61314481613034565b811461314f57600080fd5b50565b6000813590506131618161313b565b92915050565b60006020828403121561317d5761317c612f5b565b5b600061318b84828501613152565b91505092915050565b6000806000606084860312156131ad576131ac612f5b565b5b60006131bb86828701612fa9565b93505060206131cc86828701612fa9565b92505060406131dd86828701612fdf565b9150509250925092565b600060ff82169050919050565b6131fd816131e7565b82525050565b600060208201905061321860008301846131f4565b92915050565b61322781612f80565b82525050565b6000602082019050613242600083018461321e565b92915050565b60006020828403121561325e5761325d612f5b565b5b600061326c84828501612fa9565b91505092915050565b6000806040838503121561328c5761328b612f5b565b5b600061329a85828601612fa9565b92505060206132ab85828601613152565b9150509250929050565b600080604083850312156132cc576132cb612f5b565b5b60006132da85828601612fa9565b92505060206132eb85828601612fa9565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061333c57607f821691505b60208210810361334f5761334e6132f5565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061338b602083612eb4565b915061339682613355565b602082019050919050565b600060208201905081810360008301526133ba8161337e565b9050919050565b7f307841693a204e657720666565206d757374206265206c6f776572207468616e60008201527f206f6c6420666565210000000000000000000000000000000000000000000000602082015250565b600061341d602983612eb4565b9150613428826133c1565b604082019050919050565b6000602082019050818103600083015261344c81613410565b9050919050565b7f43757272656e746c79206174207468652073616d652073746167650000000000600082015250565b6000613489601b83612eb4565b915061349482613453565b602082019050919050565b600060208201905081810360008301526134b88161347c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061351b602883612eb4565b9150613526826134bf565b604082019050919050565b6000602082019050818103600083015261354a8161350e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061358b82612fbe565b915061359683612fbe565b92508282019050808211156135ae576135ad613551565b5b92915050565b7f4d61726b6574696e67204665652072656365697665722063616e6e6f7420626560008201527f20746865207a65726f206f722064656164206164647265737300000000000000602082015250565b6000613610603983612eb4565b915061361b826135b4565b604082019050919050565b6000602082019050818103600083015261363f81613603565b9050919050565b7f307841693a2074726164696e6720616c726561647920656e61626c6564210000600082015250565b600061367c601e83612eb4565b915061368782613646565b602082019050919050565b600060208201905081810360008301526136ab8161366f565b9050919050565b6000815190506136c181612f92565b92915050565b6000602082840312156136dd576136dc612f5b565b5b60006136eb848285016136b2565b91505092915050565b6000604082019050613709600083018561321e565b613716602083018461321e565b9392505050565b6000819050919050565b600061374261373d6137388461371d565b613097565b612fbe565b9050919050565b61375281613727565b82525050565b600060c08201905061376d600083018961321e565b61377a6020830188613111565b6137876040830187613749565b6137946060830186613749565b6137a1608083018561321e565b6137ae60a0830184613111565b979650505050505050565b6000815190506137c881612fc8565b92915050565b6000806000606084860312156137e7576137e6612f5b565b5b60006137f5868287016137b9565b9350506020613806868287016137b9565b9250506040613817868287016137b9565b9150509250925092565b6000604082019050613836600083018561321e565b6138436020830184613111565b9392505050565b6000815190506138598161313b565b92915050565b60006020828403121561387557613874612f5b565b5b60006138838482850161384a565b91505092915050565b60006040820190506138a16000830185613040565b6138ae6020830184613111565b9392505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613911602583612eb4565b915061391c826138b5565b604082019050919050565b6000602082019050818103600083015261394081613904565b9050919050565b7f307841693a204e6577206c696d6974206d75737420626520686967686572207460008201527f68616e206f6c6465722100000000000000000000000000000000000000000000602082015250565b60006139a3602a83612eb4565b91506139ae82613947565b604082019050919050565b600060208201905081810360008301526139d281613996565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613a35602683612eb4565b9150613a40826139d9565b604082019050919050565b60006020820190508181036000830152613a6481613a28565b9050919050565b7f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160008201527f6c616e6365206f6620697473206f776e20746f6b656e73000000000000000000602082015250565b6000613ac7603783612eb4565b9150613ad282613a6b565b604082019050919050565b60006020820190508181036000830152613af681613aba565b9050919050565b600060208284031215613b1357613b12612f5b565b5b6000613b21848285016137b9565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613b86602483612eb4565b9150613b9182613b2a565b604082019050919050565b60006020820190508181036000830152613bb581613b79565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c18602283612eb4565b9150613c2382613bbc565b604082019050919050565b60006020820190508181036000830152613c4781613c0b565b9050919050565b7f5472616e736665722066726f6d20746865207a65726f20616464726573730000600082015250565b6000613c84601e83612eb4565b9150613c8f82613c4e565b602082019050919050565b60006020820190508181036000830152613cb381613c77565b9050919050565b7f5472616e7366657220746f20746865207a65726f206164647265737300000000600082015250565b6000613cf0601c83612eb4565b9150613cfb82613cba565b602082019050919050565b60006020820190508181036000830152613d1f81613ce3565b9050919050565b7f54726164696e67206e6f742079657420656e61626c6564210000000000000000600082015250565b6000613d5c601883612eb4565b9150613d6782613d26565b602082019050919050565b60006020820190508181036000830152613d8b81613d4f565b9050919050565b6000613d9d82612fbe565b9150613da883612fbe565b9250828202613db681612fbe565b91508282048414831517613dcd57613dcc613551565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613e0e82612fbe565b9150613e1983612fbe565b925082613e2957613e28613dd4565b5b828204905092915050565b6000613e3f82612fbe565b9150613e4a83612fbe565b9250828203905081811115613e6257613e61613551565b5b92915050565b7f4d6178696d756d2077616c6c65742073697a6520657863656564656421000000600082015250565b6000613e9e601d83612eb4565b9150613ea982613e68565b602082019050919050565b60006020820190508181036000830152613ecd81613e91565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613f6781612f80565b82525050565b6000613f798383613f5e565b60208301905092915050565b6000602082019050919050565b6000613f9d82613f32565b613fa78185613f3d565b9350613fb283613f4e565b8060005b83811015613fe3578151613fca8882613f6d565b9750613fd583613f85565b925050600181019050613fb6565b5085935050505092915050565b600060a0820190506140056000830188613111565b6140126020830187613749565b81810360408301526140248186613f92565b9050614033606083018561321e565b6140406080830184613111565b9695505050505050565b600060408201905061405f6000830185613111565b61406c6020830184613111565b9392505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b60006140a9601d83612eb4565b91506140b482614073565b602082019050919050565b600060208201905081810360008301526140d88161409c565b9050919050565b600081905092915050565b50565b60006140fa6000836140df565b9150614105826140ea565b600082019050919050565b600061411b826140ed565b9150819050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614181602583612eb4565b915061418c82614125565b604082019050919050565b600060208201905081810360008301526141b081614174565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614213602383612eb4565b915061421e826141b7565b604082019050919050565b6000602082019050818103600083015261424281614206565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006142a5602683612eb4565b91506142b082614249565b604082019050919050565b600060208201905081810360008301526142d481614298565b905091905056fea2646970667358221220100f71edd4eac6e821c9684dd5ee167f636de76873974617802f0e6492f0f57e64736f6c63430008130033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000008d8943752ace652ae81caf4d5b51384665def6cb000000000000000000000000000000000000000002e87669c308736a04000000

-----Decoded View---------------
Arg [0] : _router (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [1] : _feeReceiver (address): 0x8D8943752aCE652aE81caf4d5B51384665dEF6cB
Arg [2] : _initalLiquidity (uint256): 900000000000000000000000000

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [1] : 0000000000000000000000008d8943752ace652ae81caf4d5b51384665def6cb
Arg [2] : 000000000000000000000000000000000000000002e87669c308736a04000000


Deployed Bytecode Sourcemap

8426:7628:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4031:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5007:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15393:223;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8510:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4348:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14327:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5209:622;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4251:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5839:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8558:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8806:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11134:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8841:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8776:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8698:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4464:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3183:148;;;;;;;;;;;;;:::i;:::-;;11268:433;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11787:779;;;;;;;;;;;;;:::i;:::-;;2969:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8913:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4139:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15878:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6137:475;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4615:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8875:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10915:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4823:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15228:157;;;;;;;;;;;;;:::i;:::-;;15624:246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8656:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3339:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10440:467;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4031:100;4085:13;4118:5;4111:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4031:100;:::o;5007:194::-;5115:4;5132:39;5141:12;:10;:12::i;:::-;5155:7;5164:6;5132:8;:39::i;:::-;5189:4;5182:11;;5007:194;;;;:::o;15393:223::-;3106:12;:10;:12::i;:::-;3096:22;;:6;;;;;;;;;;;:22;;;3088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15477:12:::1;;15467:7;:22;15459:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;15563:7;15548:12;:22;;;;15588:20;15600:7;15588:20;;;;;;:::i;:::-;;;;;;;;15393:223:::0;:::o;8510:41::-;;;;;;;;;;;;;:::o;4348:108::-;4409:7;4436:12;;4429:19;;4348:108;:::o;14327:228::-;3106:12;:10;:12::i;:::-;3096:22;;:6;;;;;;;;;;;:22;;;3088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14423:12:::1;14408:27;;:11;;;;;;;;;;;:27;;::::0;14400:67:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14492:12;14478:11;;:26;;;;;;;;;;;;;;;;;;14520:27;14535:11;;;;;;;;;;;14520:27;;;;;;:::i;:::-;;;;;;;;14327:228:::0;:::o;5209:622::-;5349:4;5366:24;5393:11;:19;5405:6;5393:19;;;;;;;;;;;;;;;:33;5413:12;:10;:12::i;:::-;5393:33;;;;;;;;;;;;;;;;5366:60;;5461:17;5441:16;:37;5437:314;;5541:6;5521:16;:26;;5495:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;5667:57;5676:6;5684:12;:10;:12::i;:::-;5717:6;5698:16;:25;5667:8;:57::i;:::-;5437:314;5763:36;5773:6;5781:9;5792:6;5763:9;:36::i;:::-;5819:4;5812:11;;;5209:622;;;;;:::o;4251:93::-;4309:5;4334:2;4327:9;;4251:93;:::o;5839:290::-;5952:4;5969:130;5992:12;:10;:12::i;:::-;6019:7;6078:10;6041:11;:25;6053:12;:10;:12::i;:::-;6041:25;;;;;;;;;;;;;;;:34;6067:7;6041:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;5969:8;:130::i;:::-;6117:4;6110:11;;5839:290;;;;:::o;8558:28::-;;;;;;;;;;;;;:::o;8806:26::-;;;;;;;;;;;;;:::o;11134:126::-;11200:4;11224:19;:28;11244:7;11224:28;;;;;;;;;;;;;;;;;;;;;;;;;11217:35;;11134:126;;;:::o;8841:27::-;;;;:::o;8776:23::-;;;;;;;;;;;;;:::o;8698:33::-;;;;:::o;4464:143::-;4554:7;4581:9;:18;4591:7;4581:18;;;;;;;;;;;;;;;;4574:25;;4464:143;;;:::o;3183:148::-;3106:12;:10;:12::i;:::-;3096:22;;:6;;;;;;;;;;;:22;;;3088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3290:1:::1;3253:40;;3274:6;;;;;;;;;;;3253:40;;;;;;;;;;;;3321:1;3304:6;;:19;;;;;;;;;;;;;;;;;;3183:148::o:0;11268:433::-;3106:12;:10;:12::i;:::-;3096:22;;:6;;;;;;;;;;;:22;;;3088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11427:1:::1;11394:35;;:21;:35;;;;:92;;;;;11479:6;11446:40;;:21;:40;;;;11394:92;11372:199;;;;;;;;;;;;:::i;:::-;;;;;;;;;11605:21;11582:20;;:44;;;;;;;;;;;;;;;;;;11644:49;11672:20;;;;;;;;;;;11644:49;;;;;;:::i;:::-;;;;;;;;11268:433:::0;:::o;11787:779::-;3106:12;:10;:12::i;:::-;3096:22;;:6;;;;;;;;;;;:22;;;3088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11868:5:::1;11850:23;;:14;;;;;;;;;;;:23;;;11842:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;11919:68;11936:4;11951:15;;;;;;;;;;;11969:17;11919:8;:68::i;:::-;12032:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12014:55;;;12078:4;12085:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12014:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11998:13;;:110;;;;;;;;;;;;;;;;;;12119:15;;;;;;;;;;;:31;;;12158:21;12189:4;12195:24;12213:4;12195:9;:24::i;:::-;12220:1;12222::::0;12224:7:::1;:5;:7::i;:::-;12232:15;12119:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12266:13;;;;;;;;;;;12259:29;;;12297:15;;;;;;;;;;;12315:14;12259:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12358:4;12341:14;;:21;;;;;;;;;;;;;;;;;;12387:4;12373:11;;:18;;;;;;;;;;;;;;;;;;12423:15;12402:18;:36;;;;12486:4;12449:19;:34;12469:13;;;;;;;;;;;12449:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;12508:50;12523:14;;;;;;;;;;;12539:18;;12508:50;;;;;;;:::i;:::-;;;;;;;;11787:779::o:0;2969:79::-;3007:7;3034:6;;;;;;;;;;;3027:13;;2969:79;:::o;8913:28::-;;;;:::o;4139:104::-;4195:13;4228:7;4221:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4139:104;:::o;15878:173::-;3106:12;:10;:12::i;:::-;3096:22;;:6;;;;;;;;;;;:22;;;3088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15974:13:::1;15955:16;:32;;;;16005:38;16029:13;16005:38;;;;;;:::i;:::-;;;;;;;;15878:173:::0;:::o;6137:475::-;6255:4;6272:24;6299:11;:25;6311:12;:10;:12::i;:::-;6299:25;;;;;;;;;;;;;;;:34;6325:7;6299:34;;;;;;;;;;;;;;;;6272:61;;6386:15;6366:16;:35;;6344:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;6502:67;6511:12;:10;:12::i;:::-;6525:7;6553:15;6534:16;:34;6502:8;:67::i;:::-;6600:4;6593:11;;;6137:475;;;;:::o;4615:200::-;4726:4;4743:42;4753:12;:10;:12::i;:::-;4767:9;4778:6;4743:9;:42::i;:::-;4803:4;4796:11;;4615:200;;;;:::o;8875:31::-;;;;:::o;10915:211::-;3106:12;:10;:12::i;:::-;3096:22;;:6;;;;;;;;;;;:22;;;3088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11058:8:::1;11027:19;:28;11047:7;11027:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;11100:7;11084:34;;;11109:8;11084:34;;;;;;:::i;:::-;;;;;;;;10915:211:::0;;:::o;4823:176::-;4937:7;4964:11;:18;4976:5;4964:18;;;;;;;;;;;;;;;:27;4983:7;4964:27;;;;;;;;;;;;;;;;4957:34;;4823:176;;;;:::o;15228:157::-;3106:12;:10;:12::i;:::-;3096:22;;:6;;;;;;;;;;;:22;;;3088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15278:23:::1;15304:24;15322:4;15304:9;:24::i;:::-;15278:50;;15339:38;15361:15;15339:21;:38::i;:::-;15267:118;15228:157::o:0;15624:246::-;3106:12;:10;:12::i;:::-;3096:22;;:6;;;;;;;;;;;:22;;;3088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15716:13:::1;;15704:9;:25;15696:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;15805:9;15789:13;:25;;;;15832:30;15852:9;15832:30;;;;;;:::i;:::-;;;;;;;;15624:246:::0;:::o;8656:35::-;;;;;;;;;;;;;:::o;3339:281::-;3106:12;:10;:12::i;:::-;3096:22;;:6;;;;;;;;;;;:22;;;3088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3462:1:::1;3442:22;;:8;:22;;::::0;3420:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3575:8;3546:38;;3567:6;;;;;;;;;;;3546:38;;;;;;;;;;;;3604:8;3595:6;;:17;;;;;;;;;;;;;;;;;;3339:281:::0;:::o;10440:467::-;3106:12;:10;:12::i;:::-;3096:22;;:6;;;;;;;;;;;:22;;;3088:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10550:4:::1;10533:22;;:5;:22;;::::0;10511:127:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10670:3;10653:21;;:5;:21;;::::0;10649:127:::1;;10691:52;10721:21;10699:10;10691:29;;;;:52;;;;:::i;:::-;;10758:7;;10649:127;10795:5;10788:22;;;10825:10;10857:5;10850:23;;;10882:4;10850:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10788:111;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3166:1;10440:467:::0;:::o;2511:98::-;2564:7;2591:10;2584:17;;2511:98;:::o;8039:380::-;8192:1;8175:19;;:5;:19;;;8167:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8273:1;8254:21;;:7;:21;;;8246:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8357:6;8327:11;:18;8339:5;8327:18;;;;;;;;;;;;;;;:27;8346:7;8327:27;;;;;;;;;;;;;;;:36;;;;8395:7;8379:32;;8388:5;8379:32;;;8404:6;8379:32;;;;;;:::i;:::-;;;;;;;;8039:380;;;:::o;12574:1745::-;12722:1;12706:18;;:4;:18;;;12698:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;12792:1;12778:16;;:2;:16;;;12770:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;12846:14;;;;;;;;;;;:61;;;;12882:19;:25;12902:4;12882:25;;;;;;;;;;;;;;;;;;;;;;;;;12846:61;:106;;;;12929:19;:23;12949:2;12929:23;;;;;;;;;;;;;;;;;;;;;;;;;12846:106;12838:166;;;;;;;;;;;;:::i;:::-;;;;;;;;;13031:1;13021:6;:11;13017:93;;13049:28;13065:4;13071:2;13075:1;13049:15;:28::i;:::-;13092:7;;13017:93;13122:28;13153:24;13171:4;13153:9;:24::i;:::-;13122:55;;13190:18;13223:19;:25;13243:4;13223:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;;13252:19;:23;13272:2;13252:23;;;;;;;;;;;;;;;;;;;;;;;;;13223:52;:72;;;;;13279:16;;;;;;;;;;;13223:72;13219:292;;;13325:1;13312:14;;13219:292;;;13356:13;;;;;;;;;;;13348:21;;:4;:21;;;:62;;;;13379:13;;;;;;;;;;;13373:19;;:2;:19;;;:37;;;;;13396:14;;;;;;;;;;;13373:37;13348:62;13344:167;;;13440:12;;13427:25;;13344:167;;;13498:1;13485:14;;13344:167;13219:292;13540:1;13527:10;:14;13523:183;;;13558:12;13597:3;13583:10;13574:6;:19;;;;:::i;:::-;13573:27;;;;:::i;:::-;13558:42;;13633:4;13624:6;:13;;;;:::i;:::-;13615:22;;13652:42;13668:4;13682;13689;13652:15;:42::i;:::-;13543:163;13523:183;13727:13;;;;;;;;;;;13721:19;;:2;:19;;;13718:310;;13784:16;;13761:20;:39;:60;;;;;13805:16;;;;;;;;;;;13804:17;13761:60;:75;;;;;13825:11;;;;;;;;;;;13761:75;13757:260;;;13876:4;13857:16;;:23;;;;;;;;;;;;;;;;;;13901:39;13923:16;;13901:21;:39::i;:::-;13996:5;13977:16;;:24;;;;;;;;;;;;;;;;;;13757:260;13718:310;14043:14;;;;;;;;;;;:42;;;;;14062:19;:23;14082:2;14062:23;;;;;;;;;;;;;;;;;;;;;;;;;14061:24;14043:42;:63;;;;;14090:16;;;;;;;;;;;14089:17;14043:63;14040:226;;;14123:20;14146:13;14156:2;14146:9;:13::i;:::-;14123:36;;14207:13;;14197:6;14182:12;:21;;;;:::i;:::-;:38;;14174:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;14108:158;14040:226;14278:33;14294:4;14300:2;14304:6;14278:15;:33::i;:::-;12687:1632;;12574:1745;;;;:::o;14563:657::-;14634:22;14659:21;14634:46;;14693:21;14731:1;14717:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14693:40;;14762:4;14744;14749:1;14744:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;14788:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14778:4;14783:1;14778:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;14823:15;;;;;;;;;;;:66;;;14904:11;14930:1;14946:4;14973;14993:15;14823:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15032:18;15077:14;15053:21;:38;;;;:::i;:::-;15032:59;;15104:51;15144:10;15112:20;;;;;;;;;;;15104:39;;;;:51;;;;:::i;:::-;;15173:39;15188:11;15201:10;15173:39;;;;;;;:::i;:::-;;;;;;;;14623:597;;;14563:657;:::o;2122:349::-;2227:4;2291:6;2266:21;:31;;2244:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;2368:12;2386:9;:14;;2408:6;2386:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2367:52;;;2437:7;2430:14;;;2122:349;;;;:::o;6620:651::-;6778:1;6760:20;;:6;:20;;;6752:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6862:1;6841:23;;:9;:23;;;6833:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6917:21;6941:9;:17;6951:6;6941:17;;;;;;;;;;;;;;;;6917:41;;7008:6;6991:13;:23;;6969:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;7152:6;7136:13;:22;7116:9;:17;7126:6;7116:17;;;;;;;;;;;;;;;:42;;;;7204:6;7180:9;:20;7190:9;7180:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;7245:9;7228:35;;7237:6;7228:35;;;7256:6;7228:35;;;;;;:::i;:::-;;;;;;;;6741:530;6620:651;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:151::-;4202:9;4235:37;4266:5;4235:37;:::i;:::-;4222:50;;4127:151;;;:::o;4284:181::-;4396:62;4452:5;4396:62;:::i;:::-;4391:3;4384:75;4284:181;;:::o;4471:272::-;4589:4;4627:2;4616:9;4612:18;4604:26;;4640:96;4733:1;4722:9;4718:17;4709:6;4640:96;:::i;:::-;4471:272;;;;:::o;4749:118::-;4836:24;4854:5;4836:24;:::i;:::-;4831:3;4824:37;4749:118;;:::o;4873:222::-;4966:4;5004:2;4993:9;4989:18;4981:26;;5017:71;5085:1;5074:9;5070:17;5061:6;5017:71;:::i;:::-;4873:222;;;;:::o;5101:116::-;5171:21;5186:5;5171:21;:::i;:::-;5164:5;5161:32;5151:60;;5207:1;5204;5197:12;5151:60;5101:116;:::o;5223:133::-;5266:5;5304:6;5291:20;5282:29;;5320:30;5344:5;5320:30;:::i;:::-;5223:133;;;;:::o;5362:323::-;5418:6;5467:2;5455:9;5446:7;5442:23;5438:32;5435:119;;;5473:79;;:::i;:::-;5435:119;5593:1;5618:50;5660:7;5651:6;5640:9;5636:22;5618:50;:::i;:::-;5608:60;;5564:114;5362:323;;;;:::o;5691:619::-;5768:6;5776;5784;5833:2;5821:9;5812:7;5808:23;5804:32;5801:119;;;5839:79;;:::i;:::-;5801:119;5959:1;5984:53;6029:7;6020:6;6009:9;6005:22;5984:53;:::i;:::-;5974:63;;5930:117;6086:2;6112:53;6157:7;6148:6;6137:9;6133:22;6112:53;:::i;:::-;6102:63;;6057:118;6214:2;6240:53;6285:7;6276:6;6265:9;6261:22;6240:53;:::i;:::-;6230:63;;6185:118;5691:619;;;;;:::o;6316:86::-;6351:7;6391:4;6384:5;6380:16;6369:27;;6316:86;;;:::o;6408:112::-;6491:22;6507:5;6491:22;:::i;:::-;6486:3;6479:35;6408:112;;:::o;6526:214::-;6615:4;6653:2;6642:9;6638:18;6630:26;;6666:67;6730:1;6719:9;6715:17;6706:6;6666:67;:::i;:::-;6526:214;;;;:::o;6746:118::-;6833:24;6851:5;6833:24;:::i;:::-;6828:3;6821:37;6746:118;;:::o;6870:222::-;6963:4;7001:2;6990:9;6986:18;6978:26;;7014:71;7082:1;7071:9;7067:17;7058:6;7014:71;:::i;:::-;6870:222;;;;:::o;7098:329::-;7157:6;7206:2;7194:9;7185:7;7181:23;7177:32;7174:119;;;7212:79;;:::i;:::-;7174:119;7332:1;7357:53;7402:7;7393:6;7382:9;7378:22;7357:53;:::i;:::-;7347:63;;7303:117;7098:329;;;;:::o;7433:468::-;7498:6;7506;7555:2;7543:9;7534:7;7530:23;7526:32;7523:119;;;7561:79;;:::i;:::-;7523:119;7681:1;7706:53;7751:7;7742:6;7731:9;7727:22;7706:53;:::i;:::-;7696:63;;7652:117;7808:2;7834:50;7876:7;7867:6;7856:9;7852:22;7834:50;:::i;:::-;7824:60;;7779:115;7433:468;;;;;:::o;7907:474::-;7975:6;7983;8032:2;8020:9;8011:7;8007:23;8003:32;8000:119;;;8038:79;;:::i;:::-;8000:119;8158:1;8183:53;8228:7;8219:6;8208:9;8204:22;8183:53;:::i;:::-;8173:63;;8129:117;8285:2;8311:53;8356:7;8347:6;8336:9;8332:22;8311:53;:::i;:::-;8301:63;;8256:118;7907:474;;;;;:::o;8387:180::-;8435:77;8432:1;8425:88;8532:4;8529:1;8522:15;8556:4;8553:1;8546:15;8573:320;8617:6;8654:1;8648:4;8644:12;8634:22;;8701:1;8695:4;8691:12;8722:18;8712:81;;8778:4;8770:6;8766:17;8756:27;;8712:81;8840:2;8832:6;8829:14;8809:18;8806:38;8803:84;;8859:18;;:::i;:::-;8803:84;8624:269;8573:320;;;:::o;8899:182::-;9039:34;9035:1;9027:6;9023:14;9016:58;8899:182;:::o;9087:366::-;9229:3;9250:67;9314:2;9309:3;9250:67;:::i;:::-;9243:74;;9326:93;9415:3;9326:93;:::i;:::-;9444:2;9439:3;9435:12;9428:19;;9087:366;;;:::o;9459:419::-;9625:4;9663:2;9652:9;9648:18;9640:26;;9712:9;9706:4;9702:20;9698:1;9687:9;9683:17;9676:47;9740:131;9866:4;9740:131;:::i;:::-;9732:139;;9459:419;;;:::o;9884:228::-;10024:34;10020:1;10012:6;10008:14;10001:58;10093:11;10088:2;10080:6;10076:15;10069:36;9884:228;:::o;10118:366::-;10260:3;10281:67;10345:2;10340:3;10281:67;:::i;:::-;10274:74;;10357:93;10446:3;10357:93;:::i;:::-;10475:2;10470:3;10466:12;10459:19;;10118:366;;;:::o;10490:419::-;10656:4;10694:2;10683:9;10679:18;10671:26;;10743:9;10737:4;10733:20;10729:1;10718:9;10714:17;10707:47;10771:131;10897:4;10771:131;:::i;:::-;10763:139;;10490:419;;;:::o;10915:177::-;11055:29;11051:1;11043:6;11039:14;11032:53;10915:177;:::o;11098:366::-;11240:3;11261:67;11325:2;11320:3;11261:67;:::i;:::-;11254:74;;11337:93;11426:3;11337:93;:::i;:::-;11455:2;11450:3;11446:12;11439:19;;11098:366;;;:::o;11470:419::-;11636:4;11674:2;11663:9;11659:18;11651:26;;11723:9;11717:4;11713:20;11709:1;11698:9;11694:17;11687:47;11751:131;11877:4;11751:131;:::i;:::-;11743:139;;11470:419;;;:::o;11895:227::-;12035:34;12031:1;12023:6;12019:14;12012:58;12104:10;12099:2;12091:6;12087:15;12080:35;11895:227;:::o;12128:366::-;12270:3;12291:67;12355:2;12350:3;12291:67;:::i;:::-;12284:74;;12367:93;12456:3;12367:93;:::i;:::-;12485:2;12480:3;12476:12;12469:19;;12128:366;;;:::o;12500:419::-;12666:4;12704:2;12693:9;12689:18;12681:26;;12753:9;12747:4;12743:20;12739:1;12728:9;12724:17;12717:47;12781:131;12907:4;12781:131;:::i;:::-;12773:139;;12500:419;;;:::o;12925:180::-;12973:77;12970:1;12963:88;13070:4;13067:1;13060:15;13094:4;13091:1;13084:15;13111:191;13151:3;13170:20;13188:1;13170:20;:::i;:::-;13165:25;;13204:20;13222:1;13204:20;:::i;:::-;13199:25;;13247:1;13244;13240:9;13233:16;;13268:3;13265:1;13262:10;13259:36;;;13275:18;;:::i;:::-;13259:36;13111:191;;;;:::o;13308:244::-;13448:34;13444:1;13436:6;13432:14;13425:58;13517:27;13512:2;13504:6;13500:15;13493:52;13308:244;:::o;13558:366::-;13700:3;13721:67;13785:2;13780:3;13721:67;:::i;:::-;13714:74;;13797:93;13886:3;13797:93;:::i;:::-;13915:2;13910:3;13906:12;13899:19;;13558:366;;;:::o;13930:419::-;14096:4;14134:2;14123:9;14119:18;14111:26;;14183:9;14177:4;14173:20;14169:1;14158:9;14154:17;14147:47;14211:131;14337:4;14211:131;:::i;:::-;14203:139;;13930:419;;;:::o;14355:180::-;14495:32;14491:1;14483:6;14479:14;14472:56;14355:180;:::o;14541:366::-;14683:3;14704:67;14768:2;14763:3;14704:67;:::i;:::-;14697:74;;14780:93;14869:3;14780:93;:::i;:::-;14898:2;14893:3;14889:12;14882:19;;14541:366;;;:::o;14913:419::-;15079:4;15117:2;15106:9;15102:18;15094:26;;15166:9;15160:4;15156:20;15152:1;15141:9;15137:17;15130:47;15194:131;15320:4;15194:131;:::i;:::-;15186:139;;14913:419;;;:::o;15338:143::-;15395:5;15426:6;15420:13;15411:22;;15442:33;15469:5;15442:33;:::i;:::-;15338:143;;;;:::o;15487:351::-;15557:6;15606:2;15594:9;15585:7;15581:23;15577:32;15574:119;;;15612:79;;:::i;:::-;15574:119;15732:1;15757:64;15813:7;15804:6;15793:9;15789:22;15757:64;:::i;:::-;15747:74;;15703:128;15487:351;;;;:::o;15844:332::-;15965:4;16003:2;15992:9;15988:18;15980:26;;16016:71;16084:1;16073:9;16069:17;16060:6;16016:71;:::i;:::-;16097:72;16165:2;16154:9;16150:18;16141:6;16097:72;:::i;:::-;15844:332;;;;;:::o;16182:85::-;16227:7;16256:5;16245:16;;16182:85;;;:::o;16273:158::-;16331:9;16364:61;16382:42;16391:32;16417:5;16391:32;:::i;:::-;16382:42;:::i;:::-;16364:61;:::i;:::-;16351:74;;16273:158;;;:::o;16437:147::-;16532:45;16571:5;16532:45;:::i;:::-;16527:3;16520:58;16437:147;;:::o;16590:807::-;16839:4;16877:3;16866:9;16862:19;16854:27;;16891:71;16959:1;16948:9;16944:17;16935:6;16891:71;:::i;:::-;16972:72;17040:2;17029:9;17025:18;17016:6;16972:72;:::i;:::-;17054:80;17130:2;17119:9;17115:18;17106:6;17054:80;:::i;:::-;17144;17220:2;17209:9;17205:18;17196:6;17144:80;:::i;:::-;17234:73;17302:3;17291:9;17287:19;17278:6;17234:73;:::i;:::-;17317;17385:3;17374:9;17370:19;17361:6;17317:73;:::i;:::-;16590:807;;;;;;;;;:::o;17403:143::-;17460:5;17491:6;17485:13;17476:22;;17507:33;17534:5;17507:33;:::i;:::-;17403:143;;;;:::o;17552:663::-;17640:6;17648;17656;17705:2;17693:9;17684:7;17680:23;17676:32;17673:119;;;17711:79;;:::i;:::-;17673:119;17831:1;17856:64;17912:7;17903:6;17892:9;17888:22;17856:64;:::i;:::-;17846:74;;17802:128;17969:2;17995:64;18051:7;18042:6;18031:9;18027:22;17995:64;:::i;:::-;17985:74;;17940:129;18108:2;18134:64;18190:7;18181:6;18170:9;18166:22;18134:64;:::i;:::-;18124:74;;18079:129;17552:663;;;;;:::o;18221:332::-;18342:4;18380:2;18369:9;18365:18;18357:26;;18393:71;18461:1;18450:9;18446:17;18437:6;18393:71;:::i;:::-;18474:72;18542:2;18531:9;18527:18;18518:6;18474:72;:::i;:::-;18221:332;;;;;:::o;18559:137::-;18613:5;18644:6;18638:13;18629:22;;18660:30;18684:5;18660:30;:::i;:::-;18559:137;;;;:::o;18702:345::-;18769:6;18818:2;18806:9;18797:7;18793:23;18789:32;18786:119;;;18824:79;;:::i;:::-;18786:119;18944:1;18969:61;19022:7;19013:6;19002:9;18998:22;18969:61;:::i;:::-;18959:71;;18915:125;18702:345;;;;:::o;19053:320::-;19168:4;19206:2;19195:9;19191:18;19183:26;;19219:65;19281:1;19270:9;19266:17;19257:6;19219:65;:::i;:::-;19294:72;19362:2;19351:9;19347:18;19338:6;19294:72;:::i;:::-;19053:320;;;;;:::o;19379:224::-;19519:34;19515:1;19507:6;19503:14;19496:58;19588:7;19583:2;19575:6;19571:15;19564:32;19379:224;:::o;19609:366::-;19751:3;19772:67;19836:2;19831:3;19772:67;:::i;:::-;19765:74;;19848:93;19937:3;19848:93;:::i;:::-;19966:2;19961:3;19957:12;19950:19;;19609:366;;;:::o;19981:419::-;20147:4;20185:2;20174:9;20170:18;20162:26;;20234:9;20228:4;20224:20;20220:1;20209:9;20205:17;20198:47;20262:131;20388:4;20262:131;:::i;:::-;20254:139;;19981:419;;;:::o;20406:229::-;20546:34;20542:1;20534:6;20530:14;20523:58;20615:12;20610:2;20602:6;20598:15;20591:37;20406:229;:::o;20641:366::-;20783:3;20804:67;20868:2;20863:3;20804:67;:::i;:::-;20797:74;;20880:93;20969:3;20880:93;:::i;:::-;20998:2;20993:3;20989:12;20982:19;;20641:366;;;:::o;21013:419::-;21179:4;21217:2;21206:9;21202:18;21194:26;;21266:9;21260:4;21256:20;21252:1;21241:9;21237:17;21230:47;21294:131;21420:4;21294:131;:::i;:::-;21286:139;;21013:419;;;:::o;21438:225::-;21578:34;21574:1;21566:6;21562:14;21555:58;21647:8;21642:2;21634:6;21630:15;21623:33;21438:225;:::o;21669:366::-;21811:3;21832:67;21896:2;21891:3;21832:67;:::i;:::-;21825:74;;21908:93;21997:3;21908:93;:::i;:::-;22026:2;22021:3;22017:12;22010:19;;21669:366;;;:::o;22041:419::-;22207:4;22245:2;22234:9;22230:18;22222:26;;22294:9;22288:4;22284:20;22280:1;22269:9;22265:17;22258:47;22322:131;22448:4;22322:131;:::i;:::-;22314:139;;22041:419;;;:::o;22466:242::-;22606:34;22602:1;22594:6;22590:14;22583:58;22675:25;22670:2;22662:6;22658:15;22651:50;22466:242;:::o;22714:366::-;22856:3;22877:67;22941:2;22936:3;22877:67;:::i;:::-;22870:74;;22953:93;23042:3;22953:93;:::i;:::-;23071:2;23066:3;23062:12;23055:19;;22714:366;;;:::o;23086:419::-;23252:4;23290:2;23279:9;23275:18;23267:26;;23339:9;23333:4;23329:20;23325:1;23314:9;23310:17;23303:47;23367:131;23493:4;23367:131;:::i;:::-;23359:139;;23086:419;;;:::o;23511:351::-;23581:6;23630:2;23618:9;23609:7;23605:23;23601:32;23598:119;;;23636:79;;:::i;:::-;23598:119;23756:1;23781:64;23837:7;23828:6;23817:9;23813:22;23781:64;:::i;:::-;23771:74;;23727:128;23511:351;;;;:::o;23868:223::-;24008:34;24004:1;23996:6;23992:14;23985:58;24077:6;24072:2;24064:6;24060:15;24053:31;23868:223;:::o;24097:366::-;24239:3;24260:67;24324:2;24319:3;24260:67;:::i;:::-;24253:74;;24336:93;24425:3;24336:93;:::i;:::-;24454:2;24449:3;24445:12;24438:19;;24097:366;;;:::o;24469:419::-;24635:4;24673:2;24662:9;24658:18;24650:26;;24722:9;24716:4;24712:20;24708:1;24697:9;24693:17;24686:47;24750:131;24876:4;24750:131;:::i;:::-;24742:139;;24469:419;;;:::o;24894:221::-;25034:34;25030:1;25022:6;25018:14;25011:58;25103:4;25098:2;25090:6;25086:15;25079:29;24894:221;:::o;25121:366::-;25263:3;25284:67;25348:2;25343:3;25284:67;:::i;:::-;25277:74;;25360:93;25449:3;25360:93;:::i;:::-;25478:2;25473:3;25469:12;25462:19;;25121:366;;;:::o;25493:419::-;25659:4;25697:2;25686:9;25682:18;25674:26;;25746:9;25740:4;25736:20;25732:1;25721:9;25717:17;25710:47;25774:131;25900:4;25774:131;:::i;:::-;25766:139;;25493:419;;;:::o;25918:180::-;26058:32;26054:1;26046:6;26042:14;26035:56;25918:180;:::o;26104:366::-;26246:3;26267:67;26331:2;26326:3;26267:67;:::i;:::-;26260:74;;26343:93;26432:3;26343:93;:::i;:::-;26461:2;26456:3;26452:12;26445:19;;26104:366;;;:::o;26476:419::-;26642:4;26680:2;26669:9;26665:18;26657:26;;26729:9;26723:4;26719:20;26715:1;26704:9;26700:17;26693:47;26757:131;26883:4;26757:131;:::i;:::-;26749:139;;26476:419;;;:::o;26901:178::-;27041:30;27037:1;27029:6;27025:14;27018:54;26901:178;:::o;27085:366::-;27227:3;27248:67;27312:2;27307:3;27248:67;:::i;:::-;27241:74;;27324:93;27413:3;27324:93;:::i;:::-;27442:2;27437:3;27433:12;27426:19;;27085:366;;;:::o;27457:419::-;27623:4;27661:2;27650:9;27646:18;27638:26;;27710:9;27704:4;27700:20;27696:1;27685:9;27681:17;27674:47;27738:131;27864:4;27738:131;:::i;:::-;27730:139;;27457:419;;;:::o;27882:174::-;28022:26;28018:1;28010:6;28006:14;27999:50;27882:174;:::o;28062:366::-;28204:3;28225:67;28289:2;28284:3;28225:67;:::i;:::-;28218:74;;28301:93;28390:3;28301:93;:::i;:::-;28419:2;28414:3;28410:12;28403:19;;28062:366;;;:::o;28434:419::-;28600:4;28638:2;28627:9;28623:18;28615:26;;28687:9;28681:4;28677:20;28673:1;28662:9;28658:17;28651:47;28715:131;28841:4;28715:131;:::i;:::-;28707:139;;28434:419;;;:::o;28859:410::-;28899:7;28922:20;28940:1;28922:20;:::i;:::-;28917:25;;28956:20;28974:1;28956:20;:::i;:::-;28951:25;;29011:1;29008;29004:9;29033:30;29051:11;29033:30;:::i;:::-;29022:41;;29212:1;29203:7;29199:15;29196:1;29193:22;29173:1;29166:9;29146:83;29123:139;;29242:18;;:::i;:::-;29123:139;28907:362;28859:410;;;;:::o;29275:180::-;29323:77;29320:1;29313:88;29420:4;29417:1;29410:15;29444:4;29441:1;29434:15;29461:185;29501:1;29518:20;29536:1;29518:20;:::i;:::-;29513:25;;29552:20;29570:1;29552:20;:::i;:::-;29547:25;;29591:1;29581:35;;29596:18;;:::i;:::-;29581:35;29638:1;29635;29631:9;29626:14;;29461:185;;;;:::o;29652:194::-;29692:4;29712:20;29730:1;29712:20;:::i;:::-;29707:25;;29746:20;29764:1;29746:20;:::i;:::-;29741:25;;29790:1;29787;29783:9;29775:17;;29814:1;29808:4;29805:11;29802:37;;;29819:18;;:::i;:::-;29802:37;29652:194;;;;:::o;29852:179::-;29992:31;29988:1;29980:6;29976:14;29969:55;29852:179;:::o;30037:366::-;30179:3;30200:67;30264:2;30259:3;30200:67;:::i;:::-;30193:74;;30276:93;30365:3;30276:93;:::i;:::-;30394:2;30389:3;30385:12;30378:19;;30037:366;;;:::o;30409:419::-;30575:4;30613:2;30602:9;30598:18;30590:26;;30662:9;30656:4;30652:20;30648:1;30637:9;30633:17;30626:47;30690:131;30816:4;30690:131;:::i;:::-;30682:139;;30409:419;;;:::o;30834:180::-;30882:77;30879:1;30872:88;30979:4;30976:1;30969:15;31003:4;31000:1;30993:15;31020:180;31068:77;31065:1;31058:88;31165:4;31162:1;31155:15;31189:4;31186:1;31179:15;31206:114;31273:6;31307:5;31301:12;31291:22;;31206:114;;;:::o;31326:184::-;31425:11;31459:6;31454:3;31447:19;31499:4;31494:3;31490:14;31475:29;;31326:184;;;;:::o;31516:132::-;31583:4;31606:3;31598:11;;31636:4;31631:3;31627:14;31619:22;;31516:132;;;:::o;31654:108::-;31731:24;31749:5;31731:24;:::i;:::-;31726:3;31719:37;31654:108;;:::o;31768:179::-;31837:10;31858:46;31900:3;31892:6;31858:46;:::i;:::-;31936:4;31931:3;31927:14;31913:28;;31768:179;;;;:::o;31953:113::-;32023:4;32055;32050:3;32046:14;32038:22;;31953:113;;;:::o;32102:732::-;32221:3;32250:54;32298:5;32250:54;:::i;:::-;32320:86;32399:6;32394:3;32320:86;:::i;:::-;32313:93;;32430:56;32480:5;32430:56;:::i;:::-;32509:7;32540:1;32525:284;32550:6;32547:1;32544:13;32525:284;;;32626:6;32620:13;32653:63;32712:3;32697:13;32653:63;:::i;:::-;32646:70;;32739:60;32792:6;32739:60;:::i;:::-;32729:70;;32585:224;32572:1;32569;32565:9;32560:14;;32525:284;;;32529:14;32825:3;32818:10;;32226:608;;;32102:732;;;;:::o;32840:831::-;33103:4;33141:3;33130:9;33126:19;33118:27;;33155:71;33223:1;33212:9;33208:17;33199:6;33155:71;:::i;:::-;33236:80;33312:2;33301:9;33297:18;33288:6;33236:80;:::i;:::-;33363:9;33357:4;33353:20;33348:2;33337:9;33333:18;33326:48;33391:108;33494:4;33485:6;33391:108;:::i;:::-;33383:116;;33509:72;33577:2;33566:9;33562:18;33553:6;33509:72;:::i;:::-;33591:73;33659:3;33648:9;33644:19;33635:6;33591:73;:::i;:::-;32840:831;;;;;;;;:::o;33677:332::-;33798:4;33836:2;33825:9;33821:18;33813:26;;33849:71;33917:1;33906:9;33902:17;33893:6;33849:71;:::i;:::-;33930:72;33998:2;33987:9;33983:18;33974:6;33930:72;:::i;:::-;33677:332;;;;;:::o;34015:179::-;34155:31;34151:1;34143:6;34139:14;34132:55;34015:179;:::o;34200:366::-;34342:3;34363:67;34427:2;34422:3;34363:67;:::i;:::-;34356:74;;34439:93;34528:3;34439:93;:::i;:::-;34557:2;34552:3;34548:12;34541:19;;34200:366;;;:::o;34572:419::-;34738:4;34776:2;34765:9;34761:18;34753:26;;34825:9;34819:4;34815:20;34811:1;34800:9;34796:17;34789:47;34853:131;34979:4;34853:131;:::i;:::-;34845:139;;34572:419;;;:::o;34997:147::-;35098:11;35135:3;35120:18;;34997:147;;;;:::o;35150:114::-;;:::o;35270:398::-;35429:3;35450:83;35531:1;35526:3;35450:83;:::i;:::-;35443:90;;35542:93;35631:3;35542:93;:::i;:::-;35660:1;35655:3;35651:11;35644:18;;35270:398;;;:::o;35674:379::-;35858:3;35880:147;36023:3;35880:147;:::i;:::-;35873:154;;36044:3;36037:10;;35674:379;;;:::o;36059:224::-;36199:34;36195:1;36187:6;36183:14;36176:58;36268:7;36263:2;36255:6;36251:15;36244:32;36059:224;:::o;36289:366::-;36431:3;36452:67;36516:2;36511:3;36452:67;:::i;:::-;36445:74;;36528:93;36617:3;36528:93;:::i;:::-;36646:2;36641:3;36637:12;36630:19;;36289:366;;;:::o;36661:419::-;36827:4;36865:2;36854:9;36850:18;36842:26;;36914:9;36908:4;36904:20;36900:1;36889:9;36885:17;36878:47;36942:131;37068:4;36942:131;:::i;:::-;36934:139;;36661:419;;;:::o;37086:222::-;37226:34;37222:1;37214:6;37210:14;37203:58;37295:5;37290:2;37282:6;37278:15;37271:30;37086:222;:::o;37314:366::-;37456:3;37477:67;37541:2;37536:3;37477:67;:::i;:::-;37470:74;;37553:93;37642:3;37553:93;:::i;:::-;37671:2;37666:3;37662:12;37655:19;;37314:366;;;:::o;37686:419::-;37852:4;37890:2;37879:9;37875:18;37867:26;;37939:9;37933:4;37929:20;37925:1;37914:9;37910:17;37903:47;37967:131;38093:4;37967:131;:::i;:::-;37959:139;;37686:419;;;:::o;38111:225::-;38251:34;38247:1;38239:6;38235:14;38228:58;38320:8;38315:2;38307:6;38303:15;38296:33;38111:225;:::o;38342:366::-;38484:3;38505:67;38569:2;38564:3;38505:67;:::i;:::-;38498:74;;38581:93;38670:3;38581:93;:::i;:::-;38699:2;38694:3;38690:12;38683:19;;38342:366;;;:::o;38714:419::-;38880:4;38918:2;38907:9;38903:18;38895:26;;38967:9;38961:4;38957:20;38953:1;38942:9;38938:17;38931:47;38995:131;39121:4;38995:131;:::i;:::-;38987:139;;38714:419;;;:::o

Swarm Source

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