ETH Price: $3,607.35 (+4.48%)
 

Overview

Max Total Supply

13,370,000 DERP

Holders

72

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
Uniswap V2: DERP 31
Balance
364,808.356549998 DERP

Value
$0.00
0x6d5ece890d95e23b9e0e31b02f0dc77278fe412a
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:
DerpyCoin

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**

Twitter     : https://x.com/derp_erc
Telegram    : https://t.me/derpyportal
Website     : https://derpy.world/


#####    #######  ######   ######
 ## ##    ##   #   ##  ##   ##  ##
 ##  ##   ##       ##  ##   ##  ##
 ##  ##   ####     #####    #####
 ##  ##   ##       ## ##    ##
 ## ##    ##   #   ## ##    ##
#####    #######  #### ##  ####


**/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.20;

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

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

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

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

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

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

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

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

}

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

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

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

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

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

}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract DerpyCoin is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = false;
    address payable public _taxWallet;
    bool public isTransferTaxActive; 

    uint256 public taxRate;
    uint256 private minimumTokensBeforeSwapBackToLP;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 13_370_000 * 10**_decimals;
    string private constant _name = unicode"Derpy World";
    string private constant _symbol = unicode"DERP";
    uint256 public _maxTxAmount =  _tTotal * 200 / 10000;  // 267,400 (2% max) max amt of tokens in a single transaction
    uint256 public _maxWalletSize = _tTotal * 400 / 10000; // 534,800 (4% max) max amt of tokens in wallet
    address public uniswapV2PairAddress;

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

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

    constructor () {
        _taxWallet = payable(0xC740a0Bc8A40c31932162C5131930D32c1B95e15);
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;
        isTransferTaxActive = true;
        taxRate = 30;
        minimumTokensBeforeSwapBackToLP = 40000000000000;

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

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

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

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

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

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

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

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

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

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

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

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

        uint256 taxAmount=0;
        // if not in special states and not owner, enforce restrictions
        if (!inOpenTrading && !inRescueETH && !inRescueTokens && from != owner() && to != owner() && from != _taxWallet && to != _taxWallet) {

            if (transferDelayEnabled) {
                if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)) {
                  require(_holderLastTransferTimestamp[tx.origin] < block.number,"Only one transfer per block allowed.");
                  _holderLastTransferTimestamp[tx.origin] = block.number;
                }
            }

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

            if (to == uniswapV2Pair && from != address(this) && from != address(uniswapV2Router)) { // sell
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
            }

            if(isTransferTaxActive) { //if tax is on
                 taxAmount = amount.mul(taxRate).div(100);
            }
        }

        if(taxAmount>0){
            if(taxRate == 2) { //when final tax 2/2
                uint256 halfToWalletTax = taxAmount.div(2); // split the 2%
                uint256 otherHalfToLPTax = taxAmount.sub(halfToWalletTax); // split the 2%

                _balances[_taxWallet] = _balances[_taxWallet].add(halfToWalletTax); // 1% tax to the tax wallet
                emit Transfer(from, _taxWallet,halfToWalletTax);

                _balances[address(this)]=_balances[address(this)].add(otherHalfToLPTax); // 1% tax to the contract
                emit Transfer(from, address(this),otherHalfToLPTax);

                // convert tokens back to LP 
                uint256 contractTokenBalance = this.balanceOf(address(this));
                if (contractTokenBalance >= minimumTokensBeforeSwapBackToLP && !inSwap && swapEnabled && to == uniswapV2Pair) { // minimum amount of tokens needed before swapping
                    inSwap = true;
                    uint256 liquidityTaxForSwap = contractTokenBalance / 2;
                    uint256 liquidityTaxForTokens = contractTokenBalance - liquidityTaxForSwap;

                    uint256 initialBalance = address(this).balance;
                    swapTokensForEth(liquidityTaxForSwap);
                    uint256 newBalance = address(this).balance - initialBalance;
                    addLiquidity(liquidityTaxForTokens, newBalance);
                    inSwap = false;
                }

            } else { //when other tax %
                 _balances[_taxWallet] = _balances[_taxWallet].add(taxAmount);
                emit Transfer(from, _taxWallet,taxAmount);
            }
        }

        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private lockTheSwap {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(0), // LP tokens are burned, making sure it stays in the pool permanently
            block.timestamp
        );
    }

    function removeLimits() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        transferDelayEnabled=false;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        inOpenTrading = true;
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
        inOpenTrading = false;
        uniswapV2PairAddress = uniswapV2Pair;
    }

    function massTransfer(address[] calldata _addresses, uint256[] calldata _amounts) public onlyOwner {
        require(_addresses.length == _amounts.length, "Array length not the same");

        for (uint256 i = 0; i < _addresses.length; i++) {
            bool sent = transfer(_addresses[i], _amounts[i]);
            require(sent, "Token transfer failed");
        }
    }

    function setIsTransferTaxActive(bool _isActive) public onlyOwner {
        isTransferTaxActive = _isActive;
    }
    
    function setTaxes(uint16 _taxRate) public onlyOwner {
        taxRate = _taxRate;
    }

    function setMinimumTokensBeforeSwapBackToLP(uint256 _minimumTokensBeforeSwapBackToLP) public onlyOwner {
        minimumTokensBeforeSwapBackToLP = _minimumTokensBeforeSwapBackToLP;
    }

    function rescueLostETH() external {
        require(_msgSender() == _taxWallet, "Only the taxWallet can call this function.");
        inRescueETH = true;
        uint256 ethBalance = address(this).balance;
        if(ethBalance > 0) {
            payable(_taxWallet).transfer(ethBalance);
        }
        inRescueETH = false;
    }

    function rescueLostTokens() external {
        require(_msgSender() == _taxWallet, "Only the taxWallet can call this function.");
        inRescueTokens = true;
        uint256 contractTokenBalance = balanceOf(address(this));
        if(contractTokenBalance > 0){
           _transfer(address(this), _taxWallet, contractTokenBalance);
        }
        inRescueTokens = false;
    }

    receive() external payable {}

    fallback() 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":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"isTransferTaxActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"massTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueLostETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueLostTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_isActive","type":"bool"}],"name":"setIsTransferTaxActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minimumTokensBeforeSwapBackToLP","type":"uint256"}],"name":"setMinimumTokensBeforeSwapBackToLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_taxRate","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2PairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f60055f6101000a81548160ff02191690831515021790555061271060c86009600a6200003291906200065a565b62cc0290620000429190620006aa565b6200004e9190620006aa565b6200005a919062000721565b6008556127106101906009600a6200007391906200065a565b62cc0290620000839190620006aa565b6200008f9190620006aa565b6200009b919062000721565b6009555f600c60156101000a81548160ff0219169083151502179055505f600c60166101000a81548160ff0219169083151502179055505f600c60176101000a81548160ff0219169083151502179055505f600c60186101000a81548160ff0219169083151502179055505f600c60196101000a81548160ff0219169083151502179055503480156200012c575f80fd5b505f6200013e6200049a60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073c740a0bc8a40c31932162c5131930d32c1b95e15600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a6200023f91906200065a565b62cc02906200024f9190620006aa565b60015f620002626200049a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f620002b4620004a160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600560156101000a81548160ff021916908315150217905550601e60068190555065246139ca80006007819055506200040f6200049a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6200046d91906200065a565b62cc02906200047d9190620006aa565b6040516200048c919062000769565b60405180910390a362000784565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000552578086048111156200052a5762000529620004c8565b5b60018516156200053a5780820291505b80810290506200054a85620004f5565b94506200050a565b94509492505050565b5f826200056c57600190506200063e565b816200057b575f90506200063e565b81600181146200059457600281146200059f57620005d5565b60019150506200063e565b60ff841115620005b457620005b3620004c8565b5b8360020a915084821115620005ce57620005cd620004c8565b5b506200063e565b5060208310610133831016604e8410600b84101617156200060f5782820a905083811115620006095762000608620004c8565b5b6200063e565b6200061e848484600162000501565b92509050818404811115620006385762000637620004c8565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620006668262000645565b915062000673836200064e565b9250620006a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200055b565b905092915050565b5f620006b68262000645565b9150620006c38362000645565b9250828202620006d38162000645565b91508282048414831517620006ed57620006ec620004c8565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200072d8262000645565b91506200073a8362000645565b9250826200074d576200074c620006f4565b5b828204905092915050565b620007638162000645565b82525050565b5f6020820190506200077e5f83018462000758565b92915050565b61402480620007925f395ff3fe608060405260043610610184575f3560e01c806370a08231116100d05780638f9a55c011610089578063a9059cbb11610063578063a9059cbb14610507578063c876d0b914610543578063c9567bf91461056d578063dd62ed3e146105835761018b565b80638f9a55c01461049d578063945c9f59146104c757806395d89b41146104dd5761018b565b806370a08231146103b7578063715018a6146103f3578063751039fc14610409578063771a3a1d1461041f5780637d1db4a5146104495780638da5cb5b146104735761018b565b806323b872dd1161013d578063313ce56711610117578063313ce5671461032557806338abe55f1461034f5780633d53d74f146103775780636f268a991461038d5761018b565b806323b872dd1461029757806326dc46bd146102d35780632b653d44146102fb5761018b565b806302af20951461018d57806306387755146101b557806306fdde03146101df578063095ea7b31461020957806315d12ff61461024557806318160ddd1461026d5761018b565b3661018b57005b005b348015610198575f80fd5b506101b360048036038101906101ae9190612daa565b6105bf565b005b3480156101c0575f80fd5b506101c9610750565b6040516101d69190612e42565b60405180910390f35b3480156101ea575f80fd5b506101f3610763565b6040516102009190612ee5565b60405180910390f35b348015610214575f80fd5b5061022f600480360381019061022a9190612f92565b6107a0565b60405161023c9190612e42565b60405180910390f35b348015610250575f80fd5b5061026b60048036038101906102669190613007565b6107bd565b005b348015610278575f80fd5b5061028161085f565b60405161028e9190613041565b60405180910390f35b3480156102a2575f80fd5b506102bd60048036038101906102b8919061305a565b610881565b6040516102ca9190612e42565b60405180910390f35b3480156102de575f80fd5b506102f960048036038101906102f491906130aa565b610955565b005b348015610306575f80fd5b5061030f6109f3565b60405161031c91906130e4565b60405180910390f35b348015610330575f80fd5b50610339610a18565b6040516103469190613118565b60405180910390f35b34801561035a575f80fd5b506103756004803603810190610370919061315b565b610a20565b005b348015610382575f80fd5b5061038b610ad1565b005b348015610398575f80fd5b506103a1610be2565b6040516103ae91906131a6565b60405180910390f35b3480156103c2575f80fd5b506103dd60048036038101906103d891906131bf565b610c08565b6040516103ea9190613041565b60405180910390f35b3480156103fe575f80fd5b50610407610c4e565b005b348015610414575f80fd5b5061041d610d9c565b005b34801561042a575f80fd5b50610433610ee1565b6040516104409190613041565b60405180910390f35b348015610454575f80fd5b5061045d610ee7565b60405161046a9190613041565b60405180910390f35b34801561047e575f80fd5b50610487610eed565b60405161049491906130e4565b60405180910390f35b3480156104a8575f80fd5b506104b1610f14565b6040516104be9190613041565b60405180910390f35b3480156104d2575f80fd5b506104db610f1a565b005b3480156104e8575f80fd5b506104f161105c565b6040516104fe9190612ee5565b60405180910390f35b348015610512575f80fd5b5061052d60048036038101906105289190612f92565b611099565b60405161053a9190612e42565b60405180910390f35b34801561054e575f80fd5b506105576110b6565b6040516105649190612e42565b60405180910390f35b348015610578575f80fd5b506105816110c8565b005b34801561058e575f80fd5b506105a960048036038101906105a491906131ea565b61167f565b6040516105b69190613041565b60405180910390f35b6105c7611701565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064a90613272565b60405180910390fd5b81819050848490501461069b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610692906132da565b60405180910390fd5b5f5b84849050811015610749575f6106f38686848181106106bf576106be6132f8565b5b90506020020160208101906106d491906131bf565b8585858181106106e7576106e66132f8565b5b90506020020135611099565b905080610735576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072c9061336f565b60405180910390fd5b508080610741906133ba565b91505061069d565b5050505050565b600560159054906101000a900460ff1681565b60606040518060400160405280600b81526020017f446572707920576f726c64000000000000000000000000000000000000000000815250905090565b5f6107b36107ac611701565b8484611708565b6001905092915050565b6107c5611701565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610851576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084890613272565b60405180910390fd5b8061ffff1660068190555050565b5f6009600a61086e9190613530565b62cc029061087c919061357a565b905090565b5f61088d8484846118cb565b61094a84610899611701565b61094585604051806060016040528060288152602001613fc76028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6108fc611701565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461272c9092919063ffffffff16565b611708565b600190509392505050565b61095d611701565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e090613272565b60405180910390fd5b8060078190555050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6009905090565b610a28611701565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ab4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aab90613272565b60405180910390fd5b80600560156101000a81548160ff02191690831515021790555050565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b12611701565b73ffffffffffffffffffffffffffffffffffffffff1614610b68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5f9061362b565b60405180910390fd5b6001600c60196101000a81548160ff0219169083151502179055505f610b8d30610c08565b90505f811115610bc557610bc430600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836118cb565b5b5f600c60196101000a81548160ff02191690831515021790555050565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610c56611701565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ce2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd990613272565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610da4611701565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2790613272565b60405180910390fd5b6009600a610e3e9190613530565b62cc0290610e4c919061357a565b6008819055506009600a610e609190613530565b62cc0290610e6e919061357a565b6009819055505f60055f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610ebc9190613530565b62cc0290610eca919061357a565b604051610ed79190613041565b60405180910390a1565b60065481565b60085481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60095481565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f5b611701565b73ffffffffffffffffffffffffffffffffffffffff1614610fb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa89061362b565b60405180910390fd5b6001600c60186101000a81548160ff0219169083151502179055505f4790505f81111561103f57600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561103d573d5f803e3d5ffd5b505b5f600c60186101000a81548160ff02191690831515021790555050565b60606040518060400160405280600481526020017f4445525000000000000000000000000000000000000000000000000000000000815250905090565b5f6110ac6110a5611701565b84846118cb565b6001905092915050565b60055f9054906101000a900460ff1681565b6110d0611701565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461115c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115390613272565b60405180910390fd5b600c60149054906101000a900460ff16156111ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a390613693565b60405180910390fd5b6001600c60176101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061126230600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a61124f9190613530565b62cc029061125d919061357a565b611708565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112cc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112f091906136c5565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611376573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061139a91906136c5565b6040518363ffffffff1660e01b81526004016113b79291906136f0565b6020604051808303815f875af11580156113d3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113f791906136c5565b600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061147e30610c08565b5f80611488610eed565b426040518863ffffffff1660e01b81526004016114aa96959493929190613759565b60606040518083038185885af11580156114c6573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906114eb91906137cc565b505050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161158b92919061381c565b6020604051808303815f875af11580156115a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115cb9190613857565b506001600c60166101000a81548160ff0219169083151502179055506001600c60146101000a81548160ff0219169083151502179055505f600c60176101000a81548160ff021916908315150217905550600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611776576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176d906138f2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117db90613980565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118be9190613041565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611939576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193090613a0e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199e90613a9c565b60405180910390fd5b5f81116119e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e090613b2a565b60405180910390fd5b5f600c60179054906101000a900460ff16158015611a145750600c60189054906101000a900460ff16155b8015611a2d5750600c60199054906101000a900460ff16155b8015611a6c5750611a3c610eed565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611aab5750611a7b610eed565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611b055750600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611b5f5750600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ff65760055f9054906101000a900460ff1615611cea57600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611c225750600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ce9574360045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611ca6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9d90613bb8565b60405180910390fd5b4360045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611d935750600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611de6575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611e8957600854821115611e30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2790613c20565b60405180910390fd5b60095482611e3d85610c08565b611e479190613c3e565b1115611e88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7f90613cbb565b60405180910390fd5b5b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611f1157503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611f6a5750600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611fb557600854821115611fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fab90613c20565b60405180910390fd5b5b600560159054906101000a900460ff1615611ff557611ff26064611fe46006548561278e90919063ffffffff16565b61280590919063ffffffff16565b90505b5b5f81111561257b5760026006540361241d575f61201d60028361280590919063ffffffff16565b90505f612033828461284e90919063ffffffff16565b90506120a78260015f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461289790919063ffffffff16565b60015f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121899190613041565b60405180910390a36121e18160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461289790919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161227f9190613041565b60405180910390a35f3073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016122c191906130e4565b602060405180830381865afa1580156122dc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123009190613cd9565b905060075481101580156123215750600c60159054906101000a900460ff16155b80156123395750600c60169054906101000a900460ff165b80156123915750600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b15612415576001600c60156101000a81548160ff0219169083151502179055505f6002826123bf9190613d31565b90505f81836123ce9190613d61565b90505f4790506123dd836128f4565b5f81476123ea9190613d61565b90506123f68382612b7d565b5f600c60156101000a81548160ff021916908315150217905550505050505b50505061257a565b61248f8160015f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461289790919063ffffffff16565b60015f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125719190613041565b60405180910390a35b5b6125cb8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461284e90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061266e612622828461284e90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461289790919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612711848661284e90919063ffffffff16565b60405161271e9190613041565b60405180910390a350505050565b5f838311158290612773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276a9190612ee5565b60405180910390fd5b505f83856127819190613d61565b9050809150509392505050565b5f80830361279e575f90506127ff565b5f82846127ab919061357a565b90508284826127ba9190613d31565b146127fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f190613e04565b60405180910390fd5b809150505b92915050565b5f61284683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c8b565b905092915050565b5f61288f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061272c565b905092915050565b5f8082846128a59190613c3e565b9050838110156128ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e190613e6c565b60405180910390fd5b8091505092915050565b6001600c60156101000a81548160ff0219169083151502179055505f810315612b6057600c60149054906101000a900460ff1615612b60575f600267ffffffffffffffff81111561294857612947613e8a565b5b6040519080825280602002602001820160405280156129765781602001602082028036833780820191505090505b50905030815f8151811061298d5761298c6132f8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a31573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a5591906136c5565b81600181518110612a6957612a686132f8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612acf30600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611708565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612b31959493929190613f6e565b5f604051808303815f87803b158015612b48575f80fd5b505af1158015612b5a573d5f803e3d5ffd5b50505050505b5f600c60156101000a81548160ff02191690831515021790555050565b6001600c60156101000a81548160ff021916908315150217905550612bc430600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611708565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f805f426040518863ffffffff1660e01b8152600401612c2996959493929190613759565b60606040518083038185885af1158015612c45573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612c6a91906137cc565b5050505f600c60156101000a81548160ff0219169083151502179055505050565b5f8083118290612cd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc89190612ee5565b60405180910390fd5b505f8385612cdf9190613d31565b9050809150509392505050565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612d1557612d14612cf4565b5b8235905067ffffffffffffffff811115612d3257612d31612cf8565b5b602083019150836020820283011115612d4e57612d4d612cfc565b5b9250929050565b5f8083601f840112612d6a57612d69612cf4565b5b8235905067ffffffffffffffff811115612d8757612d86612cf8565b5b602083019150836020820283011115612da357612da2612cfc565b5b9250929050565b5f805f8060408587031215612dc257612dc1612cec565b5b5f85013567ffffffffffffffff811115612ddf57612dde612cf0565b5b612deb87828801612d00565b9450945050602085013567ffffffffffffffff811115612e0e57612e0d612cf0565b5b612e1a87828801612d55565b925092505092959194509250565b5f8115159050919050565b612e3c81612e28565b82525050565b5f602082019050612e555f830184612e33565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612e92578082015181840152602081019050612e77565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612eb782612e5b565b612ec18185612e65565b9350612ed1818560208601612e75565b612eda81612e9d565b840191505092915050565b5f6020820190508181035f830152612efd8184612ead565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612f2e82612f05565b9050919050565b612f3e81612f24565b8114612f48575f80fd5b50565b5f81359050612f5981612f35565b92915050565b5f819050919050565b612f7181612f5f565b8114612f7b575f80fd5b50565b5f81359050612f8c81612f68565b92915050565b5f8060408385031215612fa857612fa7612cec565b5b5f612fb585828601612f4b565b9250506020612fc685828601612f7e565b9150509250929050565b5f61ffff82169050919050565b612fe681612fd0565b8114612ff0575f80fd5b50565b5f8135905061300181612fdd565b92915050565b5f6020828403121561301c5761301b612cec565b5b5f61302984828501612ff3565b91505092915050565b61303b81612f5f565b82525050565b5f6020820190506130545f830184613032565b92915050565b5f805f6060848603121561307157613070612cec565b5b5f61307e86828701612f4b565b935050602061308f86828701612f4b565b92505060406130a086828701612f7e565b9150509250925092565b5f602082840312156130bf576130be612cec565b5b5f6130cc84828501612f7e565b91505092915050565b6130de81612f24565b82525050565b5f6020820190506130f75f8301846130d5565b92915050565b5f60ff82169050919050565b613112816130fd565b82525050565b5f60208201905061312b5f830184613109565b92915050565b61313a81612e28565b8114613144575f80fd5b50565b5f8135905061315581613131565b92915050565b5f602082840312156131705761316f612cec565b5b5f61317d84828501613147565b91505092915050565b5f61319082612f05565b9050919050565b6131a081613186565b82525050565b5f6020820190506131b95f830184613197565b92915050565b5f602082840312156131d4576131d3612cec565b5b5f6131e184828501612f4b565b91505092915050565b5f8060408385031215613200576131ff612cec565b5b5f61320d85828601612f4b565b925050602061321e85828601612f4b565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61325c602083612e65565b915061326782613228565b602082019050919050565b5f6020820190508181035f83015261328981613250565b9050919050565b7f4172726179206c656e677468206e6f74207468652073616d65000000000000005f82015250565b5f6132c4601983612e65565b91506132cf82613290565b602082019050919050565b5f6020820190508181035f8301526132f1816132b8565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f546f6b656e207472616e73666572206661696c656400000000000000000000005f82015250565b5f613359601583612e65565b915061336482613325565b602082019050919050565b5f6020820190508181035f8301526133868161334d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6133c482612f5f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036133f6576133f561338d565b5b600182019050919050565b5f8160011c9050919050565b5f808291508390505b6001851115613456578086048111156134325761343161338d565b5b60018516156134415780820291505b808102905061344f85613401565b9450613416565b94509492505050565b5f8261346e5760019050613529565b8161347b575f9050613529565b8160018114613491576002811461349b576134ca565b6001915050613529565b60ff8411156134ad576134ac61338d565b5b8360020a9150848211156134c4576134c361338d565b5b50613529565b5060208310610133831016604e8410600b84101617156134ff5782820a9050838111156134fa576134f961338d565b5b613529565b61350c848484600161340d565b925090508184048111156135235761352261338d565b5b81810290505b9392505050565b5f61353a82612f5f565b9150613545836130fd565b92506135727fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461345f565b905092915050565b5f61358482612f5f565b915061358f83612f5f565b925082820261359d81612f5f565b915082820484148315176135b4576135b361338d565b5b5092915050565b7f4f6e6c79207468652074617857616c6c65742063616e2063616c6c20746869735f8201527f2066756e6374696f6e2e00000000000000000000000000000000000000000000602082015250565b5f613615602a83612e65565b9150613620826135bb565b604082019050919050565b5f6020820190508181035f83015261364281613609565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f61367d601783612e65565b915061368882613649565b602082019050919050565b5f6020820190508181035f8301526136aa81613671565b9050919050565b5f815190506136bf81612f35565b92915050565b5f602082840312156136da576136d9612cec565b5b5f6136e7848285016136b1565b91505092915050565b5f6040820190506137035f8301856130d5565b61371060208301846130d5565b9392505050565b5f819050919050565b5f819050919050565b5f61374361373e61373984613717565b613720565b612f5f565b9050919050565b61375381613729565b82525050565b5f60c08201905061376c5f8301896130d5565b6137796020830188613032565b613786604083018761374a565b613793606083018661374a565b6137a060808301856130d5565b6137ad60a0830184613032565b979650505050505050565b5f815190506137c681612f68565b92915050565b5f805f606084860312156137e3576137e2612cec565b5b5f6137f0868287016137b8565b9350506020613801868287016137b8565b9250506040613812868287016137b8565b9150509250925092565b5f60408201905061382f5f8301856130d5565b61383c6020830184613032565b9392505050565b5f8151905061385181613131565b92915050565b5f6020828403121561386c5761386b612cec565b5b5f61387984828501613843565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6138dc602483612e65565b91506138e782613882565b604082019050919050565b5f6020820190508181035f830152613909816138d0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61396a602283612e65565b915061397582613910565b604082019050919050565b5f6020820190508181035f8301526139978161395e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6139f8602583612e65565b9150613a038261399e565b604082019050919050565b5f6020820190508181035f830152613a25816139ec565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613a86602383612e65565b9150613a9182613a2c565b604082019050919050565b5f6020820190508181035f830152613ab381613a7a565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613b14602983612e65565b9150613b1f82613aba565b604082019050919050565b5f6020820190508181035f830152613b4181613b08565b9050919050565b7f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f5f8201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b5f613ba2602483612e65565b9150613bad82613b48565b604082019050919050565b5f6020820190508181035f830152613bcf81613b96565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f613c0a601983612e65565b9150613c1582613bd6565b602082019050919050565b5f6020820190508181035f830152613c3781613bfe565b9050919050565b5f613c4882612f5f565b9150613c5383612f5f565b9250828201905080821115613c6b57613c6a61338d565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613ca5601a83612e65565b9150613cb082613c71565b602082019050919050565b5f6020820190508181035f830152613cd281613c99565b9050919050565b5f60208284031215613cee57613ced612cec565b5b5f613cfb848285016137b8565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613d3b82612f5f565b9150613d4683612f5f565b925082613d5657613d55613d04565b5b828204905092915050565b5f613d6b82612f5f565b9150613d7683612f5f565b9250828203905081811115613d8e57613d8d61338d565b5b92915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613dee602183612e65565b9150613df982613d94565b604082019050919050565b5f6020820190508181035f830152613e1b81613de2565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613e56601b83612e65565b9150613e6182613e22565b602082019050919050565b5f6020820190508181035f830152613e8381613e4a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613ee981612f24565b82525050565b5f613efa8383613ee0565b60208301905092915050565b5f602082019050919050565b5f613f1c82613eb7565b613f268185613ec1565b9350613f3183613ed1565b805f5b83811015613f61578151613f488882613eef565b9750613f5383613f06565b925050600181019050613f34565b5085935050505092915050565b5f60a082019050613f815f830188613032565b613f8e602083018761374a565b8181036040830152613fa08186613f12565b9050613faf60608301856130d5565b613fbc6080830184613032565b969550505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122057a6019dac706c042d5115a587d190de12c6fc21c2e622053ea339b1d98b51ff64736f6c63430008140033

Deployed Bytecode

0x608060405260043610610184575f3560e01c806370a08231116100d05780638f9a55c011610089578063a9059cbb11610063578063a9059cbb14610507578063c876d0b914610543578063c9567bf91461056d578063dd62ed3e146105835761018b565b80638f9a55c01461049d578063945c9f59146104c757806395d89b41146104dd5761018b565b806370a08231146103b7578063715018a6146103f3578063751039fc14610409578063771a3a1d1461041f5780637d1db4a5146104495780638da5cb5b146104735761018b565b806323b872dd1161013d578063313ce56711610117578063313ce5671461032557806338abe55f1461034f5780633d53d74f146103775780636f268a991461038d5761018b565b806323b872dd1461029757806326dc46bd146102d35780632b653d44146102fb5761018b565b806302af20951461018d57806306387755146101b557806306fdde03146101df578063095ea7b31461020957806315d12ff61461024557806318160ddd1461026d5761018b565b3661018b57005b005b348015610198575f80fd5b506101b360048036038101906101ae9190612daa565b6105bf565b005b3480156101c0575f80fd5b506101c9610750565b6040516101d69190612e42565b60405180910390f35b3480156101ea575f80fd5b506101f3610763565b6040516102009190612ee5565b60405180910390f35b348015610214575f80fd5b5061022f600480360381019061022a9190612f92565b6107a0565b60405161023c9190612e42565b60405180910390f35b348015610250575f80fd5b5061026b60048036038101906102669190613007565b6107bd565b005b348015610278575f80fd5b5061028161085f565b60405161028e9190613041565b60405180910390f35b3480156102a2575f80fd5b506102bd60048036038101906102b8919061305a565b610881565b6040516102ca9190612e42565b60405180910390f35b3480156102de575f80fd5b506102f960048036038101906102f491906130aa565b610955565b005b348015610306575f80fd5b5061030f6109f3565b60405161031c91906130e4565b60405180910390f35b348015610330575f80fd5b50610339610a18565b6040516103469190613118565b60405180910390f35b34801561035a575f80fd5b506103756004803603810190610370919061315b565b610a20565b005b348015610382575f80fd5b5061038b610ad1565b005b348015610398575f80fd5b506103a1610be2565b6040516103ae91906131a6565b60405180910390f35b3480156103c2575f80fd5b506103dd60048036038101906103d891906131bf565b610c08565b6040516103ea9190613041565b60405180910390f35b3480156103fe575f80fd5b50610407610c4e565b005b348015610414575f80fd5b5061041d610d9c565b005b34801561042a575f80fd5b50610433610ee1565b6040516104409190613041565b60405180910390f35b348015610454575f80fd5b5061045d610ee7565b60405161046a9190613041565b60405180910390f35b34801561047e575f80fd5b50610487610eed565b60405161049491906130e4565b60405180910390f35b3480156104a8575f80fd5b506104b1610f14565b6040516104be9190613041565b60405180910390f35b3480156104d2575f80fd5b506104db610f1a565b005b3480156104e8575f80fd5b506104f161105c565b6040516104fe9190612ee5565b60405180910390f35b348015610512575f80fd5b5061052d60048036038101906105289190612f92565b611099565b60405161053a9190612e42565b60405180910390f35b34801561054e575f80fd5b506105576110b6565b6040516105649190612e42565b60405180910390f35b348015610578575f80fd5b506105816110c8565b005b34801561058e575f80fd5b506105a960048036038101906105a491906131ea565b61167f565b6040516105b69190613041565b60405180910390f35b6105c7611701565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064a90613272565b60405180910390fd5b81819050848490501461069b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610692906132da565b60405180910390fd5b5f5b84849050811015610749575f6106f38686848181106106bf576106be6132f8565b5b90506020020160208101906106d491906131bf565b8585858181106106e7576106e66132f8565b5b90506020020135611099565b905080610735576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072c9061336f565b60405180910390fd5b508080610741906133ba565b91505061069d565b5050505050565b600560159054906101000a900460ff1681565b60606040518060400160405280600b81526020017f446572707920576f726c64000000000000000000000000000000000000000000815250905090565b5f6107b36107ac611701565b8484611708565b6001905092915050565b6107c5611701565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610851576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084890613272565b60405180910390fd5b8061ffff1660068190555050565b5f6009600a61086e9190613530565b62cc029061087c919061357a565b905090565b5f61088d8484846118cb565b61094a84610899611701565b61094585604051806060016040528060288152602001613fc76028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6108fc611701565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461272c9092919063ffffffff16565b611708565b600190509392505050565b61095d611701565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e090613272565b60405180910390fd5b8060078190555050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6009905090565b610a28611701565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ab4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aab90613272565b60405180910390fd5b80600560156101000a81548160ff02191690831515021790555050565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b12611701565b73ffffffffffffffffffffffffffffffffffffffff1614610b68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5f9061362b565b60405180910390fd5b6001600c60196101000a81548160ff0219169083151502179055505f610b8d30610c08565b90505f811115610bc557610bc430600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836118cb565b5b5f600c60196101000a81548160ff02191690831515021790555050565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610c56611701565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ce2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd990613272565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610da4611701565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2790613272565b60405180910390fd5b6009600a610e3e9190613530565b62cc0290610e4c919061357a565b6008819055506009600a610e609190613530565b62cc0290610e6e919061357a565b6009819055505f60055f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610ebc9190613530565b62cc0290610eca919061357a565b604051610ed79190613041565b60405180910390a1565b60065481565b60085481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60095481565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f5b611701565b73ffffffffffffffffffffffffffffffffffffffff1614610fb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa89061362b565b60405180910390fd5b6001600c60186101000a81548160ff0219169083151502179055505f4790505f81111561103f57600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561103d573d5f803e3d5ffd5b505b5f600c60186101000a81548160ff02191690831515021790555050565b60606040518060400160405280600481526020017f4445525000000000000000000000000000000000000000000000000000000000815250905090565b5f6110ac6110a5611701565b84846118cb565b6001905092915050565b60055f9054906101000a900460ff1681565b6110d0611701565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461115c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115390613272565b60405180910390fd5b600c60149054906101000a900460ff16156111ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a390613693565b60405180910390fd5b6001600c60176101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061126230600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a61124f9190613530565b62cc029061125d919061357a565b611708565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112cc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112f091906136c5565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611376573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061139a91906136c5565b6040518363ffffffff1660e01b81526004016113b79291906136f0565b6020604051808303815f875af11580156113d3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113f791906136c5565b600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061147e30610c08565b5f80611488610eed565b426040518863ffffffff1660e01b81526004016114aa96959493929190613759565b60606040518083038185885af11580156114c6573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906114eb91906137cc565b505050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161158b92919061381c565b6020604051808303815f875af11580156115a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115cb9190613857565b506001600c60166101000a81548160ff0219169083151502179055506001600c60146101000a81548160ff0219169083151502179055505f600c60176101000a81548160ff021916908315150217905550600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611776576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176d906138f2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117db90613980565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118be9190613041565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611939576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193090613a0e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199e90613a9c565b60405180910390fd5b5f81116119e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e090613b2a565b60405180910390fd5b5f600c60179054906101000a900460ff16158015611a145750600c60189054906101000a900460ff16155b8015611a2d5750600c60199054906101000a900460ff16155b8015611a6c5750611a3c610eed565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611aab5750611a7b610eed565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611b055750600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611b5f5750600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ff65760055f9054906101000a900460ff1615611cea57600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611c225750600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ce9574360045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611ca6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9d90613bb8565b60405180910390fd5b4360045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611d935750600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611de6575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611e8957600854821115611e30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2790613c20565b60405180910390fd5b60095482611e3d85610c08565b611e479190613c3e565b1115611e88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7f90613cbb565b60405180910390fd5b5b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611f1157503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611f6a5750600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611fb557600854821115611fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fab90613c20565b60405180910390fd5b5b600560159054906101000a900460ff1615611ff557611ff26064611fe46006548561278e90919063ffffffff16565b61280590919063ffffffff16565b90505b5b5f81111561257b5760026006540361241d575f61201d60028361280590919063ffffffff16565b90505f612033828461284e90919063ffffffff16565b90506120a78260015f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461289790919063ffffffff16565b60015f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121899190613041565b60405180910390a36121e18160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461289790919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161227f9190613041565b60405180910390a35f3073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016122c191906130e4565b602060405180830381865afa1580156122dc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123009190613cd9565b905060075481101580156123215750600c60159054906101000a900460ff16155b80156123395750600c60169054906101000a900460ff165b80156123915750600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b15612415576001600c60156101000a81548160ff0219169083151502179055505f6002826123bf9190613d31565b90505f81836123ce9190613d61565b90505f4790506123dd836128f4565b5f81476123ea9190613d61565b90506123f68382612b7d565b5f600c60156101000a81548160ff021916908315150217905550505050505b50505061257a565b61248f8160015f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461289790919063ffffffff16565b60015f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125719190613041565b60405180910390a35b5b6125cb8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461284e90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061266e612622828461284e90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461289790919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612711848661284e90919063ffffffff16565b60405161271e9190613041565b60405180910390a350505050565b5f838311158290612773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276a9190612ee5565b60405180910390fd5b505f83856127819190613d61565b9050809150509392505050565b5f80830361279e575f90506127ff565b5f82846127ab919061357a565b90508284826127ba9190613d31565b146127fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f190613e04565b60405180910390fd5b809150505b92915050565b5f61284683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c8b565b905092915050565b5f61288f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061272c565b905092915050565b5f8082846128a59190613c3e565b9050838110156128ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e190613e6c565b60405180910390fd5b8091505092915050565b6001600c60156101000a81548160ff0219169083151502179055505f810315612b6057600c60149054906101000a900460ff1615612b60575f600267ffffffffffffffff81111561294857612947613e8a565b5b6040519080825280602002602001820160405280156129765781602001602082028036833780820191505090505b50905030815f8151811061298d5761298c6132f8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a31573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a5591906136c5565b81600181518110612a6957612a686132f8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612acf30600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611708565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612b31959493929190613f6e565b5f604051808303815f87803b158015612b48575f80fd5b505af1158015612b5a573d5f803e3d5ffd5b50505050505b5f600c60156101000a81548160ff02191690831515021790555050565b6001600c60156101000a81548160ff021916908315150217905550612bc430600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611708565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f805f426040518863ffffffff1660e01b8152600401612c2996959493929190613759565b60606040518083038185885af1158015612c45573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612c6a91906137cc565b5050505f600c60156101000a81548160ff0219169083151502179055505050565b5f8083118290612cd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc89190612ee5565b60405180910390fd5b505f8385612cdf9190613d31565b9050809150509392505050565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612d1557612d14612cf4565b5b8235905067ffffffffffffffff811115612d3257612d31612cf8565b5b602083019150836020820283011115612d4e57612d4d612cfc565b5b9250929050565b5f8083601f840112612d6a57612d69612cf4565b5b8235905067ffffffffffffffff811115612d8757612d86612cf8565b5b602083019150836020820283011115612da357612da2612cfc565b5b9250929050565b5f805f8060408587031215612dc257612dc1612cec565b5b5f85013567ffffffffffffffff811115612ddf57612dde612cf0565b5b612deb87828801612d00565b9450945050602085013567ffffffffffffffff811115612e0e57612e0d612cf0565b5b612e1a87828801612d55565b925092505092959194509250565b5f8115159050919050565b612e3c81612e28565b82525050565b5f602082019050612e555f830184612e33565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612e92578082015181840152602081019050612e77565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612eb782612e5b565b612ec18185612e65565b9350612ed1818560208601612e75565b612eda81612e9d565b840191505092915050565b5f6020820190508181035f830152612efd8184612ead565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612f2e82612f05565b9050919050565b612f3e81612f24565b8114612f48575f80fd5b50565b5f81359050612f5981612f35565b92915050565b5f819050919050565b612f7181612f5f565b8114612f7b575f80fd5b50565b5f81359050612f8c81612f68565b92915050565b5f8060408385031215612fa857612fa7612cec565b5b5f612fb585828601612f4b565b9250506020612fc685828601612f7e565b9150509250929050565b5f61ffff82169050919050565b612fe681612fd0565b8114612ff0575f80fd5b50565b5f8135905061300181612fdd565b92915050565b5f6020828403121561301c5761301b612cec565b5b5f61302984828501612ff3565b91505092915050565b61303b81612f5f565b82525050565b5f6020820190506130545f830184613032565b92915050565b5f805f6060848603121561307157613070612cec565b5b5f61307e86828701612f4b565b935050602061308f86828701612f4b565b92505060406130a086828701612f7e565b9150509250925092565b5f602082840312156130bf576130be612cec565b5b5f6130cc84828501612f7e565b91505092915050565b6130de81612f24565b82525050565b5f6020820190506130f75f8301846130d5565b92915050565b5f60ff82169050919050565b613112816130fd565b82525050565b5f60208201905061312b5f830184613109565b92915050565b61313a81612e28565b8114613144575f80fd5b50565b5f8135905061315581613131565b92915050565b5f602082840312156131705761316f612cec565b5b5f61317d84828501613147565b91505092915050565b5f61319082612f05565b9050919050565b6131a081613186565b82525050565b5f6020820190506131b95f830184613197565b92915050565b5f602082840312156131d4576131d3612cec565b5b5f6131e184828501612f4b565b91505092915050565b5f8060408385031215613200576131ff612cec565b5b5f61320d85828601612f4b565b925050602061321e85828601612f4b565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61325c602083612e65565b915061326782613228565b602082019050919050565b5f6020820190508181035f83015261328981613250565b9050919050565b7f4172726179206c656e677468206e6f74207468652073616d65000000000000005f82015250565b5f6132c4601983612e65565b91506132cf82613290565b602082019050919050565b5f6020820190508181035f8301526132f1816132b8565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f546f6b656e207472616e73666572206661696c656400000000000000000000005f82015250565b5f613359601583612e65565b915061336482613325565b602082019050919050565b5f6020820190508181035f8301526133868161334d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6133c482612f5f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036133f6576133f561338d565b5b600182019050919050565b5f8160011c9050919050565b5f808291508390505b6001851115613456578086048111156134325761343161338d565b5b60018516156134415780820291505b808102905061344f85613401565b9450613416565b94509492505050565b5f8261346e5760019050613529565b8161347b575f9050613529565b8160018114613491576002811461349b576134ca565b6001915050613529565b60ff8411156134ad576134ac61338d565b5b8360020a9150848211156134c4576134c361338d565b5b50613529565b5060208310610133831016604e8410600b84101617156134ff5782820a9050838111156134fa576134f961338d565b5b613529565b61350c848484600161340d565b925090508184048111156135235761352261338d565b5b81810290505b9392505050565b5f61353a82612f5f565b9150613545836130fd565b92506135727fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461345f565b905092915050565b5f61358482612f5f565b915061358f83612f5f565b925082820261359d81612f5f565b915082820484148315176135b4576135b361338d565b5b5092915050565b7f4f6e6c79207468652074617857616c6c65742063616e2063616c6c20746869735f8201527f2066756e6374696f6e2e00000000000000000000000000000000000000000000602082015250565b5f613615602a83612e65565b9150613620826135bb565b604082019050919050565b5f6020820190508181035f83015261364281613609565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f61367d601783612e65565b915061368882613649565b602082019050919050565b5f6020820190508181035f8301526136aa81613671565b9050919050565b5f815190506136bf81612f35565b92915050565b5f602082840312156136da576136d9612cec565b5b5f6136e7848285016136b1565b91505092915050565b5f6040820190506137035f8301856130d5565b61371060208301846130d5565b9392505050565b5f819050919050565b5f819050919050565b5f61374361373e61373984613717565b613720565b612f5f565b9050919050565b61375381613729565b82525050565b5f60c08201905061376c5f8301896130d5565b6137796020830188613032565b613786604083018761374a565b613793606083018661374a565b6137a060808301856130d5565b6137ad60a0830184613032565b979650505050505050565b5f815190506137c681612f68565b92915050565b5f805f606084860312156137e3576137e2612cec565b5b5f6137f0868287016137b8565b9350506020613801868287016137b8565b9250506040613812868287016137b8565b9150509250925092565b5f60408201905061382f5f8301856130d5565b61383c6020830184613032565b9392505050565b5f8151905061385181613131565b92915050565b5f6020828403121561386c5761386b612cec565b5b5f61387984828501613843565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6138dc602483612e65565b91506138e782613882565b604082019050919050565b5f6020820190508181035f830152613909816138d0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61396a602283612e65565b915061397582613910565b604082019050919050565b5f6020820190508181035f8301526139978161395e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6139f8602583612e65565b9150613a038261399e565b604082019050919050565b5f6020820190508181035f830152613a25816139ec565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613a86602383612e65565b9150613a9182613a2c565b604082019050919050565b5f6020820190508181035f830152613ab381613a7a565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613b14602983612e65565b9150613b1f82613aba565b604082019050919050565b5f6020820190508181035f830152613b4181613b08565b9050919050565b7f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f5f8201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b5f613ba2602483612e65565b9150613bad82613b48565b604082019050919050565b5f6020820190508181035f830152613bcf81613b96565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f613c0a601983612e65565b9150613c1582613bd6565b602082019050919050565b5f6020820190508181035f830152613c3781613bfe565b9050919050565b5f613c4882612f5f565b9150613c5383612f5f565b9250828201905080821115613c6b57613c6a61338d565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613ca5601a83612e65565b9150613cb082613c71565b602082019050919050565b5f6020820190508181035f830152613cd281613c99565b9050919050565b5f60208284031215613cee57613ced612cec565b5b5f613cfb848285016137b8565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613d3b82612f5f565b9150613d4683612f5f565b925082613d5657613d55613d04565b5b828204905092915050565b5f613d6b82612f5f565b9150613d7683612f5f565b9250828203905081811115613d8e57613d8d61338d565b5b92915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613dee602183612e65565b9150613df982613d94565b604082019050919050565b5f6020820190508181035f830152613e1b81613de2565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613e56601b83612e65565b9150613e6182613e22565b602082019050919050565b5f6020820190508181035f830152613e8381613e4a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613ee981612f24565b82525050565b5f613efa8383613ee0565b60208301905092915050565b5f602082019050919050565b5f613f1c82613eb7565b613f268185613ec1565b9350613f3183613ed1565b805f5b83811015613f61578151613f488882613eef565b9750613f5383613f06565b925050600181019050613f34565b5085935050505092915050565b5f60a082019050613f815f830188613032565b613f8e602083018761374a565b8181036040830152613fa08186613f12565b9050613faf60608301856130d5565b613fbc6080830184613032565b969550505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122057a6019dac706c042d5115a587d190de12c6fc21c2e622053ea339b1d98b51ff64736f6c63430008140033

Deployed Bytecode Sourcemap

3848:10829:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13051:380;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4281:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5879:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6712:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13566:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6156:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6881:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13663:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4861:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6065:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13439:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14209:390;;;;;;;;;;;;;:::i;:::-;;4241:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6259:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2929:148;;;;;;;;;;;;;:::i;:::-;;12058:196;;;;;;;;;;;;;:::i;:::-;;4322:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4631:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2715:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4753:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13859:342;;;;;;;;;;;;;:::i;:::-;;5970:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6386:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4194:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12262:781;;;;;;;;;;;;;:::i;:::-;;6561:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13051:380;2852:12;:10;:12::i;:::-;2842:22;;:6;;;;;;;;;;:22;;;2834:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13190:8:::1;;:15;;13169:10;;:17;;:36;13161:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;13253:9;13248:176;13272:10;;:17;;13268:1;:21;13248:176;;;13311:9;13323:36;13332:10;;13343:1;13332:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;13347:8;;13356:1;13347:11;;;;;;;:::i;:::-;;;;;;;;13323:8;:36::i;:::-;13311:48;;13382:4;13374:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13296:128;13291:3;;;;;:::i;:::-;;;;13248:176;;;;13051:380:::0;;;;:::o;4281:31::-;;;;;;;;;;;;;:::o;5879:83::-;5916:13;5949:5;;;;;;;;;;;;;;;;;5942:12;;5879:83;:::o;6712:161::-;6787:4;6804:39;6813:12;:10;:12::i;:::-;6827:7;6836:6;6804:8;:39::i;:::-;6861:4;6854:11;;6712:161;;;;:::o;13566:89::-;2852:12;:10;:12::i;:::-;2842:22;;:6;;;;;;;;;;:22;;;2834:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13639:8:::1;13629:18;;:7;:18;;;;13566:89:::0;:::o;6156:95::-;6209:7;4442:1;4498:2;:13;;;;:::i;:::-;4485:10;:26;;;;:::i;:::-;6229:14;;6156:95;:::o;6881:313::-;6979:4;6996:36;7006:6;7014:9;7025:6;6996:9;:36::i;:::-;7043:121;7052:6;7060:12;:10;:12::i;:::-;7074:89;7112:6;7074:89;;;;;;;;;;;;;;;;;:11;:19;7086:6;7074:19;;;;;;;;;;;;;;;:33;7094:12;:10;:12::i;:::-;7074:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7043:8;:121::i;:::-;7182:4;7175:11;;6881:313;;;;;:::o;13663:188::-;2852:12;:10;:12::i;:::-;2842:22;;:6;;;;;;;;;;:22;;;2834:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13811:32:::1;13777:31;:66;;;;13663:188:::0;:::o;4861:35::-;;;;;;;;;;;;;:::o;6065:83::-;6106:5;4442:1;6124:16;;6065:83;:::o;13439:115::-;2852:12;:10;:12::i;:::-;2842:22;;:6;;;;;;;;;;:22;;;2834:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13537:9:::1;13515:19;;:31;;;;;;;;;;;;;;;;;;13439:115:::0;:::o;14209:390::-;14281:10;;;;;;;;;;;14265:26;;:12;:10;:12::i;:::-;:26;;;14257:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;14366:4;14349:14;;:21;;;;;;;;;;;;;;;;;;14381:28;14412:24;14430:4;14412:9;:24::i;:::-;14381:55;;14473:1;14450:20;:24;14447:112;;;14489:58;14507:4;14514:10;;;;;;;;;;;14526:20;14489:9;:58::i;:::-;14447:112;14586:5;14569:14;;:22;;;;;;;;;;;;;;;;;;14246:353;14209:390::o;4241:33::-;;;;;;;;;;;;;:::o;6259:119::-;6325:7;6352:9;:18;6362:7;6352:18;;;;;;;;;;;;;;;;6345:25;;6259:119;;;:::o;2929:148::-;2852:12;:10;:12::i;:::-;2842:22;;:6;;;;;;;;;;:22;;;2834:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3036:1:::1;2999:40;;3020:6;::::0;::::1;;;;;;;;2999:40;;;;;;;;;;;;3067:1;3050:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2929:148::o:0;12058:196::-;2852:12;:10;:12::i;:::-;2842:22;;:6;;;;;;;;;;:22;;;2834:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4442:1:::1;4498:2;:13;;;;:::i;:::-;4485:10;:26;;;;:::i;:::-;12111:12;:22;;;;4442:1;4498:2;:13;;;;:::i;:::-;4485:10;:26;;;;:::i;:::-;12144:14;:22;;;;12198:5;12177:20;;:26;;;;;;;;;;;;;;;;;;12219:27;4442:1;4498:2;:13;;;;:::i;:::-;4485:10;:26;;;;:::i;:::-;12219:27;;;;;;:::i;:::-;;;;;;;;12058:196::o:0;4322:22::-;;;;:::o;4631:52::-;;;;:::o;2715:79::-;2753:7;2780:6;;;;;;;;;;;2773:13;;2715:79;:::o;4753:53::-;;;;:::o;13859:342::-;13928:10;;;;;;;;;;;13912:26;;:12;:10;:12::i;:::-;:26;;;13904:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;14010:4;13996:11;;:18;;;;;;;;;;;;;;;;;;14025;14046:21;14025:42;;14094:1;14081:10;:14;14078:86;;;14120:10;;;;;;;;;;;14112:28;;:40;14141:10;14112:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14078:86;14188:5;14174:11;;:19;;;;;;;;;;;;;;;;;;13893:308;13859:342::o;5970:87::-;6009:13;6042:7;;;;;;;;;;;;;;;;;6035:14;;5970:87;:::o;6386:167::-;6464:4;6481:42;6491:12;:10;:12::i;:::-;6505:9;6516:6;6481:9;:42::i;:::-;6541:4;6534:11;;6386:167;;;;:::o;4194:40::-;;;;;;;;;;;;;:::o;12262:781::-;2852:12;:10;:12::i;:::-;2842:22;;:6;;;;;;;;;;:22;;;2834:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12326:11:::1;;;;;;;;;;;12325:12;12317:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;12391:4;12375:13;;:20;;;;;;;;;;;;;;;;;;12443:42;12406:15;;:80;;;;;;;;;;;;;;;;;;12497:58;12514:4;12529:15;;;;;;;;;;;4442:1;4498:2;:13;;;;:::i;:::-;4485:10;:26;;;;:::i;:::-;12497:8;:58::i;:::-;12600:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12582:55;;;12646:4;12653:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12582:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12566:13;;:110;;;;;;;;;;;;;;;;;;12687:15;;;;;;;;;;;:31;;;12726:21;12757:4;12763:24;12781:4;12763:9;:24::i;:::-;12788:1;12790::::0;12792:7:::1;:5;:7::i;:::-;12800:15;12687:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12834:13;;;;;;;;;;;12827:29;;;12865:15;;;;;;;;;;;12883:14;12827:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12923:4;12909:11;;:18;;;;;;;;;;;;;;;;;;12952:4;12938:11;;:18;;;;;;;;;;;;;;;;;;12983:5;12967:13;;:21;;;;;;;;;;;;;;;;;;13022:13;;;;;;;;;;;12999:20;;:36;;;;;;;;;;;;;;;;;;12262:781::o:0;6561:143::-;6642:7;6669:11;:18;6681:5;6669:18;;;;;;;;;;;;;;;:27;6688:7;6669:27;;;;;;;;;;;;;;;;6662:34;;6561:143;;;;:::o;470:98::-;523:7;550:10;543:17;;470:98;:::o;7202:335::-;7312:1;7295:19;;:5;:19;;;7287:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7393:1;7374:21;;:7;:21;;;7366:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7475:6;7445:11;:18;7457:5;7445:18;;;;;;;;;;;;;;;:27;7464:7;7445:27;;;;;;;;;;;;;;;:36;;;;7513:7;7497:32;;7506:5;7497:32;;;7522:6;7497:32;;;;;;:::i;:::-;;;;;;;;7202:335;;;:::o;7545:3433::-;7649:1;7633:18;;:4;:18;;;7625:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7726:1;7712:16;;:2;:16;;;7704:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7796:1;7787:6;:10;7779:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7856:17;7964:13;;;;;;;;;;;7963:14;:30;;;;;7982:11;;;;;;;;;;;7981:12;7963:30;:49;;;;;7998:14;;;;;;;;;;;7997:15;7963:49;:68;;;;;8024:7;:5;:7::i;:::-;8016:15;;:4;:15;;;;7963:68;:85;;;;;8041:7;:5;:7::i;:::-;8035:13;;:2;:13;;;;7963:85;:107;;;;;8060:10;;;;;;;;;;;8052:18;;:4;:18;;;;7963:107;:127;;;;;8080:10;;;;;;;;;;;8074:16;;:2;:16;;;;7963:127;7959:1149;;;8113:20;;;;;;;;;;;8109:346;;;8172:15;;;;;;;;;;;8158:30;;:2;:30;;;;:62;;;;;8206:13;;;;;;;;;;;8192:28;;:2;:28;;;;8158:62;8154:286;;;8293:12;8251:28;:39;8280:9;8251:39;;;;;;;;;;;;;;;;:54;8243:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;8408:12;8366:28;:39;8395:9;8366:39;;;;;;;;;;;;;;;:54;;;;8154:286;8109:346;8483:13;;;;;;;;;;;8475:21;;:4;:21;;;:55;;;;;8514:15;;;;;;;;;;;8500:30;;:2;:30;;;;8475:55;:83;;;;;8536:18;:22;8555:2;8536:22;;;;;;;;;;;;;;;;;;;;;;;;;8534:24;8475:83;8471:290;;;8605:12;;8595:6;:22;;8587:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8700:14;;8690:6;8674:13;8684:2;8674:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8666:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8471:290;8787:13;;;;;;;;;;;8781:19;;:2;:19;;;:44;;;;;8820:4;8804:21;;:4;:21;;;;8781:44;:80;;;;;8845:15;;;;;;;;;;;8829:32;;:4;:32;;;;8781:80;8777:189;;;8908:12;;8898:6;:22;;8890:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8777:189;8985:19;;;;;;;;;;;8982:115;;;9053:28;9077:3;9053:19;9064:7;;9053:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;9041:40;;8982:115;7959:1149;9133:1;9123:9;:11;9120:1673;;;9164:1;9153:7;;:12;9150:1632;;9207:23;9233:16;9247:1;9233:9;:13;;:16;;;;:::i;:::-;9207:42;;9284:24;9311:30;9325:15;9311:9;:13;;:30;;;;:::i;:::-;9284:57;;9402:42;9428:15;9402:9;:21;9412:10;;;;;;;;;;;9402:21;;;;;;;;;;;;;;;;:25;;:42;;;;:::i;:::-;9378:9;:21;9388:10;;;;;;;;;;;9378:21;;;;;;;;;;;;;;;:66;;;;9511:10;;;;;;;;;;;9496:42;;9505:4;9496:42;;;9522:15;9496:42;;;;;;:::i;:::-;;;;;;;;9584:46;9613:16;9584:9;:24;9602:4;9584:24;;;;;;;;;;;;;;;;:28;;:46;;;;:::i;:::-;9559:9;:24;9577:4;9559:24;;;;;;;;;;;;;;;:71;;;;9703:4;9680:46;;9689:4;9680:46;;;9709:16;9680:46;;;;;;:::i;:::-;;;;;;;;9794:28;9825:4;:14;;;9848:4;9825:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9794:60;;9901:31;;9877:20;:55;;:66;;;;;9937:6;;;;;;;;;;;9936:7;9877:66;:81;;;;;9947:11;;;;;;;;;;;9877:81;:104;;;;;9968:13;;;;;;;;;;;9962:19;;:2;:19;;;9877:104;9873:711;;;10066:4;10057:6;;:13;;;;;;;;;;;;;;;;;;10093:27;10146:1;10123:20;:24;;;;:::i;:::-;10093:54;;10170:29;10225:19;10202:20;:42;;;;:::i;:::-;10170:74;;10269:22;10294:21;10269:46;;10338:37;10355:19;10338:16;:37::i;:::-;10398:18;10443:14;10419:21;:38;;;;:::i;:::-;10398:59;;10480:47;10493:21;10516:10;10480:12;:47::i;:::-;10559:5;10550:6;;:14;;;;;;;;;;;;;;;;;;9983:601;;;;9873:711;9167:1434;;;9150:1632;;;10670:36;10696:9;10670;:21;10680:10;;;;;;;;;;;10670:21;;;;;;;;;;;;;;;;:25;;:36;;;;:::i;:::-;10646:9;:21;10656:10;;;;;;;;;;;10646:21;;;;;;;;;;;;;;;:60;;;;10745:10;;;;;;;;;;;10730:36;;10739:4;10730:36;;;10756:9;10730:36;;;;;;:::i;:::-;;;;;;;;9150:1632;9120:1673;10821:27;10841:6;10821:9;:15;10831:4;10821:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;10805:9;:15;10815:4;10805:15;;;;;;;;;;;;;;;:43;;;;10873:40;10891:21;10902:9;10891:6;:10;;:21;;;;:::i;:::-;10873:9;:13;10883:2;10873:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;10859:9;:13;10869:2;10859:13;;;;;;;;;;;;;;;:54;;;;10944:2;10929:41;;10938:4;10929:41;;;10948:21;10959:9;10948:6;:10;;:21;;;;:::i;:::-;10929:41;;;;;;:::i;:::-;;;;;;;;7614:3364;7545:3433;;;:::o;1607:190::-;1693:7;1726:1;1721;:6;;1729:12;1713:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1753:9;1769:1;1765;:5;;;;:::i;:::-;1753:17;;1788:1;1781:8;;;1607:190;;;;;:::o;1805:246::-;1863:7;1892:1;1887;:6;1883:47;;1917:1;1910:8;;;;1883:47;1940:9;1956:1;1952;:5;;;;:::i;:::-;1940:17;;1985:1;1980;1976;:5;;;;:::i;:::-;:10;1968:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2042:1;2035:8;;;1805:246;;;;;:::o;2059:132::-;2117:7;2144:39;2148:1;2151;2144:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2137:46;;2059:132;;;;:::o;1463:136::-;1521:7;1548:43;1552:1;1555;1548:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1541:50;;1463:136;;;;:::o;1276:179::-;1334:7;1354:9;1370:1;1366;:5;;;;:::i;:::-;1354:17;;1395:1;1390;:6;;1382:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1446:1;1439:8;;;1276:179;;;;:::o;10986:555::-;5348:4;5339:6;;:13;;;;;;;;;;;;;;;;;;11080:1:::1;11067:11;:14:::0;11064:27;11083:7:::1;11064:27;11105:11;;;;;;;;;;;11101:25:::0;11118:7:::1;11101:25;11136:21;11174:1;11160:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11136:40;;11205:4;11187;11192:1;11187:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11231:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11221:4;11226:1;11221:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11264:62;11281:4;11296:15;;;;;;;;;;;11314:11;11264:8;:62::i;:::-;11337:15;;;;;;;;;;;:66;;;11418:11;11444:1;11460:4;11487;11507:15;11337:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11053:488;5363:1;5384:5:::0;5375:6;;:14;;;;;;;;;;;;;;;;;;10986:555;:::o;11549:501::-;5348:4;5339:6;;:13;;;;;;;;;;;;;;;;;;11642:62:::1;11659:4;11674:15;;;;;;;;;;;11692:11;11642:8;:62::i;:::-;11717:15;;;;;;;;;;;:31;;;11756:9;11789:4;11809:11;11835:1;11878::::0;11929::::1;12016:15;11717:325;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;5384:5:::0;5375:6;;:14;;;;;;;;;;;;;;;;;;11549:501;;:::o;2199:189::-;2285:7;2317:1;2313;:5;2320:12;2305:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2344:9;2360:1;2356;:5;;;;:::i;:::-;2344:17;;2379:1;2372:8;;;2199:189;;;;;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:117;689:1;686;679:12;720:568;793:8;803:6;853:3;846:4;838:6;834:17;830:27;820:122;;861:79;;:::i;:::-;820:122;974:6;961:20;951:30;;1004:18;996:6;993:30;990:117;;;1026:79;;:::i;:::-;990:117;1140:4;1132:6;1128:17;1116:29;;1194:3;1186:4;1178:6;1174:17;1164:8;1160:32;1157:41;1154:128;;;1201:79;;:::i;:::-;1154:128;720:568;;;;;:::o;1311:::-;1384:8;1394:6;1444:3;1437:4;1429:6;1425:17;1421:27;1411:122;;1452:79;;:::i;:::-;1411:122;1565:6;1552:20;1542:30;;1595:18;1587:6;1584:30;1581:117;;;1617:79;;:::i;:::-;1581:117;1731:4;1723:6;1719:17;1707:29;;1785:3;1777:4;1769:6;1765:17;1755:8;1751:32;1748:41;1745:128;;;1792:79;;:::i;:::-;1745:128;1311:568;;;;;:::o;1885:934::-;2007:6;2015;2023;2031;2080:2;2068:9;2059:7;2055:23;2051:32;2048:119;;;2086:79;;:::i;:::-;2048:119;2234:1;2223:9;2219:17;2206:31;2264:18;2256:6;2253:30;2250:117;;;2286:79;;:::i;:::-;2250:117;2399:80;2471:7;2462:6;2451:9;2447:22;2399:80;:::i;:::-;2381:98;;;;2177:312;2556:2;2545:9;2541:18;2528:32;2587:18;2579:6;2576:30;2573:117;;;2609:79;;:::i;:::-;2573:117;2722:80;2794:7;2785:6;2774:9;2770:22;2722:80;:::i;:::-;2704:98;;;;2499:313;1885:934;;;;;;;:::o;2825:90::-;2859:7;2902:5;2895:13;2888:21;2877:32;;2825:90;;;:::o;2921:109::-;3002:21;3017:5;3002:21;:::i;:::-;2997:3;2990:34;2921:109;;:::o;3036:210::-;3123:4;3161:2;3150:9;3146:18;3138:26;;3174:65;3236:1;3225:9;3221:17;3212:6;3174:65;:::i;:::-;3036:210;;;;:::o;3252:99::-;3304:6;3338:5;3332:12;3322:22;;3252:99;;;:::o;3357:169::-;3441:11;3475:6;3470:3;3463:19;3515:4;3510:3;3506:14;3491:29;;3357:169;;;;:::o;3532:246::-;3613:1;3623:113;3637:6;3634:1;3631:13;3623:113;;;3722:1;3717:3;3713:11;3707:18;3703:1;3698:3;3694:11;3687:39;3659:2;3656:1;3652:10;3647:15;;3623:113;;;3770:1;3761:6;3756:3;3752:16;3745:27;3594:184;3532:246;;;:::o;3784:102::-;3825:6;3876:2;3872:7;3867:2;3860:5;3856:14;3852:28;3842:38;;3784:102;;;:::o;3892:377::-;3980:3;4008:39;4041:5;4008:39;:::i;:::-;4063:71;4127:6;4122:3;4063:71;:::i;:::-;4056:78;;4143:65;4201:6;4196:3;4189:4;4182:5;4178:16;4143:65;:::i;:::-;4233:29;4255:6;4233:29;:::i;:::-;4228:3;4224:39;4217:46;;3984:285;3892:377;;;;:::o;4275:313::-;4388:4;4426:2;4415:9;4411:18;4403:26;;4475:9;4469:4;4465:20;4461:1;4450:9;4446:17;4439:47;4503:78;4576:4;4567:6;4503:78;:::i;:::-;4495:86;;4275:313;;;;:::o;4594:126::-;4631:7;4671:42;4664:5;4660:54;4649:65;;4594:126;;;:::o;4726:96::-;4763:7;4792:24;4810:5;4792:24;:::i;:::-;4781:35;;4726:96;;;:::o;4828:122::-;4901:24;4919:5;4901:24;:::i;:::-;4894:5;4891:35;4881:63;;4940:1;4937;4930:12;4881:63;4828:122;:::o;4956:139::-;5002:5;5040:6;5027:20;5018:29;;5056:33;5083:5;5056:33;:::i;:::-;4956:139;;;;:::o;5101:77::-;5138:7;5167:5;5156:16;;5101:77;;;:::o;5184:122::-;5257:24;5275:5;5257:24;:::i;:::-;5250:5;5247:35;5237:63;;5296:1;5293;5286:12;5237:63;5184:122;:::o;5312:139::-;5358:5;5396:6;5383:20;5374:29;;5412:33;5439:5;5412:33;:::i;:::-;5312:139;;;;:::o;5457:474::-;5525:6;5533;5582:2;5570:9;5561:7;5557:23;5553:32;5550:119;;;5588:79;;:::i;:::-;5550:119;5708:1;5733:53;5778:7;5769:6;5758:9;5754:22;5733:53;:::i;:::-;5723:63;;5679:117;5835:2;5861:53;5906:7;5897:6;5886:9;5882:22;5861:53;:::i;:::-;5851:63;;5806:118;5457:474;;;;;:::o;5937:89::-;5973:7;6013:6;6006:5;6002:18;5991:29;;5937:89;;;:::o;6032:120::-;6104:23;6121:5;6104:23;:::i;:::-;6097:5;6094:34;6084:62;;6142:1;6139;6132:12;6084:62;6032:120;:::o;6158:137::-;6203:5;6241:6;6228:20;6219:29;;6257:32;6283:5;6257:32;:::i;:::-;6158:137;;;;:::o;6301:327::-;6359:6;6408:2;6396:9;6387:7;6383:23;6379:32;6376:119;;;6414:79;;:::i;:::-;6376:119;6534:1;6559:52;6603:7;6594:6;6583:9;6579:22;6559:52;:::i;:::-;6549:62;;6505:116;6301:327;;;;:::o;6634:118::-;6721:24;6739:5;6721:24;:::i;:::-;6716:3;6709:37;6634:118;;:::o;6758:222::-;6851:4;6889:2;6878:9;6874:18;6866:26;;6902:71;6970:1;6959:9;6955:17;6946:6;6902:71;:::i;:::-;6758:222;;;;:::o;6986:619::-;7063:6;7071;7079;7128:2;7116:9;7107:7;7103:23;7099:32;7096:119;;;7134:79;;:::i;:::-;7096:119;7254:1;7279:53;7324:7;7315:6;7304:9;7300:22;7279:53;:::i;:::-;7269:63;;7225:117;7381:2;7407:53;7452:7;7443:6;7432:9;7428:22;7407:53;:::i;:::-;7397:63;;7352:118;7509:2;7535:53;7580:7;7571:6;7560:9;7556:22;7535:53;:::i;:::-;7525:63;;7480:118;6986:619;;;;;:::o;7611:329::-;7670:6;7719:2;7707:9;7698:7;7694:23;7690:32;7687:119;;;7725:79;;:::i;:::-;7687:119;7845:1;7870:53;7915:7;7906:6;7895:9;7891:22;7870:53;:::i;:::-;7860:63;;7816:117;7611:329;;;;:::o;7946:118::-;8033:24;8051:5;8033:24;:::i;:::-;8028:3;8021:37;7946:118;;:::o;8070:222::-;8163:4;8201:2;8190:9;8186:18;8178:26;;8214:71;8282:1;8271:9;8267:17;8258:6;8214:71;:::i;:::-;8070:222;;;;:::o;8298:86::-;8333:7;8373:4;8366:5;8362:16;8351:27;;8298:86;;;:::o;8390:112::-;8473:22;8489:5;8473:22;:::i;:::-;8468:3;8461:35;8390:112;;:::o;8508:214::-;8597:4;8635:2;8624:9;8620:18;8612:26;;8648:67;8712:1;8701:9;8697:17;8688:6;8648:67;:::i;:::-;8508:214;;;;:::o;8728:116::-;8798:21;8813:5;8798:21;:::i;:::-;8791:5;8788:32;8778:60;;8834:1;8831;8824:12;8778:60;8728:116;:::o;8850:133::-;8893:5;8931:6;8918:20;8909:29;;8947:30;8971:5;8947:30;:::i;:::-;8850:133;;;;:::o;8989:323::-;9045:6;9094:2;9082:9;9073:7;9069:23;9065:32;9062:119;;;9100:79;;:::i;:::-;9062:119;9220:1;9245:50;9287:7;9278:6;9267:9;9263:22;9245:50;:::i;:::-;9235:60;;9191:114;8989:323;;;;:::o;9318:104::-;9363:7;9392:24;9410:5;9392:24;:::i;:::-;9381:35;;9318:104;;;:::o;9428:142::-;9531:32;9557:5;9531:32;:::i;:::-;9526:3;9519:45;9428:142;;:::o;9576:254::-;9685:4;9723:2;9712:9;9708:18;9700:26;;9736:87;9820:1;9809:9;9805:17;9796:6;9736:87;:::i;:::-;9576:254;;;;:::o;9836:329::-;9895:6;9944:2;9932:9;9923:7;9919:23;9915:32;9912:119;;;9950:79;;:::i;:::-;9912:119;10070:1;10095:53;10140:7;10131:6;10120:9;10116:22;10095:53;:::i;:::-;10085:63;;10041:117;9836:329;;;;:::o;10171:474::-;10239:6;10247;10296:2;10284:9;10275:7;10271:23;10267:32;10264:119;;;10302:79;;:::i;:::-;10264:119;10422:1;10447:53;10492:7;10483:6;10472:9;10468:22;10447:53;:::i;:::-;10437:63;;10393:117;10549:2;10575:53;10620:7;10611:6;10600:9;10596:22;10575:53;:::i;:::-;10565:63;;10520:118;10171:474;;;;;:::o;10651:182::-;10791:34;10787:1;10779:6;10775:14;10768:58;10651:182;:::o;10839:366::-;10981:3;11002:67;11066:2;11061:3;11002:67;:::i;:::-;10995:74;;11078:93;11167:3;11078:93;:::i;:::-;11196:2;11191:3;11187:12;11180:19;;10839:366;;;:::o;11211:419::-;11377:4;11415:2;11404:9;11400:18;11392:26;;11464:9;11458:4;11454:20;11450:1;11439:9;11435:17;11428:47;11492:131;11618:4;11492:131;:::i;:::-;11484:139;;11211:419;;;:::o;11636:175::-;11776:27;11772:1;11764:6;11760:14;11753:51;11636:175;:::o;11817:366::-;11959:3;11980:67;12044:2;12039:3;11980:67;:::i;:::-;11973:74;;12056:93;12145:3;12056:93;:::i;:::-;12174:2;12169:3;12165:12;12158:19;;11817:366;;;:::o;12189:419::-;12355:4;12393:2;12382:9;12378:18;12370:26;;12442:9;12436:4;12432:20;12428:1;12417:9;12413:17;12406:47;12470:131;12596:4;12470:131;:::i;:::-;12462:139;;12189:419;;;:::o;12614:180::-;12662:77;12659:1;12652:88;12759:4;12756:1;12749:15;12783:4;12780:1;12773:15;12800:171;12940:23;12936:1;12928:6;12924:14;12917:47;12800:171;:::o;12977:366::-;13119:3;13140:67;13204:2;13199:3;13140:67;:::i;:::-;13133:74;;13216:93;13305:3;13216:93;:::i;:::-;13334:2;13329:3;13325:12;13318:19;;12977:366;;;:::o;13349:419::-;13515:4;13553:2;13542:9;13538:18;13530:26;;13602:9;13596:4;13592:20;13588:1;13577:9;13573:17;13566:47;13630:131;13756:4;13630:131;:::i;:::-;13622:139;;13349:419;;;:::o;13774:180::-;13822:77;13819:1;13812:88;13919:4;13916:1;13909:15;13943:4;13940:1;13933:15;13960:233;13999:3;14022:24;14040:5;14022:24;:::i;:::-;14013:33;;14068:66;14061:5;14058:77;14055:103;;14138:18;;:::i;:::-;14055:103;14185:1;14178:5;14174:13;14167:20;;13960:233;;;:::o;14199:102::-;14241:8;14288:5;14285:1;14281:13;14260:34;;14199:102;;;:::o;14307:848::-;14368:5;14375:4;14399:6;14390:15;;14423:5;14414:14;;14437:712;14458:1;14448:8;14445:15;14437:712;;;14553:4;14548:3;14544:14;14538:4;14535:24;14532:50;;;14562:18;;:::i;:::-;14532:50;14612:1;14602:8;14598:16;14595:451;;;15027:4;15020:5;15016:16;15007:25;;14595:451;15077:4;15071;15067:15;15059:23;;15107:32;15130:8;15107:32;:::i;:::-;15095:44;;14437:712;;;14307:848;;;;;;;:::o;15161:1073::-;15215:5;15406:8;15396:40;;15427:1;15418:10;;15429:5;;15396:40;15455:4;15445:36;;15472:1;15463:10;;15474:5;;15445:36;15541:4;15589:1;15584:27;;;;15625:1;15620:191;;;;15534:277;;15584:27;15602:1;15593:10;;15604:5;;;15620:191;15665:3;15655:8;15652:17;15649:43;;;15672:18;;:::i;:::-;15649:43;15721:8;15718:1;15714:16;15705:25;;15756:3;15749:5;15746:14;15743:40;;;15763:18;;:::i;:::-;15743:40;15796:5;;;15534:277;;15920:2;15910:8;15907:16;15901:3;15895:4;15892:13;15888:36;15870:2;15860:8;15857:16;15852:2;15846:4;15843:12;15839:35;15823:111;15820:246;;;15976:8;15970:4;15966:19;15957:28;;16011:3;16004:5;16001:14;15998:40;;;16018:18;;:::i;:::-;15998:40;16051:5;;15820:246;16091:42;16129:3;16119:8;16113:4;16110:1;16091:42;:::i;:::-;16076:57;;;;16165:4;16160:3;16156:14;16149:5;16146:25;16143:51;;;16174:18;;:::i;:::-;16143:51;16223:4;16216:5;16212:16;16203:25;;15161:1073;;;;;;:::o;16240:281::-;16298:5;16322:23;16340:4;16322:23;:::i;:::-;16314:31;;16366:25;16382:8;16366:25;:::i;:::-;16354:37;;16410:104;16447:66;16437:8;16431:4;16410:104;:::i;:::-;16401:113;;16240:281;;;;:::o;16527:410::-;16567:7;16590:20;16608:1;16590:20;:::i;:::-;16585:25;;16624:20;16642:1;16624:20;:::i;:::-;16619:25;;16679:1;16676;16672:9;16701:30;16719:11;16701:30;:::i;:::-;16690:41;;16880:1;16871:7;16867:15;16864:1;16861:22;16841:1;16834:9;16814:83;16791:139;;16910:18;;:::i;:::-;16791:139;16575:362;16527:410;;;;:::o;16943:229::-;17083:34;17079:1;17071:6;17067:14;17060:58;17152:12;17147:2;17139:6;17135:15;17128:37;16943:229;:::o;17178:366::-;17320:3;17341:67;17405:2;17400:3;17341:67;:::i;:::-;17334:74;;17417:93;17506:3;17417:93;:::i;:::-;17535:2;17530:3;17526:12;17519:19;;17178:366;;;:::o;17550:419::-;17716:4;17754:2;17743:9;17739:18;17731:26;;17803:9;17797:4;17793:20;17789:1;17778:9;17774:17;17767:47;17831:131;17957:4;17831:131;:::i;:::-;17823:139;;17550:419;;;:::o;17975:173::-;18115:25;18111:1;18103:6;18099:14;18092:49;17975:173;:::o;18154:366::-;18296:3;18317:67;18381:2;18376:3;18317:67;:::i;:::-;18310:74;;18393:93;18482:3;18393:93;:::i;:::-;18511:2;18506:3;18502:12;18495:19;;18154:366;;;:::o;18526:419::-;18692:4;18730:2;18719:9;18715:18;18707:26;;18779:9;18773:4;18769:20;18765:1;18754:9;18750:17;18743:47;18807:131;18933:4;18807:131;:::i;:::-;18799:139;;18526:419;;;:::o;18951:143::-;19008:5;19039:6;19033:13;19024:22;;19055:33;19082:5;19055:33;:::i;:::-;18951:143;;;;:::o;19100:351::-;19170:6;19219:2;19207:9;19198:7;19194:23;19190:32;19187:119;;;19225:79;;:::i;:::-;19187:119;19345:1;19370:64;19426:7;19417:6;19406:9;19402:22;19370:64;:::i;:::-;19360:74;;19316:128;19100:351;;;;:::o;19457:332::-;19578:4;19616:2;19605:9;19601:18;19593:26;;19629:71;19697:1;19686:9;19682:17;19673:6;19629:71;:::i;:::-;19710:72;19778:2;19767:9;19763:18;19754:6;19710:72;:::i;:::-;19457:332;;;;;:::o;19795:85::-;19840:7;19869:5;19858:16;;19795:85;;;:::o;19886:60::-;19914:3;19935:5;19928:12;;19886:60;;;:::o;19952:158::-;20010:9;20043:61;20061:42;20070:32;20096:5;20070:32;:::i;:::-;20061:42;:::i;:::-;20043:61;:::i;:::-;20030:74;;19952:158;;;:::o;20116:147::-;20211:45;20250:5;20211:45;:::i;:::-;20206:3;20199:58;20116:147;;:::o;20269:807::-;20518:4;20556:3;20545:9;20541:19;20533:27;;20570:71;20638:1;20627:9;20623:17;20614:6;20570:71;:::i;:::-;20651:72;20719:2;20708:9;20704:18;20695:6;20651:72;:::i;:::-;20733:80;20809:2;20798:9;20794:18;20785:6;20733:80;:::i;:::-;20823;20899:2;20888:9;20884:18;20875:6;20823:80;:::i;:::-;20913:73;20981:3;20970:9;20966:19;20957:6;20913:73;:::i;:::-;20996;21064:3;21053:9;21049:19;21040:6;20996:73;:::i;:::-;20269:807;;;;;;;;;:::o;21082:143::-;21139:5;21170:6;21164:13;21155:22;;21186:33;21213:5;21186:33;:::i;:::-;21082:143;;;;:::o;21231:663::-;21319:6;21327;21335;21384:2;21372:9;21363:7;21359:23;21355:32;21352:119;;;21390:79;;:::i;:::-;21352:119;21510:1;21535:64;21591:7;21582:6;21571:9;21567:22;21535:64;:::i;:::-;21525:74;;21481:128;21648:2;21674:64;21730:7;21721:6;21710:9;21706:22;21674:64;:::i;:::-;21664:74;;21619:129;21787:2;21813:64;21869:7;21860:6;21849:9;21845:22;21813:64;:::i;:::-;21803:74;;21758:129;21231:663;;;;;:::o;21900:332::-;22021:4;22059:2;22048:9;22044:18;22036:26;;22072:71;22140:1;22129:9;22125:17;22116:6;22072:71;:::i;:::-;22153:72;22221:2;22210:9;22206:18;22197:6;22153:72;:::i;:::-;21900:332;;;;;:::o;22238:137::-;22292:5;22323:6;22317:13;22308:22;;22339:30;22363:5;22339:30;:::i;:::-;22238:137;;;;:::o;22381:345::-;22448:6;22497:2;22485:9;22476:7;22472:23;22468:32;22465:119;;;22503:79;;:::i;:::-;22465:119;22623:1;22648:61;22701:7;22692:6;22681:9;22677:22;22648:61;:::i;:::-;22638:71;;22594:125;22381:345;;;;:::o;22732:223::-;22872:34;22868:1;22860:6;22856:14;22849:58;22941:6;22936:2;22928:6;22924:15;22917:31;22732:223;:::o;22961:366::-;23103:3;23124:67;23188:2;23183:3;23124:67;:::i;:::-;23117:74;;23200:93;23289:3;23200:93;:::i;:::-;23318:2;23313:3;23309:12;23302:19;;22961:366;;;:::o;23333:419::-;23499:4;23537:2;23526:9;23522:18;23514:26;;23586:9;23580:4;23576:20;23572:1;23561:9;23557:17;23550:47;23614:131;23740:4;23614:131;:::i;:::-;23606:139;;23333:419;;;:::o;23758:221::-;23898:34;23894:1;23886:6;23882:14;23875:58;23967:4;23962:2;23954:6;23950:15;23943:29;23758:221;:::o;23985:366::-;24127:3;24148:67;24212:2;24207:3;24148:67;:::i;:::-;24141:74;;24224:93;24313:3;24224:93;:::i;:::-;24342:2;24337:3;24333:12;24326:19;;23985:366;;;:::o;24357:419::-;24523:4;24561:2;24550:9;24546:18;24538:26;;24610:9;24604:4;24600:20;24596:1;24585:9;24581:17;24574:47;24638:131;24764:4;24638:131;:::i;:::-;24630:139;;24357:419;;;:::o;24782:224::-;24922:34;24918:1;24910:6;24906:14;24899:58;24991:7;24986:2;24978:6;24974:15;24967:32;24782:224;:::o;25012:366::-;25154:3;25175:67;25239:2;25234:3;25175:67;:::i;:::-;25168:74;;25251:93;25340:3;25251:93;:::i;:::-;25369:2;25364:3;25360:12;25353:19;;25012:366;;;:::o;25384:419::-;25550:4;25588:2;25577:9;25573:18;25565:26;;25637:9;25631:4;25627:20;25623:1;25612:9;25608:17;25601:47;25665:131;25791:4;25665:131;:::i;:::-;25657:139;;25384:419;;;:::o;25809:222::-;25949:34;25945:1;25937:6;25933:14;25926:58;26018:5;26013:2;26005:6;26001:15;25994:30;25809:222;:::o;26037:366::-;26179:3;26200:67;26264:2;26259:3;26200:67;:::i;:::-;26193:74;;26276:93;26365:3;26276:93;:::i;:::-;26394:2;26389:3;26385:12;26378:19;;26037:366;;;:::o;26409:419::-;26575:4;26613:2;26602:9;26598:18;26590:26;;26662:9;26656:4;26652:20;26648:1;26637:9;26633:17;26626:47;26690:131;26816:4;26690:131;:::i;:::-;26682:139;;26409:419;;;:::o;26834:228::-;26974:34;26970:1;26962:6;26958:14;26951:58;27043:11;27038:2;27030:6;27026:15;27019:36;26834:228;:::o;27068:366::-;27210:3;27231:67;27295:2;27290:3;27231:67;:::i;:::-;27224:74;;27307:93;27396:3;27307:93;:::i;:::-;27425:2;27420:3;27416:12;27409:19;;27068:366;;;:::o;27440:419::-;27606:4;27644:2;27633:9;27629:18;27621:26;;27693:9;27687:4;27683:20;27679:1;27668:9;27664:17;27657:47;27721:131;27847:4;27721:131;:::i;:::-;27713:139;;27440:419;;;:::o;27865:223::-;28005:34;28001:1;27993:6;27989:14;27982:58;28074:6;28069:2;28061:6;28057:15;28050:31;27865:223;:::o;28094:366::-;28236:3;28257:67;28321:2;28316:3;28257:67;:::i;:::-;28250:74;;28333:93;28422:3;28333:93;:::i;:::-;28451:2;28446:3;28442:12;28435:19;;28094:366;;;:::o;28466:419::-;28632:4;28670:2;28659:9;28655:18;28647:26;;28719:9;28713:4;28709:20;28705:1;28694:9;28690:17;28683:47;28747:131;28873:4;28747:131;:::i;:::-;28739:139;;28466:419;;;:::o;28891:175::-;29031:27;29027:1;29019:6;29015:14;29008:51;28891:175;:::o;29072:366::-;29214:3;29235:67;29299:2;29294:3;29235:67;:::i;:::-;29228:74;;29311:93;29400:3;29311:93;:::i;:::-;29429:2;29424:3;29420:12;29413:19;;29072:366;;;:::o;29444:419::-;29610:4;29648:2;29637:9;29633:18;29625:26;;29697:9;29691:4;29687:20;29683:1;29672:9;29668:17;29661:47;29725:131;29851:4;29725:131;:::i;:::-;29717:139;;29444:419;;;:::o;29869:191::-;29909:3;29928:20;29946:1;29928:20;:::i;:::-;29923:25;;29962:20;29980:1;29962:20;:::i;:::-;29957:25;;30005:1;30002;29998:9;29991:16;;30026:3;30023:1;30020:10;30017:36;;;30033:18;;:::i;:::-;30017:36;29869:191;;;;:::o;30066:176::-;30206:28;30202:1;30194:6;30190:14;30183:52;30066:176;:::o;30248:366::-;30390:3;30411:67;30475:2;30470:3;30411:67;:::i;:::-;30404:74;;30487:93;30576:3;30487:93;:::i;:::-;30605:2;30600:3;30596:12;30589:19;;30248:366;;;:::o;30620:419::-;30786:4;30824:2;30813:9;30809:18;30801:26;;30873:9;30867:4;30863:20;30859:1;30848:9;30844:17;30837:47;30901:131;31027:4;30901:131;:::i;:::-;30893:139;;30620:419;;;:::o;31045:351::-;31115:6;31164:2;31152:9;31143:7;31139:23;31135:32;31132:119;;;31170:79;;:::i;:::-;31132:119;31290:1;31315:64;31371:7;31362:6;31351:9;31347:22;31315:64;:::i;:::-;31305:74;;31261:128;31045:351;;;;:::o;31402:180::-;31450:77;31447:1;31440:88;31547:4;31544:1;31537:15;31571:4;31568:1;31561:15;31588:185;31628:1;31645:20;31663:1;31645:20;:::i;:::-;31640:25;;31679:20;31697:1;31679:20;:::i;:::-;31674:25;;31718:1;31708:35;;31723:18;;:::i;:::-;31708:35;31765:1;31762;31758:9;31753:14;;31588:185;;;;:::o;31779:194::-;31819:4;31839:20;31857:1;31839:20;:::i;:::-;31834:25;;31873:20;31891:1;31873:20;:::i;:::-;31868:25;;31917:1;31914;31910:9;31902:17;;31941:1;31935:4;31932:11;31929:37;;;31946:18;;:::i;:::-;31929:37;31779:194;;;;:::o;31979:220::-;32119:34;32115:1;32107:6;32103:14;32096:58;32188:3;32183:2;32175:6;32171:15;32164:28;31979:220;:::o;32205:366::-;32347:3;32368:67;32432:2;32427:3;32368:67;:::i;:::-;32361:74;;32444:93;32533:3;32444:93;:::i;:::-;32562:2;32557:3;32553:12;32546:19;;32205:366;;;:::o;32577:419::-;32743:4;32781:2;32770:9;32766:18;32758:26;;32830:9;32824:4;32820:20;32816:1;32805:9;32801:17;32794:47;32858:131;32984:4;32858:131;:::i;:::-;32850:139;;32577:419;;;:::o;33002:177::-;33142:29;33138:1;33130:6;33126:14;33119:53;33002:177;:::o;33185:366::-;33327:3;33348:67;33412:2;33407:3;33348:67;:::i;:::-;33341:74;;33424:93;33513:3;33424:93;:::i;:::-;33542:2;33537:3;33533:12;33526:19;;33185:366;;;:::o;33557:419::-;33723:4;33761:2;33750:9;33746:18;33738:26;;33810:9;33804:4;33800:20;33796:1;33785:9;33781:17;33774:47;33838:131;33964:4;33838:131;:::i;:::-;33830:139;;33557:419;;;:::o;33982:180::-;34030:77;34027:1;34020:88;34127:4;34124:1;34117:15;34151:4;34148:1;34141:15;34168:114;34235:6;34269:5;34263:12;34253:22;;34168:114;;;:::o;34288:184::-;34387:11;34421:6;34416:3;34409:19;34461:4;34456:3;34452:14;34437:29;;34288:184;;;;:::o;34478:132::-;34545:4;34568:3;34560:11;;34598:4;34593:3;34589:14;34581:22;;34478:132;;;:::o;34616:108::-;34693:24;34711:5;34693:24;:::i;:::-;34688:3;34681:37;34616:108;;:::o;34730:179::-;34799:10;34820:46;34862:3;34854:6;34820:46;:::i;:::-;34898:4;34893:3;34889:14;34875:28;;34730:179;;;;:::o;34915:113::-;34985:4;35017;35012:3;35008:14;35000:22;;34915:113;;;:::o;35064:732::-;35183:3;35212:54;35260:5;35212:54;:::i;:::-;35282:86;35361:6;35356:3;35282:86;:::i;:::-;35275:93;;35392:56;35442:5;35392:56;:::i;:::-;35471:7;35502:1;35487:284;35512:6;35509:1;35506:13;35487:284;;;35588:6;35582:13;35615:63;35674:3;35659:13;35615:63;:::i;:::-;35608:70;;35701:60;35754:6;35701:60;:::i;:::-;35691:70;;35547:224;35534:1;35531;35527:9;35522:14;;35487:284;;;35491:14;35787:3;35780:10;;35188:608;;;35064:732;;;;:::o;35802:831::-;36065:4;36103:3;36092:9;36088:19;36080:27;;36117:71;36185:1;36174:9;36170:17;36161:6;36117:71;:::i;:::-;36198:80;36274:2;36263:9;36259:18;36250:6;36198:80;:::i;:::-;36325:9;36319:4;36315:20;36310:2;36299:9;36295:18;36288:48;36353:108;36456:4;36447:6;36353:108;:::i;:::-;36345:116;;36471:72;36539:2;36528:9;36524:18;36515:6;36471:72;:::i;:::-;36553:73;36621:3;36610:9;36606:19;36597:6;36553:73;:::i;:::-;35802:831;;;;;;;;:::o

Swarm Source

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