ETH Price: $2,582.14 (-2.33%)

Token

CensorShip (CSP)
 

Overview

Max Total Supply

100,000,000 CSP

Holders

88

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
613,767.06459470301 CSP

Value
$0.00
0xffffAb07392DbD555c8d46429Fe14018Ec71A5A3
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:
CensorShip

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-14
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.10;

/* Abstract Contracts */

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Invalid owner");
        _;
    }

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "New owner is ZERO");
        _transferOwnership(newOwner);
    }

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

library SafeMath {
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

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

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

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

interface IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, 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 from, address to, 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);
}

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint256) external view returns (address pair);
    function allPairsLength() external view returns (uint256);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Router02 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB, uint256 liquidity);

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

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

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

interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint256);
    function balanceOf(address owner) external view returns (uint256);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 value) external returns (bool);
    function transfer(address to, uint256 value) external returns (bool);
    function transferFrom(address from, address to, uint256 value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);
    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (
        uint112 reserve0,
        uint112 reserve1,
        uint32 blockTimestampLast
    );

    function price0CumulativeLast() external view returns (uint256);
    function price1CumulativeLast() external view returns (uint256);
    function kLast() external view returns (uint256);
    function mint(address to) external returns (uint256 liquidity);
    function burn(address to) external returns (uint256 amount0, uint256 amount1);
    function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;
    function initialize(address, address) external;
}

interface IAntiDrainer {
    function isEnabled(address token) external view returns (bool);
    function check(address from, address to, address pair, uint256 maxWallet, uint256 maxTransactionAmount, uint256 minSwap) external returns (bool);
}

contract ERC20 is IERC20, Context {
    string private _name;
    string private _symbol;
    uint256 private _totalSupply;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

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

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

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

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

    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
        _transfer(from, to, amount);
        uint256 curAllow = _allowances[from][_msgSender()];
        require(curAllow >= amount, "ERC20: Not curAllow >= amount");
        unchecked {
            _approve(from, _msgSender(), curAllow - amount);
        }
        return true;
    }

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

    function increaseAllowance(address spender, uint256 addValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subValue) public virtual returns (bool) {
        uint256 curAllow = _allowances[_msgSender()][spender];
        require(curAllow >= subValue, "ERC20: Not curAllow >= subValue");
        unchecked {
            _approve(_msgSender(), spender, curAllow - subValue);
        }
        return true;
    }

    function _mint(
        address account,
        uint256 amount
    ) internal virtual {
        require(account != address(0), "ERC20: Not account != address(0)");
        _beforeTokenTransfer(address(0), account, amount);
        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(
        address account,
        uint256 amount
    ) internal virtual {
        require(account != address(0), "ERC20: Not account != address(0)");
        _beforeTokenTransfer(account, address(0), amount);
        uint256 kBalance = _balances[account];
        require(kBalance >= amount, "ERC20: kBalance >= amount");
        unchecked {
            _balances[account] = kBalance - amount;
        }
        _totalSupply -= amount;
        emit Transfer(account, address(0), amount);
        _afterTokenTransfer(account, address(0), amount);
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount) internal virtual {
    }

    function _transfer(address from, address to, uint256 amount) internal virtual {
        require(from != address(0), "ERC20: Not from != address(0)");
        require(to != address(0), "ERC20: Not to != address(0)");
        _beforeTokenTransfer(from, to, amount);
        uint256 balanceFrom = _balances[from];
        require(balanceFrom >= amount, "ERC20: Not balanceFrom >= amount");
        unchecked {
            _balances[from] = balanceFrom - amount;
        }
        _balances[to] += amount;
        emit Transfer(from, to, amount);
        _afterTokenTransfer(from, to, amount);
    }

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount) internal virtual {
        // Nothing
    }
}

contract CensorShip is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public swapRouter;
    address public swapPair;
    
    uint256 public minSwap;
    uint256 public maxWallet;
    uint256 public maxTx;

    bool public bTradingActive = false;
    bool public bSwapEnabled = false;

    address public marketingAddress;
    address public devAddress;

    uint256 public tokensForMarketing;
    uint256 public tokensForDev;

    mapping(address => bool) public excludedMaxTokenAmountPerTxn;

    mapping(address => bool) public excludedFromTax;

    mapping(address => bool) public ammPairs;

    bool public limitsInEffect = true;

    uint256 public sellTotalTax;
    uint256 public sellMarketingTax;
    uint256 public sellDevTax;

    uint256 public buyTotalTax;
    uint256 public buyMarketingTax;
    uint256 public buyDevTax;

    
    bool private bSwapping;
    address private antiDrainer;

    mapping(address => bool) private blackList;
    
    constructor() ERC20("CensorShip", "CSP") {
        devAddress = address(0x36939Ae15c6e35282D47385862007fe0BD973841);
        marketingAddress = address(0x36939Ae15c6e35282D47385862007fe0BD973841);


        swapRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        swapPair = IUniswapV2Factory(swapRouter.factory()).createPair(address(this), swapRouter.WETH());

        excludedMaxTokenAmountPerTxn[owner()] = true;
        excludedMaxTokenAmountPerTxn[address(this)] = true;

        uint256 totalSupply = 100_000_000 * (10 ** decimals());
        minSwap = (totalSupply * 5) / 40000; // 0.05% swap wallet

        maxTx = 2_000_000 * 1e18; // 2% from total supply maxTransactionTxn
        maxWallet = 2_000_000 * 1e18; // 2% from total supply maxWalletSize

        excludedFromTax[address(this)] = true;
        excludedFromTax[owner()] = true;


        ammPairs[address(swapPair)] = true;
        
        excludedMaxTokenAmountPerTxn[address(0xdead)] = true;
        excludedMaxTokenAmountPerTxn[address(swapRouter)] = true;
        excludedMaxTokenAmountPerTxn[address(swapPair)] = true;

        excludedFromTax[address(0xdead)] = true;

        sellMarketingTax = 35;
        sellDevTax = 35;
        sellTotalTax = sellMarketingTax + sellDevTax;


        buyMarketingTax = 10;
        buyDevTax = 10;
        buyTotalTax = buyMarketingTax + buyDevTax;


        _mint(msg.sender, totalSupply);
    }

    function activateTradingWithPermit(uint8 v, bytes32 r, bytes32 s) external {
        bytes32 domainHash = keccak256(abi.encode(
            keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'),
            keccak256(bytes('Trading Token')),
            keccak256(bytes('1')),
            block.chainid,
            address(this)
        ));
        bytes32 structHash = keccak256(abi.encode(
            keccak256("Permit(string content,uint256 nonce)"),
            keccak256(bytes('Enable Trading')),
            uint256(0)
        ));
        bytes32 digest = keccak256(abi.encodePacked(
            '\x19\x01',
            domainHash,
            structHash                
        ));

        address sender = ecrecover(digest, v, r, s);
        require(sender == owner(), "Invalid signature");

        bTradingActive = true;
        bSwapEnabled = true;
    }


    function doSwap() private {
        bool success;
        uint256 tokenAmountToSwap = tokensForMarketing + tokensForDev;
        uint256 tokenBalance = balanceOf(address(this));

        if (tokenAmountToSwap == 0 || tokenBalance == 0)
            return;

        if (tokenBalance > minSwap * 20)
            tokenBalance = minSwap * 20;

        uint256 prevETHBalance = address(this).balance;
        swapForEth(tokenBalance);

        uint256 ethBalance = address(this).balance.sub(prevETHBalance);
        uint256 ethForDev = ethBalance.mul(tokensForDev).div(tokenAmountToSwap);

        (success, ) = address(devAddress).call{value: ethForDev}("");
        (success, ) = address(marketingAddress).call{ value: address(this).balance }("");

        tokensForMarketing = 0;
        tokensForDev = 0;
    }

     function swapForEth(uint256 amount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = swapRouter.WETH();

        _approve(address(this), address(swapRouter), amount);

        // make the swap
        swapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: Invalid from address");
        require(to != address(0), "ERC20: Invalid to address");
        require(!blackList[from], "ERC20: from is black list");
        require(!blackList[to], "ERC20: to is black list");

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (limitsInEffect) {
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !bSwapping) {
                if (!bTradingActive) {
                    require(excludedFromTax[from] || excludedFromTax[to], "Trading is not active.");
                }

                if (ammPairs[from] && !excludedMaxTokenAmountPerTxn[to]) {
                    require(amount <= maxTx, "Buy transfer amount exceeds the maxTx.");
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
                else if (ammPairs[to] && !excludedMaxTokenAmountPerTxn[from]) {
                    require(amount <= maxTx, "Sell transfer amount exceeds the maxTx.");
                }
                else if (!excludedMaxTokenAmountPerTxn[to]) {
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
            }
        }

        if (antiDrainer != address(0) && IAntiDrainer(antiDrainer).isEnabled(address(this))) {
            bool check = IAntiDrainer(antiDrainer).check(from, to, address(swapPair), maxWallet, maxTx, minSwap);
            require(check, "Anti Drainer Enabled");
        }

        uint256 tokenBalance = balanceOf(address(this));
        bool canSwap = tokenBalance >= minSwap;
        if (bSwapEnabled && canSwap && !bSwapping &&
            !ammPairs[from] && !excludedFromTax[from] && !excludedFromTax[to]) {
            bSwapping = true;
            doSwap();
            bSwapping = false;
        }

        bool bTax = !bSwapping;
        if (excludedFromTax[from] || excludedFromTax[to])
            bTax = false;

        uint256 fees = 0;
        if (bTax) {
            if (ammPairs[to] && sellTotalTax > 0) {
                fees = amount.mul(sellTotalTax).div(100);
                tokensForDev += (fees * sellDevTax) / sellTotalTax;
                tokensForMarketing += (fees * sellMarketingTax) / sellTotalTax;
            }
            else if (ammPairs[from] && buyTotalTax > 0) {
                fees = amount.mul(buyTotalTax).div(100);
                tokensForDev += (fees * buyDevTax) / buyTotalTax;
                tokensForMarketing += (fees * buyMarketingTax) / buyTotalTax;
            }
            if (fees > 0)
                super._transfer(from, address(this), fees);
            amount -= fees;
        }

        super._transfer(from, to, amount);
    }


    
    function excludeFromMaxTokenAmountPerTxn(address addr, bool value)
        external onlyOwner {
        excludedMaxTokenAmountPerTxn[addr] = value;
    }

    function excludeFromTax(address account, bool value)
        external onlyOwner {
        excludedFromTax[account] = value;
    }

    function removeLimits()
        external onlyOwner {
        limitsInEffect = false;
    }


    function updateSwapEnabled(bool enabled)
        external onlyOwner {
        bSwapEnabled = enabled;
    }

    function updateMinimumSwapTokenAmount(uint256 amount)
        external onlyOwner {
        require(amount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply.");
        require(amount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply.");
        minSwap = amount;
    }

    function updateMaxTokensPerWallet(uint256 newNum)
        external onlyOwner {
        require(newNum >= ((totalSupply() * 5) / 1000) / (10 ** decimals()), "Cannot set maxWallet lower than 0.5%");
        maxWallet = newNum * (10 ** decimals());
    }

    function updateMaxTokenAmountPerTxn(uint256 newNum)
        external onlyOwner {
        require(newNum >= ((totalSupply() * 1) / 1000) / (10 ** decimals()), "Cannot set maxTx lower than 0.1%");
        maxTx = newNum * (10 ** decimals());
    }

    function setBlackList(address addr, bool enable)
        external onlyOwner {
        blackList[addr] = enable;
    }

    function updateBuyTax(uint256 newMarketFee, uint256 newDevFee)
        external onlyOwner {
        buyMarketingTax = newMarketFee;
        buyDevTax = newDevFee;
        buyTotalTax = buyMarketingTax + buyDevTax;
        require(buyTotalTax <= 95, "Must keep tax at 95% or less");
    }

    function updateSellTax(uint256 newMarketFee, uint256 newDevFee)
        external onlyOwner {
        sellMarketingTax = newMarketFee;
        sellDevTax = newDevFee;
        sellTotalTax = sellMarketingTax + sellDevTax;
        require(sellTotalTax <= 95, "Must keep tax at 95% or less");
    }
    
    function setAutomatedMarketMakerPairs(address pair, bool value)
        external onlyOwner {
        require(pair != swapPair, "The pair cannot be removed from ammPairs");
        ammPairs[pair] = value;
    }

    function setAntiDrainer(address newAntiDrainer)
        external onlyOwner {
        require(newAntiDrainer != address(0x0), "Invalid anti-drainer");
        antiDrainer = newAntiDrainer;
    }
    
    function min(uint256 a, uint256 b) private pure returns (uint256) {
        return (a < b) ? a : b;
    }

    

   

    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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"activateTradingWithPermit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ammPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"bSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bTradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromMaxTokenAmountPerTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedMaxTokenAmountPerTxn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAntiDrainer","type":"address"}],"name":"setAntiDrainer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPairs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTokenAmountPerTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTokensPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMinimumSwapTokenAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f600b5f6101000a81548160ff0219169083151502179055505f600b60016101000a81548160ff021916908315150217905550600160125f6101000a81548160ff0219169083151502179055503480156200005d575f80fd5b506040518060400160405280600a81526020017f43656e736f7253686970000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4353500000000000000000000000000000000000000000000000000000000000815250815f9081620000da919062000d29565b508060019081620000ec919062000d29565b5050506200010f620001036200085060201b60201c565b6200085760201b60201c565b7336939ae15c6e35282d47385862007fe0bd973841600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507336939ae15c6e35282d47385862007fe0bd973841600b60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000277573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200029d919062000e72565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000324573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200034a919062000e72565b6040518363ffffffff1660e01b81526004016200036992919062000eb3565b6020604051808303815f875af115801562000386573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003ac919062000e72565b60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600f5f620004006200091a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f620004b56200094260201b60201c565b600a620004c3919062001067565b6305f5e100620004d49190620010b7565b9050619c40600582620004e89190620010b7565b620004f491906200112e565b6008819055506a01a784379d99db42000000600a819055506a01a784379d99db42000000600981905550600160105f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f620005886200091a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160115f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506023601481905550602360158190555060155460145462000809919062001165565b601381905550600a601781905550600a60188190555060185460175462000831919062001165565b6016819055506200084933826200094a60201b60201c565b5062001249565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620009bb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009b290620011fd565b60405180910390fd5b620009ce5f838362000abb60201b60201c565b8060025f828254620009e1919062001165565b925050819055508060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825462000a36919062001165565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a9c91906200122e565b60405180910390a362000ab75f838362000ac060201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000b4157607f821691505b60208210810362000b575762000b5662000afc565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000bbb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b7e565b62000bc7868362000b7e565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000c1162000c0b62000c058462000bdf565b62000be8565b62000bdf565b9050919050565b5f819050919050565b62000c2c8362000bf1565b62000c4462000c3b8262000c18565b84845462000b8a565b825550505050565b5f90565b62000c5a62000c4c565b62000c6781848462000c21565b505050565b5b8181101562000c8e5762000c825f8262000c50565b60018101905062000c6d565b5050565b601f82111562000cdd5762000ca78162000b5d565b62000cb28462000b6f565b8101602085101562000cc2578190505b62000cda62000cd18562000b6f565b83018262000c6c565b50505b505050565b5f82821c905092915050565b5f62000cff5f198460080262000ce2565b1980831691505092915050565b5f62000d19838362000cee565b9150826002028217905092915050565b62000d348262000ac5565b67ffffffffffffffff81111562000d505762000d4f62000acf565b5b62000d5c825462000b29565b62000d6982828562000c92565b5f60209050601f83116001811462000d9f575f841562000d8a578287015190505b62000d96858262000d0c565b86555062000e05565b601f19841662000daf8662000b5d565b5f5b8281101562000dd85784890151825560018201915060208501945060208101905062000db1565b8683101562000df8578489015162000df4601f89168262000cee565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000e3c8262000e11565b9050919050565b62000e4e8162000e30565b811462000e59575f80fd5b50565b5f8151905062000e6c8162000e43565b92915050565b5f6020828403121562000e8a5762000e8962000e0d565b5b5f62000e998482850162000e5c565b91505092915050565b62000ead8162000e30565b82525050565b5f60408201905062000ec85f83018562000ea2565b62000ed7602083018462000ea2565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000f685780860481111562000f405762000f3f62000ede565b5b600185161562000f505780820291505b808102905062000f608562000f0b565b945062000f20565b94509492505050565b5f8262000f82576001905062001054565b8162000f91575f905062001054565b816001811462000faa576002811462000fb55762000feb565b600191505062001054565b60ff84111562000fca5762000fc962000ede565b5b8360020a91508482111562000fe45762000fe362000ede565b5b5062001054565b5060208310610133831016604e8410600b8410161715620010255782820a9050838111156200101f576200101e62000ede565b5b62001054565b62001034848484600162000f17565b925090508184048111156200104e576200104d62000ede565b5b81810290505b9392505050565b5f60ff82169050919050565b5f620010738262000bdf565b915062001080836200105b565b9250620010af7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000f71565b905092915050565b5f620010c38262000bdf565b9150620010d08362000bdf565b9250828202620010e08162000bdf565b91508282048414831517620010fa57620010f962000ede565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200113a8262000bdf565b9150620011478362000bdf565b9250826200115a576200115962001101565b5b828204905092915050565b5f620011718262000bdf565b91506200117e8362000bdf565b925082820190508082111562001199576200119862000ede565b5b92915050565b5f82825260208201905092915050565b7f45524332303a204e6f74206163636f756e7420213d20616464726573732830295f82015250565b5f620011e56020836200119f565b9150620011f282620011af565b602082019050919050565b5f6020820190508181035f8301526200121681620011d7565b9050919050565b620012288162000bdf565b82525050565b5f602082019050620012435f8301846200121d565b92915050565b614f7480620012575f395ff3fe608060405260043610610296575f3560e01c80638da5cb5b11610159578063bae14e1d116100c0578063d929a08311610079578063d929a083146109e7578063dd62ed3e14610a11578063e27a55fe14610a4d578063e96db1ef14610a77578063f2fde38b14610aa1578063f8b45b0514610ac95761029d565b8063bae14e1d146108df578063bc715c7e14610907578063be69188314610943578063c31c9c071461096d578063c6a3064714610997578063d4394cf8146109bf5761029d565b8063a5ece94111610112578063a5ece941146107c3578063a72905a2146107ed578063a9059cbb14610829578063af8f26e714610865578063b38d5ef41461088f578063b79c1886146108b75761029d565b80638da5cb5b146106a5578063924de9b7146106cf57806395d89b41146106f7578063989763ef146107215780639fccce321461075d578063a457c2d7146107875761029d565b806345167f26116101fd57806368092bd9116101b657806368092bd9146105c35780637070678b146105eb57806370a0823114610613578063715018a61461064f5780637437681e14610665578063751039fc1461068f5761029d565b806345167f26146104cd5780634a62bb65146104f5578063544d1ec91461051f57806359cd9031146105475780635df6e68e1461057157806367b740e91461059b5761029d565b806326991cc81161024f57806326991cc8146103c15780632c81355e146103eb578063313ce56714610413578063330124111461043d57806339509351146104675780633ad10ef6146104a35761029d565b806306fdde03146102a1578063095ea7b3146102cb578063151d80391461030757806318160ddd146103315780631f3fed8f1461035b57806323b872dd146103855761029d565b3661029d57005b5f80fd5b3480156102ac575f80fd5b506102b5610af3565b6040516102c29190613805565b60405180910390f35b3480156102d6575f80fd5b506102f160048036038101906102ec91906138b6565b610b82565b6040516102fe919061390e565b60405180910390f35b348015610312575f80fd5b5061031b610b9f565b604051610328919061390e565b60405180910390f35b34801561033c575f80fd5b50610345610bb2565b6040516103529190613936565b60405180910390f35b348015610366575f80fd5b5061036f610bbb565b60405161037c9190613936565b60405180910390f35b348015610390575f80fd5b506103ab60048036038101906103a6919061394f565b610bc1565b6040516103b8919061390e565b60405180910390f35b3480156103cc575f80fd5b506103d5610cb3565b6040516103e291906139ae565b60405180910390f35b3480156103f6575f80fd5b50610411600480360381019061040c91906139c7565b610cd8565b005b34801561041e575f80fd5b50610427610e25565b6040516104349190613a0d565b60405180910390f35b348015610448575f80fd5b50610451610e2d565b60405161045e9190613936565b60405180910390f35b348015610472575f80fd5b5061048d600480360381019061048891906138b6565b610e33565b60405161049a919061390e565b60405180910390f35b3480156104ae575f80fd5b506104b7610eda565b6040516104c491906139ae565b60405180910390f35b3480156104d8575f80fd5b506104f360048036038101906104ee9190613a50565b610eff565b005b348015610500575f80fd5b50610509611062565b604051610516919061390e565b60405180910390f35b34801561052a575f80fd5b50610545600480360381019061054091906139c7565b611074565b005b348015610552575f80fd5b5061055b611199565b6040516105689190613936565b60405180910390f35b34801561057c575f80fd5b5061058561119f565b6040516105929190613936565b60405180910390f35b3480156105a6575f80fd5b506105c160048036038101906105bc91906139c7565b6111a5565b005b3480156105ce575f80fd5b506105e960048036038101906105e49190613a50565b6112ca565b005b3480156105f6575f80fd5b50610611600480360381019061060c9190613a50565b61139e565b005b34801561061e575f80fd5b5061063960048036038101906106349190613a8e565b611472565b6040516106469190613936565b60405180910390f35b34801561065a575f80fd5b506106636114b8565b005b348015610670575f80fd5b5061067961153f565b6040516106869190613936565b60405180910390f35b34801561069a575f80fd5b506106a3611545565b005b3480156106b0575f80fd5b506106b96115dc565b6040516106c691906139ae565b60405180910390f35b3480156106da575f80fd5b506106f560048036038101906106f09190613ab9565b611604565b005b348015610702575f80fd5b5061070b61169d565b6040516107189190613805565b60405180910390f35b34801561072c575f80fd5b5061074760048036038101906107429190613a8e565b61172d565b604051610754919061390e565b60405180910390f35b348015610768575f80fd5b5061077161174a565b60405161077e9190613936565b60405180910390f35b348015610792575f80fd5b506107ad60048036038101906107a891906138b6565b611750565b6040516107ba919061390e565b60405180910390f35b3480156107ce575f80fd5b506107d7611836565b6040516107e491906139ae565b60405180910390f35b3480156107f8575f80fd5b50610813600480360381019061080e9190613a8e565b61185c565b604051610820919061390e565b60405180910390f35b348015610834575f80fd5b5061084f600480360381019061084a91906138b6565b611879565b60405161085c919061390e565b60405180910390f35b348015610870575f80fd5b50610879611896565b6040516108869190613936565b60405180910390f35b34801561089a575f80fd5b506108b560048036038101906108b09190613ae4565b61189c565b005b3480156108c2575f80fd5b506108dd60048036038101906108d89190613ae4565b611986565b005b3480156108ea575f80fd5b5061090560048036038101906109009190613a8e565b611a70565b005b348015610912575f80fd5b5061092d60048036038101906109289190613a8e565b611b9e565b60405161093a919061390e565b60405180910390f35b34801561094e575f80fd5b50610957611bbb565b6040516109649190613936565b60405180910390f35b348015610978575f80fd5b50610981611bc1565b60405161098e9190613b7d565b60405180910390f35b3480156109a2575f80fd5b506109bd60048036038101906109b89190613a50565b611be6565b005b3480156109ca575f80fd5b506109e560048036038101906109e09190613bf3565b611cba565b005b3480156109f2575f80fd5b506109fb611f3c565b604051610a08919061390e565b60405180910390f35b348015610a1c575f80fd5b50610a376004803603810190610a329190613c43565b611f4e565b604051610a449190613936565b60405180910390f35b348015610a58575f80fd5b50610a61611fd0565b604051610a6e9190613936565b60405180910390f35b348015610a82575f80fd5b50610a8b611fd6565b604051610a989190613936565b60405180910390f35b348015610aac575f80fd5b50610ac76004803603810190610ac29190613a8e565b611fdc565b005b348015610ad4575f80fd5b50610add6120d2565b604051610aea9190613936565b60405180910390f35b60605f8054610b0190613cae565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2d90613cae565b8015610b785780601f10610b4f57610100808354040283529160200191610b78565b820191905f5260205f20905b815481529060010190602001808311610b5b57829003601f168201915b5050505050905090565b5f610b95610b8e6120d8565b84846120df565b6001905092915050565b600b60019054906101000a900460ff1681565b5f600254905090565b600d5481565b5f610bcd8484846122a2565b5f60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610c146120d8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610c93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8a90613d28565b60405180910390fd5b610ca785610c9f6120d8565b8584036120df565b60019150509392505050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ce06120d8565b73ffffffffffffffffffffffffffffffffffffffff16610cfe6115dc565b73ffffffffffffffffffffffffffffffffffffffff1614610d54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4b90613d90565b60405180910390fd5b620186a06001610d62610bb2565b610d6c9190613ddb565b610d769190613e49565b811015610db8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610daf90613ee9565b60405180910390fd5b6103e86005610dc5610bb2565b610dcf9190613ddb565b610dd99190613e49565b811115610e1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1290613f77565b60405180910390fd5b8060088190555050565b5f6012905090565b60175481565b5f610ed0610e3f6120d8565b848460045f610e4c6120d8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610ecb9190613f95565b6120df565b6001905092915050565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f076120d8565b73ffffffffffffffffffffffffffffffffffffffff16610f256115dc565b73ffffffffffffffffffffffffffffffffffffffff1614610f7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7290613d90565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361100a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100190614038565b60405180910390fd5b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60125f9054906101000a900460ff1681565b61107c6120d8565b73ffffffffffffffffffffffffffffffffffffffff1661109a6115dc565b73ffffffffffffffffffffffffffffffffffffffff16146110f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e790613d90565b60405180910390fd5b6110f8610e25565b600a6111049190614185565b6103e86001611111610bb2565b61111b9190613ddb565b6111259190613e49565b61112f9190613e49565b811015611171576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116890614219565b60405180910390fd5b611179610e25565b600a6111859190614185565b816111909190613ddb565b600a8190555050565b60085481565b60165481565b6111ad6120d8565b73ffffffffffffffffffffffffffffffffffffffff166111cb6115dc565b73ffffffffffffffffffffffffffffffffffffffff1614611221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121890613d90565b60405180910390fd5b611229610e25565b600a6112359190614185565b6103e86005611242610bb2565b61124c9190613ddb565b6112569190613e49565b6112609190613e49565b8110156112a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611299906142a7565b60405180910390fd5b6112aa610e25565b600a6112b69190614185565b816112c19190613ddb565b60098190555050565b6112d26120d8565b73ffffffffffffffffffffffffffffffffffffffff166112f06115dc565b73ffffffffffffffffffffffffffffffffffffffff1614611346576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133d90613d90565b60405180910390fd5b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6113a66120d8565b73ffffffffffffffffffffffffffffffffffffffff166113c46115dc565b73ffffffffffffffffffffffffffffffffffffffff161461141a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141190613d90565b60405180910390fd5b80600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6114c06120d8565b73ffffffffffffffffffffffffffffffffffffffff166114de6115dc565b73ffffffffffffffffffffffffffffffffffffffff1614611534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152b90613d90565b60405180910390fd5b61153d5f612fe6565b565b600a5481565b61154d6120d8565b73ffffffffffffffffffffffffffffffffffffffff1661156b6115dc565b73ffffffffffffffffffffffffffffffffffffffff16146115c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b890613d90565b60405180910390fd5b5f60125f6101000a81548160ff021916908315150217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61160c6120d8565b73ffffffffffffffffffffffffffffffffffffffff1661162a6115dc565b73ffffffffffffffffffffffffffffffffffffffff1614611680576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167790613d90565b60405180910390fd5b80600b60016101000a81548160ff02191690831515021790555050565b6060600180546116ac90613cae565b80601f01602080910402602001604051908101604052809291908181526020018280546116d890613cae565b80156117235780601f106116fa57610100808354040283529160200191611723565b820191905f5260205f20905b81548152906001019060200180831161170657829003601f168201915b5050505050905090565b6010602052805f5260405f205f915054906101000a900460ff1681565b600e5481565b5f8060045f61175d6120d8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180e9061430f565b60405180910390fd5b61182b6118226120d8565b858584036120df565b600191505092915050565b600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6011602052805f5260405f205f915054906101000a900460ff1681565b5f61188c6118856120d8565b84846122a2565b6001905092915050565b60185481565b6118a46120d8565b73ffffffffffffffffffffffffffffffffffffffff166118c26115dc565b73ffffffffffffffffffffffffffffffffffffffff1614611918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190f90613d90565b60405180910390fd5b81601781905550806018819055506018546017546119369190613f95565b601681905550605f6016541115611982576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197990614377565b60405180910390fd5b5050565b61198e6120d8565b73ffffffffffffffffffffffffffffffffffffffff166119ac6115dc565b73ffffffffffffffffffffffffffffffffffffffff1614611a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f990613d90565b60405180910390fd5b8160148190555080601581905550601554601454611a209190613f95565b601381905550605f6013541115611a6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6390614377565b60405180910390fd5b5050565b611a786120d8565b73ffffffffffffffffffffffffffffffffffffffff16611a966115dc565b73ffffffffffffffffffffffffffffffffffffffff1614611aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae390613d90565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b51906143df565b60405180910390fd5b80601960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f602052805f5260405f205f915054906101000a900460ff1681565b60155481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611bee6120d8565b73ffffffffffffffffffffffffffffffffffffffff16611c0c6115dc565b73ffffffffffffffffffffffffffffffffffffffff1614611c62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5990613d90565b60405180910390fd5b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600d81526020017f54726164696e6720546f6b656e00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001204630604051602001611d6c95949392919061440c565b6040516020818303038152906040528051906020012090505f7f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e67000000000000000000000000000000000000815250805190602001205f604051602001611df69392919061445d565b6040516020818303038152906040528051906020012090505f8282604051602001611e22929190614506565b6040516020818303038152906040528051906020012090505f6001828888886040515f8152602001604052604051611e5d949392919061453c565b6020604051602081039080840390855afa158015611e7d573d5f803e3d5ffd5b505050602060405103519050611e916115dc565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611efe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef5906145c9565b60405180910390fd5b6001600b5f6101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff02191690831515021790555050505050505050565b600b5f9054906101000a900460ff1681565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60135481565b60145481565b611fe46120d8565b73ffffffffffffffffffffffffffffffffffffffff166120026115dc565b73ffffffffffffffffffffffffffffffffffffffff1614612058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204f90613d90565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036120c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bd90614631565b60405180910390fd5b6120cf81612fe6565b50565b60095481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361214d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214490614699565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b290614701565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516122959190613936565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612310576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230790614769565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361237e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612375906147d1565b60405180910390fd5b601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612408576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ff90614839565b60405180910390fd5b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612492576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612489906148a1565b60405180910390fd5b5f81036124a9576124a483835f6130a9565b612fe1565b60125f9054906101000a900460ff161561298b576124c56115dc565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561253357506125036115dc565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561256b57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125a5575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125bd575060195f9054906101000a900460ff16155b1561298a57600b5f9054906101000a900460ff166126b05760105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612670575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6126af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a690614909565b60405180910390fd5b5b60115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561274d5750600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156127f457600a54811115612797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278e90614997565b60405180910390fd5b6009546127a383611472565b826127ae9190613f95565b11156127ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e6906149ff565b60405180910390fd5b612989565b60115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156128915750600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156128e057600a548111156128db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d290614a8d565b60405180910390fd5b612988565b600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166129875760095461293a83611472565b826129459190613f95565b1115612986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297d906149ff565b60405180910390fd5b5b5b5b5b5b5f73ffffffffffffffffffffffffffffffffffffffff16601960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015612a7f5750601960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639015d371306040518263ffffffff1660e01b8152600401612a3f91906139ae565b602060405180830381865afa158015612a5a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a7e9190614abf565b5b15612b95575f601960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a20527fc858560075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600954600a546008546040518763ffffffff1660e01b8152600401612b1196959493929190614aea565b6020604051808303815f875af1158015612b2d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b519190614abf565b905080612b93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8a90614b93565b60405180910390fd5b505b5f612b9f30611472565b90505f6008548210159050600b60019054906101000a900460ff168015612bc35750805b8015612bdb575060195f9054906101000a900460ff16155b8015612c2e575060115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612c81575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612cd4575060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612d1557600160195f6101000a81548160ff021916908315150217905550612cfb613321565b5f60195f6101000a81548160ff0219169083151502179055505b5f60195f9054906101000a900460ff1615905060105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612dc3575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612dcc575f90505b5f8115612fd15760115f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612e2a57505f601354115b15612ec257612e576064612e49601354886134fc90919063ffffffff16565b61351190919063ffffffff16565b905060135460155482612e6a9190613ddb565b612e749190613e49565b600e5f828254612e849190613f95565b9250508190555060135460145482612e9c9190613ddb565b612ea69190613e49565b600d5f828254612eb69190613f95565b92505081905550612fae565b60115f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612f1957505f601654115b15612fad57612f466064612f38601654886134fc90919063ffffffff16565b61351190919063ffffffff16565b905060165460185482612f599190613ddb565b612f639190613e49565b600e5f828254612f739190613f95565b9250508190555060165460175482612f8b9190613ddb565b612f959190613e49565b600d5f828254612fa59190613f95565b925050819055505b5b5f811115612fc257612fc18730836130a9565b5b8085612fce9190614bb1565b94505b612fdc8787876130a9565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613117576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161310e90614c2e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161317c90614c96565b60405180910390fd5b613190838383613526565b5f60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613214576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320b90614cfe565b60405180910390fd5b81810360035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546132a49190613f95565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516133089190613936565b60405180910390a361331b84848461352b565b50505050565b5f80600e54600d546133339190613f95565b90505f61333f30611472565b90505f82148061334e57505f81145b1561335b575050506134fa565b601460085461336a9190613ddb565b8111156133835760146008546133809190613ddb565b90505b5f47905061339082613530565b5f6133a4824761376690919063ffffffff16565b90505f6133ce856133c0600e54856134fc90919063ffffffff16565b61351190919063ffffffff16565b9050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161341590614d49565b5f6040518083038185875af1925050503d805f811461344f576040519150601f19603f3d011682016040523d82523d5f602084013e613454565b606091505b505080965050600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516134a090614d49565b5f6040518083038185875af1925050503d805f81146134da576040519150601f19603f3d011682016040523d82523d5f602084013e6134df565b606091505b5050809650505f600d819055505f600e819055505050505050505b565b5f81836135099190613ddb565b905092915050565b5f818361351e9190613e49565b905092915050565b505050565b505050565b5f600267ffffffffffffffff81111561354c5761354b614d5d565b5b60405190808252806020026020018201604052801561357a5781602001602082028036833780820191505090505b50905030815f8151811061359157613590614d8a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613635573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136599190614dcb565b8160018151811061366d5761366c614d8a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506136d33060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846120df565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613735959493929190614ee6565b5f604051808303815f87803b15801561374c575f80fd5b505af115801561375e573d5f803e3d5ffd5b505050505050565b5f81836137739190614bb1565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156137b2578082015181840152602081019050613797565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6137d78261377b565b6137e18185613785565b93506137f1818560208601613795565b6137fa816137bd565b840191505092915050565b5f6020820190508181035f83015261381d81846137cd565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61385282613829565b9050919050565b61386281613848565b811461386c575f80fd5b50565b5f8135905061387d81613859565b92915050565b5f819050919050565b61389581613883565b811461389f575f80fd5b50565b5f813590506138b08161388c565b92915050565b5f80604083850312156138cc576138cb613825565b5b5f6138d98582860161386f565b92505060206138ea858286016138a2565b9150509250929050565b5f8115159050919050565b613908816138f4565b82525050565b5f6020820190506139215f8301846138ff565b92915050565b61393081613883565b82525050565b5f6020820190506139495f830184613927565b92915050565b5f805f6060848603121561396657613965613825565b5b5f6139738682870161386f565b93505060206139848682870161386f565b9250506040613995868287016138a2565b9150509250925092565b6139a881613848565b82525050565b5f6020820190506139c15f83018461399f565b92915050565b5f602082840312156139dc576139db613825565b5b5f6139e9848285016138a2565b91505092915050565b5f60ff82169050919050565b613a07816139f2565b82525050565b5f602082019050613a205f8301846139fe565b92915050565b613a2f816138f4565b8114613a39575f80fd5b50565b5f81359050613a4a81613a26565b92915050565b5f8060408385031215613a6657613a65613825565b5b5f613a738582860161386f565b9250506020613a8485828601613a3c565b9150509250929050565b5f60208284031215613aa357613aa2613825565b5b5f613ab08482850161386f565b91505092915050565b5f60208284031215613ace57613acd613825565b5b5f613adb84828501613a3c565b91505092915050565b5f8060408385031215613afa57613af9613825565b5b5f613b07858286016138a2565b9250506020613b18858286016138a2565b9150509250929050565b5f819050919050565b5f613b45613b40613b3b84613829565b613b22565b613829565b9050919050565b5f613b5682613b2b565b9050919050565b5f613b6782613b4c565b9050919050565b613b7781613b5d565b82525050565b5f602082019050613b905f830184613b6e565b92915050565b613b9f816139f2565b8114613ba9575f80fd5b50565b5f81359050613bba81613b96565b92915050565b5f819050919050565b613bd281613bc0565b8114613bdc575f80fd5b50565b5f81359050613bed81613bc9565b92915050565b5f805f60608486031215613c0a57613c09613825565b5b5f613c1786828701613bac565b9350506020613c2886828701613bdf565b9250506040613c3986828701613bdf565b9150509250925092565b5f8060408385031215613c5957613c58613825565b5b5f613c668582860161386f565b9250506020613c778582860161386f565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613cc557607f821691505b602082108103613cd857613cd7613c81565b5b50919050565b7f45524332303a204e6f7420637572416c6c6f77203e3d20616d6f756e740000005f82015250565b5f613d12601d83613785565b9150613d1d82613cde565b602082019050919050565b5f6020820190508181035f830152613d3f81613d06565b9050919050565b7f496e76616c6964206f776e6572000000000000000000000000000000000000005f82015250565b5f613d7a600d83613785565b9150613d8582613d46565b602082019050919050565b5f6020820190508181035f830152613da781613d6e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613de582613883565b9150613df083613883565b9250828202613dfe81613883565b91508282048414831517613e1557613e14613dae565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613e5382613883565b9150613e5e83613883565b925082613e6e57613e6d613e1c565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f613ed3603583613785565b9150613ede82613e79565b604082019050919050565b5f6020820190508181035f830152613f0081613ec7565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f613f61603483613785565b9150613f6c82613f07565b604082019050919050565b5f6020820190508181035f830152613f8e81613f55565b9050919050565b5f613f9f82613883565b9150613faa83613883565b9250828201905080821115613fc257613fc1613dae565b5b92915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f616d6d5061697273000000000000000000000000000000000000000000000000602082015250565b5f614022602883613785565b915061402d82613fc8565b604082019050919050565b5f6020820190508181035f83015261404f81614016565b9050919050565b5f8160011c9050919050565b5f808291508390505b60018511156140ab5780860481111561408757614086613dae565b5b60018516156140965780820291505b80810290506140a485614056565b945061406b565b94509492505050565b5f826140c3576001905061417e565b816140d0575f905061417e565b81600181146140e657600281146140f05761411f565b600191505061417e565b60ff84111561410257614101613dae565b5b8360020a91508482111561411957614118613dae565b5b5061417e565b5060208310610133831016604e8410600b84101617156141545782820a90508381111561414f5761414e613dae565b5b61417e565b6141618484846001614062565b9250905081840481111561417857614177613dae565b5b81810290505b9392505050565b5f61418f82613883565b915061419a836139f2565b92506141c77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846140b4565b905092915050565b7f43616e6e6f7420736574206d61785478206c6f776572207468616e20302e31255f82015250565b5f614203602083613785565b915061420e826141cf565b602082019050919050565b5f6020820190508181035f830152614230816141f7565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f614291602483613785565b915061429c82614237565b604082019050919050565b5f6020820190508181035f8301526142be81614285565b9050919050565b7f45524332303a204e6f7420637572416c6c6f77203e3d2073756256616c7565005f82015250565b5f6142f9601f83613785565b9150614304826142c5565b602082019050919050565b5f6020820190508181035f830152614326816142ed565b9050919050565b7f4d757374206b6565702074617820617420393525206f72206c657373000000005f82015250565b5f614361601c83613785565b915061436c8261432d565b602082019050919050565b5f6020820190508181035f83015261438e81614355565b9050919050565b7f496e76616c696420616e74692d647261696e65720000000000000000000000005f82015250565b5f6143c9601483613785565b91506143d482614395565b602082019050919050565b5f6020820190508181035f8301526143f6816143bd565b9050919050565b61440681613bc0565b82525050565b5f60a08201905061441f5f8301886143fd565b61442c60208301876143fd565b61443960408301866143fd565b6144466060830185613927565b614453608083018461399f565b9695505050505050565b5f6060820190506144705f8301866143fd565b61447d60208301856143fd565b61448a6040830184613927565b949350505050565b5f81905092915050565b7f19010000000000000000000000000000000000000000000000000000000000005f82015250565b5f6144d0600283614492565b91506144db8261449c565b600282019050919050565b5f819050919050565b6145006144fb82613bc0565b6144e6565b82525050565b5f614510826144c4565b915061451c82856144ef565b60208201915061452c82846144ef565b6020820191508190509392505050565b5f60808201905061454f5f8301876143fd565b61455c60208301866139fe565b61456960408301856143fd565b61457660608301846143fd565b95945050505050565b7f496e76616c6964207369676e61747572650000000000000000000000000000005f82015250565b5f6145b3601183613785565b91506145be8261457f565b602082019050919050565b5f6020820190508181035f8301526145e0816145a7565b9050919050565b7f4e6577206f776e6572206973205a45524f0000000000000000000000000000005f82015250565b5f61461b601183613785565b9150614626826145e7565b602082019050919050565b5f6020820190508181035f8301526146488161460f565b9050919050565b7f45524332303a204e6f74206f776e657220213d206164647265737328302900005f82015250565b5f614683601e83613785565b915061468e8261464f565b602082019050919050565b5f6020820190508181035f8301526146b081614677565b9050919050565b7f45524332303a204e6f74207370656e64657220213d20616464726573732830295f82015250565b5f6146eb602083613785565b91506146f6826146b7565b602082019050919050565b5f6020820190508181035f830152614718816146df565b9050919050565b7f45524332303a20496e76616c69642066726f6d206164647265737300000000005f82015250565b5f614753601b83613785565b915061475e8261471f565b602082019050919050565b5f6020820190508181035f83015261478081614747565b9050919050565b7f45524332303a20496e76616c696420746f2061646472657373000000000000005f82015250565b5f6147bb601983613785565b91506147c682614787565b602082019050919050565b5f6020820190508181035f8301526147e8816147af565b9050919050565b7f45524332303a2066726f6d20697320626c61636b206c697374000000000000005f82015250565b5f614823601983613785565b915061482e826147ef565b602082019050919050565b5f6020820190508181035f83015261485081614817565b9050919050565b7f45524332303a20746f20697320626c61636b206c6973740000000000000000005f82015250565b5f61488b601783613785565b915061489682614857565b602082019050919050565b5f6020820190508181035f8301526148b88161487f565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f6148f3601683613785565b91506148fe826148bf565b602082019050919050565b5f6020820190508181035f830152614920816148e7565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d617854782e0000000000000000000000000000000000000000000000000000602082015250565b5f614981602683613785565b915061498c82614927565b604082019050919050565b5f6020820190508181035f8301526149ae81614975565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6149e9601383613785565b91506149f4826149b5565b602082019050919050565b5f6020820190508181035f830152614a16816149dd565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d617854782e00000000000000000000000000000000000000000000000000602082015250565b5f614a77602783613785565b9150614a8282614a1d565b604082019050919050565b5f6020820190508181035f830152614aa481614a6b565b9050919050565b5f81519050614ab981613a26565b92915050565b5f60208284031215614ad457614ad3613825565b5b5f614ae184828501614aab565b91505092915050565b5f60c082019050614afd5f83018961399f565b614b0a602083018861399f565b614b17604083018761399f565b614b246060830186613927565b614b316080830185613927565b614b3e60a0830184613927565b979650505050505050565b7f416e746920447261696e657220456e61626c65640000000000000000000000005f82015250565b5f614b7d601483613785565b9150614b8882614b49565b602082019050919050565b5f6020820190508181035f830152614baa81614b71565b9050919050565b5f614bbb82613883565b9150614bc683613883565b9250828203905081811115614bde57614bdd613dae565b5b92915050565b7f45524332303a204e6f742066726f6d20213d20616464726573732830290000005f82015250565b5f614c18601d83613785565b9150614c2382614be4565b602082019050919050565b5f6020820190508181035f830152614c4581614c0c565b9050919050565b7f45524332303a204e6f7420746f20213d206164647265737328302900000000005f82015250565b5f614c80601b83613785565b9150614c8b82614c4c565b602082019050919050565b5f6020820190508181035f830152614cad81614c74565b9050919050565b7f45524332303a204e6f742062616c616e636546726f6d203e3d20616d6f756e745f82015250565b5f614ce8602083613785565b9150614cf382614cb4565b602082019050919050565b5f6020820190508181035f830152614d1581614cdc565b9050919050565b5f81905092915050565b50565b5f614d345f83614d1c565b9150614d3f82614d26565b5f82019050919050565b5f614d5382614d29565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050614dc581613859565b92915050565b5f60208284031215614de057614ddf613825565b5b5f614ded84828501614db7565b91505092915050565b5f819050919050565b5f614e19614e14614e0f84614df6565b613b22565b613883565b9050919050565b614e2981614dff565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614e6181613848565b82525050565b5f614e728383614e58565b60208301905092915050565b5f602082019050919050565b5f614e9482614e2f565b614e9e8185614e39565b9350614ea983614e49565b805f5b83811015614ed9578151614ec08882614e67565b9750614ecb83614e7e565b925050600181019050614eac565b5085935050505092915050565b5f60a082019050614ef95f830188613927565b614f066020830187614e20565b8181036040830152614f188186614e8a565b9050614f27606083018561399f565b614f346080830184613927565b969550505050505056fea26469706673582212206bb77eacf5baaf008b1de647f7d18f5e8f0c82d252c975c21a65379396bc525064736f6c63430008180033

Deployed Bytecode

0x608060405260043610610296575f3560e01c80638da5cb5b11610159578063bae14e1d116100c0578063d929a08311610079578063d929a083146109e7578063dd62ed3e14610a11578063e27a55fe14610a4d578063e96db1ef14610a77578063f2fde38b14610aa1578063f8b45b0514610ac95761029d565b8063bae14e1d146108df578063bc715c7e14610907578063be69188314610943578063c31c9c071461096d578063c6a3064714610997578063d4394cf8146109bf5761029d565b8063a5ece94111610112578063a5ece941146107c3578063a72905a2146107ed578063a9059cbb14610829578063af8f26e714610865578063b38d5ef41461088f578063b79c1886146108b75761029d565b80638da5cb5b146106a5578063924de9b7146106cf57806395d89b41146106f7578063989763ef146107215780639fccce321461075d578063a457c2d7146107875761029d565b806345167f26116101fd57806368092bd9116101b657806368092bd9146105c35780637070678b146105eb57806370a0823114610613578063715018a61461064f5780637437681e14610665578063751039fc1461068f5761029d565b806345167f26146104cd5780634a62bb65146104f5578063544d1ec91461051f57806359cd9031146105475780635df6e68e1461057157806367b740e91461059b5761029d565b806326991cc81161024f57806326991cc8146103c15780632c81355e146103eb578063313ce56714610413578063330124111461043d57806339509351146104675780633ad10ef6146104a35761029d565b806306fdde03146102a1578063095ea7b3146102cb578063151d80391461030757806318160ddd146103315780631f3fed8f1461035b57806323b872dd146103855761029d565b3661029d57005b5f80fd5b3480156102ac575f80fd5b506102b5610af3565b6040516102c29190613805565b60405180910390f35b3480156102d6575f80fd5b506102f160048036038101906102ec91906138b6565b610b82565b6040516102fe919061390e565b60405180910390f35b348015610312575f80fd5b5061031b610b9f565b604051610328919061390e565b60405180910390f35b34801561033c575f80fd5b50610345610bb2565b6040516103529190613936565b60405180910390f35b348015610366575f80fd5b5061036f610bbb565b60405161037c9190613936565b60405180910390f35b348015610390575f80fd5b506103ab60048036038101906103a6919061394f565b610bc1565b6040516103b8919061390e565b60405180910390f35b3480156103cc575f80fd5b506103d5610cb3565b6040516103e291906139ae565b60405180910390f35b3480156103f6575f80fd5b50610411600480360381019061040c91906139c7565b610cd8565b005b34801561041e575f80fd5b50610427610e25565b6040516104349190613a0d565b60405180910390f35b348015610448575f80fd5b50610451610e2d565b60405161045e9190613936565b60405180910390f35b348015610472575f80fd5b5061048d600480360381019061048891906138b6565b610e33565b60405161049a919061390e565b60405180910390f35b3480156104ae575f80fd5b506104b7610eda565b6040516104c491906139ae565b60405180910390f35b3480156104d8575f80fd5b506104f360048036038101906104ee9190613a50565b610eff565b005b348015610500575f80fd5b50610509611062565b604051610516919061390e565b60405180910390f35b34801561052a575f80fd5b50610545600480360381019061054091906139c7565b611074565b005b348015610552575f80fd5b5061055b611199565b6040516105689190613936565b60405180910390f35b34801561057c575f80fd5b5061058561119f565b6040516105929190613936565b60405180910390f35b3480156105a6575f80fd5b506105c160048036038101906105bc91906139c7565b6111a5565b005b3480156105ce575f80fd5b506105e960048036038101906105e49190613a50565b6112ca565b005b3480156105f6575f80fd5b50610611600480360381019061060c9190613a50565b61139e565b005b34801561061e575f80fd5b5061063960048036038101906106349190613a8e565b611472565b6040516106469190613936565b60405180910390f35b34801561065a575f80fd5b506106636114b8565b005b348015610670575f80fd5b5061067961153f565b6040516106869190613936565b60405180910390f35b34801561069a575f80fd5b506106a3611545565b005b3480156106b0575f80fd5b506106b96115dc565b6040516106c691906139ae565b60405180910390f35b3480156106da575f80fd5b506106f560048036038101906106f09190613ab9565b611604565b005b348015610702575f80fd5b5061070b61169d565b6040516107189190613805565b60405180910390f35b34801561072c575f80fd5b5061074760048036038101906107429190613a8e565b61172d565b604051610754919061390e565b60405180910390f35b348015610768575f80fd5b5061077161174a565b60405161077e9190613936565b60405180910390f35b348015610792575f80fd5b506107ad60048036038101906107a891906138b6565b611750565b6040516107ba919061390e565b60405180910390f35b3480156107ce575f80fd5b506107d7611836565b6040516107e491906139ae565b60405180910390f35b3480156107f8575f80fd5b50610813600480360381019061080e9190613a8e565b61185c565b604051610820919061390e565b60405180910390f35b348015610834575f80fd5b5061084f600480360381019061084a91906138b6565b611879565b60405161085c919061390e565b60405180910390f35b348015610870575f80fd5b50610879611896565b6040516108869190613936565b60405180910390f35b34801561089a575f80fd5b506108b560048036038101906108b09190613ae4565b61189c565b005b3480156108c2575f80fd5b506108dd60048036038101906108d89190613ae4565b611986565b005b3480156108ea575f80fd5b5061090560048036038101906109009190613a8e565b611a70565b005b348015610912575f80fd5b5061092d60048036038101906109289190613a8e565b611b9e565b60405161093a919061390e565b60405180910390f35b34801561094e575f80fd5b50610957611bbb565b6040516109649190613936565b60405180910390f35b348015610978575f80fd5b50610981611bc1565b60405161098e9190613b7d565b60405180910390f35b3480156109a2575f80fd5b506109bd60048036038101906109b89190613a50565b611be6565b005b3480156109ca575f80fd5b506109e560048036038101906109e09190613bf3565b611cba565b005b3480156109f2575f80fd5b506109fb611f3c565b604051610a08919061390e565b60405180910390f35b348015610a1c575f80fd5b50610a376004803603810190610a329190613c43565b611f4e565b604051610a449190613936565b60405180910390f35b348015610a58575f80fd5b50610a61611fd0565b604051610a6e9190613936565b60405180910390f35b348015610a82575f80fd5b50610a8b611fd6565b604051610a989190613936565b60405180910390f35b348015610aac575f80fd5b50610ac76004803603810190610ac29190613a8e565b611fdc565b005b348015610ad4575f80fd5b50610add6120d2565b604051610aea9190613936565b60405180910390f35b60605f8054610b0190613cae565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2d90613cae565b8015610b785780601f10610b4f57610100808354040283529160200191610b78565b820191905f5260205f20905b815481529060010190602001808311610b5b57829003601f168201915b5050505050905090565b5f610b95610b8e6120d8565b84846120df565b6001905092915050565b600b60019054906101000a900460ff1681565b5f600254905090565b600d5481565b5f610bcd8484846122a2565b5f60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610c146120d8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610c93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8a90613d28565b60405180910390fd5b610ca785610c9f6120d8565b8584036120df565b60019150509392505050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ce06120d8565b73ffffffffffffffffffffffffffffffffffffffff16610cfe6115dc565b73ffffffffffffffffffffffffffffffffffffffff1614610d54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4b90613d90565b60405180910390fd5b620186a06001610d62610bb2565b610d6c9190613ddb565b610d769190613e49565b811015610db8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610daf90613ee9565b60405180910390fd5b6103e86005610dc5610bb2565b610dcf9190613ddb565b610dd99190613e49565b811115610e1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1290613f77565b60405180910390fd5b8060088190555050565b5f6012905090565b60175481565b5f610ed0610e3f6120d8565b848460045f610e4c6120d8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610ecb9190613f95565b6120df565b6001905092915050565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f076120d8565b73ffffffffffffffffffffffffffffffffffffffff16610f256115dc565b73ffffffffffffffffffffffffffffffffffffffff1614610f7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7290613d90565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361100a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100190614038565b60405180910390fd5b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60125f9054906101000a900460ff1681565b61107c6120d8565b73ffffffffffffffffffffffffffffffffffffffff1661109a6115dc565b73ffffffffffffffffffffffffffffffffffffffff16146110f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e790613d90565b60405180910390fd5b6110f8610e25565b600a6111049190614185565b6103e86001611111610bb2565b61111b9190613ddb565b6111259190613e49565b61112f9190613e49565b811015611171576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116890614219565b60405180910390fd5b611179610e25565b600a6111859190614185565b816111909190613ddb565b600a8190555050565b60085481565b60165481565b6111ad6120d8565b73ffffffffffffffffffffffffffffffffffffffff166111cb6115dc565b73ffffffffffffffffffffffffffffffffffffffff1614611221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121890613d90565b60405180910390fd5b611229610e25565b600a6112359190614185565b6103e86005611242610bb2565b61124c9190613ddb565b6112569190613e49565b6112609190613e49565b8110156112a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611299906142a7565b60405180910390fd5b6112aa610e25565b600a6112b69190614185565b816112c19190613ddb565b60098190555050565b6112d26120d8565b73ffffffffffffffffffffffffffffffffffffffff166112f06115dc565b73ffffffffffffffffffffffffffffffffffffffff1614611346576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133d90613d90565b60405180910390fd5b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6113a66120d8565b73ffffffffffffffffffffffffffffffffffffffff166113c46115dc565b73ffffffffffffffffffffffffffffffffffffffff161461141a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141190613d90565b60405180910390fd5b80600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6114c06120d8565b73ffffffffffffffffffffffffffffffffffffffff166114de6115dc565b73ffffffffffffffffffffffffffffffffffffffff1614611534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152b90613d90565b60405180910390fd5b61153d5f612fe6565b565b600a5481565b61154d6120d8565b73ffffffffffffffffffffffffffffffffffffffff1661156b6115dc565b73ffffffffffffffffffffffffffffffffffffffff16146115c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b890613d90565b60405180910390fd5b5f60125f6101000a81548160ff021916908315150217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61160c6120d8565b73ffffffffffffffffffffffffffffffffffffffff1661162a6115dc565b73ffffffffffffffffffffffffffffffffffffffff1614611680576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167790613d90565b60405180910390fd5b80600b60016101000a81548160ff02191690831515021790555050565b6060600180546116ac90613cae565b80601f01602080910402602001604051908101604052809291908181526020018280546116d890613cae565b80156117235780601f106116fa57610100808354040283529160200191611723565b820191905f5260205f20905b81548152906001019060200180831161170657829003601f168201915b5050505050905090565b6010602052805f5260405f205f915054906101000a900460ff1681565b600e5481565b5f8060045f61175d6120d8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180e9061430f565b60405180910390fd5b61182b6118226120d8565b858584036120df565b600191505092915050565b600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6011602052805f5260405f205f915054906101000a900460ff1681565b5f61188c6118856120d8565b84846122a2565b6001905092915050565b60185481565b6118a46120d8565b73ffffffffffffffffffffffffffffffffffffffff166118c26115dc565b73ffffffffffffffffffffffffffffffffffffffff1614611918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190f90613d90565b60405180910390fd5b81601781905550806018819055506018546017546119369190613f95565b601681905550605f6016541115611982576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197990614377565b60405180910390fd5b5050565b61198e6120d8565b73ffffffffffffffffffffffffffffffffffffffff166119ac6115dc565b73ffffffffffffffffffffffffffffffffffffffff1614611a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f990613d90565b60405180910390fd5b8160148190555080601581905550601554601454611a209190613f95565b601381905550605f6013541115611a6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6390614377565b60405180910390fd5b5050565b611a786120d8565b73ffffffffffffffffffffffffffffffffffffffff16611a966115dc565b73ffffffffffffffffffffffffffffffffffffffff1614611aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae390613d90565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b51906143df565b60405180910390fd5b80601960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f602052805f5260405f205f915054906101000a900460ff1681565b60155481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611bee6120d8565b73ffffffffffffffffffffffffffffffffffffffff16611c0c6115dc565b73ffffffffffffffffffffffffffffffffffffffff1614611c62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5990613d90565b60405180910390fd5b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600d81526020017f54726164696e6720546f6b656e00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001204630604051602001611d6c95949392919061440c565b6040516020818303038152906040528051906020012090505f7f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e67000000000000000000000000000000000000815250805190602001205f604051602001611df69392919061445d565b6040516020818303038152906040528051906020012090505f8282604051602001611e22929190614506565b6040516020818303038152906040528051906020012090505f6001828888886040515f8152602001604052604051611e5d949392919061453c565b6020604051602081039080840390855afa158015611e7d573d5f803e3d5ffd5b505050602060405103519050611e916115dc565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611efe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef5906145c9565b60405180910390fd5b6001600b5f6101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff02191690831515021790555050505050505050565b600b5f9054906101000a900460ff1681565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60135481565b60145481565b611fe46120d8565b73ffffffffffffffffffffffffffffffffffffffff166120026115dc565b73ffffffffffffffffffffffffffffffffffffffff1614612058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204f90613d90565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036120c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bd90614631565b60405180910390fd5b6120cf81612fe6565b50565b60095481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361214d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214490614699565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b290614701565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516122959190613936565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612310576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230790614769565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361237e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612375906147d1565b60405180910390fd5b601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612408576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ff90614839565b60405180910390fd5b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612492576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612489906148a1565b60405180910390fd5b5f81036124a9576124a483835f6130a9565b612fe1565b60125f9054906101000a900460ff161561298b576124c56115dc565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561253357506125036115dc565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561256b57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125a5575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125bd575060195f9054906101000a900460ff16155b1561298a57600b5f9054906101000a900460ff166126b05760105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612670575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6126af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a690614909565b60405180910390fd5b5b60115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561274d5750600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156127f457600a54811115612797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278e90614997565b60405180910390fd5b6009546127a383611472565b826127ae9190613f95565b11156127ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e6906149ff565b60405180910390fd5b612989565b60115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156128915750600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156128e057600a548111156128db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d290614a8d565b60405180910390fd5b612988565b600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166129875760095461293a83611472565b826129459190613f95565b1115612986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297d906149ff565b60405180910390fd5b5b5b5b5b5b5f73ffffffffffffffffffffffffffffffffffffffff16601960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015612a7f5750601960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639015d371306040518263ffffffff1660e01b8152600401612a3f91906139ae565b602060405180830381865afa158015612a5a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a7e9190614abf565b5b15612b95575f601960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a20527fc858560075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600954600a546008546040518763ffffffff1660e01b8152600401612b1196959493929190614aea565b6020604051808303815f875af1158015612b2d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b519190614abf565b905080612b93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8a90614b93565b60405180910390fd5b505b5f612b9f30611472565b90505f6008548210159050600b60019054906101000a900460ff168015612bc35750805b8015612bdb575060195f9054906101000a900460ff16155b8015612c2e575060115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612c81575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612cd4575060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612d1557600160195f6101000a81548160ff021916908315150217905550612cfb613321565b5f60195f6101000a81548160ff0219169083151502179055505b5f60195f9054906101000a900460ff1615905060105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612dc3575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612dcc575f90505b5f8115612fd15760115f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612e2a57505f601354115b15612ec257612e576064612e49601354886134fc90919063ffffffff16565b61351190919063ffffffff16565b905060135460155482612e6a9190613ddb565b612e749190613e49565b600e5f828254612e849190613f95565b9250508190555060135460145482612e9c9190613ddb565b612ea69190613e49565b600d5f828254612eb69190613f95565b92505081905550612fae565b60115f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612f1957505f601654115b15612fad57612f466064612f38601654886134fc90919063ffffffff16565b61351190919063ffffffff16565b905060165460185482612f599190613ddb565b612f639190613e49565b600e5f828254612f739190613f95565b9250508190555060165460175482612f8b9190613ddb565b612f959190613e49565b600d5f828254612fa59190613f95565b925050819055505b5b5f811115612fc257612fc18730836130a9565b5b8085612fce9190614bb1565b94505b612fdc8787876130a9565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613117576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161310e90614c2e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161317c90614c96565b60405180910390fd5b613190838383613526565b5f60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613214576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320b90614cfe565b60405180910390fd5b81810360035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546132a49190613f95565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516133089190613936565b60405180910390a361331b84848461352b565b50505050565b5f80600e54600d546133339190613f95565b90505f61333f30611472565b90505f82148061334e57505f81145b1561335b575050506134fa565b601460085461336a9190613ddb565b8111156133835760146008546133809190613ddb565b90505b5f47905061339082613530565b5f6133a4824761376690919063ffffffff16565b90505f6133ce856133c0600e54856134fc90919063ffffffff16565b61351190919063ffffffff16565b9050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161341590614d49565b5f6040518083038185875af1925050503d805f811461344f576040519150601f19603f3d011682016040523d82523d5f602084013e613454565b606091505b505080965050600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516134a090614d49565b5f6040518083038185875af1925050503d805f81146134da576040519150601f19603f3d011682016040523d82523d5f602084013e6134df565b606091505b5050809650505f600d819055505f600e819055505050505050505b565b5f81836135099190613ddb565b905092915050565b5f818361351e9190613e49565b905092915050565b505050565b505050565b5f600267ffffffffffffffff81111561354c5761354b614d5d565b5b60405190808252806020026020018201604052801561357a5781602001602082028036833780820191505090505b50905030815f8151811061359157613590614d8a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613635573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136599190614dcb565b8160018151811061366d5761366c614d8a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506136d33060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846120df565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613735959493929190614ee6565b5f604051808303815f87803b15801561374c575f80fd5b505af115801561375e573d5f803e3d5ffd5b505050505050565b5f81836137739190614bb1565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156137b2578082015181840152602081019050613797565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6137d78261377b565b6137e18185613785565b93506137f1818560208601613795565b6137fa816137bd565b840191505092915050565b5f6020820190508181035f83015261381d81846137cd565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61385282613829565b9050919050565b61386281613848565b811461386c575f80fd5b50565b5f8135905061387d81613859565b92915050565b5f819050919050565b61389581613883565b811461389f575f80fd5b50565b5f813590506138b08161388c565b92915050565b5f80604083850312156138cc576138cb613825565b5b5f6138d98582860161386f565b92505060206138ea858286016138a2565b9150509250929050565b5f8115159050919050565b613908816138f4565b82525050565b5f6020820190506139215f8301846138ff565b92915050565b61393081613883565b82525050565b5f6020820190506139495f830184613927565b92915050565b5f805f6060848603121561396657613965613825565b5b5f6139738682870161386f565b93505060206139848682870161386f565b9250506040613995868287016138a2565b9150509250925092565b6139a881613848565b82525050565b5f6020820190506139c15f83018461399f565b92915050565b5f602082840312156139dc576139db613825565b5b5f6139e9848285016138a2565b91505092915050565b5f60ff82169050919050565b613a07816139f2565b82525050565b5f602082019050613a205f8301846139fe565b92915050565b613a2f816138f4565b8114613a39575f80fd5b50565b5f81359050613a4a81613a26565b92915050565b5f8060408385031215613a6657613a65613825565b5b5f613a738582860161386f565b9250506020613a8485828601613a3c565b9150509250929050565b5f60208284031215613aa357613aa2613825565b5b5f613ab08482850161386f565b91505092915050565b5f60208284031215613ace57613acd613825565b5b5f613adb84828501613a3c565b91505092915050565b5f8060408385031215613afa57613af9613825565b5b5f613b07858286016138a2565b9250506020613b18858286016138a2565b9150509250929050565b5f819050919050565b5f613b45613b40613b3b84613829565b613b22565b613829565b9050919050565b5f613b5682613b2b565b9050919050565b5f613b6782613b4c565b9050919050565b613b7781613b5d565b82525050565b5f602082019050613b905f830184613b6e565b92915050565b613b9f816139f2565b8114613ba9575f80fd5b50565b5f81359050613bba81613b96565b92915050565b5f819050919050565b613bd281613bc0565b8114613bdc575f80fd5b50565b5f81359050613bed81613bc9565b92915050565b5f805f60608486031215613c0a57613c09613825565b5b5f613c1786828701613bac565b9350506020613c2886828701613bdf565b9250506040613c3986828701613bdf565b9150509250925092565b5f8060408385031215613c5957613c58613825565b5b5f613c668582860161386f565b9250506020613c778582860161386f565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613cc557607f821691505b602082108103613cd857613cd7613c81565b5b50919050565b7f45524332303a204e6f7420637572416c6c6f77203e3d20616d6f756e740000005f82015250565b5f613d12601d83613785565b9150613d1d82613cde565b602082019050919050565b5f6020820190508181035f830152613d3f81613d06565b9050919050565b7f496e76616c6964206f776e6572000000000000000000000000000000000000005f82015250565b5f613d7a600d83613785565b9150613d8582613d46565b602082019050919050565b5f6020820190508181035f830152613da781613d6e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613de582613883565b9150613df083613883565b9250828202613dfe81613883565b91508282048414831517613e1557613e14613dae565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613e5382613883565b9150613e5e83613883565b925082613e6e57613e6d613e1c565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f613ed3603583613785565b9150613ede82613e79565b604082019050919050565b5f6020820190508181035f830152613f0081613ec7565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f613f61603483613785565b9150613f6c82613f07565b604082019050919050565b5f6020820190508181035f830152613f8e81613f55565b9050919050565b5f613f9f82613883565b9150613faa83613883565b9250828201905080821115613fc257613fc1613dae565b5b92915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f616d6d5061697273000000000000000000000000000000000000000000000000602082015250565b5f614022602883613785565b915061402d82613fc8565b604082019050919050565b5f6020820190508181035f83015261404f81614016565b9050919050565b5f8160011c9050919050565b5f808291508390505b60018511156140ab5780860481111561408757614086613dae565b5b60018516156140965780820291505b80810290506140a485614056565b945061406b565b94509492505050565b5f826140c3576001905061417e565b816140d0575f905061417e565b81600181146140e657600281146140f05761411f565b600191505061417e565b60ff84111561410257614101613dae565b5b8360020a91508482111561411957614118613dae565b5b5061417e565b5060208310610133831016604e8410600b84101617156141545782820a90508381111561414f5761414e613dae565b5b61417e565b6141618484846001614062565b9250905081840481111561417857614177613dae565b5b81810290505b9392505050565b5f61418f82613883565b915061419a836139f2565b92506141c77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846140b4565b905092915050565b7f43616e6e6f7420736574206d61785478206c6f776572207468616e20302e31255f82015250565b5f614203602083613785565b915061420e826141cf565b602082019050919050565b5f6020820190508181035f830152614230816141f7565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f614291602483613785565b915061429c82614237565b604082019050919050565b5f6020820190508181035f8301526142be81614285565b9050919050565b7f45524332303a204e6f7420637572416c6c6f77203e3d2073756256616c7565005f82015250565b5f6142f9601f83613785565b9150614304826142c5565b602082019050919050565b5f6020820190508181035f830152614326816142ed565b9050919050565b7f4d757374206b6565702074617820617420393525206f72206c657373000000005f82015250565b5f614361601c83613785565b915061436c8261432d565b602082019050919050565b5f6020820190508181035f83015261438e81614355565b9050919050565b7f496e76616c696420616e74692d647261696e65720000000000000000000000005f82015250565b5f6143c9601483613785565b91506143d482614395565b602082019050919050565b5f6020820190508181035f8301526143f6816143bd565b9050919050565b61440681613bc0565b82525050565b5f60a08201905061441f5f8301886143fd565b61442c60208301876143fd565b61443960408301866143fd565b6144466060830185613927565b614453608083018461399f565b9695505050505050565b5f6060820190506144705f8301866143fd565b61447d60208301856143fd565b61448a6040830184613927565b949350505050565b5f81905092915050565b7f19010000000000000000000000000000000000000000000000000000000000005f82015250565b5f6144d0600283614492565b91506144db8261449c565b600282019050919050565b5f819050919050565b6145006144fb82613bc0565b6144e6565b82525050565b5f614510826144c4565b915061451c82856144ef565b60208201915061452c82846144ef565b6020820191508190509392505050565b5f60808201905061454f5f8301876143fd565b61455c60208301866139fe565b61456960408301856143fd565b61457660608301846143fd565b95945050505050565b7f496e76616c6964207369676e61747572650000000000000000000000000000005f82015250565b5f6145b3601183613785565b91506145be8261457f565b602082019050919050565b5f6020820190508181035f8301526145e0816145a7565b9050919050565b7f4e6577206f776e6572206973205a45524f0000000000000000000000000000005f82015250565b5f61461b601183613785565b9150614626826145e7565b602082019050919050565b5f6020820190508181035f8301526146488161460f565b9050919050565b7f45524332303a204e6f74206f776e657220213d206164647265737328302900005f82015250565b5f614683601e83613785565b915061468e8261464f565b602082019050919050565b5f6020820190508181035f8301526146b081614677565b9050919050565b7f45524332303a204e6f74207370656e64657220213d20616464726573732830295f82015250565b5f6146eb602083613785565b91506146f6826146b7565b602082019050919050565b5f6020820190508181035f830152614718816146df565b9050919050565b7f45524332303a20496e76616c69642066726f6d206164647265737300000000005f82015250565b5f614753601b83613785565b915061475e8261471f565b602082019050919050565b5f6020820190508181035f83015261478081614747565b9050919050565b7f45524332303a20496e76616c696420746f2061646472657373000000000000005f82015250565b5f6147bb601983613785565b91506147c682614787565b602082019050919050565b5f6020820190508181035f8301526147e8816147af565b9050919050565b7f45524332303a2066726f6d20697320626c61636b206c697374000000000000005f82015250565b5f614823601983613785565b915061482e826147ef565b602082019050919050565b5f6020820190508181035f83015261485081614817565b9050919050565b7f45524332303a20746f20697320626c61636b206c6973740000000000000000005f82015250565b5f61488b601783613785565b915061489682614857565b602082019050919050565b5f6020820190508181035f8301526148b88161487f565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f6148f3601683613785565b91506148fe826148bf565b602082019050919050565b5f6020820190508181035f830152614920816148e7565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d617854782e0000000000000000000000000000000000000000000000000000602082015250565b5f614981602683613785565b915061498c82614927565b604082019050919050565b5f6020820190508181035f8301526149ae81614975565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6149e9601383613785565b91506149f4826149b5565b602082019050919050565b5f6020820190508181035f830152614a16816149dd565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d617854782e00000000000000000000000000000000000000000000000000602082015250565b5f614a77602783613785565b9150614a8282614a1d565b604082019050919050565b5f6020820190508181035f830152614aa481614a6b565b9050919050565b5f81519050614ab981613a26565b92915050565b5f60208284031215614ad457614ad3613825565b5b5f614ae184828501614aab565b91505092915050565b5f60c082019050614afd5f83018961399f565b614b0a602083018861399f565b614b17604083018761399f565b614b246060830186613927565b614b316080830185613927565b614b3e60a0830184613927565b979650505050505050565b7f416e746920447261696e657220456e61626c65640000000000000000000000005f82015250565b5f614b7d601483613785565b9150614b8882614b49565b602082019050919050565b5f6020820190508181035f830152614baa81614b71565b9050919050565b5f614bbb82613883565b9150614bc683613883565b9250828203905081811115614bde57614bdd613dae565b5b92915050565b7f45524332303a204e6f742066726f6d20213d20616464726573732830290000005f82015250565b5f614c18601d83613785565b9150614c2382614be4565b602082019050919050565b5f6020820190508181035f830152614c4581614c0c565b9050919050565b7f45524332303a204e6f7420746f20213d206164647265737328302900000000005f82015250565b5f614c80601b83613785565b9150614c8b82614c4c565b602082019050919050565b5f6020820190508181035f830152614cad81614c74565b9050919050565b7f45524332303a204e6f742062616c616e636546726f6d203e3d20616d6f756e745f82015250565b5f614ce8602083613785565b9150614cf382614cb4565b602082019050919050565b5f6020820190508181035f830152614d1581614cdc565b9050919050565b5f81905092915050565b50565b5f614d345f83614d1c565b9150614d3f82614d26565b5f82019050919050565b5f614d5382614d29565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050614dc581613859565b92915050565b5f60208284031215614de057614ddf613825565b5b5f614ded84828501614db7565b91505092915050565b5f819050919050565b5f614e19614e14614e0f84614df6565b613b22565b613883565b9050919050565b614e2981614dff565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614e6181613848565b82525050565b5f614e728383614e58565b60208301905092915050565b5f602082019050919050565b5f614e9482614e2f565b614e9e8185614e39565b9350614ea983614e49565b805f5b83811015614ed9578151614ec08882614e67565b9750614ecb83614e7e565b925050600181019050614eac565b5085935050505092915050565b5f60a082019050614ef95f830188613927565b614f066020830187614e20565b8181036040830152614f188186614e8a565b9050614f27606083018561399f565b614f346080830184613927565b969550505050505056fea26469706673582212206bb77eacf5baaf008b1de647f7d18f5e8f0c82d252c975c21a65379396bc525064736f6c63430008180033

Deployed Bytecode Sourcemap

14238:10582:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9911:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10483:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14527:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10232:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14640:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11163:397;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14361:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22615:344;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10131:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15071:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11737:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14606:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24228:213;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14890:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23230:249;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14397:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15038:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22967:255;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23487:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22090:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10348:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;970:103;;;;;;;;;;;;;:::i;:::-;;14457:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22394:93;;;;;;;;;;;;;:::i;:::-;;687:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22497:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10019:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14785:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14680:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11956:360;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14568:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14841:40;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11568:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15108:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23615:293;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23916:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24449:197;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14716:60;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15004:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14318:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22254:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16754:934;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14486:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11004:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14932:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14966:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;782:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14426:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9911:100;9965:13;9998:5;9991:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9911:100;:::o;10483:169::-;10566:4;10583:39;10592:12;:10;:12::i;:::-;10606:7;10615:6;10583:8;:39::i;:::-;10640:4;10633:11;;10483:169;;;;:::o;14527:32::-;;;;;;;;;;;;;:::o;10232:108::-;10293:7;10320:12;;10313:19;;10232:108;:::o;14640:33::-;;;;:::o;11163:397::-;11260:4;11277:27;11287:4;11293:2;11297:6;11277:9;:27::i;:::-;11315:16;11334:11;:17;11346:4;11334:17;;;;;;;;;;;;;;;:31;11352:12;:10;:12::i;:::-;11334:31;;;;;;;;;;;;;;;;11315:50;;11396:6;11384:8;:18;;11376:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;11472:47;11481:4;11487:12;:10;:12::i;:::-;11512:6;11501:8;:17;11472:8;:47::i;:::-;11548:4;11541:11;;;11163:397;;;;;:::o;14361:23::-;;;;;;;;;;;;;:::o;22615:344::-;629:12;:10;:12::i;:::-;618:23;;:7;:5;:7::i;:::-;:23;;;610:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;22748:6:::1;22743:1;22727:13;:11;:13::i;:::-;:17;;;;:::i;:::-;22726:28;;;;:::i;:::-;22716:6;:38;;22708:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;22863:4;22858:1;22842:13;:11;:13::i;:::-;:17;;;;:::i;:::-;22841:26;;;;:::i;:::-;22831:6;:36;;22823:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;22945:6;22935:7;:16;;;;22615:344:::0;:::o;10131:93::-;10189:5;10214:2;10207:9;;10131:93;:::o;15071:30::-;;;;:::o;11737:211::-;11823:4;11840:78;11849:12;:10;:12::i;:::-;11863:7;11909:8;11872:11;:25;11884:12;:10;:12::i;:::-;11872:25;;;;;;;;;;;;;;;:34;11898:7;11872:34;;;;;;;;;;;;;;;;:45;;;;:::i;:::-;11840:8;:78::i;:::-;11936:4;11929:11;;11737:211;;;;:::o;14606:25::-;;;;;;;;;;;;;:::o;24228:213::-;629:12;:10;:12::i;:::-;618:23;;:7;:5;:7::i;:::-;:23;;;610:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;24347:8:::1;;;;;;;;;;;24339:16;;:4;:16;;::::0;24331:69:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;24428:5;24411:8;:14;24420:4;24411:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;24228:213:::0;;:::o;14890:33::-;;;;;;;;;;;;;:::o;23230:249::-;629:12;:10;:12::i;:::-;618:23;;:7;:5;:7::i;:::-;:23;;;610:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;23377:10:::1;:8;:10::i;:::-;23371:2;:16;;;;:::i;:::-;23362:4;23357:1;23341:13;:11;:13::i;:::-;:17;;;;:::i;:::-;23340:26;;;;:::i;:::-;23339:49;;;;:::i;:::-;23329:6;:59;;23321:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;23460:10;:8;:10::i;:::-;23454:2;:16;;;;:::i;:::-;23444:6;:27;;;;:::i;:::-;23436:5;:35;;;;23230:249:::0;:::o;14397:22::-;;;;:::o;15038:26::-;;;;:::o;22967:255::-;629:12;:10;:12::i;:::-;618:23;;:7;:5;:7::i;:::-;:23;;;610:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;23112:10:::1;:8;:10::i;:::-;23106:2;:16;;;;:::i;:::-;23097:4;23092:1;23076:13;:11;:13::i;:::-;:17;;;;:::i;:::-;23075:26;;;;:::i;:::-;23074:49;;;;:::i;:::-;23064:6;:59;;23056:108;;;;;;;;;;;;:::i;:::-;;;;;;;;;23203:10;:8;:10::i;:::-;23197:2;:16;;;;:::i;:::-;23187:6;:27;;;;:::i;:::-;23175:9;:39;;;;22967:255:::0;:::o;23487:120::-;629:12;:10;:12::i;:::-;618:23;;:7;:5;:7::i;:::-;:23;;;610:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;23593:6:::1;23575:9;:15;23585:4;23575:15;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;23487:120:::0;;:::o;22090:156::-;629:12;:10;:12::i;:::-;618:23;;:7;:5;:7::i;:::-;:23;;;610:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;22233:5:::1;22196:28;:34;22225:4;22196:34;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;22090:156:::0;;:::o;10348:127::-;10422:7;10449:9;:18;10459:7;10449:18;;;;;;;;;;;;;;;;10442:25;;10348:127;;;:::o;970:103::-;629:12;:10;:12::i;:::-;618:23;;:7;:5;:7::i;:::-;:23;;;610:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;1035:30:::1;1062:1;1035:18;:30::i;:::-;970:103::o:0;14457:20::-;;;;:::o;22394:93::-;629:12;:10;:12::i;:::-;618:23;;:7;:5;:7::i;:::-;:23;;;610:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;22474:5:::1;22457:14;;:22;;;;;;;;;;;;;;;;;;22394:93::o:0;687:87::-;733:7;760:6;;;;;;;;;;;753:13;;687:87;:::o;22497:110::-;629:12;:10;:12::i;:::-;618:23;;:7;:5;:7::i;:::-;:23;;;610:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;22592:7:::1;22577:12;;:22;;;;;;;;;;;;;;;;;;22497:110:::0;:::o;10019:104::-;10075:13;10108:7;10101:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10019:104;:::o;14785:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;14680:27::-;;;;:::o;11956:360::-;12042:4;12059:16;12078:11;:25;12090:12;:10;:12::i;:::-;12078:25;;;;;;;;;;;;;;;:34;12104:7;12078:34;;;;;;;;;;;;;;;;12059:53;;12143:8;12131;:20;;12123:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12223:52;12232:12;:10;:12::i;:::-;12246:7;12266:8;12255;:19;12223:8;:52::i;:::-;12304:4;12297:11;;;11956:360;;;;:::o;14568:31::-;;;;;;;;;;;;;:::o;14841:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;11568:161::-;11647:4;11664:35;11674:12;:10;:12::i;:::-;11688:2;11692:6;11664:9;:35::i;:::-;11717:4;11710:11;;11568:161;;;;:::o;15108:24::-;;;;:::o;23615:293::-;629:12;:10;:12::i;:::-;618:23;;:7;:5;:7::i;:::-;:23;;;610:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;23735:12:::1;23717:15;:30;;;;23770:9;23758;:21;;;;23822:9;;23804:15;;:27;;;;:::i;:::-;23790:11;:41;;;;23865:2;23850:11;;:17;;23842:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;23615:293:::0;;:::o;23916:300::-;629:12;:10;:12::i;:::-;618:23;;:7;:5;:7::i;:::-;:23;;;610:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;24038:12:::1;24019:16;:31;;;;24074:9;24061:10;:22;;;;24128:10;;24109:16;;:29;;;;:::i;:::-;24094:12;:44;;;;24173:2;24157:12;;:18;;24149:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;23916:300:::0;;:::o;24449:197::-;629:12;:10;:12::i;:::-;618:23;;:7;:5;:7::i;:::-;:23;;;610:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;24570:3:::1;24544:30;;:14;:30;;::::0;24536:63:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;24624:14;24610:11;;:28;;;;;;;;;;;;;;;;;;24449:197:::0;:::o;14716:60::-;;;;;;;;;;;;;;;;;;;;;;:::o;15004:25::-;;;;:::o;14318:36::-;;;;;;;;;;;;;:::o;22254:132::-;629:12;:10;:12::i;:::-;618:23;;:7;:5;:7::i;:::-;:23;;;610:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;22373:5:::1;22346:15;:24;22362:7;22346:24;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;22254:132:::0;;:::o;16754:934::-;16840:18;16896:95;17016:22;;;;;;;;;;;;;;;;;17006:33;;;;;;17064:10;;;;;;;;;;;;;;;;;17054:21;;;;;;17090:13;17126:4;16871:271;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;16861:282;;;;;;16840:303;;17154:18;17210:49;17284:23;;;;;;;;;;;;;;;;;17274:34;;;;;;17331:1;17185:159;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;17175:170;;;;;;17154:191;;17356:14;17439:10;17464;17383:118;;;;;;;;;:::i;:::-;;;;;;;;;;;;;17373:129;;;;;;17356:146;;17515:14;17532:26;17542:6;17550:1;17553;17556;17532:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17515:43;;17587:7;:5;:7::i;:::-;17577:17;;:6;:17;;;17569:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;17646:4;17629:14;;:21;;;;;;;;;;;;;;;;;;17676:4;17661:12;;:19;;;;;;;;;;;;;;;;;;16829:859;;;;16754:934;;;:::o;14486:34::-;;;;;;;;;;;;;:::o;11004:151::-;11093:7;11120:11;:18;11132:5;11120:18;;;;;;;;;;;;;;;:27;11139:7;11120:27;;;;;;;;;;;;;;;;11113:34;;11004:151;;;;:::o;14932:27::-;;;;:::o;14966:31::-;;;;:::o;782:180::-;629:12;:10;:12::i;:::-;618:23;;:7;:5;:7::i;:::-;:23;;;610:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;891:1:::1;871:22;;:8;:22;;::::0;863:52:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;926:28;945:8;926:18;:28::i;:::-;782:180:::0;:::o;14426:24::-;;;;:::o;124:98::-;177:7;204:10;197:17;;124:98;:::o;10660:336::-;10779:1;10762:19;;:5;:19;;;10754:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;10854:1;10835:21;;:7;:21;;;10827:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;10934:6;10904:11;:18;10916:5;10904:18;;;;;;;;;;;;;;;:27;10923:7;10904:27;;;;;;;;;;;;;;;:36;;;;10972:7;10956:32;;10965:5;10956:32;;;10981:6;10956:32;;;;;;:::i;:::-;;;;;;;;10660:336;;;:::o;19099:2975::-;19247:1;19231:18;;:4;:18;;;19223:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;19314:1;19300:16;;:2;:16;;;19292:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;19366:9;:15;19376:4;19366:15;;;;;;;;;;;;;;;;;;;;;;;;;19365:16;19357:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;19431:9;:13;19441:2;19431:13;;;;;;;;;;;;;;;;;;;;;;;;;19430:14;19422:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;19499:1;19489:6;:11;19485:93;;19517:28;19533:4;19539:2;19543:1;19517:15;:28::i;:::-;19560:7;;19485:93;19594:14;;;;;;;;;;;19590:958;;;19637:7;:5;:7::i;:::-;19629:15;;:4;:15;;;;:32;;;;;19654:7;:5;:7::i;:::-;19648:13;;:2;:13;;;;19629:32;:52;;;;;19679:1;19665:16;;:2;:16;;;;19629:52;:77;;;;;19699:6;19685:21;;:2;:21;;;;19629:77;:91;;;;;19711:9;;;;;;;;;;;19710:10;19629:91;19625:912;;;19746:14;;;;;;;;;;;19741:143;;19793:15;:21;19809:4;19793:21;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;;19818:15;:19;19834:2;19818:19;;;;;;;;;;;;;;;;;;;;;;;;;19793:44;19785:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;19741:143;19908:8;:14;19917:4;19908:14;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;19927:28;:32;19956:2;19927:32;;;;;;;;;;;;;;;;;;;;;;;;;19926:33;19908:51;19904:618;;;20002:5;;19992:6;:15;;19984:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;20107:9;;20090:13;20100:2;20090:9;:13::i;:::-;20081:6;:22;;;;:::i;:::-;:35;;20073:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19904:618;;;20187:8;:12;20196:2;20187:12;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;20204:28;:34;20233:4;20204:34;;;;;;;;;;;;;;;;;;;;;;;;;20203:35;20187:51;20183:339;;;20281:5;;20271:6;:15;;20263:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20183:339;;;20378:28;:32;20407:2;20378:32;;;;;;;;;;;;;;;;;;;;;;;;;20373:149;;20469:9;;20452:13;20462:2;20452:9;:13::i;:::-;20443:6;:22;;;;:::i;:::-;:35;;20435:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20373:149;20183:339;19904:618;19625:912;19590:958;20587:1;20564:25;;:11;;;;;;;;;;;:25;;;;:79;;;;;20606:11;;;;;;;;;;;20593:35;;;20637:4;20593:50;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20564:79;20560:265;;;20660:10;20686:11;;;;;;;;;;;20673:31;;;20705:4;20711:2;20723:8;;;;;;;;;;;20734:9;;20745:5;;20752:7;;20673:87;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20660:100;;20783:5;20775:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;20645:180;20560:265;20837:20;20860:24;20878:4;20860:9;:24::i;:::-;20837:47;;20895:12;20926:7;;20910:12;:23;;20895:38;;20948:12;;;;;;;;;;;:23;;;;;20964:7;20948:23;:37;;;;;20976:9;;;;;;;;;;;20975:10;20948:37;:69;;;;;21003:8;:14;21012:4;21003:14;;;;;;;;;;;;;;;;;;;;;;;;;21002:15;20948:69;:95;;;;;21022:15;:21;21038:4;21022:21;;;;;;;;;;;;;;;;;;;;;;;;;21021:22;20948:95;:119;;;;;21048:15;:19;21064:2;21048:19;;;;;;;;;;;;;;;;;;;;;;;;;21047:20;20948:119;20944:223;;;21096:4;21084:9;;:16;;;;;;;;;;;;;;;;;;21115:8;:6;:8::i;:::-;21150:5;21138:9;;:17;;;;;;;;;;;;;;;;;;20944:223;21179:9;21192;;;;;;;;;;;21191:10;21179:22;;21216:15;:21;21232:4;21216:21;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;;21241:15;:19;21257:2;21241:19;;;;;;;;;;;;;;;;;;;;;;;;;21216:44;21212:75;;;21282:5;21275:12;;21212:75;21300:12;21331:4;21327:694;;;21356:8;:12;21365:2;21356:12;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;;21387:1;21372:12;;:16;21356:32;21352:541;;;21416:33;21445:3;21416:24;21427:12;;21416:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;21409:40;;21506:12;;21492:10;;21485:4;:17;;;;:::i;:::-;21484:34;;;;:::i;:::-;21468:12;;:50;;;;;;;:::i;:::-;;;;;;;;21587:12;;21567:16;;21560:4;:23;;;;:::i;:::-;21559:40;;;;:::i;:::-;21537:18;;:62;;;;;;;:::i;:::-;;;;;;;;21352:541;;;21638:8;:14;21647:4;21638:14;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;;21670:1;21656:11;;:15;21638:33;21634:259;;;21699:32;21727:3;21699:23;21710:11;;21699:6;:10;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;21692:39;;21787:11;;21774:9;;21767:4;:16;;;;:::i;:::-;21766:32;;;;:::i;:::-;21750:12;;:48;;;;;;;:::i;:::-;;;;;;;;21866:11;;21847:15;;21840:4;:22;;;;:::i;:::-;21839:38;;;;:::i;:::-;21817:18;;:60;;;;;;;:::i;:::-;;;;;;;;21634:259;21352:541;21918:1;21911:4;:8;21907:73;;;21938:42;21954:4;21968;21975;21938:15;:42::i;:::-;21907:73;22005:4;21995:14;;;;;:::i;:::-;;;21327:694;22033:33;22049:4;22055:2;22059:6;22033:15;:33::i;:::-;19212:2862;;;;19099:2975;;;;:::o;1081:191::-;1155:16;1174:6;;;;;;;;;;;1155:25;;1200:8;1191:6;;:17;;;;;;;;;;;;;;;;;;1255:8;1224:40;;1245:8;1224:40;;;;;;;;;;;;1144:128;1081:191;:::o;13472:607::-;13585:1;13569:18;;:4;:18;;;13561:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;13654:1;13640:16;;:2;:16;;;13632:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;13699:38;13720:4;13726:2;13730:6;13699:20;:38::i;:::-;13748:19;13770:9;:15;13780:4;13770:15;;;;;;;;;;;;;;;;13748:37;;13819:6;13804:11;:21;;13796:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;13930:6;13916:11;:20;13898:9;:15;13908:4;13898:15;;;;;;;;;;;;;;;:38;;;;13975:6;13958:9;:13;13968:2;13958:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;14012:2;13997:26;;14006:4;13997:26;;;14016:6;13997:26;;;;;;:::i;:::-;;;;;;;;14034:37;14054:4;14060:2;14064:6;14034:19;:37::i;:::-;13550:529;13472:607;;;:::o;17698:831::-;17735:12;17758:25;17807:12;;17786:18;;:33;;;;:::i;:::-;17758:61;;17830:20;17853:24;17871:4;17853:9;:24::i;:::-;17830:47;;17915:1;17894:17;:22;:43;;;;17936:1;17920:12;:17;17894:43;17890:69;;;17952:7;;;;;17890:69;18000:2;17990:7;;:12;;;;:::i;:::-;17975;:27;17971:73;;;18042:2;18032:7;;:12;;;;:::i;:::-;18017:27;;17971:73;18057:22;18082:21;18057:46;;18114:24;18125:12;18114:10;:24::i;:::-;18151:18;18172:41;18198:14;18172:21;:25;;:41;;;;:::i;:::-;18151:62;;18224:17;18244:51;18277:17;18244:28;18259:12;;18244:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;18224:71;;18330:10;;;;;;;;;;;18322:24;;18354:9;18322:46;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18308:60;;;;;18401:16;;;;;;;;;;;18393:30;;18432:21;18393:66;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18379:80;;;;;18493:1;18472:18;:22;;;;18520:1;18505:12;:16;;;;17724:805;;;;;;17698:831;:::o;1303:98::-;1361:7;1392:1;1388;:5;;;;:::i;:::-;1381:12;;1303:98;;;;:::o;1687:::-;1745:7;1776:1;1772;:5;;;;:::i;:::-;1765:12;;1687:98;;;;:::o;13339:125::-;;;;:::o;14087:144::-;;;;:::o;18538:553::-;18653:21;18691:1;18677:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18653:40;;18722:4;18704;18709:1;18704:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18748:10;;;;;;;;;;;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18738:4;18743:1;18738:7;;;;;;;;:::i;:::-;;;;;;;:27;;;;;;;;;;;18778:52;18795:4;18810:10;;;;;;;;;;;18823:6;18778:8;:52::i;:::-;18869:10;;;;;;;;;;;:61;;;18945:6;18966:1;19010:4;19037;19057:15;18869:214;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18582:509;18538:553;:::o;2332:98::-;2390:7;2421:1;2417;:5;;;;:::i;:::-;2410:12;;2332:98;;;;:::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;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:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:118::-;4510:24;4528:5;4510:24;:::i;:::-;4505:3;4498:37;4423:118;;:::o;4547:222::-;4640:4;4678:2;4667:9;4663:18;4655:26;;4691:71;4759:1;4748:9;4744:17;4735:6;4691:71;:::i;:::-;4547:222;;;;:::o;4775:329::-;4834:6;4883:2;4871:9;4862:7;4858:23;4854:32;4851:119;;;4889:79;;:::i;:::-;4851:119;5009:1;5034:53;5079:7;5070:6;5059:9;5055:22;5034:53;:::i;:::-;5024:63;;4980:117;4775:329;;;;:::o;5110:86::-;5145:7;5185:4;5178:5;5174:16;5163:27;;5110:86;;;:::o;5202:112::-;5285:22;5301:5;5285:22;:::i;:::-;5280:3;5273:35;5202:112;;:::o;5320:214::-;5409:4;5447:2;5436:9;5432:18;5424:26;;5460:67;5524:1;5513:9;5509:17;5500:6;5460:67;:::i;:::-;5320:214;;;;:::o;5540:116::-;5610:21;5625:5;5610:21;:::i;:::-;5603:5;5600:32;5590:60;;5646:1;5643;5636:12;5590:60;5540:116;:::o;5662:133::-;5705:5;5743:6;5730:20;5721:29;;5759:30;5783:5;5759:30;:::i;:::-;5662:133;;;;:::o;5801:468::-;5866:6;5874;5923:2;5911:9;5902:7;5898:23;5894:32;5891:119;;;5929:79;;:::i;:::-;5891:119;6049:1;6074:53;6119:7;6110:6;6099:9;6095:22;6074:53;:::i;:::-;6064:63;;6020:117;6176:2;6202:50;6244:7;6235:6;6224:9;6220:22;6202:50;:::i;:::-;6192:60;;6147:115;5801:468;;;;;:::o;6275:329::-;6334:6;6383:2;6371:9;6362:7;6358:23;6354:32;6351:119;;;6389:79;;:::i;:::-;6351:119;6509:1;6534:53;6579:7;6570:6;6559:9;6555:22;6534:53;:::i;:::-;6524:63;;6480:117;6275:329;;;;:::o;6610:323::-;6666:6;6715:2;6703:9;6694:7;6690:23;6686:32;6683:119;;;6721:79;;:::i;:::-;6683:119;6841:1;6866:50;6908:7;6899:6;6888:9;6884:22;6866:50;:::i;:::-;6856:60;;6812:114;6610:323;;;;:::o;6939:474::-;7007:6;7015;7064:2;7052:9;7043:7;7039:23;7035:32;7032:119;;;7070:79;;:::i;:::-;7032:119;7190:1;7215:53;7260:7;7251:6;7240:9;7236:22;7215:53;:::i;:::-;7205:63;;7161:117;7317:2;7343:53;7388:7;7379:6;7368:9;7364:22;7343:53;:::i;:::-;7333:63;;7288:118;6939:474;;;;;:::o;7419:60::-;7447:3;7468:5;7461:12;;7419:60;;;:::o;7485:142::-;7535:9;7568:53;7586:34;7595:24;7613:5;7595:24;:::i;:::-;7586:34;:::i;:::-;7568:53;:::i;:::-;7555:66;;7485:142;;;:::o;7633:126::-;7683:9;7716:37;7747:5;7716:37;:::i;:::-;7703:50;;7633:126;;;:::o;7765:152::-;7841:9;7874:37;7905:5;7874:37;:::i;:::-;7861:50;;7765:152;;;:::o;7923:183::-;8036:63;8093:5;8036:63;:::i;:::-;8031:3;8024:76;7923:183;;:::o;8112:274::-;8231:4;8269:2;8258:9;8254:18;8246:26;;8282:97;8376:1;8365:9;8361:17;8352:6;8282:97;:::i;:::-;8112:274;;;;:::o;8392:118::-;8463:22;8479:5;8463:22;:::i;:::-;8456:5;8453:33;8443:61;;8500:1;8497;8490:12;8443:61;8392:118;:::o;8516:135::-;8560:5;8598:6;8585:20;8576:29;;8614:31;8639:5;8614:31;:::i;:::-;8516:135;;;;:::o;8657:77::-;8694:7;8723:5;8712:16;;8657:77;;;:::o;8740:122::-;8813:24;8831:5;8813:24;:::i;:::-;8806:5;8803:35;8793:63;;8852:1;8849;8842:12;8793:63;8740:122;:::o;8868:139::-;8914:5;8952:6;8939:20;8930:29;;8968:33;8995:5;8968:33;:::i;:::-;8868:139;;;;:::o;9013:615::-;9088:6;9096;9104;9153:2;9141:9;9132:7;9128:23;9124:32;9121:119;;;9159:79;;:::i;:::-;9121:119;9279:1;9304:51;9347:7;9338:6;9327:9;9323:22;9304:51;:::i;:::-;9294:61;;9250:115;9404:2;9430:53;9475:7;9466:6;9455:9;9451:22;9430:53;:::i;:::-;9420:63;;9375:118;9532:2;9558:53;9603:7;9594:6;9583:9;9579:22;9558:53;:::i;:::-;9548:63;;9503:118;9013:615;;;;;:::o;9634:474::-;9702:6;9710;9759:2;9747:9;9738:7;9734:23;9730:32;9727:119;;;9765:79;;:::i;:::-;9727:119;9885:1;9910:53;9955:7;9946:6;9935:9;9931:22;9910:53;:::i;:::-;9900:63;;9856:117;10012:2;10038:53;10083:7;10074:6;10063:9;10059:22;10038:53;:::i;:::-;10028:63;;9983:118;9634:474;;;;;:::o;10114:180::-;10162:77;10159:1;10152:88;10259:4;10256:1;10249:15;10283:4;10280:1;10273:15;10300:320;10344:6;10381:1;10375:4;10371:12;10361:22;;10428:1;10422:4;10418:12;10449:18;10439:81;;10505:4;10497:6;10493:17;10483:27;;10439:81;10567:2;10559:6;10556:14;10536:18;10533:38;10530:84;;10586:18;;:::i;:::-;10530:84;10351:269;10300:320;;;:::o;10626:179::-;10766:31;10762:1;10754:6;10750:14;10743:55;10626:179;:::o;10811:366::-;10953:3;10974:67;11038:2;11033:3;10974:67;:::i;:::-;10967:74;;11050:93;11139:3;11050:93;:::i;:::-;11168:2;11163:3;11159:12;11152:19;;10811:366;;;:::o;11183:419::-;11349:4;11387:2;11376:9;11372:18;11364:26;;11436:9;11430:4;11426:20;11422:1;11411:9;11407:17;11400:47;11464:131;11590:4;11464:131;:::i;:::-;11456:139;;11183:419;;;:::o;11608:163::-;11748:15;11744:1;11736:6;11732:14;11725:39;11608:163;:::o;11777:366::-;11919:3;11940:67;12004:2;11999:3;11940:67;:::i;:::-;11933:74;;12016:93;12105:3;12016:93;:::i;:::-;12134:2;12129:3;12125:12;12118:19;;11777:366;;;:::o;12149:419::-;12315:4;12353:2;12342:9;12338:18;12330:26;;12402:9;12396:4;12392:20;12388:1;12377:9;12373:17;12366:47;12430:131;12556:4;12430:131;:::i;:::-;12422:139;;12149:419;;;:::o;12574:180::-;12622:77;12619:1;12612:88;12719:4;12716:1;12709:15;12743:4;12740:1;12733:15;12760:410;12800:7;12823:20;12841:1;12823:20;:::i;:::-;12818:25;;12857:20;12875:1;12857:20;:::i;:::-;12852:25;;12912:1;12909;12905:9;12934:30;12952:11;12934:30;:::i;:::-;12923:41;;13113:1;13104:7;13100:15;13097:1;13094:22;13074:1;13067:9;13047:83;13024:139;;13143:18;;:::i;:::-;13024:139;12808:362;12760:410;;;;:::o;13176:180::-;13224:77;13221:1;13214:88;13321:4;13318:1;13311:15;13345:4;13342:1;13335:15;13362:185;13402:1;13419:20;13437:1;13419:20;:::i;:::-;13414:25;;13453:20;13471:1;13453:20;:::i;:::-;13448:25;;13492:1;13482:35;;13497:18;;:::i;:::-;13482:35;13539:1;13536;13532:9;13527:14;;13362:185;;;;:::o;13553:240::-;13693:34;13689:1;13681:6;13677:14;13670:58;13762:23;13757:2;13749:6;13745:15;13738:48;13553:240;:::o;13799:366::-;13941:3;13962:67;14026:2;14021:3;13962:67;:::i;:::-;13955:74;;14038:93;14127:3;14038:93;:::i;:::-;14156:2;14151:3;14147:12;14140:19;;13799:366;;;:::o;14171:419::-;14337:4;14375:2;14364:9;14360:18;14352:26;;14424:9;14418:4;14414:20;14410:1;14399:9;14395:17;14388:47;14452:131;14578:4;14452:131;:::i;:::-;14444:139;;14171:419;;;:::o;14596:239::-;14736:34;14732:1;14724:6;14720:14;14713:58;14805:22;14800:2;14792:6;14788:15;14781:47;14596:239;:::o;14841:366::-;14983:3;15004:67;15068:2;15063:3;15004:67;:::i;:::-;14997:74;;15080:93;15169:3;15080:93;:::i;:::-;15198:2;15193:3;15189:12;15182:19;;14841:366;;;:::o;15213:419::-;15379:4;15417:2;15406:9;15402:18;15394:26;;15466:9;15460:4;15456:20;15452:1;15441:9;15437:17;15430:47;15494:131;15620:4;15494:131;:::i;:::-;15486:139;;15213:419;;;:::o;15638:191::-;15678:3;15697:20;15715:1;15697:20;:::i;:::-;15692:25;;15731:20;15749:1;15731:20;:::i;:::-;15726:25;;15774:1;15771;15767:9;15760:16;;15795:3;15792:1;15789:10;15786:36;;;15802:18;;:::i;:::-;15786:36;15638:191;;;;:::o;15835:227::-;15975:34;15971:1;15963:6;15959:14;15952:58;16044:10;16039:2;16031:6;16027:15;16020:35;15835:227;:::o;16068:366::-;16210:3;16231:67;16295:2;16290:3;16231:67;:::i;:::-;16224:74;;16307:93;16396:3;16307:93;:::i;:::-;16425:2;16420:3;16416:12;16409:19;;16068:366;;;:::o;16440:419::-;16606:4;16644:2;16633:9;16629:18;16621:26;;16693:9;16687:4;16683:20;16679:1;16668:9;16664:17;16657:47;16721:131;16847:4;16721:131;:::i;:::-;16713:139;;16440:419;;;:::o;16865:102::-;16907:8;16954:5;16951:1;16947:13;16926:34;;16865:102;;;:::o;16973:848::-;17034:5;17041:4;17065:6;17056:15;;17089:5;17080:14;;17103:712;17124:1;17114:8;17111:15;17103:712;;;17219:4;17214:3;17210:14;17204:4;17201:24;17198:50;;;17228:18;;:::i;:::-;17198:50;17278:1;17268:8;17264:16;17261:451;;;17693:4;17686:5;17682:16;17673:25;;17261:451;17743:4;17737;17733:15;17725:23;;17773:32;17796:8;17773:32;:::i;:::-;17761:44;;17103:712;;;16973:848;;;;;;;:::o;17827:1073::-;17881:5;18072:8;18062:40;;18093:1;18084:10;;18095:5;;18062:40;18121:4;18111:36;;18138:1;18129:10;;18140:5;;18111:36;18207:4;18255:1;18250:27;;;;18291:1;18286:191;;;;18200:277;;18250:27;18268:1;18259:10;;18270:5;;;18286:191;18331:3;18321:8;18318:17;18315:43;;;18338:18;;:::i;:::-;18315:43;18387:8;18384:1;18380:16;18371:25;;18422:3;18415:5;18412:14;18409:40;;;18429:18;;:::i;:::-;18409:40;18462:5;;;18200:277;;18586:2;18576:8;18573:16;18567:3;18561:4;18558:13;18554:36;18536:2;18526:8;18523:16;18518:2;18512:4;18509:12;18505:35;18489:111;18486:246;;;18642:8;18636:4;18632:19;18623:28;;18677:3;18670:5;18667:14;18664:40;;;18684:18;;:::i;:::-;18664:40;18717:5;;18486:246;18757:42;18795:3;18785:8;18779:4;18776:1;18757:42;:::i;:::-;18742:57;;;;18831:4;18826:3;18822:14;18815:5;18812:25;18809:51;;;18840:18;;:::i;:::-;18809:51;18889:4;18882:5;18878:16;18869:25;;17827:1073;;;;;;:::o;18906:281::-;18964:5;18988:23;19006:4;18988:23;:::i;:::-;18980:31;;19032:25;19048:8;19032:25;:::i;:::-;19020:37;;19076:104;19113:66;19103:8;19097:4;19076:104;:::i;:::-;19067:113;;18906:281;;;;:::o;19193:182::-;19333:34;19329:1;19321:6;19317:14;19310:58;19193:182;:::o;19381:366::-;19523:3;19544:67;19608:2;19603:3;19544:67;:::i;:::-;19537:74;;19620:93;19709:3;19620:93;:::i;:::-;19738:2;19733:3;19729:12;19722:19;;19381:366;;;:::o;19753:419::-;19919:4;19957:2;19946:9;19942:18;19934:26;;20006:9;20000:4;19996:20;19992:1;19981:9;19977:17;19970:47;20034:131;20160:4;20034:131;:::i;:::-;20026:139;;19753:419;;;:::o;20178:223::-;20318:34;20314:1;20306:6;20302:14;20295:58;20387:6;20382:2;20374:6;20370:15;20363:31;20178:223;:::o;20407:366::-;20549:3;20570:67;20634:2;20629:3;20570:67;:::i;:::-;20563:74;;20646:93;20735:3;20646:93;:::i;:::-;20764:2;20759:3;20755:12;20748:19;;20407:366;;;:::o;20779:419::-;20945:4;20983:2;20972:9;20968:18;20960:26;;21032:9;21026:4;21022:20;21018:1;21007:9;21003:17;20996:47;21060:131;21186:4;21060:131;:::i;:::-;21052:139;;20779:419;;;:::o;21204:181::-;21344:33;21340:1;21332:6;21328:14;21321:57;21204:181;:::o;21391:366::-;21533:3;21554:67;21618:2;21613:3;21554:67;:::i;:::-;21547:74;;21630:93;21719:3;21630:93;:::i;:::-;21748:2;21743:3;21739:12;21732:19;;21391:366;;;:::o;21763:419::-;21929:4;21967:2;21956:9;21952:18;21944:26;;22016:9;22010:4;22006:20;22002:1;21991:9;21987:17;21980:47;22044:131;22170:4;22044:131;:::i;:::-;22036:139;;21763:419;;;:::o;22188:178::-;22328:30;22324:1;22316:6;22312:14;22305:54;22188:178;:::o;22372:366::-;22514:3;22535:67;22599:2;22594:3;22535:67;:::i;:::-;22528:74;;22611:93;22700:3;22611:93;:::i;:::-;22729:2;22724:3;22720:12;22713:19;;22372:366;;;:::o;22744:419::-;22910:4;22948:2;22937:9;22933:18;22925:26;;22997:9;22991:4;22987:20;22983:1;22972:9;22968:17;22961:47;23025:131;23151:4;23025:131;:::i;:::-;23017:139;;22744:419;;;:::o;23169:170::-;23309:22;23305:1;23297:6;23293:14;23286:46;23169:170;:::o;23345:366::-;23487:3;23508:67;23572:2;23567:3;23508:67;:::i;:::-;23501:74;;23584:93;23673:3;23584:93;:::i;:::-;23702:2;23697:3;23693:12;23686:19;;23345:366;;;:::o;23717:419::-;23883:4;23921:2;23910:9;23906:18;23898:26;;23970:9;23964:4;23960:20;23956:1;23945:9;23941:17;23934:47;23998:131;24124:4;23998:131;:::i;:::-;23990:139;;23717:419;;;:::o;24142:118::-;24229:24;24247:5;24229:24;:::i;:::-;24224:3;24217:37;24142:118;;:::o;24266:664::-;24471:4;24509:3;24498:9;24494:19;24486:27;;24523:71;24591:1;24580:9;24576:17;24567:6;24523:71;:::i;:::-;24604:72;24672:2;24661:9;24657:18;24648:6;24604:72;:::i;:::-;24686;24754:2;24743:9;24739:18;24730:6;24686:72;:::i;:::-;24768;24836:2;24825:9;24821:18;24812:6;24768:72;:::i;:::-;24850:73;24918:3;24907:9;24903:19;24894:6;24850:73;:::i;:::-;24266:664;;;;;;;;:::o;24936:442::-;25085:4;25123:2;25112:9;25108:18;25100:26;;25136:71;25204:1;25193:9;25189:17;25180:6;25136:71;:::i;:::-;25217:72;25285:2;25274:9;25270:18;25261:6;25217:72;:::i;:::-;25299;25367:2;25356:9;25352:18;25343:6;25299:72;:::i;:::-;24936:442;;;;;;:::o;25384:148::-;25486:11;25523:3;25508:18;;25384:148;;;;:::o;25538:214::-;25678:66;25674:1;25666:6;25662:14;25655:90;25538:214;:::o;25758:400::-;25918:3;25939:84;26021:1;26016:3;25939:84;:::i;:::-;25932:91;;26032:93;26121:3;26032:93;:::i;:::-;26150:1;26145:3;26141:11;26134:18;;25758:400;;;:::o;26164:79::-;26203:7;26232:5;26221:16;;26164:79;;;:::o;26249:157::-;26354:45;26374:24;26392:5;26374:24;:::i;:::-;26354:45;:::i;:::-;26349:3;26342:58;26249:157;;:::o;26412:663::-;26653:3;26675:148;26819:3;26675:148;:::i;:::-;26668:155;;26833:75;26904:3;26895:6;26833:75;:::i;:::-;26933:2;26928:3;26924:12;26917:19;;26946:75;27017:3;27008:6;26946:75;:::i;:::-;27046:2;27041:3;27037:12;27030:19;;27066:3;27059:10;;26412:663;;;;;:::o;27081:545::-;27254:4;27292:3;27281:9;27277:19;27269:27;;27306:71;27374:1;27363:9;27359:17;27350:6;27306:71;:::i;:::-;27387:68;27451:2;27440:9;27436:18;27427:6;27387:68;:::i;:::-;27465:72;27533:2;27522:9;27518:18;27509:6;27465:72;:::i;:::-;27547;27615:2;27604:9;27600:18;27591:6;27547:72;:::i;:::-;27081:545;;;;;;;:::o;27632:167::-;27772:19;27768:1;27760:6;27756:14;27749:43;27632:167;:::o;27805:366::-;27947:3;27968:67;28032:2;28027:3;27968:67;:::i;:::-;27961:74;;28044:93;28133:3;28044:93;:::i;:::-;28162:2;28157:3;28153:12;28146:19;;27805:366;;;:::o;28177:419::-;28343:4;28381:2;28370:9;28366:18;28358:26;;28430:9;28424:4;28420:20;28416:1;28405:9;28401:17;28394:47;28458:131;28584:4;28458:131;:::i;:::-;28450:139;;28177:419;;;:::o;28602:167::-;28742:19;28738:1;28730:6;28726:14;28719:43;28602:167;:::o;28775:366::-;28917:3;28938:67;29002:2;28997:3;28938:67;:::i;:::-;28931:74;;29014:93;29103:3;29014:93;:::i;:::-;29132:2;29127:3;29123:12;29116:19;;28775:366;;;:::o;29147:419::-;29313:4;29351:2;29340:9;29336:18;29328:26;;29400:9;29394:4;29390:20;29386:1;29375:9;29371:17;29364:47;29428:131;29554:4;29428:131;:::i;:::-;29420:139;;29147:419;;;:::o;29572:180::-;29712:32;29708:1;29700:6;29696:14;29689:56;29572:180;:::o;29758:366::-;29900:3;29921:67;29985:2;29980:3;29921:67;:::i;:::-;29914:74;;29997:93;30086:3;29997:93;:::i;:::-;30115:2;30110:3;30106:12;30099:19;;29758:366;;;:::o;30130:419::-;30296:4;30334:2;30323:9;30319:18;30311:26;;30383:9;30377:4;30373:20;30369:1;30358:9;30354:17;30347:47;30411:131;30537:4;30411:131;:::i;:::-;30403:139;;30130:419;;;:::o;30555:182::-;30695:34;30691:1;30683:6;30679:14;30672:58;30555:182;:::o;30743:366::-;30885:3;30906:67;30970:2;30965:3;30906:67;:::i;:::-;30899:74;;30982:93;31071:3;30982:93;:::i;:::-;31100:2;31095:3;31091:12;31084:19;;30743:366;;;:::o;31115:419::-;31281:4;31319:2;31308:9;31304:18;31296:26;;31368:9;31362:4;31358:20;31354:1;31343:9;31339:17;31332:47;31396:131;31522:4;31396:131;:::i;:::-;31388:139;;31115:419;;;:::o;31540:177::-;31680:29;31676:1;31668:6;31664:14;31657:53;31540:177;:::o;31723:366::-;31865:3;31886:67;31950:2;31945:3;31886:67;:::i;:::-;31879:74;;31962:93;32051:3;31962:93;:::i;:::-;32080:2;32075:3;32071:12;32064:19;;31723:366;;;:::o;32095:419::-;32261:4;32299:2;32288:9;32284:18;32276:26;;32348:9;32342:4;32338:20;32334:1;32323:9;32319:17;32312:47;32376:131;32502:4;32376:131;:::i;:::-;32368:139;;32095:419;;;:::o;32520:175::-;32660:27;32656:1;32648:6;32644:14;32637:51;32520:175;:::o;32701:366::-;32843:3;32864:67;32928:2;32923:3;32864:67;:::i;:::-;32857:74;;32940:93;33029:3;32940:93;:::i;:::-;33058:2;33053:3;33049:12;33042:19;;32701:366;;;:::o;33073:419::-;33239:4;33277:2;33266:9;33262:18;33254:26;;33326:9;33320:4;33316:20;33312:1;33301:9;33297:17;33290:47;33354:131;33480:4;33354:131;:::i;:::-;33346:139;;33073:419;;;:::o;33498:175::-;33638:27;33634:1;33626:6;33622:14;33615:51;33498:175;:::o;33679:366::-;33821:3;33842:67;33906:2;33901:3;33842:67;:::i;:::-;33835:74;;33918:93;34007:3;33918:93;:::i;:::-;34036:2;34031:3;34027:12;34020:19;;33679:366;;;:::o;34051:419::-;34217:4;34255:2;34244:9;34240:18;34232:26;;34304:9;34298:4;34294:20;34290:1;34279:9;34275:17;34268:47;34332:131;34458:4;34332:131;:::i;:::-;34324:139;;34051:419;;;:::o;34476:173::-;34616:25;34612:1;34604:6;34600:14;34593:49;34476:173;:::o;34655:366::-;34797:3;34818:67;34882:2;34877:3;34818:67;:::i;:::-;34811:74;;34894:93;34983:3;34894:93;:::i;:::-;35012:2;35007:3;35003:12;34996:19;;34655:366;;;:::o;35027:419::-;35193:4;35231:2;35220:9;35216:18;35208:26;;35280:9;35274:4;35270:20;35266:1;35255:9;35251:17;35244:47;35308:131;35434:4;35308:131;:::i;:::-;35300:139;;35027:419;;;:::o;35452:172::-;35592:24;35588:1;35580:6;35576:14;35569:48;35452:172;:::o;35630:366::-;35772:3;35793:67;35857:2;35852:3;35793:67;:::i;:::-;35786:74;;35869:93;35958:3;35869:93;:::i;:::-;35987:2;35982:3;35978:12;35971:19;;35630:366;;;:::o;36002:419::-;36168:4;36206:2;36195:9;36191:18;36183:26;;36255:9;36249:4;36245:20;36241:1;36230:9;36226:17;36219:47;36283:131;36409:4;36283:131;:::i;:::-;36275:139;;36002:419;;;:::o;36427:225::-;36567:34;36563:1;36555:6;36551:14;36544:58;36636:8;36631:2;36623:6;36619:15;36612:33;36427:225;:::o;36658:366::-;36800:3;36821:67;36885:2;36880:3;36821:67;:::i;:::-;36814:74;;36897:93;36986:3;36897:93;:::i;:::-;37015:2;37010:3;37006:12;36999:19;;36658:366;;;:::o;37030:419::-;37196:4;37234:2;37223:9;37219:18;37211:26;;37283:9;37277:4;37273:20;37269:1;37258:9;37254:17;37247:47;37311:131;37437:4;37311:131;:::i;:::-;37303:139;;37030:419;;;:::o;37455:169::-;37595:21;37591:1;37583:6;37579:14;37572:45;37455:169;:::o;37630:366::-;37772:3;37793:67;37857:2;37852:3;37793:67;:::i;:::-;37786:74;;37869:93;37958:3;37869:93;:::i;:::-;37987:2;37982:3;37978:12;37971:19;;37630:366;;;:::o;38002:419::-;38168:4;38206:2;38195:9;38191:18;38183:26;;38255:9;38249:4;38245:20;38241:1;38230:9;38226:17;38219:47;38283:131;38409:4;38283:131;:::i;:::-;38275:139;;38002:419;;;:::o;38427:226::-;38567:34;38563:1;38555:6;38551:14;38544:58;38636:9;38631:2;38623:6;38619:15;38612:34;38427:226;:::o;38659:366::-;38801:3;38822:67;38886:2;38881:3;38822:67;:::i;:::-;38815:74;;38898:93;38987:3;38898:93;:::i;:::-;39016:2;39011:3;39007:12;39000:19;;38659:366;;;:::o;39031:419::-;39197:4;39235:2;39224:9;39220:18;39212:26;;39284:9;39278:4;39274:20;39270:1;39259:9;39255:17;39248:47;39312:131;39438:4;39312:131;:::i;:::-;39304:139;;39031:419;;;:::o;39456:137::-;39510:5;39541:6;39535:13;39526:22;;39557:30;39581:5;39557:30;:::i;:::-;39456:137;;;;:::o;39599:345::-;39666:6;39715:2;39703:9;39694:7;39690:23;39686:32;39683:119;;;39721:79;;:::i;:::-;39683:119;39841:1;39866:61;39919:7;39910:6;39899:9;39895:22;39866:61;:::i;:::-;39856:71;;39812:125;39599:345;;;;:::o;39950:775::-;40183:4;40221:3;40210:9;40206:19;40198:27;;40235:71;40303:1;40292:9;40288:17;40279:6;40235:71;:::i;:::-;40316:72;40384:2;40373:9;40369:18;40360:6;40316:72;:::i;:::-;40398;40466:2;40455:9;40451:18;40442:6;40398:72;:::i;:::-;40480;40548:2;40537:9;40533:18;40524:6;40480:72;:::i;:::-;40562:73;40630:3;40619:9;40615:19;40606:6;40562:73;:::i;:::-;40645;40713:3;40702:9;40698:19;40689:6;40645:73;:::i;:::-;39950:775;;;;;;;;;:::o;40731:170::-;40871:22;40867:1;40859:6;40855:14;40848:46;40731:170;:::o;40907:366::-;41049:3;41070:67;41134:2;41129:3;41070:67;:::i;:::-;41063:74;;41146:93;41235:3;41146:93;:::i;:::-;41264:2;41259:3;41255:12;41248:19;;40907:366;;;:::o;41279:419::-;41445:4;41483:2;41472:9;41468:18;41460:26;;41532:9;41526:4;41522:20;41518:1;41507:9;41503:17;41496:47;41560:131;41686:4;41560:131;:::i;:::-;41552:139;;41279:419;;;:::o;41704:194::-;41744:4;41764:20;41782:1;41764:20;:::i;:::-;41759:25;;41798:20;41816:1;41798:20;:::i;:::-;41793:25;;41842:1;41839;41835:9;41827:17;;41866:1;41860:4;41857:11;41854:37;;;41871:18;;:::i;:::-;41854:37;41704:194;;;;:::o;41904:179::-;42044:31;42040:1;42032:6;42028:14;42021:55;41904:179;:::o;42089:366::-;42231:3;42252:67;42316:2;42311:3;42252:67;:::i;:::-;42245:74;;42328:93;42417:3;42328:93;:::i;:::-;42446:2;42441:3;42437:12;42430:19;;42089:366;;;:::o;42461:419::-;42627:4;42665:2;42654:9;42650:18;42642:26;;42714:9;42708:4;42704:20;42700:1;42689:9;42685:17;42678:47;42742:131;42868:4;42742:131;:::i;:::-;42734:139;;42461:419;;;:::o;42886:177::-;43026:29;43022:1;43014:6;43010:14;43003:53;42886:177;:::o;43069:366::-;43211:3;43232:67;43296:2;43291:3;43232:67;:::i;:::-;43225:74;;43308:93;43397:3;43308:93;:::i;:::-;43426:2;43421:3;43417:12;43410:19;;43069:366;;;:::o;43441:419::-;43607:4;43645:2;43634:9;43630:18;43622:26;;43694:9;43688:4;43684:20;43680:1;43669:9;43665:17;43658:47;43722:131;43848:4;43722:131;:::i;:::-;43714:139;;43441:419;;;:::o;43866:182::-;44006:34;44002:1;43994:6;43990:14;43983:58;43866:182;:::o;44054:366::-;44196:3;44217:67;44281:2;44276:3;44217:67;:::i;:::-;44210:74;;44293:93;44382:3;44293:93;:::i;:::-;44411:2;44406:3;44402:12;44395:19;;44054:366;;;:::o;44426:419::-;44592:4;44630:2;44619:9;44615:18;44607:26;;44679:9;44673:4;44669:20;44665:1;44654:9;44650:17;44643:47;44707:131;44833:4;44707:131;:::i;:::-;44699:139;;44426:419;;;:::o;44851:147::-;44952:11;44989:3;44974:18;;44851:147;;;;:::o;45004:114::-;;:::o;45124:398::-;45283:3;45304:83;45385:1;45380:3;45304:83;:::i;:::-;45297:90;;45396:93;45485:3;45396:93;:::i;:::-;45514:1;45509:3;45505:11;45498:18;;45124:398;;;:::o;45528:379::-;45712:3;45734:147;45877:3;45734:147;:::i;:::-;45727:154;;45898:3;45891:10;;45528:379;;;:::o;45913:180::-;45961:77;45958:1;45951:88;46058:4;46055:1;46048:15;46082:4;46079:1;46072:15;46099:180;46147:77;46144:1;46137:88;46244:4;46241:1;46234:15;46268:4;46265:1;46258:15;46285:143;46342:5;46373:6;46367:13;46358:22;;46389:33;46416:5;46389:33;:::i;:::-;46285:143;;;;:::o;46434:351::-;46504:6;46553:2;46541:9;46532:7;46528:23;46524:32;46521:119;;;46559:79;;:::i;:::-;46521:119;46679:1;46704:64;46760:7;46751:6;46740:9;46736:22;46704:64;:::i;:::-;46694:74;;46650:128;46434:351;;;;:::o;46791:85::-;46836:7;46865:5;46854:16;;46791:85;;;:::o;46882:158::-;46940:9;46973:61;46991:42;47000:32;47026:5;47000:32;:::i;:::-;46991:42;:::i;:::-;46973:61;:::i;:::-;46960:74;;46882:158;;;:::o;47046:147::-;47141:45;47180:5;47141:45;:::i;:::-;47136:3;47129:58;47046:147;;:::o;47199:114::-;47266:6;47300:5;47294:12;47284:22;;47199:114;;;:::o;47319:184::-;47418:11;47452:6;47447:3;47440:19;47492:4;47487:3;47483:14;47468:29;;47319:184;;;;:::o;47509:132::-;47576:4;47599:3;47591:11;;47629:4;47624:3;47620:14;47612:22;;47509:132;;;:::o;47647:108::-;47724:24;47742:5;47724:24;:::i;:::-;47719:3;47712:37;47647:108;;:::o;47761:179::-;47830:10;47851:46;47893:3;47885:6;47851:46;:::i;:::-;47929:4;47924:3;47920:14;47906:28;;47761:179;;;;:::o;47946:113::-;48016:4;48048;48043:3;48039:14;48031:22;;47946:113;;;:::o;48095:732::-;48214:3;48243:54;48291:5;48243:54;:::i;:::-;48313:86;48392:6;48387:3;48313:86;:::i;:::-;48306:93;;48423:56;48473:5;48423:56;:::i;:::-;48502:7;48533:1;48518:284;48543:6;48540:1;48537:13;48518:284;;;48619:6;48613:13;48646:63;48705:3;48690:13;48646:63;:::i;:::-;48639:70;;48732:60;48785:6;48732:60;:::i;:::-;48722:70;;48578:224;48565:1;48562;48558:9;48553:14;;48518:284;;;48522:14;48818:3;48811:10;;48219:608;;;48095:732;;;;:::o;48833:831::-;49096:4;49134:3;49123:9;49119:19;49111:27;;49148:71;49216:1;49205:9;49201:17;49192:6;49148:71;:::i;:::-;49229:80;49305:2;49294:9;49290:18;49281:6;49229:80;:::i;:::-;49356:9;49350:4;49346:20;49341:2;49330:9;49326:18;49319:48;49384:108;49487:4;49478:6;49384:108;:::i;:::-;49376:116;;49502:72;49570:2;49559:9;49555:18;49546:6;49502:72;:::i;:::-;49584:73;49652:3;49641:9;49637:19;49628:6;49584:73;:::i;:::-;48833:831;;;;;;;;:::o

Swarm Source

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