ETH Price: $3,494.13 (+2.76%)
Gas: 13 Gwei

Token

Shibmino (ShibMino)
 

Overview

Max Total Supply

10,000,000,000 ShibMino

Holders

4

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
195,501,696.178206561 ShibMino

Value
$0.00
0xE12a8Bf3abdC787108633f1fCc588917cdACAaCC
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:
ShibMino

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

//Stealth Launch - Shibmino Token
//
//ReBorn Of August 2020
//
//https://twitter.com/shibmino



// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.4;

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

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

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

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

     /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }


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

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

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

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

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

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

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

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract ShibMino is Context, IERC20, Ownable {
    
    using SafeMath for uint256;

    string private constant _name = "Shibmino";
    string private constant _symbol = "ShibMino";
    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;
    
    //Buy Fee
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 0;
    
    //Sell Fee
    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 => bool) public preTrader;
    mapping(address => uint256) private cooldown;
    
    address payable private _developmentAddress = payable(0x3795fAdb126f9e0b283E289a5C423Af94fEdc63f);
    address payable private _marketingAddress = payable(0x3795fAdb126f9e0b283E289a5C423Af94fEdc63f);
    
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;
    
    uint256 public _maxTxAmount = 250000000 * 10**9; //2.5%
    uint256 public _maxWalletSize = 250000000 * 10**9; //2.5%
    uint256 public _swapTokensAtAmount = 1000000 * 10**9; //0.01%

    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;
        
        preTrader[owner()] = 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(preTrader[from], "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) {
                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 {
        _developmentAddress.transfer(amount.div(2));
        _marketingAddress.transfer(amount.div(2));
    }

    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }

    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 blockBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

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

    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 {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }
    
    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }
    
    //Set MAx transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }
    
    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }
 
    function allowPreTrading(address account, bool allowed) public onlyOwner {
        require(preTrader[account] != allowed, "TOKEN: Already enabled.");
        preTrader[account] = allowed;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"allowed","type":"bool"}],"name":"allowPreTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","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":[],"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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"preTrader","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"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":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","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"}]

6080604052678ac7230489e800006000196200001c919062000778565b6000196200002b9190620007df565b600655600060085560006009556000600a556019600b55600a54600c55600b54600d55600c54600e55600d54600f55733795fadb126f9e0b283e289a5c423af94fedc63f601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550733795fadb126f9e0b283e289a5c423af94fedc63f601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601660156101000a81548160ff02191690831515021790555060016016806101000a81548160ff0219169083151502179055506703782dace9d900006017556703782dace9d9000060185566038d7ea4c680006019553480156200016957600080fd5b5060006200017c6200070e60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460026000620002316200070e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000315573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033b919062000884565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c9919062000884565b6040518363ffffffff1660e01b8152600401620003e8929190620008c7565b6020604051808303816000875af115801562000408573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042e919062000884565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004846200071660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000620006376200071660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006986200070e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef678ac7230489e80000604051620006ff919062000905565b60405180910390a35062000922565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000785826200073f565b915062000792836200073f565b925082620007a557620007a462000749565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007ec826200073f565b9150620007f9836200073f565b9250828203905081811115620008145762000813620007b0565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200084c826200081f565b9050919050565b6200085e816200083f565b81146200086a57600080fd5b50565b6000815190506200087e8162000853565b92915050565b6000602082840312156200089d576200089c6200081a565b5b6000620008ad848285016200086d565b91505092915050565b620008c1816200083f565b82525050565b6000604082019050620008de6000830185620008b6565b620008ed6020830184620008b6565b9392505050565b620008ff816200073f565b82525050565b60006020820190506200091c6000830184620008f4565b92915050565b613dbd80620009326000396000f3fe6080604052600436106101d05760003560e01c806374010ece116100f7578063a2a957bb11610095578063c3c8cd8011610064578063c3c8cd801461066e578063dd62ed3e14610685578063ea1644d5146106c2578063f2fde38b146106eb576101d7565b8063a2a957bb1461058e578063a9059cbb146105b7578063bdd795ef146105f4578063bfd7928414610631576101d7565b80638f70ccf7116100d15780638f70ccf7146104e65780638f9a55c01461050f57806395d89b411461053a57806398a5c31514610565576101d7565b806374010ece146104675780637d1db4a5146104905780638da5cb5b146104bb576101d7565b80632fd689e31161016f5780636d8aa8f81161013e5780636d8aa8f8146103d35780636fc3eaec146103fc57806370a0823114610413578063715018a614610450576101d7565b80632fd689e314610329578063313ce5671461035457806349bd5a5e1461037f5780636b999053146103aa576101d7565b80631694505e116101ab5780631694505e1461026d57806318160ddd1461029857806323b872dd146102c35780632f9c456914610300576101d7565b8062b8cf2a146101dc57806306fdde0314610205578063095ea7b314610230576101d7565b366101d757005b600080fd5b3480156101e857600080fd5b5061020360048036038101906101fe9190612d9c565b610714565b005b34801561021157600080fd5b5061021a61083e565b6040516102279190612e64565b60405180910390f35b34801561023c57600080fd5b5061025760048036038101906102529190612ebc565b61087b565b6040516102649190612f17565b60405180910390f35b34801561027957600080fd5b50610282610899565b60405161028f9190612f91565b60405180910390f35b3480156102a457600080fd5b506102ad6108bf565b6040516102ba9190612fbb565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e59190612fd6565b6108cf565b6040516102f79190612f17565b60405180910390f35b34801561030c57600080fd5b5061032760048036038101906103229190613055565b6109a8565b005b34801561033557600080fd5b5061033e610b2a565b60405161034b9190612fbb565b60405180910390f35b34801561036057600080fd5b50610369610b30565b60405161037691906130b1565b60405180910390f35b34801561038b57600080fd5b50610394610b39565b6040516103a191906130db565b60405180910390f35b3480156103b657600080fd5b506103d160048036038101906103cc91906130f6565b610b5f565b005b3480156103df57600080fd5b506103fa60048036038101906103f59190613123565b610c4f565b005b34801561040857600080fd5b50610411610d00565b005b34801561041f57600080fd5b5061043a600480360381019061043591906130f6565b610dd1565b6040516104479190612fbb565b60405180910390f35b34801561045c57600080fd5b50610465610e22565b005b34801561047357600080fd5b5061048e60048036038101906104899190613150565b610f75565b005b34801561049c57600080fd5b506104a5611014565b6040516104b29190612fbb565b60405180910390f35b3480156104c757600080fd5b506104d061101a565b6040516104dd91906130db565b60405180910390f35b3480156104f257600080fd5b5061050d60048036038101906105089190613123565b611043565b005b34801561051b57600080fd5b506105246110f5565b6040516105319190612fbb565b60405180910390f35b34801561054657600080fd5b5061054f6110fb565b60405161055c9190612e64565b60405180910390f35b34801561057157600080fd5b5061058c60048036038101906105879190613150565b611138565b005b34801561059a57600080fd5b506105b560048036038101906105b0919061317d565b6111d7565b005b3480156105c357600080fd5b506105de60048036038101906105d99190612ebc565b61128e565b6040516105eb9190612f17565b60405180910390f35b34801561060057600080fd5b5061061b600480360381019061061691906130f6565b6112ac565b6040516106289190612f17565b60405180910390f35b34801561063d57600080fd5b50610658600480360381019061065391906130f6565b6112cc565b6040516106659190612f17565b60405180910390f35b34801561067a57600080fd5b506106836112ec565b005b34801561069157600080fd5b506106ac60048036038101906106a791906131e4565b6113c5565b6040516106b99190612fbb565b60405180910390f35b3480156106ce57600080fd5b506106e960048036038101906106e49190613150565b61144c565b005b3480156106f757600080fd5b50610712600480360381019061070d91906130f6565b6114eb565b005b61071c6116ac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a090613270565b60405180910390fd5b60005b815181101561083a576001601060008484815181106107ce576107cd613290565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610832906132ee565b9150506107ac565b5050565b60606040518060400160405280600881526020017f536869626d696e6f000000000000000000000000000000000000000000000000815250905090565b600061088f6108886116ac565b84846116b4565b6001905092915050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000678ac7230489e80000905090565b60006108dc84848461187d565b61099d846108e86116ac565b61099885604051806060016040528060288152602001613d6060289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061094e6116ac565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461206b9092919063ffffffff16565b6116b4565b600190509392505050565b6109b06116ac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3490613270565b60405180910390fd5b801515601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610acf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac690613382565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60195481565b60006009905090565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610b676116ac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610beb90613270565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610c576116ac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ce4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdb90613270565b60405180910390fd5b806016806101000a81548160ff02191690831515021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d416116ac565b73ffffffffffffffffffffffffffffffffffffffff161480610db75750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d9f6116ac565b73ffffffffffffffffffffffffffffffffffffffff16145b610dc057600080fd5b6000479050610dce816120cf565b50565b6000610e1b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121ca565b9050919050565b610e2a6116ac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eae90613270565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610f7d6116ac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461100a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100190613270565b60405180910390fd5b8060178190555050565b60175481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61104b6116ac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cf90613270565b60405180910390fd5b80601660146101000a81548160ff02191690831515021790555050565b60185481565b60606040518060400160405280600881526020017f536869624d696e6f000000000000000000000000000000000000000000000000815250905090565b6111406116ac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c490613270565b60405180910390fd5b8060198190555050565b6111df6116ac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461126c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126390613270565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b60006112a261129b6116ac565b848461187d565b6001905092915050565b60116020528060005260406000206000915054906101000a900460ff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661132d6116ac565b73ffffffffffffffffffffffffffffffffffffffff1614806113a35750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661138b6116ac565b73ffffffffffffffffffffffffffffffffffffffff16145b6113ac57600080fd5b60006113b730610dd1565b90506113c281612238565b50565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6114546116ac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d890613270565b60405180910390fd5b8060188190555050565b6114f36116ac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611580576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157790613270565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e690613414565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611723576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171a906134a6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611792576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178990613538565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118709190612fbb565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e3906135ca565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361195b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119529061365c565b60405180910390fd5b6000811161199e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611995906136ee565b60405180910390fd5b6119a661101a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a1457506119e461101a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d6a57601660149054906101000a900460ff16611aba57601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611ab9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab090613780565b60405180910390fd5b5b601754811115611aff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af6906137ec565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ba35750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611be2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd99061387e565b60405180910390fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611c8f5760185481611c4484610dd1565b611c4e919061389e565b10611c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8590613944565b60405180910390fd5b5b6000611c9a30610dd1565b9050600060195482101590506017548210611cb55760175491505b808015611ccf5750601660159054906101000a900460ff16155b8015611d295750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611d3f575060168054906101000a900460ff165b15611d6757611d4d82612238565b60004790506000811115611d6557611d64476120cf565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611e115750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611ec45750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611ec35750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611ed25760009050612059565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f7d5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f9557600854600c81905550600954600d819055505b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120405750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561205857600a54600c81905550600b54600d819055505b5b612065848484846124b1565b50505050565b60008383111582906120b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120aa9190612e64565b60405180910390fd5b50600083856120c29190613964565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61211f6002846124de90919063ffffffff16565b9081150290604051600060405180830381858888f1935050505015801561214a573d6000803e3d6000fd5b50601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61219b6002846124de90919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156121c6573d6000803e3d6000fd5b5050565b6000600654821115612211576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220890613a0a565b60405180910390fd5b600061221b612528565b905061223081846124de90919063ffffffff16565b915050919050565b6001601660156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156122705761226f612bfb565b5b60405190808252806020026020018201604052801561229e5781602001602082028036833780820191505090505b50905030816000815181106122b6576122b5613290565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561235d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123819190613a3f565b8160018151811061239557612394613290565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123fc30601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846116b4565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612460959493929190613b65565b600060405180830381600087803b15801561247a57600080fd5b505af115801561248e573d6000803e3d6000fd5b50505050506000601660156101000a81548160ff02191690831515021790555050565b806124bf576124be612553565b5b6124ca848484612590565b806124d8576124d761275b565b5b50505050565b600061252083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061276f565b905092915050565b60008060006125356127d2565b9150915061254c81836124de90919063ffffffff16565b9250505090565b6000600c5414801561256757506000600d54145b61258e57600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806125a287612831565b95509550955095509550955061260086600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461289990919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061269585600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128e390919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126e181612941565b6126eb84836129fe565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127489190612fbb565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080831182906127b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ad9190612e64565b60405180910390fd5b50600083856127c59190613bee565b9050809150509392505050565b600080600060065490506000678ac7230489e800009050612806678ac7230489e800006006546124de90919063ffffffff16565b82101561282457600654678ac7230489e8000093509350505061282d565b81819350935050505b9091565b600080600080600080600080600061284e8a600c54600d54612a38565b925092509250600061285e612528565b905060008060006128718e878787612ace565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006128db83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061206b565b905092915050565b60008082846128f2919061389e565b905083811015612937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292e90613c6b565b60405180910390fd5b8091505092915050565b600061294b612528565b905060006129628284612b5790919063ffffffff16565b90506129b681600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128e390919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612a138260065461289990919063ffffffff16565b600681905550612a2e816007546128e390919063ffffffff16565b6007819055505050565b600080600080612a646064612a56888a612b5790919063ffffffff16565b6124de90919063ffffffff16565b90506000612a8e6064612a80888b612b5790919063ffffffff16565b6124de90919063ffffffff16565b90506000612ab782612aa9858c61289990919063ffffffff16565b61289990919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612ae78589612b5790919063ffffffff16565b90506000612afe8689612b5790919063ffffffff16565b90506000612b158789612b5790919063ffffffff16565b90506000612b3e82612b30858761289990919063ffffffff16565b61289990919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612b695760009050612bcb565b60008284612b779190613c8b565b9050828482612b869190613bee565b14612bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bbd90613d3f565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612c3382612bea565b810181811067ffffffffffffffff82111715612c5257612c51612bfb565b5b80604052505050565b6000612c65612bd1565b9050612c718282612c2a565b919050565b600067ffffffffffffffff821115612c9157612c90612bfb565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612cd282612ca7565b9050919050565b612ce281612cc7565b8114612ced57600080fd5b50565b600081359050612cff81612cd9565b92915050565b6000612d18612d1384612c76565b612c5b565b90508083825260208201905060208402830185811115612d3b57612d3a612ca2565b5b835b81811015612d645780612d508882612cf0565b845260208401935050602081019050612d3d565b5050509392505050565b600082601f830112612d8357612d82612be5565b5b8135612d93848260208601612d05565b91505092915050565b600060208284031215612db257612db1612bdb565b5b600082013567ffffffffffffffff811115612dd057612dcf612be0565b5b612ddc84828501612d6e565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e1f578082015181840152602081019050612e04565b60008484015250505050565b6000612e3682612de5565b612e408185612df0565b9350612e50818560208601612e01565b612e5981612bea565b840191505092915050565b60006020820190508181036000830152612e7e8184612e2b565b905092915050565b6000819050919050565b612e9981612e86565b8114612ea457600080fd5b50565b600081359050612eb681612e90565b92915050565b60008060408385031215612ed357612ed2612bdb565b5b6000612ee185828601612cf0565b9250506020612ef285828601612ea7565b9150509250929050565b60008115159050919050565b612f1181612efc565b82525050565b6000602082019050612f2c6000830184612f08565b92915050565b6000819050919050565b6000612f57612f52612f4d84612ca7565b612f32565b612ca7565b9050919050565b6000612f6982612f3c565b9050919050565b6000612f7b82612f5e565b9050919050565b612f8b81612f70565b82525050565b6000602082019050612fa66000830184612f82565b92915050565b612fb581612e86565b82525050565b6000602082019050612fd06000830184612fac565b92915050565b600080600060608486031215612fef57612fee612bdb565b5b6000612ffd86828701612cf0565b935050602061300e86828701612cf0565b925050604061301f86828701612ea7565b9150509250925092565b61303281612efc565b811461303d57600080fd5b50565b60008135905061304f81613029565b92915050565b6000806040838503121561306c5761306b612bdb565b5b600061307a85828601612cf0565b925050602061308b85828601613040565b9150509250929050565b600060ff82169050919050565b6130ab81613095565b82525050565b60006020820190506130c660008301846130a2565b92915050565b6130d581612cc7565b82525050565b60006020820190506130f060008301846130cc565b92915050565b60006020828403121561310c5761310b612bdb565b5b600061311a84828501612cf0565b91505092915050565b60006020828403121561313957613138612bdb565b5b600061314784828501613040565b91505092915050565b60006020828403121561316657613165612bdb565b5b600061317484828501612ea7565b91505092915050565b6000806000806080858703121561319757613196612bdb565b5b60006131a587828801612ea7565b94505060206131b687828801612ea7565b93505060406131c787828801612ea7565b92505060606131d887828801612ea7565b91505092959194509250565b600080604083850312156131fb576131fa612bdb565b5b600061320985828601612cf0565b925050602061321a85828601612cf0565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061325a602083612df0565b915061326582613224565b602082019050919050565b600060208201905081810360008301526132898161324d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006132f982612e86565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361332b5761332a6132bf565b5b600182019050919050565b7f544f4b454e3a20416c726561647920656e61626c65642e000000000000000000600082015250565b600061336c601783612df0565b915061337782613336565b602082019050919050565b6000602082019050818103600083015261339b8161335f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006133fe602683612df0565b9150613409826133a2565b604082019050919050565b6000602082019050818103600083015261342d816133f1565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613490602483612df0565b915061349b82613434565b604082019050919050565b600060208201905081810360008301526134bf81613483565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613522602283612df0565b915061352d826134c6565b604082019050919050565b6000602082019050818103600083015261355181613515565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006135b4602583612df0565b91506135bf82613558565b604082019050919050565b600060208201905081810360008301526135e3816135a7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613646602383612df0565b9150613651826135ea565b604082019050919050565b6000602082019050818103600083015261367581613639565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006136d8602983612df0565b91506136e38261367c565b604082019050919050565b60006020820190508181036000830152613707816136cb565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b600061376a603f83612df0565b91506137758261370e565b604082019050919050565b600060208201905081810360008301526137998161375d565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006137d6601c83612df0565b91506137e1826137a0565b602082019050919050565b60006020820190508181036000830152613805816137c9565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613868602383612df0565b91506138738261380c565b604082019050919050565b600060208201905081810360008301526138978161385b565b9050919050565b60006138a982612e86565b91506138b483612e86565b92508282019050808211156138cc576138cb6132bf565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061392e602383612df0565b9150613939826138d2565b604082019050919050565b6000602082019050818103600083015261395d81613921565b9050919050565b600061396f82612e86565b915061397a83612e86565b9250828203905081811115613992576139916132bf565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006139f4602a83612df0565b91506139ff82613998565b604082019050919050565b60006020820190508181036000830152613a23816139e7565b9050919050565b600081519050613a3981612cd9565b92915050565b600060208284031215613a5557613a54612bdb565b5b6000613a6384828501613a2a565b91505092915050565b6000819050919050565b6000613a91613a8c613a8784613a6c565b612f32565b612e86565b9050919050565b613aa181613a76565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613adc81612cc7565b82525050565b6000613aee8383613ad3565b60208301905092915050565b6000602082019050919050565b6000613b1282613aa7565b613b1c8185613ab2565b9350613b2783613ac3565b8060005b83811015613b58578151613b3f8882613ae2565b9750613b4a83613afa565b925050600181019050613b2b565b5085935050505092915050565b600060a082019050613b7a6000830188612fac565b613b876020830187613a98565b8181036040830152613b998186613b07565b9050613ba860608301856130cc565b613bb56080830184612fac565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613bf982612e86565b9150613c0483612e86565b925082613c1457613c13613bbf565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613c55601b83612df0565b9150613c6082613c1f565b602082019050919050565b60006020820190508181036000830152613c8481613c48565b9050919050565b6000613c9682612e86565b9150613ca183612e86565b9250828202613caf81612e86565b91508282048414831517613cc657613cc56132bf565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d29602183612df0565b9150613d3482613ccd565b604082019050919050565b60006020820190508181036000830152613d5881613d1c565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207ad5bd8454c34672ad9f1e459a293dd194eae2b5ed11de7670c075b449aee8e064736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101d05760003560e01c806374010ece116100f7578063a2a957bb11610095578063c3c8cd8011610064578063c3c8cd801461066e578063dd62ed3e14610685578063ea1644d5146106c2578063f2fde38b146106eb576101d7565b8063a2a957bb1461058e578063a9059cbb146105b7578063bdd795ef146105f4578063bfd7928414610631576101d7565b80638f70ccf7116100d15780638f70ccf7146104e65780638f9a55c01461050f57806395d89b411461053a57806398a5c31514610565576101d7565b806374010ece146104675780637d1db4a5146104905780638da5cb5b146104bb576101d7565b80632fd689e31161016f5780636d8aa8f81161013e5780636d8aa8f8146103d35780636fc3eaec146103fc57806370a0823114610413578063715018a614610450576101d7565b80632fd689e314610329578063313ce5671461035457806349bd5a5e1461037f5780636b999053146103aa576101d7565b80631694505e116101ab5780631694505e1461026d57806318160ddd1461029857806323b872dd146102c35780632f9c456914610300576101d7565b8062b8cf2a146101dc57806306fdde0314610205578063095ea7b314610230576101d7565b366101d757005b600080fd5b3480156101e857600080fd5b5061020360048036038101906101fe9190612d9c565b610714565b005b34801561021157600080fd5b5061021a61083e565b6040516102279190612e64565b60405180910390f35b34801561023c57600080fd5b5061025760048036038101906102529190612ebc565b61087b565b6040516102649190612f17565b60405180910390f35b34801561027957600080fd5b50610282610899565b60405161028f9190612f91565b60405180910390f35b3480156102a457600080fd5b506102ad6108bf565b6040516102ba9190612fbb565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e59190612fd6565b6108cf565b6040516102f79190612f17565b60405180910390f35b34801561030c57600080fd5b5061032760048036038101906103229190613055565b6109a8565b005b34801561033557600080fd5b5061033e610b2a565b60405161034b9190612fbb565b60405180910390f35b34801561036057600080fd5b50610369610b30565b60405161037691906130b1565b60405180910390f35b34801561038b57600080fd5b50610394610b39565b6040516103a191906130db565b60405180910390f35b3480156103b657600080fd5b506103d160048036038101906103cc91906130f6565b610b5f565b005b3480156103df57600080fd5b506103fa60048036038101906103f59190613123565b610c4f565b005b34801561040857600080fd5b50610411610d00565b005b34801561041f57600080fd5b5061043a600480360381019061043591906130f6565b610dd1565b6040516104479190612fbb565b60405180910390f35b34801561045c57600080fd5b50610465610e22565b005b34801561047357600080fd5b5061048e60048036038101906104899190613150565b610f75565b005b34801561049c57600080fd5b506104a5611014565b6040516104b29190612fbb565b60405180910390f35b3480156104c757600080fd5b506104d061101a565b6040516104dd91906130db565b60405180910390f35b3480156104f257600080fd5b5061050d60048036038101906105089190613123565b611043565b005b34801561051b57600080fd5b506105246110f5565b6040516105319190612fbb565b60405180910390f35b34801561054657600080fd5b5061054f6110fb565b60405161055c9190612e64565b60405180910390f35b34801561057157600080fd5b5061058c60048036038101906105879190613150565b611138565b005b34801561059a57600080fd5b506105b560048036038101906105b0919061317d565b6111d7565b005b3480156105c357600080fd5b506105de60048036038101906105d99190612ebc565b61128e565b6040516105eb9190612f17565b60405180910390f35b34801561060057600080fd5b5061061b600480360381019061061691906130f6565b6112ac565b6040516106289190612f17565b60405180910390f35b34801561063d57600080fd5b50610658600480360381019061065391906130f6565b6112cc565b6040516106659190612f17565b60405180910390f35b34801561067a57600080fd5b506106836112ec565b005b34801561069157600080fd5b506106ac60048036038101906106a791906131e4565b6113c5565b6040516106b99190612fbb565b60405180910390f35b3480156106ce57600080fd5b506106e960048036038101906106e49190613150565b61144c565b005b3480156106f757600080fd5b50610712600480360381019061070d91906130f6565b6114eb565b005b61071c6116ac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a090613270565b60405180910390fd5b60005b815181101561083a576001601060008484815181106107ce576107cd613290565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610832906132ee565b9150506107ac565b5050565b60606040518060400160405280600881526020017f536869626d696e6f000000000000000000000000000000000000000000000000815250905090565b600061088f6108886116ac565b84846116b4565b6001905092915050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000678ac7230489e80000905090565b60006108dc84848461187d565b61099d846108e86116ac565b61099885604051806060016040528060288152602001613d6060289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061094e6116ac565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461206b9092919063ffffffff16565b6116b4565b600190509392505050565b6109b06116ac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3490613270565b60405180910390fd5b801515601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610acf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac690613382565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60195481565b60006009905090565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610b676116ac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610beb90613270565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610c576116ac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ce4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdb90613270565b60405180910390fd5b806016806101000a81548160ff02191690831515021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d416116ac565b73ffffffffffffffffffffffffffffffffffffffff161480610db75750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d9f6116ac565b73ffffffffffffffffffffffffffffffffffffffff16145b610dc057600080fd5b6000479050610dce816120cf565b50565b6000610e1b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121ca565b9050919050565b610e2a6116ac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eae90613270565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610f7d6116ac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461100a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100190613270565b60405180910390fd5b8060178190555050565b60175481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61104b6116ac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cf90613270565b60405180910390fd5b80601660146101000a81548160ff02191690831515021790555050565b60185481565b60606040518060400160405280600881526020017f536869624d696e6f000000000000000000000000000000000000000000000000815250905090565b6111406116ac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c490613270565b60405180910390fd5b8060198190555050565b6111df6116ac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461126c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126390613270565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b60006112a261129b6116ac565b848461187d565b6001905092915050565b60116020528060005260406000206000915054906101000a900460ff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661132d6116ac565b73ffffffffffffffffffffffffffffffffffffffff1614806113a35750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661138b6116ac565b73ffffffffffffffffffffffffffffffffffffffff16145b6113ac57600080fd5b60006113b730610dd1565b90506113c281612238565b50565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6114546116ac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d890613270565b60405180910390fd5b8060188190555050565b6114f36116ac565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611580576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157790613270565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e690613414565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611723576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171a906134a6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611792576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178990613538565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118709190612fbb565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e3906135ca565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361195b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119529061365c565b60405180910390fd5b6000811161199e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611995906136ee565b60405180910390fd5b6119a661101a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a1457506119e461101a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d6a57601660149054906101000a900460ff16611aba57601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611ab9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab090613780565b60405180910390fd5b5b601754811115611aff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af6906137ec565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ba35750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611be2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd99061387e565b60405180910390fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611c8f5760185481611c4484610dd1565b611c4e919061389e565b10611c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8590613944565b60405180910390fd5b5b6000611c9a30610dd1565b9050600060195482101590506017548210611cb55760175491505b808015611ccf5750601660159054906101000a900460ff16155b8015611d295750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611d3f575060168054906101000a900460ff165b15611d6757611d4d82612238565b60004790506000811115611d6557611d64476120cf565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611e115750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611ec45750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611ec35750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611ed25760009050612059565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f7d5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f9557600854600c81905550600954600d819055505b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120405750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561205857600a54600c81905550600b54600d819055505b5b612065848484846124b1565b50505050565b60008383111582906120b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120aa9190612e64565b60405180910390fd5b50600083856120c29190613964565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61211f6002846124de90919063ffffffff16565b9081150290604051600060405180830381858888f1935050505015801561214a573d6000803e3d6000fd5b50601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61219b6002846124de90919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156121c6573d6000803e3d6000fd5b5050565b6000600654821115612211576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220890613a0a565b60405180910390fd5b600061221b612528565b905061223081846124de90919063ffffffff16565b915050919050565b6001601660156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156122705761226f612bfb565b5b60405190808252806020026020018201604052801561229e5781602001602082028036833780820191505090505b50905030816000815181106122b6576122b5613290565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561235d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123819190613a3f565b8160018151811061239557612394613290565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123fc30601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846116b4565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612460959493929190613b65565b600060405180830381600087803b15801561247a57600080fd5b505af115801561248e573d6000803e3d6000fd5b50505050506000601660156101000a81548160ff02191690831515021790555050565b806124bf576124be612553565b5b6124ca848484612590565b806124d8576124d761275b565b5b50505050565b600061252083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061276f565b905092915050565b60008060006125356127d2565b9150915061254c81836124de90919063ffffffff16565b9250505090565b6000600c5414801561256757506000600d54145b61258e57600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806125a287612831565b95509550955095509550955061260086600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461289990919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061269585600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128e390919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126e181612941565b6126eb84836129fe565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127489190612fbb565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080831182906127b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ad9190612e64565b60405180910390fd5b50600083856127c59190613bee565b9050809150509392505050565b600080600060065490506000678ac7230489e800009050612806678ac7230489e800006006546124de90919063ffffffff16565b82101561282457600654678ac7230489e8000093509350505061282d565b81819350935050505b9091565b600080600080600080600080600061284e8a600c54600d54612a38565b925092509250600061285e612528565b905060008060006128718e878787612ace565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006128db83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061206b565b905092915050565b60008082846128f2919061389e565b905083811015612937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292e90613c6b565b60405180910390fd5b8091505092915050565b600061294b612528565b905060006129628284612b5790919063ffffffff16565b90506129b681600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128e390919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612a138260065461289990919063ffffffff16565b600681905550612a2e816007546128e390919063ffffffff16565b6007819055505050565b600080600080612a646064612a56888a612b5790919063ffffffff16565b6124de90919063ffffffff16565b90506000612a8e6064612a80888b612b5790919063ffffffff16565b6124de90919063ffffffff16565b90506000612ab782612aa9858c61289990919063ffffffff16565b61289990919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612ae78589612b5790919063ffffffff16565b90506000612afe8689612b5790919063ffffffff16565b90506000612b158789612b5790919063ffffffff16565b90506000612b3e82612b30858761289990919063ffffffff16565b61289990919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612b695760009050612bcb565b60008284612b779190613c8b565b9050828482612b869190613bee565b14612bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bbd90613d3f565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612c3382612bea565b810181811067ffffffffffffffff82111715612c5257612c51612bfb565b5b80604052505050565b6000612c65612bd1565b9050612c718282612c2a565b919050565b600067ffffffffffffffff821115612c9157612c90612bfb565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612cd282612ca7565b9050919050565b612ce281612cc7565b8114612ced57600080fd5b50565b600081359050612cff81612cd9565b92915050565b6000612d18612d1384612c76565b612c5b565b90508083825260208201905060208402830185811115612d3b57612d3a612ca2565b5b835b81811015612d645780612d508882612cf0565b845260208401935050602081019050612d3d565b5050509392505050565b600082601f830112612d8357612d82612be5565b5b8135612d93848260208601612d05565b91505092915050565b600060208284031215612db257612db1612bdb565b5b600082013567ffffffffffffffff811115612dd057612dcf612be0565b5b612ddc84828501612d6e565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e1f578082015181840152602081019050612e04565b60008484015250505050565b6000612e3682612de5565b612e408185612df0565b9350612e50818560208601612e01565b612e5981612bea565b840191505092915050565b60006020820190508181036000830152612e7e8184612e2b565b905092915050565b6000819050919050565b612e9981612e86565b8114612ea457600080fd5b50565b600081359050612eb681612e90565b92915050565b60008060408385031215612ed357612ed2612bdb565b5b6000612ee185828601612cf0565b9250506020612ef285828601612ea7565b9150509250929050565b60008115159050919050565b612f1181612efc565b82525050565b6000602082019050612f2c6000830184612f08565b92915050565b6000819050919050565b6000612f57612f52612f4d84612ca7565b612f32565b612ca7565b9050919050565b6000612f6982612f3c565b9050919050565b6000612f7b82612f5e565b9050919050565b612f8b81612f70565b82525050565b6000602082019050612fa66000830184612f82565b92915050565b612fb581612e86565b82525050565b6000602082019050612fd06000830184612fac565b92915050565b600080600060608486031215612fef57612fee612bdb565b5b6000612ffd86828701612cf0565b935050602061300e86828701612cf0565b925050604061301f86828701612ea7565b9150509250925092565b61303281612efc565b811461303d57600080fd5b50565b60008135905061304f81613029565b92915050565b6000806040838503121561306c5761306b612bdb565b5b600061307a85828601612cf0565b925050602061308b85828601613040565b9150509250929050565b600060ff82169050919050565b6130ab81613095565b82525050565b60006020820190506130c660008301846130a2565b92915050565b6130d581612cc7565b82525050565b60006020820190506130f060008301846130cc565b92915050565b60006020828403121561310c5761310b612bdb565b5b600061311a84828501612cf0565b91505092915050565b60006020828403121561313957613138612bdb565b5b600061314784828501613040565b91505092915050565b60006020828403121561316657613165612bdb565b5b600061317484828501612ea7565b91505092915050565b6000806000806080858703121561319757613196612bdb565b5b60006131a587828801612ea7565b94505060206131b687828801612ea7565b93505060406131c787828801612ea7565b92505060606131d887828801612ea7565b91505092959194509250565b600080604083850312156131fb576131fa612bdb565b5b600061320985828601612cf0565b925050602061321a85828601612cf0565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061325a602083612df0565b915061326582613224565b602082019050919050565b600060208201905081810360008301526132898161324d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006132f982612e86565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361332b5761332a6132bf565b5b600182019050919050565b7f544f4b454e3a20416c726561647920656e61626c65642e000000000000000000600082015250565b600061336c601783612df0565b915061337782613336565b602082019050919050565b6000602082019050818103600083015261339b8161335f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006133fe602683612df0565b9150613409826133a2565b604082019050919050565b6000602082019050818103600083015261342d816133f1565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613490602483612df0565b915061349b82613434565b604082019050919050565b600060208201905081810360008301526134bf81613483565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613522602283612df0565b915061352d826134c6565b604082019050919050565b6000602082019050818103600083015261355181613515565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006135b4602583612df0565b91506135bf82613558565b604082019050919050565b600060208201905081810360008301526135e3816135a7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613646602383612df0565b9150613651826135ea565b604082019050919050565b6000602082019050818103600083015261367581613639565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006136d8602983612df0565b91506136e38261367c565b604082019050919050565b60006020820190508181036000830152613707816136cb565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b600061376a603f83612df0565b91506137758261370e565b604082019050919050565b600060208201905081810360008301526137998161375d565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006137d6601c83612df0565b91506137e1826137a0565b602082019050919050565b60006020820190508181036000830152613805816137c9565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613868602383612df0565b91506138738261380c565b604082019050919050565b600060208201905081810360008301526138978161385b565b9050919050565b60006138a982612e86565b91506138b483612e86565b92508282019050808211156138cc576138cb6132bf565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061392e602383612df0565b9150613939826138d2565b604082019050919050565b6000602082019050818103600083015261395d81613921565b9050919050565b600061396f82612e86565b915061397a83612e86565b9250828203905081811115613992576139916132bf565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006139f4602a83612df0565b91506139ff82613998565b604082019050919050565b60006020820190508181036000830152613a23816139e7565b9050919050565b600081519050613a3981612cd9565b92915050565b600060208284031215613a5557613a54612bdb565b5b6000613a6384828501613a2a565b91505092915050565b6000819050919050565b6000613a91613a8c613a8784613a6c565b612f32565b612e86565b9050919050565b613aa181613a76565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613adc81612cc7565b82525050565b6000613aee8383613ad3565b60208301905092915050565b6000602082019050919050565b6000613b1282613aa7565b613b1c8185613ab2565b9350613b2783613ac3565b8060005b83811015613b58578151613b3f8882613ae2565b9750613b4a83613afa565b925050600181019050613b2b565b5085935050505092915050565b600060a082019050613b7a6000830188612fac565b613b876020830187613a98565b8181036040830152613b998186613b07565b9050613ba860608301856130cc565b613bb56080830184612fac565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613bf982612e86565b9150613c0483612e86565b925082613c1457613c13613bbf565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613c55601b83612df0565b9150613c6082613c1f565b602082019050919050565b60006020820190508181036000830152613c8481613c48565b9050919050565b6000613c9682612e86565b9150613ca183612e86565b9250828202613caf81612e86565b91508282048414831517613cc657613cc56132bf565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d29602183612df0565b9150613d3482613ccd565b604082019050919050565b60006020820190508181036000830152613d5881613d1c565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207ad5bd8454c34672ad9f1e459a293dd194eae2b5ed11de7670c075b449aee8e064736f6c63430008110033

Deployed Bytecode Sourcemap

4324:13844:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13336:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7049:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7974:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5795:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7326:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8175:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17969:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6117:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7235:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5843:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13513:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17585:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13093:235;;;;;;;;;;;;;:::i;:::-;;7429:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2065:148;;;;;;;;;;;;;:::i;:::-;;17725:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5993:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1851:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12740:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6054:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7140:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17390:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17037:301;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7575:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5477:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5434:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12849:236;;;;;;;;;;;;;:::i;:::-;;7782:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17845:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1597:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13336:169;1988:12;:10;:12::i;:::-;1978:22;;:6;;;;;;;;;;:22;;;1970:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13412:9:::1;13407:91;13431:5;:12;13427:1;:16;13407:91;;;13482:4;13465;:14;13470:5;13476:1;13470:8;;;;;;;;:::i;:::-;;;;;;;;13465:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13445:3;;;;;:::i;:::-;;;;13407:91;;;;13336:169:::0;:::o;7049:83::-;7086:13;7119:5;;;;;;;;;;;;;;;;;7112:12;;7049:83;:::o;7974:193::-;8076:4;8098:39;8107:12;:10;:12::i;:::-;8121:7;8130:6;8098:8;:39::i;:::-;8155:4;8148:11;;7974:193;;;;:::o;5795:41::-;;;;;;;;;;;;;:::o;7326:95::-;7379:7;4879:19;7399:14;;7326:95;:::o;8175:446::-;8307:4;8324:36;8334:6;8342:9;8353:6;8324:9;:36::i;:::-;8371:220;8394:6;8415:12;:10;:12::i;:::-;8442:138;8498:6;8442:138;;;;;;;;;;;;;;;;;:11;:19;8454:6;8442:19;;;;;;;;;;;;;;;:33;8462:12;:10;:12::i;:::-;8442:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8371:8;:220::i;:::-;8609:4;8602:11;;8175:446;;;;;:::o;17969:196::-;1988:12;:10;:12::i;:::-;1978:22;;:6;;;;;;;;;;:22;;;1970:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18083:7:::1;18061:29;;:9;:18;18071:7;18061:18;;;;;;;;;;;;;;;;;;;;;;;;;:29;;::::0;18053:65:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18150:7;18129:9;:18;18139:7;18129:18;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;17969:196:::0;;:::o;6117:52::-;;;;:::o;7235:83::-;7276:5;4553:1;7294:16;;7235:83;:::o;5843:28::-;;;;;;;;;;;;;:::o;13513:92::-;1988:12;:10;:12::i;:::-;1978:22;;:6;;;;;;;;;;:22;;;1970:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13592:5:::1;13577:4;:12;13582:6;13577:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13513:92:::0;:::o;17585:101::-;1988:12;:10;:12::i;:::-;1978:22;;:6;;;;;;;;;;:22;;;1970:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17666:12:::1;17652:11;::::0;:26:::1;;;;;;;;;;;;;;;;;;17585:101:::0;:::o;13093:235::-;13159:19;;;;;;;;;;;13143:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;13198:17;;;;;;;;;;;13182:33;;:12;:10;:12::i;:::-;:33;;;13143:72;13135:81;;;;;;13227:26;13256:21;13227:50;;13288:32;13301:18;13288:12;:32::i;:::-;13124:204;13093:235::o;7429:138::-;7495:7;7522:37;7542:7;:16;7550:7;7542:16;;;;;;;;;;;;;;;;7522:19;:37::i;:::-;7515:44;;7429:138;;;:::o;2065:148::-;1988:12;:10;:12::i;:::-;1978:22;;:6;;;;;;;;;;:22;;;1970:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2172:1:::1;2135:40;;2156:6;::::0;::::1;;;;;;;;2135:40;;;;;;;;;;;;2203:1;2186:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2065:148::o:0;17725:108::-;1988:12;:10;:12::i;:::-;1978:22;;:6;;;;;;;;;;:22;;;1970:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17814:11:::1;17799:12;:26;;;;17725:108:::0;:::o;5993:47::-;;;;:::o;1851:79::-;1889:7;1916:6;;;;;;;;;;;1909:13;;1851:79;:::o;12740:101::-;1988:12;:10;:12::i;:::-;1978:22;;:6;;;;;;;;;;:22;;;1970:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12821:12:::1;12807:11;;:26;;;;;;;;;;;;;;;;;;12740:101:::0;:::o;6054:49::-;;;;:::o;7140:87::-;7179:13;7212:7;;;;;;;;;;;;;;;;;7205:14;;7140:87;:::o;17390:139::-;1988:12;:10;:12::i;:::-;1978:22;;:6;;;;;;;;;;:22;;;1970:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17503:18:::1;17481:19;:40;;;;17390:139:::0;:::o;17037:301::-;1988:12;:10;:12::i;:::-;1978:22;;:6;;;;;;;;;;:22;;;1970:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17188:13:::1;17171:14;:30;;;;17230:14;17212:15;:32;;;;17280:11;17265:12;:26;;;;17318:12;17302:13;:28;;;;17037:301:::0;;;;:::o;7575:199::-;7680:4;7702:42;7712:12;:10;:12::i;:::-;7726:9;7737:6;7702:9;:42::i;:::-;7762:4;7755:11;;7575:199;;;;:::o;5477:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;5434:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12849:236::-;12915:19;;;;;;;;;;;12899:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12954:17;;;;;;;;;;;12938:33;;:12;:10;:12::i;:::-;:33;;;12899:72;12891:81;;;;;;12983:23;13009:24;13027:4;13009:9;:24::i;:::-;12983:50;;13044:33;13061:15;13044:16;:33::i;:::-;12880:205;12849:236::o;7782:184::-;7899:7;7931:11;:18;7943:5;7931:18;;;;;;;;;;;;;;;:27;7950:7;7931:27;;;;;;;;;;;;;;;;7924:34;;7782:184;;;;:::o;17845:115::-;1988:12;:10;:12::i;:::-;1978:22;;:6;;;;;;;;;;:22;;;1970:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17939:13:::1;17922:14;:30;;;;17845:115:::0;:::o;1597:244::-;1988:12;:10;:12::i;:::-;1978:22;;:6;;;;;;;;;;:22;;;1970:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1706:1:::1;1686:22;;:8;:22;;::::0;1678:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1796:8;1767:38;;1788:6;::::0;::::1;;;;;;;;1767:38;;;;;;;;;;;;1825:8;1816:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1597:244:::0;:::o;208:98::-;261:7;288:10;281:17;;208:98;:::o;9324:369::-;9468:1;9451:19;;:5;:19;;;9443:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9549:1;9530:21;;:7;:21;;;9522:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9631:6;9601:11;:18;9613:5;9601:18;;;;;;;;;;;;;;;:27;9620:7;9601:27;;;;;;;;;;;;;;;:36;;;;9669:7;9653:32;;9662:5;9653:32;;;9678:6;9653:32;;;;;;:::i;:::-;;;;;;;;9324:369;;;:::o;9701:2372::-;9839:1;9823:18;;:4;:18;;;9815:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9916:1;9902:16;;:2;:16;;;9894:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9986:1;9977:6;:10;9969:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10058:7;:5;:7::i;:::-;10050:15;;:4;:15;;;;:32;;;;;10075:7;:5;:7::i;:::-;10069:13;;:2;:13;;;;10050:32;10046:1265;;;10151:11;;;;;;;;;;;10146:144;;10191:9;:15;10201:4;10191:15;;;;;;;;;;;;;;;;;;;;;;;;;10183:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;10146:144;10338:12;;10328:6;:22;;10320:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10407:4;:10;10412:4;10407:10;;;;;;;;;;;;;;;;;;;;;;;;;10406:11;:24;;;;;10422:4;:8;10427:2;10422:8;;;;;;;;;;;;;;;;;;;;;;;;;10421:9;10406:24;10398:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10508:13;;;;;;;;;;;10502:19;;:2;:19;;;10499:146;;10575:14;;10566:6;10550:13;10560:2;10550:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10542:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10499:146;10673:28;10704:24;10722:4;10704:9;:24::i;:::-;10673:55;;10743:12;10782:19;;10758:20;:43;;10743:58;;10845:12;;10821:20;:36;10818:124;;10914:12;;10891:35;;10818:124;10974:7;:18;;;;;10986:6;;;;;;;;;;;10985:7;10974:18;:43;;;;;11004:13;;;;;;;;;;;10996:21;;:4;:21;;;;10974:43;:58;;;;;11021:11;;;;;;;;;;10974:58;10970:330;;;11053:38;11070:20;11053:16;:38::i;:::-;11110:26;11139:21;11110:50;;11204:1;11183:18;:22;11179:106;;;11230:35;11243:21;11230:12;:35::i;:::-;11179:106;11034:266;10970:330;10084:1227;;10046:1265;11331:12;11346:4;11331:19;;11395:18;:24;11414:4;11395:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11423:18;:22;11442:2;11423:22;;;;;;;;;;;;;;;;;;;;;;;;;11395:50;11394:102;;;;11459:13;;;;;;;;;;;11451:21;;:4;:21;;;;:44;;;;;11482:13;;;;;;;;;;;11476:19;;:2;:19;;;;11451:44;11394:102;11390:622;;;11523:5;11513:15;;11390:622;;;11618:13;;;;;;;;;;;11610:21;;:4;:21;;;:55;;;;;11649:15;;;;;;;;;;;11635:30;;:2;:30;;;;11610:55;11607:162;;;11698:14;;11686:9;:26;;;;11741:12;;11731:7;:22;;;;11607:162;11832:13;;;;;;;;;;;11826:19;;:2;:19;;;:55;;;;;11865:15;;;;;;;;;;;11849:32;;:4;:32;;;;11826:55;11822:165;;;11914:15;;11902:9;:27;;;;11958:13;;11948:7;:23;;;;11822:165;11390:622;12024:41;12039:4;12045:2;12049:6;12057:7;12024:14;:41::i;:::-;9804:2269;9701:2372;;;:::o;2575:224::-;2695:7;2728:1;2723;:6;;2731:12;2715:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2755:9;2771:1;2767;:5;;;;:::i;:::-;2755:17;;2790:1;2783:8;;;2575:224;;;;;:::o;12572:160::-;12629:19;;;;;;;;;;;:28;;:43;12658:13;12669:1;12658:6;:10;;:13;;;;:::i;:::-;12629:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12683:17;;;;;;;;;;;:26;;:41;12710:13;12721:1;12710:6;:10;;:13;;;;:::i;:::-;12683:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12572:160;:::o;8629:323::-;8724:7;8782;;8771;:18;;8749:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8870:19;8892:10;:8;:10::i;:::-;8870:32;;8920:24;8932:11;8920:7;:11;;:24;;;;:::i;:::-;8913:31;;;8629:323;;;:::o;12081:483::-;6280:4;6271:6;;:13;;;;;;;;;;;;;;;;;;12159:21:::1;12197:1;12183:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12159:40;;12228:4;12210;12215:1;12210:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12254:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12244:4;12249:1;12244:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12287:62;12304:4;12319:15;;;;;;;;;;;12337:11;12287:8;:62::i;:::-;12360:15;;;;;;;;;;;:66;;;12441:11;12467:1;12483:4;12510;12530:15;12360:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12148:416;6316:5:::0;6307:6;;:14;;;;;;;;;;;;;;;;;;12081:483;:::o;13613:282::-;13769:7;13764:28;;13778:14;:12;:14::i;:::-;13764:28;13803:44;13821:6;13829:9;13840:6;13803:17;:44::i;:::-;13863:7;13858:29;;13872:15;:13;:15::i;:::-;13858:29;13613:282;;;;:::o;3061:132::-;3119:7;3146:39;3150:1;3153;3146:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3139:46;;3061:132;;;;:::o;16588:166::-;16630:7;16651:15;16668;16687:19;:17;:19::i;:::-;16650:56;;;;16726:20;16738:7;16726;:11;;:20;;;;:::i;:::-;16719:27;;;;16588:166;:::o;8960:231::-;9020:1;9007:9;;:14;:30;;;;;9036:1;9025:7;;:12;9007:30;9039:7;9003:43;9082:9;;9062:17;:29;;;;9120:7;;9102:15;:25;;;;9160:1;9148:9;:13;;;;9182:1;9172:7;:11;;;;8960:231;:::o;13903:610::-;14050:15;14080:23;14118:12;14145:23;14183:12;14210:13;14237:19;14248:7;14237:10;:19::i;:::-;14035:221;;;;;;;;;;;;14285:28;14305:7;14285;:15;14293:6;14285:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14267:7;:15;14275:6;14267:15;;;;;;;;;;;;;;;:46;;;;14345:39;14368:15;14345:7;:18;14353:9;14345:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14324:7;:18;14332:9;14324:18;;;;;;;;;;;;;;;:60;;;;14395:16;14405:5;14395:9;:16::i;:::-;14422:23;14434:4;14440;14422:11;:23::i;:::-;14478:9;14461:44;;14470:6;14461:44;;;14489:15;14461:44;;;;;;:::i;:::-;;;;;;;;14024:489;;;;;;13903:610;;;:::o;9199:117::-;9255:17;;9243:9;:29;;;;9293:15;;9283:7;:25;;;;9199:117::o;3201:223::-;3321:7;3353:1;3349;:5;3356:12;3341:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3380:9;3396:1;3392;:5;;;;:::i;:::-;3380:17;;3415:1;3408:8;;;3201:223;;;;;:::o;16762:263::-;16813:7;16822;16842:15;16860:7;;16842:25;;16878:15;4879:19;16878:25;;16928:20;4879:19;16928:7;;:11;;:20;;;;:::i;:::-;16918:7;:30;16914:61;;;16958:7;;4879:19;16950:25;;;;;;;;16914:61;17000:7;17009;16992:25;;;;;;16762:263;;;:::o;14932:625::-;15032:7;15054;15076;15098;15120;15142;15178:23;15203:12;15217:13;15247:40;15259:7;15268:9;;15279:7;;15247:11;:40::i;:::-;15177:110;;;;;;15298:19;15320:10;:8;:10::i;:::-;15298:32;;15342:15;15359:23;15384:12;15413:46;15425:7;15434:4;15440:5;15447:11;15413;:46::i;:::-;15341:118;;;;;;15488:7;15497:15;15514:4;15520:15;15537:4;15543:5;15480:69;;;;;;;;;;;;;;;;;;;14932:625;;;;;;;:::o;2431:136::-;2489:7;2516:43;2520:1;2523;2516:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2509:50;;2431:136;;;;:::o;2244:179::-;2302:7;2322:9;2338:1;2334;:5;;;;:::i;:::-;2322:17;;2363:1;2358;:6;;2350:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2414:1;2407:8;;;2244:179;;;;:::o;14521:211::-;14574:19;14596:10;:8;:10::i;:::-;14574:32;;14617:13;14633:22;14643:11;14633:5;:9;;:22;;;;:::i;:::-;14617:38;;14691:33;14718:5;14691:7;:22;14707:4;14691:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14666:7;:22;14682:4;14666:22;;;;;;;;;;;;;;;:58;;;;14563:169;;14521:211;:::o;14740:147::-;14818:17;14830:4;14818:7;;:11;;:17;;;;:::i;:::-;14808:7;:27;;;;14859:20;14874:4;14859:10;;:14;;:20;;;;:::i;:::-;14846:10;:33;;;;14740:147;;:::o;15565:471::-;15734:7;15756;15778;15813:12;15828:30;15854:3;15828:21;15840:8;15828:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15813:45;;15869:13;15885:28;15909:3;15885:19;15897:6;15885:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15869:44;;15924:23;15950:28;15972:5;15950:17;15962:4;15950:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15924:54;;15999:15;16016:4;16022:5;15991:37;;;;;;;;;15565:471;;;;;;;:::o;16044:536::-;16238:7;16260;16282;16317:15;16335:24;16347:11;16335:7;:11;;:24;;;;:::i;:::-;16317:42;;16370:12;16385:21;16394:11;16385:4;:8;;:21;;;;:::i;:::-;16370:36;;16417:13;16433:22;16443:11;16433:5;:9;;:22;;;;:::i;:::-;16417:38;;16466:23;16492:28;16514:5;16492:17;16504:4;16492:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16466:54;;16541:7;16550:15;16567:4;16533:39;;;;;;;;;;16044:536;;;;;;;;:::o;2807:246::-;2865:7;2894:1;2889;:6;2885:47;;2919:1;2912:8;;;;2885:47;2942:9;2958:1;2954;:5;;;;:::i;:::-;2942:17;;2987:1;2982;2978;:5;;;;:::i;:::-;:10;2970:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3044:1;3037:8;;;2807:246;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:99::-;3843:6;3877:5;3871:12;3861:22;;3791:99;;;:::o;3896:169::-;3980:11;4014:6;4009:3;4002:19;4054:4;4049:3;4045:14;4030:29;;3896:169;;;;:::o;4071:246::-;4152:1;4162:113;4176:6;4173:1;4170:13;4162:113;;;4261:1;4256:3;4252:11;4246:18;4242:1;4237:3;4233:11;4226:39;4198:2;4195:1;4191:10;4186:15;;4162:113;;;4309:1;4300:6;4295:3;4291:16;4284:27;4133:184;4071:246;;;:::o;4323:377::-;4411:3;4439:39;4472:5;4439:39;:::i;:::-;4494:71;4558:6;4553:3;4494:71;:::i;:::-;4487:78;;4574:65;4632:6;4627:3;4620:4;4613:5;4609:16;4574:65;:::i;:::-;4664:29;4686:6;4664:29;:::i;:::-;4659:3;4655:39;4648:46;;4415:285;4323:377;;;;:::o;4706:313::-;4819:4;4857:2;4846:9;4842:18;4834:26;;4906:9;4900:4;4896:20;4892:1;4881:9;4877:17;4870:47;4934:78;5007:4;4998:6;4934:78;:::i;:::-;4926:86;;4706:313;;;;:::o;5025:77::-;5062:7;5091:5;5080:16;;5025:77;;;:::o;5108:122::-;5181:24;5199:5;5181:24;:::i;:::-;5174:5;5171:35;5161:63;;5220:1;5217;5210:12;5161:63;5108:122;:::o;5236:139::-;5282:5;5320:6;5307:20;5298:29;;5336:33;5363:5;5336:33;:::i;:::-;5236:139;;;;:::o;5381:474::-;5449:6;5457;5506:2;5494:9;5485:7;5481:23;5477:32;5474:119;;;5512:79;;:::i;:::-;5474:119;5632:1;5657:53;5702:7;5693:6;5682:9;5678:22;5657:53;:::i;:::-;5647:63;;5603:117;5759:2;5785:53;5830:7;5821:6;5810:9;5806:22;5785:53;:::i;:::-;5775:63;;5730:118;5381:474;;;;;:::o;5861:90::-;5895:7;5938:5;5931:13;5924:21;5913:32;;5861:90;;;:::o;5957:109::-;6038:21;6053:5;6038:21;:::i;:::-;6033:3;6026:34;5957:109;;:::o;6072:210::-;6159:4;6197:2;6186:9;6182:18;6174:26;;6210:65;6272:1;6261:9;6257:17;6248:6;6210:65;:::i;:::-;6072:210;;;;:::o;6288:60::-;6316:3;6337:5;6330:12;;6288:60;;;:::o;6354:142::-;6404:9;6437:53;6455:34;6464:24;6482:5;6464:24;:::i;:::-;6455:34;:::i;:::-;6437:53;:::i;:::-;6424:66;;6354:142;;;:::o;6502:126::-;6552:9;6585:37;6616:5;6585:37;:::i;:::-;6572:50;;6502:126;;;:::o;6634:152::-;6710:9;6743:37;6774:5;6743:37;:::i;:::-;6730:50;;6634:152;;;:::o;6792:183::-;6905:63;6962:5;6905:63;:::i;:::-;6900:3;6893:76;6792:183;;:::o;6981:274::-;7100:4;7138:2;7127:9;7123:18;7115:26;;7151:97;7245:1;7234:9;7230:17;7221:6;7151:97;:::i;:::-;6981:274;;;;:::o;7261:118::-;7348:24;7366:5;7348:24;:::i;:::-;7343:3;7336:37;7261:118;;:::o;7385:222::-;7478:4;7516:2;7505:9;7501:18;7493:26;;7529:71;7597:1;7586:9;7582:17;7573:6;7529:71;:::i;:::-;7385:222;;;;:::o;7613:619::-;7690:6;7698;7706;7755:2;7743:9;7734:7;7730:23;7726:32;7723:119;;;7761:79;;:::i;:::-;7723:119;7881:1;7906:53;7951:7;7942:6;7931:9;7927:22;7906:53;:::i;:::-;7896:63;;7852:117;8008:2;8034:53;8079:7;8070:6;8059:9;8055:22;8034:53;:::i;:::-;8024:63;;7979:118;8136:2;8162:53;8207:7;8198:6;8187:9;8183:22;8162:53;:::i;:::-;8152:63;;8107:118;7613:619;;;;;:::o;8238:116::-;8308:21;8323:5;8308:21;:::i;:::-;8301:5;8298:32;8288:60;;8344:1;8341;8334:12;8288:60;8238:116;:::o;8360:133::-;8403:5;8441:6;8428:20;8419:29;;8457:30;8481:5;8457:30;:::i;:::-;8360:133;;;;:::o;8499:468::-;8564:6;8572;8621:2;8609:9;8600:7;8596:23;8592:32;8589:119;;;8627:79;;:::i;:::-;8589:119;8747:1;8772:53;8817:7;8808:6;8797:9;8793:22;8772:53;:::i;:::-;8762:63;;8718:117;8874:2;8900:50;8942:7;8933:6;8922:9;8918:22;8900:50;:::i;:::-;8890:60;;8845:115;8499:468;;;;;:::o;8973:86::-;9008:7;9048:4;9041:5;9037:16;9026:27;;8973:86;;;:::o;9065:112::-;9148:22;9164:5;9148:22;:::i;:::-;9143:3;9136:35;9065:112;;:::o;9183:214::-;9272:4;9310:2;9299:9;9295:18;9287:26;;9323:67;9387:1;9376:9;9372:17;9363:6;9323:67;:::i;:::-;9183:214;;;;:::o;9403:118::-;9490:24;9508:5;9490:24;:::i;:::-;9485:3;9478:37;9403:118;;:::o;9527:222::-;9620:4;9658:2;9647:9;9643:18;9635:26;;9671:71;9739:1;9728:9;9724:17;9715:6;9671:71;:::i;:::-;9527:222;;;;:::o;9755:329::-;9814:6;9863:2;9851:9;9842:7;9838:23;9834:32;9831:119;;;9869:79;;:::i;:::-;9831:119;9989:1;10014:53;10059:7;10050:6;10039:9;10035:22;10014:53;:::i;:::-;10004:63;;9960:117;9755:329;;;;:::o;10090:323::-;10146:6;10195:2;10183:9;10174:7;10170:23;10166:32;10163:119;;;10201:79;;:::i;:::-;10163:119;10321:1;10346:50;10388:7;10379:6;10368:9;10364:22;10346:50;:::i;:::-;10336:60;;10292:114;10090:323;;;;:::o;10419:329::-;10478:6;10527:2;10515:9;10506:7;10502:23;10498:32;10495:119;;;10533:79;;:::i;:::-;10495:119;10653:1;10678:53;10723:7;10714:6;10703:9;10699:22;10678:53;:::i;:::-;10668:63;;10624:117;10419:329;;;;:::o;10754:765::-;10840:6;10848;10856;10864;10913:3;10901:9;10892:7;10888:23;10884:33;10881:120;;;10920:79;;:::i;:::-;10881:120;11040:1;11065:53;11110:7;11101:6;11090:9;11086:22;11065:53;:::i;:::-;11055:63;;11011:117;11167:2;11193:53;11238:7;11229:6;11218:9;11214:22;11193:53;:::i;:::-;11183:63;;11138:118;11295:2;11321:53;11366:7;11357:6;11346:9;11342:22;11321:53;:::i;:::-;11311:63;;11266:118;11423:2;11449:53;11494:7;11485:6;11474:9;11470:22;11449:53;:::i;:::-;11439:63;;11394:118;10754:765;;;;;;;:::o;11525:474::-;11593:6;11601;11650:2;11638:9;11629:7;11625:23;11621:32;11618:119;;;11656:79;;:::i;:::-;11618:119;11776:1;11801:53;11846:7;11837:6;11826:9;11822:22;11801:53;:::i;:::-;11791:63;;11747:117;11903:2;11929:53;11974:7;11965:6;11954:9;11950:22;11929:53;:::i;:::-;11919:63;;11874:118;11525:474;;;;;:::o;12005:182::-;12145:34;12141:1;12133:6;12129:14;12122:58;12005:182;:::o;12193:366::-;12335:3;12356:67;12420:2;12415:3;12356:67;:::i;:::-;12349:74;;12432:93;12521:3;12432:93;:::i;:::-;12550:2;12545:3;12541:12;12534:19;;12193:366;;;:::o;12565:419::-;12731:4;12769:2;12758:9;12754:18;12746:26;;12818:9;12812:4;12808:20;12804:1;12793:9;12789:17;12782:47;12846:131;12972:4;12846:131;:::i;:::-;12838:139;;12565:419;;;:::o;12990:180::-;13038:77;13035:1;13028:88;13135:4;13132:1;13125:15;13159:4;13156:1;13149:15;13176:180;13224:77;13221:1;13214:88;13321:4;13318:1;13311:15;13345:4;13342:1;13335:15;13362:233;13401:3;13424:24;13442:5;13424:24;:::i;:::-;13415:33;;13470:66;13463:5;13460:77;13457:103;;13540:18;;:::i;:::-;13457:103;13587:1;13580:5;13576:13;13569:20;;13362:233;;;:::o;13601:173::-;13741:25;13737:1;13729:6;13725:14;13718:49;13601:173;:::o;13780:366::-;13922:3;13943:67;14007:2;14002:3;13943:67;:::i;:::-;13936:74;;14019:93;14108:3;14019:93;:::i;:::-;14137:2;14132:3;14128:12;14121:19;;13780:366;;;:::o;14152:419::-;14318:4;14356:2;14345:9;14341:18;14333:26;;14405:9;14399:4;14395:20;14391:1;14380:9;14376:17;14369:47;14433:131;14559:4;14433:131;:::i;:::-;14425:139;;14152:419;;;:::o;14577:225::-;14717:34;14713:1;14705:6;14701:14;14694:58;14786:8;14781:2;14773:6;14769:15;14762:33;14577:225;:::o;14808:366::-;14950:3;14971:67;15035:2;15030:3;14971:67;:::i;:::-;14964:74;;15047:93;15136:3;15047:93;:::i;:::-;15165:2;15160:3;15156:12;15149:19;;14808:366;;;:::o;15180:419::-;15346:4;15384:2;15373:9;15369:18;15361:26;;15433:9;15427:4;15423:20;15419:1;15408:9;15404:17;15397:47;15461:131;15587:4;15461:131;:::i;:::-;15453:139;;15180:419;;;:::o;15605:223::-;15745:34;15741:1;15733:6;15729:14;15722:58;15814:6;15809:2;15801:6;15797:15;15790:31;15605:223;:::o;15834:366::-;15976:3;15997:67;16061:2;16056:3;15997:67;:::i;:::-;15990:74;;16073:93;16162:3;16073:93;:::i;:::-;16191:2;16186:3;16182:12;16175:19;;15834:366;;;:::o;16206:419::-;16372:4;16410:2;16399:9;16395:18;16387:26;;16459:9;16453:4;16449:20;16445:1;16434:9;16430:17;16423:47;16487:131;16613:4;16487:131;:::i;:::-;16479:139;;16206:419;;;:::o;16631:221::-;16771:34;16767:1;16759:6;16755:14;16748:58;16840:4;16835:2;16827:6;16823:15;16816:29;16631:221;:::o;16858:366::-;17000:3;17021:67;17085:2;17080:3;17021:67;:::i;:::-;17014:74;;17097:93;17186:3;17097:93;:::i;:::-;17215:2;17210:3;17206:12;17199:19;;16858:366;;;:::o;17230:419::-;17396:4;17434:2;17423:9;17419:18;17411:26;;17483:9;17477:4;17473:20;17469:1;17458:9;17454:17;17447:47;17511:131;17637:4;17511:131;:::i;:::-;17503:139;;17230:419;;;:::o;17655:224::-;17795:34;17791:1;17783:6;17779:14;17772:58;17864:7;17859:2;17851:6;17847:15;17840:32;17655:224;:::o;17885:366::-;18027:3;18048:67;18112:2;18107:3;18048:67;:::i;:::-;18041:74;;18124:93;18213:3;18124:93;:::i;:::-;18242:2;18237:3;18233:12;18226:19;;17885:366;;;:::o;18257:419::-;18423:4;18461:2;18450:9;18446:18;18438:26;;18510:9;18504:4;18500:20;18496:1;18485:9;18481:17;18474:47;18538:131;18664:4;18538:131;:::i;:::-;18530:139;;18257:419;;;:::o;18682:222::-;18822:34;18818:1;18810:6;18806:14;18799:58;18891:5;18886:2;18878:6;18874:15;18867:30;18682:222;:::o;18910:366::-;19052:3;19073:67;19137:2;19132:3;19073:67;:::i;:::-;19066:74;;19149:93;19238:3;19149:93;:::i;:::-;19267:2;19262:3;19258:12;19251:19;;18910:366;;;:::o;19282:419::-;19448:4;19486:2;19475:9;19471:18;19463:26;;19535:9;19529:4;19525:20;19521:1;19510:9;19506:17;19499:47;19563:131;19689:4;19563:131;:::i;:::-;19555:139;;19282:419;;;:::o;19707:228::-;19847:34;19843:1;19835:6;19831:14;19824:58;19916:11;19911:2;19903:6;19899:15;19892:36;19707:228;:::o;19941:366::-;20083:3;20104:67;20168:2;20163:3;20104:67;:::i;:::-;20097:74;;20180:93;20269:3;20180:93;:::i;:::-;20298:2;20293:3;20289:12;20282:19;;19941:366;;;:::o;20313:419::-;20479:4;20517:2;20506:9;20502:18;20494:26;;20566:9;20560:4;20556:20;20552:1;20541:9;20537:17;20530:47;20594:131;20720:4;20594:131;:::i;:::-;20586:139;;20313:419;;;:::o;20738:250::-;20878:34;20874:1;20866:6;20862:14;20855:58;20947:33;20942:2;20934:6;20930:15;20923:58;20738:250;:::o;20994:366::-;21136:3;21157:67;21221:2;21216:3;21157:67;:::i;:::-;21150:74;;21233:93;21322:3;21233:93;:::i;:::-;21351:2;21346:3;21342:12;21335:19;;20994:366;;;:::o;21366:419::-;21532:4;21570:2;21559:9;21555:18;21547:26;;21619:9;21613:4;21609:20;21605:1;21594:9;21590:17;21583:47;21647:131;21773:4;21647:131;:::i;:::-;21639:139;;21366:419;;;:::o;21791:178::-;21931:30;21927:1;21919:6;21915:14;21908:54;21791:178;:::o;21975:366::-;22117:3;22138:67;22202:2;22197:3;22138:67;:::i;:::-;22131:74;;22214:93;22303:3;22214:93;:::i;:::-;22332:2;22327:3;22323:12;22316:19;;21975:366;;;:::o;22347:419::-;22513:4;22551:2;22540:9;22536:18;22528:26;;22600:9;22594:4;22590:20;22586:1;22575:9;22571:17;22564:47;22628:131;22754:4;22628:131;:::i;:::-;22620:139;;22347:419;;;:::o;22772:222::-;22912:34;22908:1;22900:6;22896:14;22889:58;22981:5;22976:2;22968:6;22964:15;22957:30;22772:222;:::o;23000:366::-;23142:3;23163:67;23227:2;23222:3;23163:67;:::i;:::-;23156:74;;23239:93;23328:3;23239:93;:::i;:::-;23357:2;23352:3;23348:12;23341:19;;23000:366;;;:::o;23372:419::-;23538:4;23576:2;23565:9;23561:18;23553:26;;23625:9;23619:4;23615:20;23611:1;23600:9;23596:17;23589:47;23653:131;23779:4;23653:131;:::i;:::-;23645:139;;23372:419;;;:::o;23797:191::-;23837:3;23856:20;23874:1;23856:20;:::i;:::-;23851:25;;23890:20;23908:1;23890:20;:::i;:::-;23885:25;;23933:1;23930;23926:9;23919:16;;23954:3;23951:1;23948:10;23945:36;;;23961:18;;:::i;:::-;23945:36;23797:191;;;;:::o;23994:222::-;24134:34;24130:1;24122:6;24118:14;24111:58;24203:5;24198:2;24190:6;24186:15;24179:30;23994:222;:::o;24222:366::-;24364:3;24385:67;24449:2;24444:3;24385:67;:::i;:::-;24378:74;;24461:93;24550:3;24461:93;:::i;:::-;24579:2;24574:3;24570:12;24563:19;;24222:366;;;:::o;24594:419::-;24760:4;24798:2;24787:9;24783:18;24775:26;;24847:9;24841:4;24837:20;24833:1;24822:9;24818:17;24811:47;24875:131;25001:4;24875:131;:::i;:::-;24867:139;;24594:419;;;:::o;25019:194::-;25059:4;25079:20;25097:1;25079:20;:::i;:::-;25074:25;;25113:20;25131:1;25113:20;:::i;:::-;25108:25;;25157:1;25154;25150:9;25142:17;;25181:1;25175:4;25172:11;25169:37;;;25186:18;;:::i;:::-;25169:37;25019:194;;;;:::o;25219:229::-;25359:34;25355:1;25347:6;25343:14;25336:58;25428:12;25423:2;25415:6;25411:15;25404:37;25219:229;:::o;25454:366::-;25596:3;25617:67;25681:2;25676:3;25617:67;:::i;:::-;25610:74;;25693:93;25782:3;25693:93;:::i;:::-;25811:2;25806:3;25802:12;25795:19;;25454:366;;;:::o;25826:419::-;25992:4;26030:2;26019:9;26015:18;26007:26;;26079:9;26073:4;26069:20;26065:1;26054:9;26050:17;26043:47;26107:131;26233:4;26107:131;:::i;:::-;26099:139;;25826:419;;;:::o;26251:143::-;26308:5;26339:6;26333:13;26324:22;;26355:33;26382:5;26355:33;:::i;:::-;26251:143;;;;:::o;26400:351::-;26470:6;26519:2;26507:9;26498:7;26494:23;26490:32;26487:119;;;26525:79;;:::i;:::-;26487:119;26645:1;26670:64;26726:7;26717:6;26706:9;26702:22;26670:64;:::i;:::-;26660:74;;26616:128;26400:351;;;;:::o;26757:85::-;26802:7;26831:5;26820:16;;26757:85;;;:::o;26848:158::-;26906:9;26939:61;26957:42;26966:32;26992:5;26966:32;:::i;:::-;26957:42;:::i;:::-;26939:61;:::i;:::-;26926:74;;26848:158;;;:::o;27012:147::-;27107:45;27146:5;27107:45;:::i;:::-;27102:3;27095:58;27012:147;;:::o;27165:114::-;27232:6;27266:5;27260:12;27250:22;;27165:114;;;:::o;27285:184::-;27384:11;27418:6;27413:3;27406:19;27458:4;27453:3;27449:14;27434:29;;27285:184;;;;:::o;27475:132::-;27542:4;27565:3;27557:11;;27595:4;27590:3;27586:14;27578:22;;27475:132;;;:::o;27613:108::-;27690:24;27708:5;27690:24;:::i;:::-;27685:3;27678:37;27613:108;;:::o;27727:179::-;27796:10;27817:46;27859:3;27851:6;27817:46;:::i;:::-;27895:4;27890:3;27886:14;27872:28;;27727:179;;;;:::o;27912:113::-;27982:4;28014;28009:3;28005:14;27997:22;;27912:113;;;:::o;28061:732::-;28180:3;28209:54;28257:5;28209:54;:::i;:::-;28279:86;28358:6;28353:3;28279:86;:::i;:::-;28272:93;;28389:56;28439:5;28389:56;:::i;:::-;28468:7;28499:1;28484:284;28509:6;28506:1;28503:13;28484:284;;;28585:6;28579:13;28612:63;28671:3;28656:13;28612:63;:::i;:::-;28605:70;;28698:60;28751:6;28698:60;:::i;:::-;28688:70;;28544:224;28531:1;28528;28524:9;28519:14;;28484:284;;;28488:14;28784:3;28777:10;;28185:608;;;28061:732;;;;:::o;28799:831::-;29062:4;29100:3;29089:9;29085:19;29077:27;;29114:71;29182:1;29171:9;29167:17;29158:6;29114:71;:::i;:::-;29195:80;29271:2;29260:9;29256:18;29247:6;29195:80;:::i;:::-;29322:9;29316:4;29312:20;29307:2;29296:9;29292:18;29285:48;29350:108;29453:4;29444:6;29350:108;:::i;:::-;29342:116;;29468:72;29536:2;29525:9;29521:18;29512:6;29468:72;:::i;:::-;29550:73;29618:3;29607:9;29603:19;29594:6;29550:73;:::i;:::-;28799:831;;;;;;;;:::o;29636:180::-;29684:77;29681:1;29674:88;29781:4;29778:1;29771:15;29805:4;29802:1;29795:15;29822:185;29862:1;29879:20;29897:1;29879:20;:::i;:::-;29874:25;;29913:20;29931:1;29913:20;:::i;:::-;29908:25;;29952:1;29942:35;;29957:18;;:::i;:::-;29942:35;29999:1;29996;29992:9;29987:14;;29822:185;;;;:::o;30013:177::-;30153:29;30149:1;30141:6;30137:14;30130:53;30013:177;:::o;30196:366::-;30338:3;30359:67;30423:2;30418:3;30359:67;:::i;:::-;30352:74;;30435:93;30524:3;30435:93;:::i;:::-;30553:2;30548:3;30544:12;30537:19;;30196:366;;;:::o;30568:419::-;30734:4;30772:2;30761:9;30757:18;30749:26;;30821:9;30815:4;30811:20;30807:1;30796:9;30792:17;30785:47;30849:131;30975:4;30849:131;:::i;:::-;30841:139;;30568:419;;;:::o;30993:410::-;31033:7;31056:20;31074:1;31056:20;:::i;:::-;31051:25;;31090:20;31108:1;31090:20;:::i;:::-;31085:25;;31145:1;31142;31138:9;31167:30;31185:11;31167:30;:::i;:::-;31156:41;;31346:1;31337:7;31333:15;31330:1;31327:22;31307:1;31300:9;31280:83;31257:139;;31376:18;;:::i;:::-;31257:139;31041:362;30993:410;;;;:::o;31409:220::-;31549:34;31545:1;31537:6;31533:14;31526:58;31618:3;31613:2;31605:6;31601:15;31594:28;31409:220;:::o;31635:366::-;31777:3;31798:67;31862:2;31857:3;31798:67;:::i;:::-;31791:74;;31874:93;31963:3;31874:93;:::i;:::-;31992:2;31987:3;31983:12;31976:19;;31635:366;;;:::o;32007:419::-;32173:4;32211:2;32200:9;32196:18;32188:26;;32260:9;32254:4;32250:20;32246:1;32235:9;32231:17;32224:47;32288:131;32414:4;32288:131;:::i;:::-;32280:139;;32007:419;;;:::o

Swarm Source

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