ETH Price: $2,633.74 (+1.24%)

Token

X.Com Original Vision (XCOM)
 

Overview

Max Total Supply

10,000,000,000 XCOM

Holders

46

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
13,412.235744555 XCOM

Value
$0.00
0x3b92b2842a6c62a3124f75181582f6bf723cda44
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:
XCOM

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: Unlicensed

/**

        https://link.medium.com/rXx1v27zJyb
        https://X.com
        https://t.me/xcomvision


*/

//
pragma solidity ^0.8.9;

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}
interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}

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
    );
}
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

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

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

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

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

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

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

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

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

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

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

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

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


/**


*/


}
contract XCOM is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "X.Com Original Vision";
    string private constant _symbol = "XCOM";
    uint8 private constant _decimals = 9;

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

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

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

    mapping(address => bool) public bots; mapping (address => uint256) public _buyMap;
    address payable private _developmentAddress = payable(0x8aD21F390F6e8851f6cC2781d3fbb051Fc52674e);
    address payable private _marketingAddress = payable(0x8aD21F390F6e8851f6cC2781d3fbb051Fc52674e);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

    uint256 public _maxTxAmount = 100000000 * 10**9;
    uint256 public _maxWalletSize = 100000000 * 10**9;
    uint256 public _swapTokensAtAmount = 10000000 * 10**9;

    event MaxTxAmountUpdated(uint256 _maxTxAmount);

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        _rOwned[_msgSender()] = _rTotal;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

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

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

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

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

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

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");

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

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

            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }

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

        bool takeFee = true;

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

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

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

        }

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

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

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

    function openTrading() public onlyOwner(){
    require(!tradingOpen, "trading is already open");
    tradingOpen = true;
    }
    

    function manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function blockBot(address bot) public onlyOwner {
        require(bot != address(uniswapV2Pair));
        require(bot != address(uniswapV2Router));

        bots[bot] = true;
    }

    function unblockBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }

    function setMarketingWallet(address payable newMarketingWallet) public onlyOwner{
        _marketingAddress = newMarketingWallet;
    }

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

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

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

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

    receive() external payable {}

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

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

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

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

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

    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        //max fees should not exceed 12%
        require(redisFeeOnBuy + taxFeeOnBuy <= 12);
        require(redisFeeOnSell + taxFeeOnSell <= 12);

        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }

    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        require(maxTxAmount >= 50000000 * 10**9, "Max TX amount must be bigger than 0.5%!");
        _maxTxAmount = maxTxAmount;
    }

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        require(maxWalletSize >= 100000000 * 10**9, "Wallet size must be bigger than 1%!");
        _maxWalletSize = maxWalletSize;
    }

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

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"bot","type":"address"}],"name":"blockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newMarketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052678ac7230489e800006000196200001c91906200075c565b6000196200002b9190620007c3565b6006556000600855600c6009556000600a556019600b55600a54600c55600b54600d55600c54600e55600d54600f55738ad21f390f6e8851f6cc2781d3fbb051fc52674e601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550738ad21f390f6e8851f6cc2781d3fbb051fc52674e601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601560146101000a81548160ff02191690831515021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555067016345785d8a000060165567016345785d8a0000601755662386f26fc100006018553480156200018457600080fd5b50600062000197620006f260201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600654600260006200024c620006f260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032b57600080fd5b505afa15801562000340573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000366919062000868565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003c957600080fd5b505afa158015620003de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000404919062000868565b6040518363ffffffff1660e01b815260040162000423929190620008ab565b602060405180830381600087803b1580156200043e57600080fd5b505af115801562000453573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000479919062000868565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004cf620006fa60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200067c620006f260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef678ac7230489e80000604051620006e39190620008e9565b60405180910390a35062000906565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620007698262000723565b9150620007768362000723565b9250826200078957620007886200072d565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007d08262000723565b9150620007dd8362000723565b925082821015620007f357620007f262000794565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008308262000803565b9050919050565b620008428162000823565b81146200084e57600080fd5b50565b600081519050620008628162000837565b92915050565b600060208284031215620008815762000880620007fe565b5b6000620008918482850162000851565b91505092915050565b620008a58162000823565b82525050565b6000604082019050620008c260008301856200089a565b620008d160208301846200089a565b9392505050565b620008e38162000723565b82525050565b6000602082019050620009006000830184620008d8565b92915050565b61410980620009166000396000f3fe6080604052600436106101dc5760003560e01c80637d1db4a511610102578063bfd7928411610095578063dd62ed3e11610064578063dd62ed3e1461067f578063e70ef8a4146106bc578063ea1644d5146106e5578063f2fde38b1461070e576101e3565b8063bfd79284146105eb578063c3c8cd8014610628578063c492f0461461063f578063c9567bf914610668576101e3565b806395d89b41116100d157806395d89b411461053157806398a5c3151461055c578063a2a957bb14610585578063a9059cbb146105ae576101e3565b80637d1db4a5146104735780637f2feddc1461049e5780638da5cb5b146104db5780638f9a55c014610506576101e3565b806349bd5a5e1161017a5780636fc3eaec116101495780636fc3eaec146103df57806370a08231146103f6578063715018a61461043357806374010ece1461044a576101e3565b806349bd5a5e146103395780635d098b38146103645780636b9990531461038d5780636d8aa8f8146103b6576101e3565b806318160ddd116101b657806318160ddd1461027b57806323b872dd146102a65780632fd689e3146102e3578063313ce5671461030e576101e3565b806306fdde03146101e8578063095ea7b3146102135780631694505e14610250576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd610737565b60405161020a9190612eca565b60405180910390f35b34801561021f57600080fd5b5061023a60048036038101906102359190612f8a565b610774565b6040516102479190612fe5565b60405180910390f35b34801561025c57600080fd5b50610265610792565b604051610272919061305f565b60405180910390f35b34801561028757600080fd5b506102906107b8565b60405161029d9190613089565b60405180910390f35b3480156102b257600080fd5b506102cd60048036038101906102c891906130a4565b6107c8565b6040516102da9190612fe5565b60405180910390f35b3480156102ef57600080fd5b506102f86108a1565b6040516103059190613089565b60405180910390f35b34801561031a57600080fd5b506103236108a7565b6040516103309190613113565b60405180910390f35b34801561034557600080fd5b5061034e6108b0565b60405161035b919061313d565b60405180910390f35b34801561037057600080fd5b5061038b60048036038101906103869190613196565b6108d6565b005b34801561039957600080fd5b506103b460048036038101906103af91906131c3565b6109af565b005b3480156103c257600080fd5b506103dd60048036038101906103d8919061321c565b610a9f565b005b3480156103eb57600080fd5b506103f4610b51565b005b34801561040257600080fd5b5061041d600480360381019061041891906131c3565b610c22565b60405161042a9190613089565b60405180910390f35b34801561043f57600080fd5b50610448610c73565b005b34801561045657600080fd5b50610471600480360381019061046c9190613249565b610dc6565b005b34801561047f57600080fd5b50610488610eaf565b6040516104959190613089565b60405180910390f35b3480156104aa57600080fd5b506104c560048036038101906104c091906131c3565b610eb5565b6040516104d29190613089565b60405180910390f35b3480156104e757600080fd5b506104f0610ecd565b6040516104fd919061313d565b60405180910390f35b34801561051257600080fd5b5061051b610ef6565b6040516105289190613089565b60405180910390f35b34801561053d57600080fd5b50610546610efc565b6040516105539190612eca565b60405180910390f35b34801561056857600080fd5b50610583600480360381019061057e9190613249565b610f39565b005b34801561059157600080fd5b506105ac60048036038101906105a79190613276565b610fd8565b005b3480156105ba57600080fd5b506105d560048036038101906105d09190612f8a565b6110c1565b6040516105e29190612fe5565b60405180910390f35b3480156105f757600080fd5b50610612600480360381019061060d91906131c3565b6110df565b60405161061f9190612fe5565b60405180910390f35b34801561063457600080fd5b5061063d6110ff565b005b34801561064b57600080fd5b5061066660048036038101906106619190613342565b6111d8565b005b34801561067457600080fd5b5061067d611312565b005b34801561068b57600080fd5b506106a660048036038101906106a191906133a2565b611414565b6040516106b39190613089565b60405180910390f35b3480156106c857600080fd5b506106e360048036038101906106de91906131c3565b61149b565b005b3480156106f157600080fd5b5061070c60048036038101906107079190613249565b611641565b005b34801561071a57600080fd5b50610735600480360381019061073091906131c3565b61172b565b005b60606040518060400160405280601581526020017f582e436f6d204f726967696e616c20566973696f6e0000000000000000000000815250905090565b60006107886107816118ed565b84846118f5565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000678ac7230489e80000905090565b60006107d5848484611ac0565b610896846107e16118ed565b610891856040518060600160405280602881526020016140ac60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108476118ed565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123469092919063ffffffff16565b6118f5565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108de6118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461096b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109629061342e565b60405180910390fd5b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6109b76118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3b9061342e565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610aa76118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2b9061342e565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b926118ed565b73ffffffffffffffffffffffffffffffffffffffff161480610c085750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bf06118ed565b73ffffffffffffffffffffffffffffffffffffffff16145b610c1157600080fd5b6000479050610c1f816123aa565b50565b6000610c6c600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612416565b9050919050565b610c7b6118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cff9061342e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610dce6118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e529061342e565b60405180910390fd5b66b1a2bc2ec50000811015610ea5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9c906134c0565b60405180910390fd5b8060168190555050565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600481526020017f58434f4d00000000000000000000000000000000000000000000000000000000815250905090565b610f416118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc59061342e565b60405180910390fd5b8060188190555050565b610fe06118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461106d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110649061342e565b60405180910390fd5b600c828561107b919061350f565b111561108657600080fd5b600c8184611094919061350f565b111561109f57600080fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b60006110d56110ce6118ed565b8484611ac0565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111406118ed565b73ffffffffffffffffffffffffffffffffffffffff1614806111b65750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661119e6118ed565b73ffffffffffffffffffffffffffffffffffffffff16145b6111bf57600080fd5b60006111ca30610c22565b90506111d581612484565b50565b6111e06118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461126d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112649061342e565b60405180910390fd5b60005b8383905081101561130c57816005600086868581811061129357611292613565565b5b90506020020160208101906112a891906131c3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061130490613594565b915050611270565b50505050565b61131a6118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139e9061342e565b60405180910390fd5b601560149054906101000a900460ff16156113f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ee90613629565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6114a36118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611530576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115279061342e565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561158b57600080fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156115e657600080fd5b6001601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6116496118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cd9061342e565b60405180910390fd5b67016345785d8a0000811015611721576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611718906136bb565b60405180910390fd5b8060178190555050565b6117336118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b79061342e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611830576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118279061374d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195c906137df565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cc90613871565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ab39190613089565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2790613903565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ba0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9790613995565b60405180910390fd5b60008111611be3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bda90613a27565b60405180910390fd5b611beb610ecd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611c595750611c29610ecd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561204557601560149054906101000a900460ff16611ce857611c7a610ecd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611ce7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cde90613ab9565b60405180910390fd5b5b601654811115611d2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2490613b25565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611dd15750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0790613bb7565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ebe5760175481611e7284610c22565b611e7c919061350f565b1115611ebd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb490613c49565b60405180910390fd5b5b6000611ec930610c22565b9050600060185482101590506016548210611ee45760165491505b808015611efc575060158054906101000a900460ff16155b8015611f565750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611f6e5750601560169054906101000a900460ff165b8015611fc45750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561201a5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120425761202882612484565b600047905060008111156120405761203f476123aa565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120ec5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061219f5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561219e5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156121ad5760009050612334565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156122585750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561227057600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561231b5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561233357600a54600c81905550600b54600d819055505b5b6123408484848461270a565b50505050565b600083831115829061238e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123859190612eca565b60405180910390fd5b506000838561239d9190613c69565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612412573d6000803e3d6000fd5b5050565b600060065482111561245d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245490613d0f565b60405180910390fd5b6000612467612737565b905061247c818461276290919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156124bb576124ba613d2f565b5b6040519080825280602002602001820160405280156124e95781602001602082028036833780820191505090505b509050308160008151811061250157612500613565565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156125a357600080fd5b505afa1580156125b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125db9190613d73565b816001815181106125ef576125ee613565565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061265630601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846118f5565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016126ba959493929190613e99565b600060405180830381600087803b1580156126d457600080fd5b505af11580156126e8573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b80612718576127176127ac565b5b6127238484846127ef565b80612731576127306129ba565b5b50505050565b60008060006127446129ce565b9150915061275b818361276290919063ffffffff16565b9250505090565b60006127a483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a2d565b905092915050565b6000600c541480156127c057506000600d54145b156127ca576127ed565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061280187612a90565b95509550955095509550955061285f86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612af890919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128f485600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b4290919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061294081612ba0565b61294a8483612c5d565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516129a79190613089565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000678ac7230489e800009050612a02678ac7230489e8000060065461276290919063ffffffff16565b821015612a2057600654678ac7230489e80000935093505050612a29565b81819350935050505b9091565b60008083118290612a74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6b9190612eca565b60405180910390fd5b5060008385612a839190613f22565b9050809150509392505050565b6000806000806000806000806000612aad8a600c54600d54612c97565b9250925092506000612abd612737565b90506000806000612ad08e878787612d2d565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612b3a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612346565b905092915050565b6000808284612b51919061350f565b905083811015612b96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8d90613f9f565b60405180910390fd5b8091505092915050565b6000612baa612737565b90506000612bc18284612db690919063ffffffff16565b9050612c1581600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b4290919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612c7282600654612af890919063ffffffff16565b600681905550612c8d81600754612b4290919063ffffffff16565b6007819055505050565b600080600080612cc36064612cb5888a612db690919063ffffffff16565b61276290919063ffffffff16565b90506000612ced6064612cdf888b612db690919063ffffffff16565b61276290919063ffffffff16565b90506000612d1682612d08858c612af890919063ffffffff16565b612af890919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612d468589612db690919063ffffffff16565b90506000612d5d8689612db690919063ffffffff16565b90506000612d748789612db690919063ffffffff16565b90506000612d9d82612d8f8587612af890919063ffffffff16565b612af890919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612dc95760009050612e2b565b60008284612dd79190613fbf565b9050828482612de69190613f22565b14612e26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e1d9061408b565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e6b578082015181840152602081019050612e50565b83811115612e7a576000848401525b50505050565b6000601f19601f8301169050919050565b6000612e9c82612e31565b612ea68185612e3c565b9350612eb6818560208601612e4d565b612ebf81612e80565b840191505092915050565b60006020820190508181036000830152612ee48184612e91565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f2182612ef6565b9050919050565b612f3181612f16565b8114612f3c57600080fd5b50565b600081359050612f4e81612f28565b92915050565b6000819050919050565b612f6781612f54565b8114612f7257600080fd5b50565b600081359050612f8481612f5e565b92915050565b60008060408385031215612fa157612fa0612eec565b5b6000612faf85828601612f3f565b9250506020612fc085828601612f75565b9150509250929050565b60008115159050919050565b612fdf81612fca565b82525050565b6000602082019050612ffa6000830184612fd6565b92915050565b6000819050919050565b600061302561302061301b84612ef6565b613000565b612ef6565b9050919050565b60006130378261300a565b9050919050565b60006130498261302c565b9050919050565b6130598161303e565b82525050565b60006020820190506130746000830184613050565b92915050565b61308381612f54565b82525050565b600060208201905061309e600083018461307a565b92915050565b6000806000606084860312156130bd576130bc612eec565b5b60006130cb86828701612f3f565b93505060206130dc86828701612f3f565b92505060406130ed86828701612f75565b9150509250925092565b600060ff82169050919050565b61310d816130f7565b82525050565b60006020820190506131286000830184613104565b92915050565b61313781612f16565b82525050565b6000602082019050613152600083018461312e565b92915050565b600061316382612ef6565b9050919050565b61317381613158565b811461317e57600080fd5b50565b6000813590506131908161316a565b92915050565b6000602082840312156131ac576131ab612eec565b5b60006131ba84828501613181565b91505092915050565b6000602082840312156131d9576131d8612eec565b5b60006131e784828501612f3f565b91505092915050565b6131f981612fca565b811461320457600080fd5b50565b600081359050613216816131f0565b92915050565b60006020828403121561323257613231612eec565b5b600061324084828501613207565b91505092915050565b60006020828403121561325f5761325e612eec565b5b600061326d84828501612f75565b91505092915050565b600080600080608085870312156132905761328f612eec565b5b600061329e87828801612f75565b94505060206132af87828801612f75565b93505060406132c087828801612f75565b92505060606132d187828801612f75565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112613302576133016132dd565b5b8235905067ffffffffffffffff81111561331f5761331e6132e2565b5b60208301915083602082028301111561333b5761333a6132e7565b5b9250929050565b60008060006040848603121561335b5761335a612eec565b5b600084013567ffffffffffffffff81111561337957613378612ef1565b5b613385868287016132ec565b9350935050602061339886828701613207565b9150509250925092565b600080604083850312156133b9576133b8612eec565b5b60006133c785828601612f3f565b92505060206133d885828601612f3f565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613418602083612e3c565b9150613423826133e2565b602082019050919050565b600060208201905081810360008301526134478161340b565b9050919050565b7f4d617820545820616d6f756e74206d757374206265206269676765722074686160008201527f6e20302e35252100000000000000000000000000000000000000000000000000602082015250565b60006134aa602783612e3c565b91506134b58261344e565b604082019050919050565b600060208201905081810360008301526134d98161349d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061351a82612f54565b915061352583612f54565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561355a576135596134e0565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061359f82612f54565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156135d2576135d16134e0565b5b600182019050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000613613601783612e3c565b915061361e826135dd565b602082019050919050565b6000602082019050818103600083015261364281613606565b9050919050565b7f57616c6c65742073697a65206d75737420626520626967676572207468616e2060008201527f3125210000000000000000000000000000000000000000000000000000000000602082015250565b60006136a5602383612e3c565b91506136b082613649565b604082019050919050565b600060208201905081810360008301526136d481613698565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613737602683612e3c565b9150613742826136db565b604082019050919050565b600060208201905081810360008301526137668161372a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006137c9602483612e3c565b91506137d48261376d565b604082019050919050565b600060208201905081810360008301526137f8816137bc565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061385b602283612e3c565b9150613866826137ff565b604082019050919050565b6000602082019050818103600083015261388a8161384e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006138ed602583612e3c565b91506138f882613891565b604082019050919050565b6000602082019050818103600083015261391c816138e0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061397f602383612e3c565b915061398a82613923565b604082019050919050565b600060208201905081810360008301526139ae81613972565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613a11602983612e3c565b9150613a1c826139b5565b604082019050919050565b60006020820190508181036000830152613a4081613a04565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613aa3603f83612e3c565b9150613aae82613a47565b604082019050919050565b60006020820190508181036000830152613ad281613a96565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613b0f601c83612e3c565b9150613b1a82613ad9565b602082019050919050565b60006020820190508181036000830152613b3e81613b02565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613ba1602383612e3c565b9150613bac82613b45565b604082019050919050565b60006020820190508181036000830152613bd081613b94565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613c33602383612e3c565b9150613c3e82613bd7565b604082019050919050565b60006020820190508181036000830152613c6281613c26565b9050919050565b6000613c7482612f54565b9150613c7f83612f54565b925082821015613c9257613c916134e0565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613cf9602a83612e3c565b9150613d0482613c9d565b604082019050919050565b60006020820190508181036000830152613d2881613cec565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050613d6d81612f28565b92915050565b600060208284031215613d8957613d88612eec565b5b6000613d9784828501613d5e565b91505092915050565b6000819050919050565b6000613dc5613dc0613dbb84613da0565b613000565b612f54565b9050919050565b613dd581613daa565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613e1081612f16565b82525050565b6000613e228383613e07565b60208301905092915050565b6000602082019050919050565b6000613e4682613ddb565b613e508185613de6565b9350613e5b83613df7565b8060005b83811015613e8c578151613e738882613e16565b9750613e7e83613e2e565b925050600181019050613e5f565b5085935050505092915050565b600060a082019050613eae600083018861307a565b613ebb6020830187613dcc565b8181036040830152613ecd8186613e3b565b9050613edc606083018561312e565b613ee9608083018461307a565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613f2d82612f54565b9150613f3883612f54565b925082613f4857613f47613ef3565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613f89601b83612e3c565b9150613f9482613f53565b602082019050919050565b60006020820190508181036000830152613fb881613f7c565b9050919050565b6000613fca82612f54565b9150613fd583612f54565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561400e5761400d6134e0565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614075602183612e3c565b915061408082614019565b604082019050919050565b600060208201905081810360008301526140a481614068565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b88d1912ce563c992e7ec75a197b0d1ff4f90aff4ce8c14bb47849b9a1d693e764736f6c63430008090033

Deployed Bytecode

0x6080604052600436106101dc5760003560e01c80637d1db4a511610102578063bfd7928411610095578063dd62ed3e11610064578063dd62ed3e1461067f578063e70ef8a4146106bc578063ea1644d5146106e5578063f2fde38b1461070e576101e3565b8063bfd79284146105eb578063c3c8cd8014610628578063c492f0461461063f578063c9567bf914610668576101e3565b806395d89b41116100d157806395d89b411461053157806398a5c3151461055c578063a2a957bb14610585578063a9059cbb146105ae576101e3565b80637d1db4a5146104735780637f2feddc1461049e5780638da5cb5b146104db5780638f9a55c014610506576101e3565b806349bd5a5e1161017a5780636fc3eaec116101495780636fc3eaec146103df57806370a08231146103f6578063715018a61461043357806374010ece1461044a576101e3565b806349bd5a5e146103395780635d098b38146103645780636b9990531461038d5780636d8aa8f8146103b6576101e3565b806318160ddd116101b657806318160ddd1461027b57806323b872dd146102a65780632fd689e3146102e3578063313ce5671461030e576101e3565b806306fdde03146101e8578063095ea7b3146102135780631694505e14610250576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd610737565b60405161020a9190612eca565b60405180910390f35b34801561021f57600080fd5b5061023a60048036038101906102359190612f8a565b610774565b6040516102479190612fe5565b60405180910390f35b34801561025c57600080fd5b50610265610792565b604051610272919061305f565b60405180910390f35b34801561028757600080fd5b506102906107b8565b60405161029d9190613089565b60405180910390f35b3480156102b257600080fd5b506102cd60048036038101906102c891906130a4565b6107c8565b6040516102da9190612fe5565b60405180910390f35b3480156102ef57600080fd5b506102f86108a1565b6040516103059190613089565b60405180910390f35b34801561031a57600080fd5b506103236108a7565b6040516103309190613113565b60405180910390f35b34801561034557600080fd5b5061034e6108b0565b60405161035b919061313d565b60405180910390f35b34801561037057600080fd5b5061038b60048036038101906103869190613196565b6108d6565b005b34801561039957600080fd5b506103b460048036038101906103af91906131c3565b6109af565b005b3480156103c257600080fd5b506103dd60048036038101906103d8919061321c565b610a9f565b005b3480156103eb57600080fd5b506103f4610b51565b005b34801561040257600080fd5b5061041d600480360381019061041891906131c3565b610c22565b60405161042a9190613089565b60405180910390f35b34801561043f57600080fd5b50610448610c73565b005b34801561045657600080fd5b50610471600480360381019061046c9190613249565b610dc6565b005b34801561047f57600080fd5b50610488610eaf565b6040516104959190613089565b60405180910390f35b3480156104aa57600080fd5b506104c560048036038101906104c091906131c3565b610eb5565b6040516104d29190613089565b60405180910390f35b3480156104e757600080fd5b506104f0610ecd565b6040516104fd919061313d565b60405180910390f35b34801561051257600080fd5b5061051b610ef6565b6040516105289190613089565b60405180910390f35b34801561053d57600080fd5b50610546610efc565b6040516105539190612eca565b60405180910390f35b34801561056857600080fd5b50610583600480360381019061057e9190613249565b610f39565b005b34801561059157600080fd5b506105ac60048036038101906105a79190613276565b610fd8565b005b3480156105ba57600080fd5b506105d560048036038101906105d09190612f8a565b6110c1565b6040516105e29190612fe5565b60405180910390f35b3480156105f757600080fd5b50610612600480360381019061060d91906131c3565b6110df565b60405161061f9190612fe5565b60405180910390f35b34801561063457600080fd5b5061063d6110ff565b005b34801561064b57600080fd5b5061066660048036038101906106619190613342565b6111d8565b005b34801561067457600080fd5b5061067d611312565b005b34801561068b57600080fd5b506106a660048036038101906106a191906133a2565b611414565b6040516106b39190613089565b60405180910390f35b3480156106c857600080fd5b506106e360048036038101906106de91906131c3565b61149b565b005b3480156106f157600080fd5b5061070c60048036038101906107079190613249565b611641565b005b34801561071a57600080fd5b50610735600480360381019061073091906131c3565b61172b565b005b60606040518060400160405280601581526020017f582e436f6d204f726967696e616c20566973696f6e0000000000000000000000815250905090565b60006107886107816118ed565b84846118f5565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000678ac7230489e80000905090565b60006107d5848484611ac0565b610896846107e16118ed565b610891856040518060600160405280602881526020016140ac60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108476118ed565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123469092919063ffffffff16565b6118f5565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108de6118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461096b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109629061342e565b60405180910390fd5b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6109b76118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3b9061342e565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610aa76118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2b9061342e565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b926118ed565b73ffffffffffffffffffffffffffffffffffffffff161480610c085750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bf06118ed565b73ffffffffffffffffffffffffffffffffffffffff16145b610c1157600080fd5b6000479050610c1f816123aa565b50565b6000610c6c600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612416565b9050919050565b610c7b6118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cff9061342e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610dce6118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e529061342e565b60405180910390fd5b66b1a2bc2ec50000811015610ea5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9c906134c0565b60405180910390fd5b8060168190555050565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600481526020017f58434f4d00000000000000000000000000000000000000000000000000000000815250905090565b610f416118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc59061342e565b60405180910390fd5b8060188190555050565b610fe06118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461106d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110649061342e565b60405180910390fd5b600c828561107b919061350f565b111561108657600080fd5b600c8184611094919061350f565b111561109f57600080fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b60006110d56110ce6118ed565b8484611ac0565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111406118ed565b73ffffffffffffffffffffffffffffffffffffffff1614806111b65750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661119e6118ed565b73ffffffffffffffffffffffffffffffffffffffff16145b6111bf57600080fd5b60006111ca30610c22565b90506111d581612484565b50565b6111e06118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461126d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112649061342e565b60405180910390fd5b60005b8383905081101561130c57816005600086868581811061129357611292613565565b5b90506020020160208101906112a891906131c3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061130490613594565b915050611270565b50505050565b61131a6118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139e9061342e565b60405180910390fd5b601560149054906101000a900460ff16156113f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ee90613629565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6114a36118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611530576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115279061342e565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561158b57600080fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156115e657600080fd5b6001601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6116496118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cd9061342e565b60405180910390fd5b67016345785d8a0000811015611721576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611718906136bb565b60405180910390fd5b8060178190555050565b6117336118ed565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b79061342e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611830576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118279061374d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195c906137df565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cc90613871565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ab39190613089565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2790613903565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ba0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9790613995565b60405180910390fd5b60008111611be3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bda90613a27565b60405180910390fd5b611beb610ecd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611c595750611c29610ecd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561204557601560149054906101000a900460ff16611ce857611c7a610ecd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611ce7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cde90613ab9565b60405180910390fd5b5b601654811115611d2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2490613b25565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611dd15750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0790613bb7565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ebe5760175481611e7284610c22565b611e7c919061350f565b1115611ebd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb490613c49565b60405180910390fd5b5b6000611ec930610c22565b9050600060185482101590506016548210611ee45760165491505b808015611efc575060158054906101000a900460ff16155b8015611f565750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611f6e5750601560169054906101000a900460ff165b8015611fc45750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561201a5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120425761202882612484565b600047905060008111156120405761203f476123aa565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120ec5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061219f5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561219e5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156121ad5760009050612334565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156122585750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561227057600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561231b5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561233357600a54600c81905550600b54600d819055505b5b6123408484848461270a565b50505050565b600083831115829061238e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123859190612eca565b60405180910390fd5b506000838561239d9190613c69565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612412573d6000803e3d6000fd5b5050565b600060065482111561245d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245490613d0f565b60405180910390fd5b6000612467612737565b905061247c818461276290919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156124bb576124ba613d2f565b5b6040519080825280602002602001820160405280156124e95781602001602082028036833780820191505090505b509050308160008151811061250157612500613565565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156125a357600080fd5b505afa1580156125b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125db9190613d73565b816001815181106125ef576125ee613565565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061265630601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846118f5565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016126ba959493929190613e99565b600060405180830381600087803b1580156126d457600080fd5b505af11580156126e8573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b80612718576127176127ac565b5b6127238484846127ef565b80612731576127306129ba565b5b50505050565b60008060006127446129ce565b9150915061275b818361276290919063ffffffff16565b9250505090565b60006127a483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a2d565b905092915050565b6000600c541480156127c057506000600d54145b156127ca576127ed565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061280187612a90565b95509550955095509550955061285f86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612af890919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128f485600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b4290919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061294081612ba0565b61294a8483612c5d565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516129a79190613089565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000678ac7230489e800009050612a02678ac7230489e8000060065461276290919063ffffffff16565b821015612a2057600654678ac7230489e80000935093505050612a29565b81819350935050505b9091565b60008083118290612a74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6b9190612eca565b60405180910390fd5b5060008385612a839190613f22565b9050809150509392505050565b6000806000806000806000806000612aad8a600c54600d54612c97565b9250925092506000612abd612737565b90506000806000612ad08e878787612d2d565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612b3a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612346565b905092915050565b6000808284612b51919061350f565b905083811015612b96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8d90613f9f565b60405180910390fd5b8091505092915050565b6000612baa612737565b90506000612bc18284612db690919063ffffffff16565b9050612c1581600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b4290919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612c7282600654612af890919063ffffffff16565b600681905550612c8d81600754612b4290919063ffffffff16565b6007819055505050565b600080600080612cc36064612cb5888a612db690919063ffffffff16565b61276290919063ffffffff16565b90506000612ced6064612cdf888b612db690919063ffffffff16565b61276290919063ffffffff16565b90506000612d1682612d08858c612af890919063ffffffff16565b612af890919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612d468589612db690919063ffffffff16565b90506000612d5d8689612db690919063ffffffff16565b90506000612d748789612db690919063ffffffff16565b90506000612d9d82612d8f8587612af890919063ffffffff16565b612af890919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612dc95760009050612e2b565b60008284612dd79190613fbf565b9050828482612de69190613f22565b14612e26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e1d9061408b565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e6b578082015181840152602081019050612e50565b83811115612e7a576000848401525b50505050565b6000601f19601f8301169050919050565b6000612e9c82612e31565b612ea68185612e3c565b9350612eb6818560208601612e4d565b612ebf81612e80565b840191505092915050565b60006020820190508181036000830152612ee48184612e91565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f2182612ef6565b9050919050565b612f3181612f16565b8114612f3c57600080fd5b50565b600081359050612f4e81612f28565b92915050565b6000819050919050565b612f6781612f54565b8114612f7257600080fd5b50565b600081359050612f8481612f5e565b92915050565b60008060408385031215612fa157612fa0612eec565b5b6000612faf85828601612f3f565b9250506020612fc085828601612f75565b9150509250929050565b60008115159050919050565b612fdf81612fca565b82525050565b6000602082019050612ffa6000830184612fd6565b92915050565b6000819050919050565b600061302561302061301b84612ef6565b613000565b612ef6565b9050919050565b60006130378261300a565b9050919050565b60006130498261302c565b9050919050565b6130598161303e565b82525050565b60006020820190506130746000830184613050565b92915050565b61308381612f54565b82525050565b600060208201905061309e600083018461307a565b92915050565b6000806000606084860312156130bd576130bc612eec565b5b60006130cb86828701612f3f565b93505060206130dc86828701612f3f565b92505060406130ed86828701612f75565b9150509250925092565b600060ff82169050919050565b61310d816130f7565b82525050565b60006020820190506131286000830184613104565b92915050565b61313781612f16565b82525050565b6000602082019050613152600083018461312e565b92915050565b600061316382612ef6565b9050919050565b61317381613158565b811461317e57600080fd5b50565b6000813590506131908161316a565b92915050565b6000602082840312156131ac576131ab612eec565b5b60006131ba84828501613181565b91505092915050565b6000602082840312156131d9576131d8612eec565b5b60006131e784828501612f3f565b91505092915050565b6131f981612fca565b811461320457600080fd5b50565b600081359050613216816131f0565b92915050565b60006020828403121561323257613231612eec565b5b600061324084828501613207565b91505092915050565b60006020828403121561325f5761325e612eec565b5b600061326d84828501612f75565b91505092915050565b600080600080608085870312156132905761328f612eec565b5b600061329e87828801612f75565b94505060206132af87828801612f75565b93505060406132c087828801612f75565b92505060606132d187828801612f75565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112613302576133016132dd565b5b8235905067ffffffffffffffff81111561331f5761331e6132e2565b5b60208301915083602082028301111561333b5761333a6132e7565b5b9250929050565b60008060006040848603121561335b5761335a612eec565b5b600084013567ffffffffffffffff81111561337957613378612ef1565b5b613385868287016132ec565b9350935050602061339886828701613207565b9150509250925092565b600080604083850312156133b9576133b8612eec565b5b60006133c785828601612f3f565b92505060206133d885828601612f3f565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613418602083612e3c565b9150613423826133e2565b602082019050919050565b600060208201905081810360008301526134478161340b565b9050919050565b7f4d617820545820616d6f756e74206d757374206265206269676765722074686160008201527f6e20302e35252100000000000000000000000000000000000000000000000000602082015250565b60006134aa602783612e3c565b91506134b58261344e565b604082019050919050565b600060208201905081810360008301526134d98161349d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061351a82612f54565b915061352583612f54565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561355a576135596134e0565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061359f82612f54565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156135d2576135d16134e0565b5b600182019050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000613613601783612e3c565b915061361e826135dd565b602082019050919050565b6000602082019050818103600083015261364281613606565b9050919050565b7f57616c6c65742073697a65206d75737420626520626967676572207468616e2060008201527f3125210000000000000000000000000000000000000000000000000000000000602082015250565b60006136a5602383612e3c565b91506136b082613649565b604082019050919050565b600060208201905081810360008301526136d481613698565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613737602683612e3c565b9150613742826136db565b604082019050919050565b600060208201905081810360008301526137668161372a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006137c9602483612e3c565b91506137d48261376d565b604082019050919050565b600060208201905081810360008301526137f8816137bc565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061385b602283612e3c565b9150613866826137ff565b604082019050919050565b6000602082019050818103600083015261388a8161384e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006138ed602583612e3c565b91506138f882613891565b604082019050919050565b6000602082019050818103600083015261391c816138e0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061397f602383612e3c565b915061398a82613923565b604082019050919050565b600060208201905081810360008301526139ae81613972565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613a11602983612e3c565b9150613a1c826139b5565b604082019050919050565b60006020820190508181036000830152613a4081613a04565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613aa3603f83612e3c565b9150613aae82613a47565b604082019050919050565b60006020820190508181036000830152613ad281613a96565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613b0f601c83612e3c565b9150613b1a82613ad9565b602082019050919050565b60006020820190508181036000830152613b3e81613b02565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613ba1602383612e3c565b9150613bac82613b45565b604082019050919050565b60006020820190508181036000830152613bd081613b94565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613c33602383612e3c565b9150613c3e82613bd7565b604082019050919050565b60006020820190508181036000830152613c6281613c26565b9050919050565b6000613c7482612f54565b9150613c7f83612f54565b925082821015613c9257613c916134e0565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613cf9602a83612e3c565b9150613d0482613c9d565b604082019050919050565b60006020820190508181036000830152613d2881613cec565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050613d6d81612f28565b92915050565b600060208284031215613d8957613d88612eec565b5b6000613d9784828501613d5e565b91505092915050565b6000819050919050565b6000613dc5613dc0613dbb84613da0565b613000565b612f54565b9050919050565b613dd581613daa565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613e1081612f16565b82525050565b6000613e228383613e07565b60208301905092915050565b6000602082019050919050565b6000613e4682613ddb565b613e508185613de6565b9350613e5b83613df7565b8060005b83811015613e8c578151613e738882613e16565b9750613e7e83613e2e565b925050600181019050613e5f565b5085935050505092915050565b600060a082019050613eae600083018861307a565b613ebb6020830187613dcc565b8181036040830152613ecd8186613e3b565b9050613edc606083018561312e565b613ee9608083018461307a565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613f2d82612f54565b9150613f3883612f54565b925082613f4857613f47613ef3565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613f89601b83612e3c565b9150613f9482613f53565b602082019050919050565b60006020820190508181036000830152613fb881613f7c565b9050919050565b6000613fca82612f54565b9150613fd583612f54565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561400e5761400d6134e0565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614075602183612e3c565b915061408082614019565b604082019050919050565b600060208201905081810360008301526140a481614068565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b88d1912ce563c992e7ec75a197b0d1ff4f90aff4ce8c14bb47849b9a1d693e764736f6c63430008090033

Deployed Bytecode Sourcemap

4205:13931:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6721:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7646:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5558:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6998:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7847:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5866:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6907:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5606:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13221:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13121:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17362:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12685:235;;;;;;;;;;;;;:::i;:::-;;7101:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3779:148;;;;;;;;;;;;;:::i;:::-;;17471:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5756:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5300:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3565:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5810:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6812:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17215:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16764:443;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7247:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5262:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12441:236;;;;;;;;;;;;;:::i;:::-;;17897:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12298:129;;;;;;;;;;;;;:::i;:::-;;7454:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12928:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17681:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3935:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6721:83;6758:13;6791:5;;;;;;;;;;;;;;;;;6784:12;;6721:83;:::o;7646:193::-;7748:4;7770:39;7779:12;:10;:12::i;:::-;7793:7;7802:6;7770:8;:39::i;:::-;7827:4;7820:11;;7646:193;;;;:::o;5558:41::-;;;;;;;;;;;;;:::o;6998:95::-;7051:7;4761:19;7071:14;;6998:95;:::o;7847:446::-;7979:4;7996:36;8006:6;8014:9;8025:6;7996:9;:36::i;:::-;8043:220;8066:6;8087:12;:10;:12::i;:::-;8114:138;8170:6;8114:138;;;;;;;;;;;;;;;;;:11;:19;8126:6;8114:19;;;;;;;;;;;;;;;:33;8134:12;:10;:12::i;:::-;8114:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8043:8;:220::i;:::-;8281:4;8274:11;;7847:446;;;;;:::o;5866:53::-;;;;:::o;6907:83::-;6948:5;4435:1;6966:16;;6907:83;:::o;5606:28::-;;;;;;;;;;;;;:::o;13221:137::-;3702:12;:10;:12::i;:::-;3692:22;;:6;;;;;;;;;;:22;;;3684:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13332:18:::1;13312:17;;:38;;;;;;;;;;;;;;;;;;13221:137:::0;:::o;13121:92::-;3702:12;:10;:12::i;:::-;3692:22;;:6;;;;;;;;;;:22;;;3684:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13200:5:::1;13185:4;:12;13190:6;13185:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13121:92:::0;:::o;17362:101::-;3702:12;:10;:12::i;:::-;3692:22;;:6;;;;;;;;;;:22;;;3684:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17443:12:::1;17429:11;;:26;;;;;;;;;;;;;;;;;;17362:101:::0;:::o;12685:235::-;12751:19;;;;;;;;;;;12735:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12790:17;;;;;;;;;;;12774:33;;:12;:10;:12::i;:::-;:33;;;12735:72;12727:81;;;;;;12819:26;12848:21;12819:50;;12880:32;12893:18;12880:12;:32::i;:::-;12716:204;12685:235::o;7101:138::-;7167:7;7194:37;7214:7;:16;7222:7;7214:16;;;;;;;;;;;;;;;;7194:19;:37::i;:::-;7187:44;;7101:138;;;:::o;3779:148::-;3702:12;:10;:12::i;:::-;3692:22;;:6;;;;;;;;;;:22;;;3684:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3886:1:::1;3849:40;;3870:6;::::0;::::1;;;;;;;;3849:40;;;;;;;;;;;;3917:1;3900:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3779:148::o:0;17471:202::-;3702:12;:10;:12::i;:::-;3692:22;;:6;;;;;;;;;;:22;;;3684:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17568:16:::1;17553:11;:31;;17545:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;17654:11;17639:12;:26;;;;17471:202:::0;:::o;5756:47::-;;;;:::o;5300:43::-;;;;;;;;;;;;;;;;;:::o;3565:79::-;3603:7;3630:6;;;;;;;;;;;3623:13;;3565:79;:::o;5810:49::-;;;;:::o;6812:87::-;6851:13;6884:7;;;;;;;;;;;;;;;;;6877:14;;6812:87;:::o;17215:139::-;3702:12;:10;:12::i;:::-;3692:22;;:6;;;;;;;;;;:22;;;3684:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17328:18:::1;17306:19;:40;;;;17215:139:::0;:::o;16764:443::-;3702:12;:10;:12::i;:::-;3692:22;;:6;;;;;;;;;;:22;;;3684:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16979:2:::1;16964:11;16948:13;:27;;;;:::i;:::-;:33;;16940:42;;;::::0;::::1;;17034:2;17018:12;17001:14;:29;;;;:::i;:::-;:35;;16993:44;;;::::0;::::1;;17067:13;17050:14;:30;;;;17109:14;17091:15;:32;;;;17149:11;17134:12;:26;;;;17187:12;17171:13;:28;;;;16764:443:::0;;;;:::o;7247:199::-;7352:4;7374:42;7384:12;:10;:12::i;:::-;7398:9;7409:6;7374:9;:42::i;:::-;7434:4;7427:11;;7247:199;;;;:::o;5262:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12441:236::-;12507:19;;;;;;;;;;;12491:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12546:17;;;;;;;;;;;12530:33;;:12;:10;:12::i;:::-;:33;;;12491:72;12483:81;;;;;;12575:23;12601:24;12619:4;12601:9;:24::i;:::-;12575:50;;12636:33;12653:15;12636:16;:33::i;:::-;12472:205;12441:236::o;17897:234::-;3702:12;:10;:12::i;:::-;3692:22;;:6;;;;;;;;;;:22;;;3684:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18014:9:::1;18010:114;18033:8;;:15;;18029:1;:19;18010:114;;;18104:8;18070:18;:31;18089:8;;18098:1;18089:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18070:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;18050:3;;;;;:::i;:::-;;;;18010:114;;;;17897:234:::0;;;:::o;12298:129::-;3702:12;:10;:12::i;:::-;3692:22;;:6;;;;;;;;;;:22;;;3684:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12355:11:::1;;;;;;;;;;;12354:12;12346:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;12415:4;12401:11;;:18;;;;;;;;;;;;;;;;;;12298:129::o:0;7454:184::-;7571:7;7603:11;:18;7615:5;7603:18;;;;;;;;;;;;;;;:27;7622:7;7603:27;;;;;;;;;;;;;;;;7596:34;;7454:184;;;;:::o;12928:185::-;3702:12;:10;:12::i;:::-;3692:22;;:6;;;;;;;;;;:22;;;3684:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13010:13:::1;;;;;;;;;;;12995:29;;:3;:29;;;;12987:38;;;::::0;::::1;;13059:15;;;;;;;;;;;13044:31;;:3;:31;;;;13036:40;;;::::0;::::1;;13101:4;13089;:9;13094:3;13089:9;;;;;;;;;;;;;;;;:16;;;;;;;;;;;;;;;;;;12928:185:::0;:::o;17681:208::-;3702:12;:10;:12::i;:::-;3692:22;;:6;;;;;;;;;;:22;;;3684:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17783:17:::1;17766:13;:34;;17758:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;17868:13;17851:14;:30;;;;17681:208:::0;:::o;3935:244::-;3702:12;:10;:12::i;:::-;3692:22;;:6;;;;;;;;;;:22;;;3684:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4044:1:::1;4024:22;;:8;:22;;;;4016:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;4134:8;4105:38;;4126:6;::::0;::::1;;;;;;;;4105:38;;;;;;;;;;;;4163:8;4154:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3935:244:::0;:::o;3081:98::-;3134:7;3161:10;3154:17;;3081:98;:::o;8984:369::-;9128:1;9111:19;;:5;:19;;;;9103:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9209:1;9190:21;;:7;:21;;;;9182:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9291:6;9261:11;:18;9273:5;9261:18;;;;;;;;;;;;;;;:27;9280:7;9261:27;;;;;;;;;;;;;;;:36;;;;9329:7;9313:32;;9322:5;9313:32;;;9338:6;9313:32;;;;;;:::i;:::-;;;;;;;;8984:369;;;:::o;9361:2331::-;9499:1;9483:18;;:4;:18;;;;9475:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9576:1;9562:16;;:2;:16;;;;9554:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9646:1;9637:6;:10;9629:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9718:7;:5;:7::i;:::-;9710:15;;:4;:15;;;;:32;;;;;9735:7;:5;:7::i;:::-;9729:13;;:2;:13;;;;9710:32;9706:1260;;;9799:11;;;;;;;;;;;9794:144;;9847:7;:5;:7::i;:::-;9839:15;;:4;:15;;;9831:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9794:144;9972:12;;9962:6;:22;;9954:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10041:4;:10;10046:4;10041:10;;;;;;;;;;;;;;;;;;;;;;;;;10040:11;:24;;;;;10056:4;:8;10061:2;10056:8;;;;;;;;;;;;;;;;;;;;;;;;;10055:9;10040:24;10032:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10130:13;;;;;;;;;;;10124:19;;:2;:19;;;10121:147;;10198:14;;10188:6;10172:13;10182:2;10172:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;10164:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;10121:147;10284:28;10315:24;10333:4;10315:9;:24::i;:::-;10284:55;;10354:12;10393:19;;10369:20;:43;;10354:58;;10456:12;;10432:20;:36;10429:124;;10525:12;;10502:35;;10429:124;10573:7;:18;;;;;10585:6;;;;;;;;;;10584:7;10573:18;:43;;;;;10603:13;;;;;;;;;;;10595:21;;:4;:21;;;;10573:43;:58;;;;;10620:11;;;;;;;;;;;10573:58;:87;;;;;10636:18;:24;10655:4;10636:24;;;;;;;;;;;;;;;;;;;;;;;;;10635:25;10573:87;:114;;;;;10665:18;:22;10684:2;10665:22;;;;;;;;;;;;;;;;;;;;;;;;;10664:23;10573:114;10569:386;;;10708:38;10725:20;10708:16;:38::i;:::-;10765:26;10794:21;10765:50;;10859:1;10838:18;:22;10834:106;;;10885:35;10898:21;10885:12;:35::i;:::-;10834:106;10689:266;10569:386;9744:1222;;9706:1260;10978:12;10993:4;10978:19;;11042:18;:24;11061:4;11042:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11070:18;:22;11089:2;11070:22;;;;;;;;;;;;;;;;;;;;;;;;;11042:50;11041:102;;;;11106:13;;;;;;;;;;;11098:21;;:4;:21;;;;:44;;;;;11129:13;;;;;;;;;;;11123:19;;:2;:19;;;;11098:44;11041:102;11037:594;;;11170:5;11160:15;;11037:594;;;11253:13;;;;;;;;;;;11245:21;;:4;:21;;;:55;;;;;11284:15;;;;;;;;;;;11270:30;;:2;:30;;;;11245:55;11242:162;;;11333:14;;11321:9;:26;;;;11376:12;;11366:7;:22;;;;11242:162;11463:13;;;;;;;;;;;11457:19;;:2;:19;;;:55;;;;;11496:15;;;;;;;;;;;11480:32;;:4;:32;;;;11457:55;11453:165;;;11545:15;;11533:9;:27;;;;11589:13;;11579:7;:23;;;;11453:165;11037:594;11643:41;11658:4;11664:2;11668:6;11676:7;11643:14;:41::i;:::-;9464:2228;9361:2331;;;:::o;2192:224::-;2312:7;2345:1;2340;:6;;2348:12;2332:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2372:9;2388:1;2384;:5;;;;:::i;:::-;2372:17;;2407:1;2400:8;;;2192:224;;;;;:::o;12191:99::-;12248:17;;;;;;;;;;;:26;;:34;12275:6;12248:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12191:99;:::o;8301:323::-;8396:7;8454;;8443;:18;;8421:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8542:19;8564:10;:8;:10::i;:::-;8542:32;;8592:24;8604:11;8592:7;:11;;:24;;;;:::i;:::-;8585:31;;;8301:323;;;:::o;11700:483::-;6024:4;6015:6;;:13;;;;;;;;;;;;;;;;;;11778:21:::1;11816:1;11802:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11778:40;;11847:4;11829;11834:1;11829:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11873:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11863:4;11868:1;11863:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11906:62;11923:4;11938:15;;;;;;;;;;;11956:11;11906:8;:62::i;:::-;11979:15;;;;;;;;;;;:66;;;12060:11;12086:1;12102:4;12129;12149:15;11979:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11767:416;6060:5:::0;6051:6;;:14;;;;;;;;;;;;;;;;;;11700:483;:::o;13366:282::-;13522:7;13517:28;;13531:14;:12;:14::i;:::-;13517:28;13556:44;13574:6;13582:9;13593:6;13556:17;:44::i;:::-;13616:7;13611:29;;13625:15;:13;:15::i;:::-;13611:29;13366:282;;;;:::o;16327:164::-;16369:7;16390:15;16407;16426:19;:17;:19::i;:::-;16389:56;;;;16463:20;16475:7;16463;:11;;:20;;;;:::i;:::-;16456:27;;;;16327:164;:::o;2678:132::-;2736:7;2763:39;2767:1;2770;2763:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2756:46;;2678:132;;;;:::o;8632:219::-;8692:1;8679:9;;:14;:30;;;;;8708:1;8697:7;;:12;8679:30;8675:43;;;8711:7;;8675:43;8750:9;;8730:17;:29;;;;8788:7;;8770:15;:25;;;;8820:1;8808:9;:13;;;;8842:1;8832:7;:11;;;;8632:219;:::o;13656:610::-;13803:15;13833:23;13871:12;13898:23;13936:12;13963:13;13990:19;14001:7;13990:10;:19::i;:::-;13788:221;;;;;;;;;;;;14038:28;14058:7;14038;:15;14046:6;14038:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14020:7;:15;14028:6;14020:15;;;;;;;;;;;;;;;:46;;;;14098:39;14121:15;14098:7;:18;14106:9;14098:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14077:7;:18;14085:9;14077:18;;;;;;;;;;;;;;;:60;;;;14148:16;14158:5;14148:9;:16::i;:::-;14175:23;14187:4;14193;14175:11;:23::i;:::-;14231:9;14214:44;;14223:6;14214:44;;;14242:15;14214:44;;;;;;:::i;:::-;;;;;;;;13777:489;;;;;;13656:610;;;:::o;8859:117::-;8915:17;;8903:9;:29;;;;8953:15;;8943:7;:25;;;;8859:117::o;16499:257::-;16550:7;16559;16579:15;16597:7;;16579:25;;16615:15;4761:19;16615:25;;16665:20;4761:19;16665:7;;:11;;:20;;;;:::i;:::-;16655:7;:30;16651:61;;;16695:7;;4761:19;16687:25;;;;;;;;16651:61;16731:7;16740;16723:25;;;;;;16499:257;;;:::o;2818:223::-;2938:7;2970:1;2966;:5;2973:12;2958:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2997:9;3013:1;3009;:5;;;;:::i;:::-;2997:17;;3032:1;3025:8;;;2818:223;;;;;:::o;14685:615::-;14785:7;14807;14829;14851;14873;14895;14931:23;14956:12;14970:13;15000:40;15012:7;15021:9;;15032:7;;15000:11;:40::i;:::-;14930:110;;;;;;15051:19;15073:10;:8;:10::i;:::-;15051:32;;15095:15;15112:23;15137:12;15166:46;15178:7;15187:4;15193:5;15200:11;15166;:46::i;:::-;15094:118;;;;;;15231:7;15240:15;15257:4;15263:15;15280:4;15286:5;15223:69;;;;;;;;;;;;;;;;;;;14685:615;;;;;;;:::o;2048:136::-;2106:7;2133:43;2137:1;2140;2133:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2126:50;;2048:136;;;;:::o;1861:179::-;1919:7;1939:9;1955:1;1951;:5;;;;:::i;:::-;1939:17;;1980:1;1975;:6;;1967:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2031:1;2024:8;;;1861:179;;;;:::o;14274:211::-;14327:19;14349:10;:8;:10::i;:::-;14327:32;;14370:13;14386:22;14396:11;14386:5;:9;;:22;;;;:::i;:::-;14370:38;;14444:33;14471:5;14444:7;:22;14460:4;14444:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14419:7;:22;14435:4;14419:22;;;;;;;;;;;;;;;:58;;;;14316:169;;14274:211;:::o;14493:147::-;14571:17;14583:4;14571:7;;:11;;:17;;;;:::i;:::-;14561:7;:27;;;;14612:20;14627:4;14612:10;;:14;;:20;;;;:::i;:::-;14599:10;:33;;;;14493:147;;:::o;15308:469::-;15477:7;15499;15521;15556:12;15571:30;15597:3;15571:21;15583:8;15571:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15556:45;;15612:13;15628:28;15652:3;15628:19;15640:6;15628:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15612:44;;15667:23;15693:28;15715:5;15693:17;15705:4;15693:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15667:54;;15740:15;15757:4;15763:5;15732:37;;;;;;;;;15308:469;;;;;;;:::o;15785:534::-;15979:7;16001;16023;16058:15;16076:24;16088:11;16076:7;:11;;:24;;;;:::i;:::-;16058:42;;16111:12;16126:21;16135:11;16126:4;:8;;:21;;;;:::i;:::-;16111:36;;16158:13;16174:22;16184:11;16174:5;:9;;:22;;;;:::i;:::-;16158:38;;16207:23;16233:28;16255:5;16233:17;16245:4;16233:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16207:54;;16280:7;16289:15;16306:4;16272:39;;;;;;;;;;15785:534;;;;;;;;:::o;2424:246::-;2482:7;2511:1;2506;:6;2502:47;;;2536:1;2529:8;;;;2502:47;2559:9;2575:1;2571;:5;;;;:::i;:::-;2559:17;;2604:1;2599;2595;:5;;;;:::i;:::-;:10;2587:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2661:1;2654:8;;;2424:246;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:60::-;3522:3;3543:5;3536:12;;3494:60;;;:::o;3560:142::-;3610:9;3643:53;3661:34;3670:24;3688:5;3670:24;:::i;:::-;3661:34;:::i;:::-;3643:53;:::i;:::-;3630:66;;3560:142;;;:::o;3708:126::-;3758:9;3791:37;3822:5;3791:37;:::i;:::-;3778:50;;3708:126;;;:::o;3840:151::-;3915:9;3948:37;3979:5;3948:37;:::i;:::-;3935:50;;3840:151;;;:::o;3997:181::-;4109:62;4165:5;4109:62;:::i;:::-;4104:3;4097:75;3997:181;;:::o;4184:272::-;4302:4;4340:2;4329:9;4325:18;4317:26;;4353:96;4446:1;4435:9;4431:17;4422:6;4353:96;:::i;:::-;4184:272;;;;:::o;4462:118::-;4549:24;4567:5;4549:24;:::i;:::-;4544:3;4537:37;4462:118;;:::o;4586:222::-;4679:4;4717:2;4706:9;4702:18;4694:26;;4730:71;4798:1;4787:9;4783:17;4774:6;4730:71;:::i;:::-;4586:222;;;;:::o;4814:619::-;4891:6;4899;4907;4956:2;4944:9;4935:7;4931:23;4927:32;4924:119;;;4962:79;;:::i;:::-;4924:119;5082:1;5107:53;5152:7;5143:6;5132:9;5128:22;5107:53;:::i;:::-;5097:63;;5053:117;5209:2;5235:53;5280:7;5271:6;5260:9;5256:22;5235:53;:::i;:::-;5225:63;;5180:118;5337:2;5363:53;5408:7;5399:6;5388:9;5384:22;5363:53;:::i;:::-;5353:63;;5308:118;4814:619;;;;;:::o;5439:86::-;5474:7;5514:4;5507:5;5503:16;5492:27;;5439:86;;;:::o;5531:112::-;5614:22;5630:5;5614:22;:::i;:::-;5609:3;5602:35;5531:112;;:::o;5649:214::-;5738:4;5776:2;5765:9;5761:18;5753:26;;5789:67;5853:1;5842:9;5838:17;5829:6;5789:67;:::i;:::-;5649:214;;;;:::o;5869:118::-;5956:24;5974:5;5956:24;:::i;:::-;5951:3;5944:37;5869:118;;:::o;5993:222::-;6086:4;6124:2;6113:9;6109:18;6101:26;;6137:71;6205:1;6194:9;6190:17;6181:6;6137:71;:::i;:::-;5993:222;;;;:::o;6221:104::-;6266:7;6295:24;6313:5;6295:24;:::i;:::-;6284:35;;6221:104;;;:::o;6331:138::-;6412:32;6438:5;6412:32;:::i;:::-;6405:5;6402:43;6392:71;;6459:1;6456;6449:12;6392:71;6331:138;:::o;6475:155::-;6529:5;6567:6;6554:20;6545:29;;6583:41;6618:5;6583:41;:::i;:::-;6475:155;;;;:::o;6636:345::-;6703:6;6752:2;6740:9;6731:7;6727:23;6723:32;6720:119;;;6758:79;;:::i;:::-;6720:119;6878:1;6903:61;6956:7;6947:6;6936:9;6932:22;6903:61;:::i;:::-;6893:71;;6849:125;6636:345;;;;:::o;6987:329::-;7046:6;7095:2;7083:9;7074:7;7070:23;7066:32;7063:119;;;7101:79;;:::i;:::-;7063:119;7221:1;7246:53;7291:7;7282:6;7271:9;7267:22;7246:53;:::i;:::-;7236:63;;7192:117;6987:329;;;;:::o;7322:116::-;7392:21;7407:5;7392:21;:::i;:::-;7385:5;7382:32;7372:60;;7428:1;7425;7418:12;7372:60;7322:116;:::o;7444:133::-;7487:5;7525:6;7512:20;7503:29;;7541:30;7565:5;7541:30;:::i;:::-;7444:133;;;;:::o;7583:323::-;7639:6;7688:2;7676:9;7667:7;7663:23;7659:32;7656:119;;;7694:79;;:::i;:::-;7656:119;7814:1;7839:50;7881:7;7872:6;7861:9;7857:22;7839:50;:::i;:::-;7829:60;;7785:114;7583:323;;;;:::o;7912:329::-;7971:6;8020:2;8008:9;7999:7;7995:23;7991:32;7988:119;;;8026:79;;:::i;:::-;7988:119;8146:1;8171:53;8216:7;8207:6;8196:9;8192:22;8171:53;:::i;:::-;8161:63;;8117:117;7912:329;;;;:::o;8247:765::-;8333:6;8341;8349;8357;8406:3;8394:9;8385:7;8381:23;8377:33;8374:120;;;8413:79;;:::i;:::-;8374:120;8533:1;8558:53;8603:7;8594:6;8583:9;8579:22;8558:53;:::i;:::-;8548:63;;8504:117;8660:2;8686:53;8731:7;8722:6;8711:9;8707:22;8686:53;:::i;:::-;8676:63;;8631:118;8788:2;8814:53;8859:7;8850:6;8839:9;8835:22;8814:53;:::i;:::-;8804:63;;8759:118;8916:2;8942:53;8987:7;8978:6;8967:9;8963:22;8942:53;:::i;:::-;8932:63;;8887:118;8247:765;;;;;;;:::o;9018:117::-;9127:1;9124;9117:12;9141:117;9250:1;9247;9240:12;9264:117;9373:1;9370;9363:12;9404:568;9477:8;9487:6;9537:3;9530:4;9522:6;9518:17;9514:27;9504:122;;9545:79;;:::i;:::-;9504:122;9658:6;9645:20;9635:30;;9688:18;9680:6;9677:30;9674:117;;;9710:79;;:::i;:::-;9674:117;9824:4;9816:6;9812:17;9800:29;;9878:3;9870:4;9862:6;9858:17;9848:8;9844:32;9841:41;9838:128;;;9885:79;;:::i;:::-;9838:128;9404:568;;;;;:::o;9978:698::-;10070:6;10078;10086;10135:2;10123:9;10114:7;10110:23;10106:32;10103:119;;;10141:79;;:::i;:::-;10103:119;10289:1;10278:9;10274:17;10261:31;10319:18;10311:6;10308:30;10305:117;;;10341:79;;:::i;:::-;10305:117;10454:80;10526:7;10517:6;10506:9;10502:22;10454:80;:::i;:::-;10436:98;;;;10232:312;10583:2;10609:50;10651:7;10642:6;10631:9;10627:22;10609:50;:::i;:::-;10599:60;;10554:115;9978:698;;;;;:::o;10682:474::-;10750:6;10758;10807:2;10795:9;10786:7;10782:23;10778:32;10775:119;;;10813:79;;:::i;:::-;10775:119;10933:1;10958:53;11003:7;10994:6;10983:9;10979:22;10958:53;:::i;:::-;10948:63;;10904:117;11060:2;11086:53;11131:7;11122:6;11111:9;11107:22;11086:53;:::i;:::-;11076:63;;11031:118;10682:474;;;;;:::o;11162:182::-;11302:34;11298:1;11290:6;11286:14;11279:58;11162:182;:::o;11350:366::-;11492:3;11513:67;11577:2;11572:3;11513:67;:::i;:::-;11506:74;;11589:93;11678:3;11589:93;:::i;:::-;11707:2;11702:3;11698:12;11691:19;;11350:366;;;:::o;11722:419::-;11888:4;11926:2;11915:9;11911:18;11903:26;;11975:9;11969:4;11965:20;11961:1;11950:9;11946:17;11939:47;12003:131;12129:4;12003:131;:::i;:::-;11995:139;;11722:419;;;:::o;12147:226::-;12287:34;12283:1;12275:6;12271:14;12264:58;12356:9;12351:2;12343:6;12339:15;12332:34;12147:226;:::o;12379:366::-;12521:3;12542:67;12606:2;12601:3;12542:67;:::i;:::-;12535:74;;12618:93;12707:3;12618:93;:::i;:::-;12736:2;12731:3;12727:12;12720:19;;12379:366;;;:::o;12751:419::-;12917:4;12955:2;12944:9;12940:18;12932:26;;13004:9;12998:4;12994:20;12990:1;12979:9;12975:17;12968:47;13032:131;13158:4;13032:131;:::i;:::-;13024:139;;12751:419;;;:::o;13176:180::-;13224:77;13221:1;13214:88;13321:4;13318:1;13311:15;13345:4;13342:1;13335:15;13362:305;13402:3;13421:20;13439:1;13421:20;:::i;:::-;13416:25;;13455:20;13473:1;13455:20;:::i;:::-;13450:25;;13609:1;13541:66;13537:74;13534:1;13531:81;13528:107;;;13615:18;;:::i;:::-;13528:107;13659:1;13656;13652:9;13645:16;;13362:305;;;;:::o;13673:180::-;13721:77;13718:1;13711:88;13818:4;13815:1;13808:15;13842:4;13839:1;13832:15;13859:233;13898:3;13921:24;13939:5;13921:24;:::i;:::-;13912:33;;13967:66;13960:5;13957:77;13954:103;;;14037:18;;:::i;:::-;13954:103;14084:1;14077:5;14073:13;14066:20;;13859:233;;;:::o;14098:173::-;14238:25;14234:1;14226:6;14222:14;14215:49;14098:173;:::o;14277:366::-;14419:3;14440:67;14504:2;14499:3;14440:67;:::i;:::-;14433:74;;14516:93;14605:3;14516:93;:::i;:::-;14634:2;14629:3;14625:12;14618:19;;14277:366;;;:::o;14649:419::-;14815:4;14853:2;14842:9;14838:18;14830:26;;14902:9;14896:4;14892:20;14888:1;14877:9;14873:17;14866:47;14930:131;15056:4;14930:131;:::i;:::-;14922:139;;14649:419;;;:::o;15074:222::-;15214:34;15210:1;15202:6;15198:14;15191:58;15283:5;15278:2;15270:6;15266:15;15259:30;15074:222;:::o;15302:366::-;15444:3;15465:67;15529:2;15524:3;15465:67;:::i;:::-;15458:74;;15541:93;15630:3;15541:93;:::i;:::-;15659:2;15654:3;15650:12;15643:19;;15302:366;;;:::o;15674:419::-;15840:4;15878:2;15867:9;15863:18;15855:26;;15927:9;15921:4;15917:20;15913:1;15902:9;15898:17;15891:47;15955:131;16081:4;15955:131;:::i;:::-;15947:139;;15674:419;;;:::o;16099:225::-;16239:34;16235:1;16227:6;16223:14;16216:58;16308:8;16303:2;16295:6;16291:15;16284:33;16099:225;:::o;16330:366::-;16472:3;16493:67;16557:2;16552:3;16493:67;:::i;:::-;16486:74;;16569:93;16658:3;16569:93;:::i;:::-;16687:2;16682:3;16678:12;16671:19;;16330:366;;;:::o;16702:419::-;16868:4;16906:2;16895:9;16891:18;16883:26;;16955:9;16949:4;16945:20;16941:1;16930:9;16926:17;16919:47;16983:131;17109:4;16983:131;:::i;:::-;16975:139;;16702:419;;;:::o;17127:223::-;17267:34;17263:1;17255:6;17251:14;17244:58;17336:6;17331:2;17323:6;17319:15;17312:31;17127:223;:::o;17356:366::-;17498:3;17519:67;17583:2;17578:3;17519:67;:::i;:::-;17512:74;;17595:93;17684:3;17595:93;:::i;:::-;17713:2;17708:3;17704:12;17697:19;;17356:366;;;:::o;17728:419::-;17894:4;17932:2;17921:9;17917:18;17909:26;;17981:9;17975:4;17971:20;17967:1;17956:9;17952:17;17945:47;18009:131;18135:4;18009:131;:::i;:::-;18001:139;;17728:419;;;:::o;18153:221::-;18293:34;18289:1;18281:6;18277:14;18270:58;18362:4;18357:2;18349:6;18345:15;18338:29;18153:221;:::o;18380:366::-;18522:3;18543:67;18607:2;18602:3;18543:67;:::i;:::-;18536:74;;18619:93;18708:3;18619:93;:::i;:::-;18737:2;18732:3;18728:12;18721:19;;18380:366;;;:::o;18752:419::-;18918:4;18956:2;18945:9;18941:18;18933:26;;19005:9;18999:4;18995:20;18991:1;18980:9;18976:17;18969:47;19033:131;19159:4;19033:131;:::i;:::-;19025:139;;18752:419;;;:::o;19177:224::-;19317:34;19313:1;19305:6;19301:14;19294:58;19386:7;19381:2;19373:6;19369:15;19362:32;19177:224;:::o;19407:366::-;19549:3;19570:67;19634:2;19629:3;19570:67;:::i;:::-;19563:74;;19646:93;19735:3;19646:93;:::i;:::-;19764:2;19759:3;19755:12;19748:19;;19407:366;;;:::o;19779:419::-;19945:4;19983:2;19972:9;19968:18;19960:26;;20032:9;20026:4;20022:20;20018:1;20007:9;20003:17;19996:47;20060:131;20186:4;20060:131;:::i;:::-;20052:139;;19779:419;;;:::o;20204:222::-;20344:34;20340:1;20332:6;20328:14;20321:58;20413:5;20408:2;20400:6;20396:15;20389:30;20204:222;:::o;20432:366::-;20574:3;20595:67;20659:2;20654:3;20595:67;:::i;:::-;20588:74;;20671:93;20760:3;20671:93;:::i;:::-;20789:2;20784:3;20780:12;20773:19;;20432:366;;;:::o;20804:419::-;20970:4;21008:2;20997:9;20993:18;20985:26;;21057:9;21051:4;21047:20;21043:1;21032:9;21028:17;21021:47;21085:131;21211:4;21085:131;:::i;:::-;21077:139;;20804:419;;;:::o;21229:228::-;21369:34;21365:1;21357:6;21353:14;21346:58;21438:11;21433:2;21425:6;21421:15;21414:36;21229:228;:::o;21463:366::-;21605:3;21626:67;21690:2;21685:3;21626:67;:::i;:::-;21619:74;;21702:93;21791:3;21702:93;:::i;:::-;21820:2;21815:3;21811:12;21804:19;;21463:366;;;:::o;21835:419::-;22001:4;22039:2;22028:9;22024:18;22016:26;;22088:9;22082:4;22078:20;22074:1;22063:9;22059:17;22052:47;22116:131;22242:4;22116:131;:::i;:::-;22108:139;;21835:419;;;:::o;22260:250::-;22400:34;22396:1;22388:6;22384:14;22377:58;22469:33;22464:2;22456:6;22452:15;22445:58;22260:250;:::o;22516:366::-;22658:3;22679:67;22743:2;22738:3;22679:67;:::i;:::-;22672:74;;22755:93;22844:3;22755:93;:::i;:::-;22873:2;22868:3;22864:12;22857:19;;22516:366;;;:::o;22888:419::-;23054:4;23092:2;23081:9;23077:18;23069:26;;23141:9;23135:4;23131:20;23127:1;23116:9;23112:17;23105:47;23169:131;23295:4;23169:131;:::i;:::-;23161:139;;22888:419;;;:::o;23313:178::-;23453:30;23449:1;23441:6;23437:14;23430:54;23313:178;:::o;23497:366::-;23639:3;23660:67;23724:2;23719:3;23660:67;:::i;:::-;23653:74;;23736:93;23825:3;23736:93;:::i;:::-;23854:2;23849:3;23845:12;23838:19;;23497:366;;;:::o;23869:419::-;24035:4;24073:2;24062:9;24058:18;24050:26;;24122:9;24116:4;24112:20;24108:1;24097:9;24093:17;24086:47;24150:131;24276:4;24150:131;:::i;:::-;24142:139;;23869:419;;;:::o;24294:222::-;24434:34;24430:1;24422:6;24418:14;24411:58;24503:5;24498:2;24490:6;24486:15;24479:30;24294:222;:::o;24522:366::-;24664:3;24685:67;24749:2;24744:3;24685:67;:::i;:::-;24678:74;;24761:93;24850:3;24761:93;:::i;:::-;24879:2;24874:3;24870:12;24863:19;;24522:366;;;:::o;24894:419::-;25060:4;25098:2;25087:9;25083:18;25075:26;;25147:9;25141:4;25137:20;25133:1;25122:9;25118:17;25111:47;25175:131;25301:4;25175:131;:::i;:::-;25167:139;;24894:419;;;:::o;25319:222::-;25459:34;25455:1;25447:6;25443:14;25436:58;25528:5;25523:2;25515:6;25511:15;25504:30;25319:222;:::o;25547:366::-;25689:3;25710:67;25774:2;25769:3;25710:67;:::i;:::-;25703:74;;25786:93;25875:3;25786:93;:::i;:::-;25904:2;25899:3;25895:12;25888:19;;25547:366;;;:::o;25919:419::-;26085:4;26123:2;26112:9;26108:18;26100:26;;26172:9;26166:4;26162:20;26158:1;26147:9;26143:17;26136:47;26200:131;26326:4;26200:131;:::i;:::-;26192:139;;25919:419;;;:::o;26344:191::-;26384:4;26404:20;26422:1;26404:20;:::i;:::-;26399:25;;26438:20;26456:1;26438:20;:::i;:::-;26433:25;;26477:1;26474;26471:8;26468:34;;;26482:18;;:::i;:::-;26468:34;26527:1;26524;26520:9;26512:17;;26344:191;;;;:::o;26541:229::-;26681:34;26677:1;26669:6;26665:14;26658:58;26750:12;26745:2;26737:6;26733:15;26726:37;26541:229;:::o;26776:366::-;26918:3;26939:67;27003:2;26998:3;26939:67;:::i;:::-;26932:74;;27015:93;27104:3;27015:93;:::i;:::-;27133:2;27128:3;27124:12;27117:19;;26776:366;;;:::o;27148:419::-;27314:4;27352:2;27341:9;27337:18;27329:26;;27401:9;27395:4;27391:20;27387:1;27376:9;27372:17;27365:47;27429:131;27555:4;27429:131;:::i;:::-;27421:139;;27148:419;;;:::o;27573:180::-;27621:77;27618:1;27611:88;27718:4;27715:1;27708:15;27742:4;27739:1;27732:15;27759:143;27816:5;27847:6;27841:13;27832:22;;27863:33;27890:5;27863:33;:::i;:::-;27759:143;;;;:::o;27908:351::-;27978:6;28027:2;28015:9;28006:7;28002:23;27998:32;27995:119;;;28033:79;;:::i;:::-;27995:119;28153:1;28178:64;28234:7;28225:6;28214:9;28210:22;28178:64;:::i;:::-;28168:74;;28124:128;27908:351;;;;:::o;28265:85::-;28310:7;28339:5;28328:16;;28265:85;;;:::o;28356:158::-;28414:9;28447:61;28465:42;28474:32;28500:5;28474:32;:::i;:::-;28465:42;:::i;:::-;28447:61;:::i;:::-;28434:74;;28356:158;;;:::o;28520:147::-;28615:45;28654:5;28615:45;:::i;:::-;28610:3;28603:58;28520:147;;:::o;28673:114::-;28740:6;28774:5;28768:12;28758:22;;28673:114;;;:::o;28793:184::-;28892:11;28926:6;28921:3;28914:19;28966:4;28961:3;28957:14;28942:29;;28793:184;;;;:::o;28983:132::-;29050:4;29073:3;29065:11;;29103:4;29098:3;29094:14;29086:22;;28983:132;;;:::o;29121:108::-;29198:24;29216:5;29198:24;:::i;:::-;29193:3;29186:37;29121:108;;:::o;29235:179::-;29304:10;29325:46;29367:3;29359:6;29325:46;:::i;:::-;29403:4;29398:3;29394:14;29380:28;;29235:179;;;;:::o;29420:113::-;29490:4;29522;29517:3;29513:14;29505:22;;29420:113;;;:::o;29569:732::-;29688:3;29717:54;29765:5;29717:54;:::i;:::-;29787:86;29866:6;29861:3;29787:86;:::i;:::-;29780:93;;29897:56;29947:5;29897:56;:::i;:::-;29976:7;30007:1;29992:284;30017:6;30014:1;30011:13;29992:284;;;30093:6;30087:13;30120:63;30179:3;30164:13;30120:63;:::i;:::-;30113:70;;30206:60;30259:6;30206:60;:::i;:::-;30196:70;;30052:224;30039:1;30036;30032:9;30027:14;;29992:284;;;29996:14;30292:3;30285:10;;29693:608;;;29569:732;;;;:::o;30307:831::-;30570:4;30608:3;30597:9;30593:19;30585:27;;30622:71;30690:1;30679:9;30675:17;30666:6;30622:71;:::i;:::-;30703:80;30779:2;30768:9;30764:18;30755:6;30703:80;:::i;:::-;30830:9;30824:4;30820:20;30815:2;30804:9;30800:18;30793:48;30858:108;30961:4;30952:6;30858:108;:::i;:::-;30850:116;;30976:72;31044:2;31033:9;31029:18;31020:6;30976:72;:::i;:::-;31058:73;31126:3;31115:9;31111:19;31102:6;31058:73;:::i;:::-;30307:831;;;;;;;;:::o;31144:180::-;31192:77;31189:1;31182:88;31289:4;31286:1;31279:15;31313:4;31310:1;31303:15;31330:185;31370:1;31387:20;31405:1;31387:20;:::i;:::-;31382:25;;31421:20;31439:1;31421:20;:::i;:::-;31416:25;;31460:1;31450:35;;31465:18;;:::i;:::-;31450:35;31507:1;31504;31500:9;31495:14;;31330:185;;;;:::o;31521:177::-;31661:29;31657:1;31649:6;31645:14;31638:53;31521:177;:::o;31704:366::-;31846:3;31867:67;31931:2;31926:3;31867:67;:::i;:::-;31860:74;;31943:93;32032:3;31943:93;:::i;:::-;32061:2;32056:3;32052:12;32045:19;;31704:366;;;:::o;32076:419::-;32242:4;32280:2;32269:9;32265:18;32257:26;;32329:9;32323:4;32319:20;32315:1;32304:9;32300:17;32293:47;32357:131;32483:4;32357:131;:::i;:::-;32349:139;;32076:419;;;:::o;32501:348::-;32541:7;32564:20;32582:1;32564:20;:::i;:::-;32559:25;;32598:20;32616:1;32598:20;:::i;:::-;32593:25;;32786:1;32718:66;32714:74;32711:1;32708:81;32703:1;32696:9;32689:17;32685:105;32682:131;;;32793:18;;:::i;:::-;32682:131;32841:1;32838;32834:9;32823:20;;32501:348;;;;:::o;32855:220::-;32995:34;32991:1;32983:6;32979:14;32972:58;33064:3;33059:2;33051:6;33047:15;33040:28;32855:220;:::o;33081:366::-;33223:3;33244:67;33308:2;33303:3;33244:67;:::i;:::-;33237:74;;33320:93;33409:3;33320:93;:::i;:::-;33438:2;33433:3;33429:12;33422:19;;33081:366;;;:::o;33453:419::-;33619:4;33657:2;33646:9;33642:18;33634:26;;33706:9;33700:4;33696:20;33692:1;33681:9;33677:17;33670:47;33734:131;33860:4;33734:131;:::i;:::-;33726:139;;33453:419;;;:::o

Swarm Source

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