ETH Price: $3,283.56 (+1.11%)
Gas: 1 Gwei

Token

Ponzi Fire V1 (PFV1)
 

Overview

Max Total Supply

100,000,000 PFV1

Holders

64

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Uniswap V2: PFV1
Balance
68,625,645.77062199329973452 PFV1

Value
$0.00
0xa44f12481e77cfbab3cdc3999a39769053f81cd9
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:
PFV1

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/*

Ponzi Fire V1

Telegram:   https://t.me/ponzifire
Twitter:    https://twitter.com/ponzifire
Website:    https://ponzifire.xyz/

*/

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

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

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

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

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

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

/* Library Definitions */

library SafeMath {
    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 trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, 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 tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, 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 add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

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

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

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

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return 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 Definitions */

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 IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

    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;

    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 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 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 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 recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

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

contract ERC20 is Context, IERC20 {
    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 allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _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: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

/* Main Contract */
contract PFV1 is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapRouter;
    address public uniswapPair;

    address public marketingWallet;
    address public devWallet;

    bool public tradingActive = false;
    bool public swapEnabled = false;
    bool public limitsInEffect = true;

    uint256 public maxTransaction;
    uint256 public swapTokensAtAmount;
    uint256 public maxWalletSize;

    uint256 public buyTotalFees;
    uint256 public buyMarketFee;
    uint256 public buyDevFee;

    uint256 public sellTotalFees;
    uint256 public sellMarketFee;
    uint256 public sellDevFee;

    uint256 public tokensForMarket;
    uint256 public tokensForDev;

    bool private swapping;

    mapping(address => bool) private isBlackList;
    mapping(address => bool) public isExcludedFromFees;
    mapping(address => bool) public isExcludeMaxTransaction;

    mapping(address => bool) public ammPairs;
    
    constructor() ERC20("Ponzi Fire V1", "PFV1") {
        uniswapRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapPair = IUniswapV2Factory(uniswapRouter.factory()).createPair(address(this), uniswapRouter.WETH());
        
        marketingWallet = address(0x21d6c280B7Cc8B8af987F707926a6E92138d217F);
        devWallet = address(0x21d6c280B7Cc8B8af987F707926a6E92138d217F);

        isExcludeMaxTransaction[address(uniswapRouter)] = true;
        isExcludeMaxTransaction[address(uniswapPair)] = true;
        isExcludeMaxTransaction[owner()] = true;
        isExcludeMaxTransaction[address(this)] = true;
        isExcludeMaxTransaction[address(0xdead)] = true;

        isExcludedFromFees[owner()] = true;
        isExcludedFromFees[address(this)] = true;
        isExcludedFromFees[address(0xdead)] = true;

        ammPairs[address(uniswapPair)] = true;

        uint256 totalSupply = 100_000_000 * 1e18;
        swapTokensAtAmount = (totalSupply * 5) / 10000; // 0.05% swap wallet

        maxTransaction = 1_300_000 * 1e18; // 1.3% from total supply maxTransactionTxn
        maxWalletSize = 1_300_000 * 1e18; // 1.3% from total supply maxWalletSize

        buyMarketFee = 10;
        buyDevFee = 0;
        buyTotalFees = buyMarketFee + buyDevFee;

        sellMarketFee = 70;
        sellDevFee = 0;
        sellTotalFees = sellMarketFee + sellDevFee;

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    function openTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
    }

    function openTradingWithPermit(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");

        tradingActive = true;
        swapEnabled = true;
    }

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

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

    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }

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

    function updateMaxWalletSize(uint256 newNum) external onlyOwner {
        require(newNum >= ((totalSupply() * 5) / 1000) / 1e18, "Cannot set maxWalletSize lower than 0.5%");
        maxWalletSize = newNum * (10**18);
    }

    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool) {
        require(newAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply.");
        require(newAmount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply.");
        swapTokensAtAmount = newAmount;
        return true;
    }

    function updateMaxTransaction(uint256 newNum) external onlyOwner {
        require(newNum >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set maxTransaction lower than 0.1%");
        maxTransaction = newNum * (10**18);
    }

    function updateBuyFees(uint256 newMarketFee, uint256 newDevFee) external onlyOwner {
        buyMarketFee = newMarketFee;
        buyDevFee = newDevFee;
        buyTotalFees = buyMarketFee + buyDevFee;
        require(buyTotalFees <= 10, "Must keep fees at 10% or less");
    }

    function updateSellFees(uint256 newMarketFee, uint256 newDevFee) external onlyOwner {
        sellMarketFee = newMarketFee;
        sellDevFee = newDevFee;
        sellTotalFees = sellMarketFee + sellDevFee;
        require(sellTotalFees <= 70, "Must keep fees at 70% or less");
    }

    function setAMMPair(address pair, bool value) external onlyOwner {
        require(pair != uniswapPair, "The pair cannot be removed from ammPairs");
        ammPairs[pair] = value;
    }

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

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForMarket + tokensForDev;
        bool success;

        if (contractBalance == 0)
            return;

        if (contractBalance > swapTokensAtAmount * 20)
            contractBalance = swapTokensAtAmount * 20;

        uint256 initialETHBalance = address(this).balance;
        swapTokensForEth(contractBalance);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
        uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap);

        tokensForMarket = 0;
        tokensForDev = 0;

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

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

        _approve(address(this), address(uniswapRouter), tokenAmount);

        // make the swap
        uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            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: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(!isBlackList[from], "[from] black list");
        require(!isBlackList[to], "[to] black list");

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

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

                //when buy
                if (ammPairs[from] && !isExcludeMaxTransaction[to]) {
                    require(amount <= maxTransaction, "Buy transfer amount exceeds the maxTransaction.");
                    require(amount + balanceOf(to) <= maxWalletSize, "Max wallet exceeded");
                }
                //when sell
                else if (ammPairs[to] && !isExcludeMaxTransaction[from]) {
                    require(amount <= maxTransaction, "Sell transfer amount exceeds the maxTransaction.");
                }
                else if (!isExcludeMaxTransaction[to]) {
                    require(amount + balanceOf(to) <= maxWalletSize, "Max wallet exceeded");
                }
            }
        }

        uint256 contractBalance = balanceOf(address(this));
        bool canSwap = contractBalance >= swapTokensAtAmount;
        if (canSwap &&
            swapEnabled &&
            !swapping &&
            !ammPairs[from] &&
            !isExcludedFromFees[from] &&
            !isExcludedFromFees[to]) {

            swapping = true;
            swapBack();
            swapping = false;
        }

        bool takeFee = !swapping;
        if (isExcludedFromFees[from] || isExcludedFromFees[to])
            takeFee = false;

        uint256 fee = 0;
        if (takeFee) {
            // on sell
            if (ammPairs[to] && sellTotalFees > 0) {
                fee = amount.mul(sellTotalFees).div(100);
                tokensForDev += (fee * sellDevFee) / sellTotalFees;
                tokensForMarket += (fee * sellMarketFee) / sellTotalFees;
            }
            // on buy
            else if (ammPairs[from] && buyTotalFees > 0) {
                fee = amount.mul(buyTotalFees).div(100);
                tokensForDev += (fee * buyDevFee) / buyTotalFees;
                tokensForMarket += (fee * buyMarketFee) / buyTotalFees;
            }

            if (fee > 0)
                super._transfer(from, address(this), fee);

            amount -= fee;
        }

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

    function min(uint256 a, uint256 b) private pure returns (uint256) {
        return (a > b) ? b : a;
    }
}

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":"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":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","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":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludeMaxTransaction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"openTradingWithPermit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAMMPair","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":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"tokensForMarket","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526000600860146101000a81548160ff0219169083151502179055506000600860156101000a81548160ff0219169083151502179055506001600860166101000a81548160ff0219169083151502179055503480156200006257600080fd5b506040518060400160405280600d81526020017f506f6e7a692046697265205631000000000000000000000000000000000000008152506040518060400160405280600481526020017f50465631000000000000000000000000000000000000000000000000000000008152508160009080519060200190620000e792919062000a7b565b5080600190805190602001906200010092919062000a7b565b5050506200012362000117620007ff60201b60201c565b6200080760201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060805173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001df919062000b95565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060805173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000249573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026f919062000b95565b6040518363ffffffff1660e01b81526004016200028e92919062000bd8565b6020604051808303816000875af1158015620002ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d4919062000b95565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507321d6c280b7cc8b8af987f707926a6e92138d217f600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507321d6c280b7cc8b8af987f707926a6e92138d217f600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016017600060805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160176000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160176000620004a8620008cd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016017600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160166000620005c1620008cd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016016600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160186000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060006a52b7d2dcc80cd2e4000000905061271060058262000760919062000c3e565b6200076c919062000cce565b600a819055506a011349242670ce848000006009819055506a011349242670ce84800000600b81905550600a600d819055506000600e81905550600e54600d54620007b8919062000d06565b600c8190555060466010819055506000601181905550601154601054620007e0919062000d06565b600f81905550620007f83382620008f760201b60201c565b5062000e79565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200096a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009619062000dc4565b60405180910390fd5b6200097e6000838362000a7160201b60201c565b806002600082825462000992919062000d06565b9250508190555080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620009ea919062000d06565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a51919062000df7565b60405180910390a362000a6d6000838362000a7660201b60201c565b5050565b505050565b505050565b82805462000a899062000e43565b90600052602060002090601f01602090048101928262000aad576000855562000af9565b82601f1062000ac857805160ff191683800117855562000af9565b8280016001018555821562000af9579182015b8281111562000af857825182559160200191906001019062000adb565b5b50905062000b08919062000b0c565b5090565b5b8082111562000b2757600081600090555060010162000b0d565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b5d8262000b30565b9050919050565b62000b6f8162000b50565b811462000b7b57600080fd5b50565b60008151905062000b8f8162000b64565b92915050565b60006020828403121562000bae5762000bad62000b2b565b5b600062000bbe8482850162000b7e565b91505092915050565b62000bd28162000b50565b82525050565b600060408201905062000bef600083018562000bc7565b62000bfe602083018462000bc7565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000c4b8262000c05565b915062000c588362000c05565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000c945762000c9362000c0f565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000cdb8262000c05565b915062000ce88362000c05565b92508262000cfb5762000cfa62000c9f565b5b828204905092915050565b600062000d138262000c05565b915062000d208362000c05565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000d585762000d5762000c0f565b5b828201905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000dac601f8362000d63565b915062000db98262000d74565b602082019050919050565b6000602082019050818103600083015262000ddf8162000d9d565b9050919050565b62000df18162000c05565b82525050565b600060208201905062000e0e600083018462000de6565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000e5c57607f821691505b6020821081141562000e735762000e7262000e14565b5b50919050565b608051614ce862000eaa600039600081816117890152818161342c0152818161350d01526135340152614ce86000f3fe6080604052600436106102975760003560e01c806375f0a8741161015a578063a9059cbb116100c1578063d257b34f1161007a578063d257b34f14610a17578063d85ba06314610a54578063dd62ed3e14610a7f578063e2f4560514610abc578063e4a1b95f14610ae7578063f2fde38b14610b125761029e565b8063a9059cbb14610919578063bbc0c74214610956578063c024666814610981578063c3f70b52146109aa578063c816841b146109d5578063c9567bf914610a005761029e565b806395d89b411161011357806395d89b41146107f35780639c3b4fdc1461081e5780639fccce3214610849578063a0d82dc514610874578063a457c2d71461089f578063a72905a2146108dc5761029e565b806375f0a874146106e15780638da5cb5b1461070c5780638ea5220f146107375780638f3fa86014610762578063924de9b71461078d578063953e0463146107b65761029e565b80634a62bb65116101fe5780636ddd1713116101b75780636ddd1713146105e357806370a082311461060e578063715018a61461064b578063735de9f714610662578063751039fc1461068d5780637571336a146106b85761029e565b80634a62bb65146104d55780634fbee193146105005780636323d7cb1461053d57806366ca9b831461056657806368092bd91461058f5780636a486a8e146105b85761029e565b806323b872dd1161025057806323b872dd146103b357806324887e80146103f05780632d99d32e14610419578063313ce5671461044257806335b5fb631461046d57806339509351146104985761029e565b806302dbd8f8146102a35780630517d13d146102cc57806306fdde03146102f5578063095ea7b31461032057806318160ddd1461035d5780631f7ea8da146103885761029e565b3661029e57005b600080fd5b3480156102af57600080fd5b506102ca60048036038101906102c5919061361b565b610b3b565b005b3480156102d857600080fd5b506102f360048036038101906102ee919061365b565b610c25565b005b34801561030157600080fd5b5061030a610d34565b6040516103179190613721565b60405180910390f35b34801561032c57600080fd5b50610347600480360381019061034291906137a1565b610dc6565b60405161035491906137fc565b60405180910390f35b34801561036957600080fd5b50610372610de4565b60405161037f9190613826565b60405180910390f35b34801561039457600080fd5b5061039d610dee565b6040516103aa9190613826565b60405180910390f35b3480156103bf57600080fd5b506103da60048036038101906103d59190613841565b610df4565b6040516103e791906137fc565b60405180910390f35b3480156103fc57600080fd5b506104176004803603810190610412919061365b565b610eec565b005b34801561042557600080fd5b50610440600480360381019061043b91906138c0565b610ffb565b005b34801561044e57600080fd5b50610457611163565b604051610464919061391c565b60405180910390f35b34801561047957600080fd5b5061048261116c565b60405161048f9190613826565b60405180910390f35b3480156104a457600080fd5b506104bf60048036038101906104ba91906137a1565b611172565b6040516104cc91906137fc565b60405180910390f35b3480156104e157600080fd5b506104ea61121e565b6040516104f791906137fc565b60405180910390f35b34801561050c57600080fd5b5061052760048036038101906105229190613937565b611231565b60405161053491906137fc565b60405180910390f35b34801561054957600080fd5b50610564600480360381019061055f91906139c6565b611251565b005b34801561057257600080fd5b5061058d6004803603810190610588919061361b565b6114dc565b005b34801561059b57600080fd5b506105b660048036038101906105b191906138c0565b6115c6565b005b3480156105c457600080fd5b506105cd61169d565b6040516105da9190613826565b60405180910390f35b3480156105ef57600080fd5b506105f86116a3565b60405161060591906137fc565b60405180910390f35b34801561061a57600080fd5b5061063560048036038101906106309190613937565b6116b6565b6040516106429190613826565b60405180910390f35b34801561065757600080fd5b506106606116ff565b005b34801561066e57600080fd5b50610677611787565b6040516106849190613a78565b60405180910390f35b34801561069957600080fd5b506106a26117ab565b6040516106af91906137fc565b60405180910390f35b3480156106c457600080fd5b506106df60048036038101906106da91906138c0565b61184b565b005b3480156106ed57600080fd5b506106f6611922565b6040516107039190613aa2565b60405180910390f35b34801561071857600080fd5b50610721611948565b60405161072e9190613aa2565b60405180910390f35b34801561074357600080fd5b5061074c611972565b6040516107599190613aa2565b60405180910390f35b34801561076e57600080fd5b50610777611998565b6040516107849190613826565b60405180910390f35b34801561079957600080fd5b506107b460048036038101906107af9190613abd565b61199e565b005b3480156107c257600080fd5b506107dd60048036038101906107d89190613937565b611a37565b6040516107ea91906137fc565b60405180910390f35b3480156107ff57600080fd5b50610808611a57565b6040516108159190613721565b60405180910390f35b34801561082a57600080fd5b50610833611ae9565b6040516108409190613826565b60405180910390f35b34801561085557600080fd5b5061085e611aef565b60405161086b9190613826565b60405180910390f35b34801561088057600080fd5b50610889611af5565b6040516108969190613826565b60405180910390f35b3480156108ab57600080fd5b506108c660048036038101906108c191906137a1565b611afb565b6040516108d391906137fc565b60405180910390f35b3480156108e857600080fd5b5061090360048036038101906108fe9190613937565b611be6565b60405161091091906137fc565b60405180910390f35b34801561092557600080fd5b50610940600480360381019061093b91906137a1565b611c06565b60405161094d91906137fc565b60405180910390f35b34801561096257600080fd5b5061096b611c24565b60405161097891906137fc565b60405180910390f35b34801561098d57600080fd5b506109a860048036038101906109a391906138c0565b611c37565b005b3480156109b657600080fd5b506109bf611d0e565b6040516109cc9190613826565b60405180910390f35b3480156109e157600080fd5b506109ea611d14565b6040516109f79190613aa2565b60405180910390f35b348015610a0c57600080fd5b50610a15611d3a565b005b348015610a2357600080fd5b50610a3e6004803603810190610a39919061365b565b611dee565b604051610a4b91906137fc565b60405180910390f35b348015610a6057600080fd5b50610a69611f43565b604051610a769190613826565b60405180910390f35b348015610a8b57600080fd5b50610aa66004803603810190610aa19190613aea565b611f49565b604051610ab39190613826565b60405180910390f35b348015610ac857600080fd5b50610ad1611fd0565b604051610ade9190613826565b60405180910390f35b348015610af357600080fd5b50610afc611fd6565b604051610b099190613826565b60405180910390f35b348015610b1e57600080fd5b50610b396004803603810190610b349190613937565b611fdc565b005b610b436120d4565b73ffffffffffffffffffffffffffffffffffffffff16610b61611948565b73ffffffffffffffffffffffffffffffffffffffff1614610bb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bae90613b76565b60405180910390fd5b8160108190555080601181905550601154601054610bd59190613bc5565b600f819055506046600f541115610c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1890613c67565b60405180910390fd5b5050565b610c2d6120d4565b73ffffffffffffffffffffffffffffffffffffffff16610c4b611948565b73ffffffffffffffffffffffffffffffffffffffff1614610ca1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9890613b76565b60405180910390fd5b670de0b6b3a76400006103e86001610cb7610de4565b610cc19190613c87565b610ccb9190613d10565b610cd59190613d10565b811015610d17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0e90613db3565b60405180910390fd5b670de0b6b3a764000081610d2b9190613c87565b60098190555050565b606060008054610d4390613e02565b80601f0160208091040260200160405190810160405280929190818152602001828054610d6f90613e02565b8015610dbc5780601f10610d9157610100808354040283529160200191610dbc565b820191906000526020600020905b815481529060010190602001808311610d9f57829003601f168201915b5050505050905090565b6000610dda610dd36120d4565b84846120dc565b6001905092915050565b6000600254905090565b60125481565b6000610e018484846122a7565b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e4c6120d4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ecc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec390613ea6565b60405180910390fd5b610ee085610ed86120d4565b8584036120dc565b60019150509392505050565b610ef46120d4565b73ffffffffffffffffffffffffffffffffffffffff16610f12611948565b73ffffffffffffffffffffffffffffffffffffffff1614610f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5f90613b76565b60405180910390fd5b670de0b6b3a76400006103e86005610f7e610de4565b610f889190613c87565b610f929190613d10565b610f9c9190613d10565b811015610fde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd590613f38565b60405180910390fd5b670de0b6b3a764000081610ff29190613c87565b600b8190555050565b6110036120d4565b73ffffffffffffffffffffffffffffffffffffffff16611021611948565b73ffffffffffffffffffffffffffffffffffffffff1614611077576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106e90613b76565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611108576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ff90613fca565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006012905090565b60105481565b600061121461117f6120d4565b84846004600061118d6120d4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461120f9190613bc5565b6120dc565b6001905092915050565b600860169054906101000a900460ff1681565b60166020528060005260406000206000915054906101000a900460ff1681565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600d81526020017f54726164696e6720546f6b656e00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001204630604051602001611304959493929190613ff9565b60405160208183030381529060405280519060200120905060007f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e670000000000000000000000000000000000008152508051906020012060006040516020016113909392919061404c565b604051602081830303815290604052805190602001209050600082826040516020016113bd9291906140fb565b6040516020818303038152906040528051906020012090506000600182888888604051600081526020016040526040516113fa9493929190614132565b6020604051602081039080840390855afa15801561141c573d6000803e3d6000fd5b505050602060405103519050611430611948565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461149d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611494906141c3565b60405180910390fd5b6001600860146101000a81548160ff0219169083151502179055506001600860156101000a81548160ff02191690831515021790555050505050505050565b6114e46120d4565b73ffffffffffffffffffffffffffffffffffffffff16611502611948565b73ffffffffffffffffffffffffffffffffffffffff1614611558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154f90613b76565b60405180910390fd5b81600d8190555080600e81905550600e54600d546115769190613bc5565b600c81905550600a600c5411156115c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b99061422f565b60405180910390fd5b5050565b6115ce6120d4565b73ffffffffffffffffffffffffffffffffffffffff166115ec611948565b73ffffffffffffffffffffffffffffffffffffffff1614611642576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163990613b76565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f5481565b600860159054906101000a900460ff1681565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6117076120d4565b73ffffffffffffffffffffffffffffffffffffffff16611725611948565b73ffffffffffffffffffffffffffffffffffffffff161461177b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177290613b76565b60405180910390fd5b6117856000612e2d565b565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006117b56120d4565b73ffffffffffffffffffffffffffffffffffffffff166117d3611948565b73ffffffffffffffffffffffffffffffffffffffff1614611829576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182090613b76565b60405180910390fd5b6000600860166101000a81548160ff0219169083151502179055506001905090565b6118536120d4565b73ffffffffffffffffffffffffffffffffffffffff16611871611948565b73ffffffffffffffffffffffffffffffffffffffff16146118c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118be90613b76565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b6119a66120d4565b73ffffffffffffffffffffffffffffffffffffffff166119c4611948565b73ffffffffffffffffffffffffffffffffffffffff1614611a1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1190613b76565b60405180910390fd5b80600860156101000a81548160ff02191690831515021790555050565b60176020528060005260406000206000915054906101000a900460ff1681565b606060018054611a6690613e02565b80601f0160208091040260200160405190810160405280929190818152602001828054611a9290613e02565b8015611adf5780601f10611ab457610100808354040283529160200191611adf565b820191906000526020600020905b815481529060010190602001808311611ac257829003601f168201915b5050505050905090565b600e5481565b60135481565b60115481565b60008060046000611b0a6120d4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611bc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbe906142c1565b60405180910390fd5b611bdb611bd26120d4565b858584036120dc565b600191505092915050565b60186020528060005260406000206000915054906101000a900460ff1681565b6000611c1a611c136120d4565b84846122a7565b6001905092915050565b600860149054906101000a900460ff1681565b611c3f6120d4565b73ffffffffffffffffffffffffffffffffffffffff16611c5d611948565b73ffffffffffffffffffffffffffffffffffffffff1614611cb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611caa90613b76565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60095481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611d426120d4565b73ffffffffffffffffffffffffffffffffffffffff16611d60611948565b73ffffffffffffffffffffffffffffffffffffffff1614611db6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dad90613b76565b60405180910390fd5b6001600860146101000a81548160ff0219169083151502179055506001600860156101000a81548160ff021916908315150217905550565b6000611df86120d4565b73ffffffffffffffffffffffffffffffffffffffff16611e16611948565b73ffffffffffffffffffffffffffffffffffffffff1614611e6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6390613b76565b60405180910390fd5b620186a06001611e7a610de4565b611e849190613c87565b611e8e9190613d10565b821015611ed0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec790614353565b60405180910390fd5b6103e86005611edd610de4565b611ee79190613c87565b611ef19190613d10565b821115611f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2a906143e5565b60405180910390fd5b81600a8190555060019050919050565b600c5481565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b600d5481565b611fe46120d4565b73ffffffffffffffffffffffffffffffffffffffff16612002611948565b73ffffffffffffffffffffffffffffffffffffffff1614612058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204f90613b76565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156120c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bf90614477565b60405180910390fd5b6120d181612e2d565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561214c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214390614509565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b39061459b565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161229a9190613826565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612317576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230e9061462d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612387576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237e906146bf565b60405180910390fd5b601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612414576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240b9061472b565b60405180910390fd5b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156124a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249890614797565b60405180910390fd5b60008114156124bb576124b683836000612ef3565b612e28565b600860169054906101000a900460ff16156129b6576124d8611948565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156125465750612516611948565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561257f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125b9575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125d25750601460009054906101000a900460ff16155b156129b557600860149054906101000a900460ff166126cc57601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061268c5750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6126cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c290614803565b60405180910390fd5b5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561276f5750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612816576009548111156127b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b090614895565b60405180910390fd5b600b546127c5836116b6565b826127d09190613bc5565b1115612811576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280890614901565b60405180910390fd5b6129b4565b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156128b95750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561290857600954811115612903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128fa90614993565b60405180910390fd5b6129b3565b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166129b257600b54612965836116b6565b826129709190613bc5565b11156129b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a890614901565b60405180910390fd5b5b5b5b5b5b60006129c1306116b6565b90506000600a5482101590508080156129e65750600860159054906101000a900460ff165b80156129ff5750601460009054906101000a900460ff16155b8015612a555750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612aab5750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612b015750601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b45576001601460006101000a81548160ff021916908315150217905550612b29613177565b6000601460006101000a81548160ff0219169083151502179055505b6000601460009054906101000a900460ff16159050601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612bfb5750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612c0557600090505b60008115612e1857601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c6857506000600f54115b15612d0257612c956064612c87600f548861335790919063ffffffff16565b61336d90919063ffffffff16565b9050600f5460115482612ca89190613c87565b612cb29190613d10565b60136000828254612cc39190613bc5565b92505081905550600f5460105482612cdb9190613c87565b612ce59190613d10565b60126000828254612cf69190613bc5565b92505081905550612df4565b601860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612d5d57506000600c54115b15612df357612d8a6064612d7c600c548861335790919063ffffffff16565b61336d90919063ffffffff16565b9050600c54600e5482612d9d9190613c87565b612da79190613d10565b60136000828254612db89190613bc5565b92505081905550600c54600d5482612dd09190613c87565b612dda9190613d10565b60126000828254612deb9190613bc5565b925050819055505b5b6000811115612e0957612e08873083612ef3565b5b8085612e1591906149b3565b94505b612e23878787612ef3565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612f63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f5a9061462d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fca906146bf565b60405180910390fd5b612fde838383613383565b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305c90614a59565b60405180910390fd5b818103600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546130fa9190613bc5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161315e9190613826565b60405180910390a3613171848484613388565b50505050565b6000613182306116b6565b905060006013546012546131969190613bc5565b90506000808314156131aa57505050613355565b6014600a546131b99190613c87565b8311156131d2576014600a546131cf9190613c87565b92505b60004790506131e08461338d565b60006131f582476135ca90919063ffffffff16565b90506000613220856132126013548561335790919063ffffffff16565b61336d90919063ffffffff16565b905060006012819055506000601381905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161327890614aaa565b60006040518083038185875af1925050503d80600081146132b5576040519150601f19603f3d011682016040523d82523d6000602084013e6132ba565b606091505b505080945050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161330690614aaa565b60006040518083038185875af1925050503d8060008114613343576040519150601f19603f3d011682016040523d82523d6000602084013e613348565b606091505b5050809450505050505050505b565b600081836133659190613c87565b905092915050565b6000818361337b9190613d10565b905092915050565b505050565b505050565b6000600267ffffffffffffffff8111156133aa576133a9614abf565b5b6040519080825280602002602001820160405280156133d85781602001602082028036833780820191505090505b50905030816000815181106133f0576133ef614aee565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613495573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134b99190614b32565b816001815181106134cd576134cc614aee565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613532307f0000000000000000000000000000000000000000000000000000000000000000846120dc565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613594959493929190614c58565b600060405180830381600087803b1580156135ae57600080fd5b505af11580156135c2573d6000803e3d6000fd5b505050505050565b600081836135d891906149b3565b905092915050565b600080fd5b6000819050919050565b6135f8816135e5565b811461360357600080fd5b50565b600081359050613615816135ef565b92915050565b60008060408385031215613632576136316135e0565b5b600061364085828601613606565b925050602061365185828601613606565b9150509250929050565b600060208284031215613671576136706135e0565b5b600061367f84828501613606565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156136c25780820151818401526020810190506136a7565b838111156136d1576000848401525b50505050565b6000601f19601f8301169050919050565b60006136f382613688565b6136fd8185613693565b935061370d8185602086016136a4565b613716816136d7565b840191505092915050565b6000602082019050818103600083015261373b81846136e8565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061376e82613743565b9050919050565b61377e81613763565b811461378957600080fd5b50565b60008135905061379b81613775565b92915050565b600080604083850312156137b8576137b76135e0565b5b60006137c68582860161378c565b92505060206137d785828601613606565b9150509250929050565b60008115159050919050565b6137f6816137e1565b82525050565b600060208201905061381160008301846137ed565b92915050565b613820816135e5565b82525050565b600060208201905061383b6000830184613817565b92915050565b60008060006060848603121561385a576138596135e0565b5b60006138688682870161378c565b93505060206138798682870161378c565b925050604061388a86828701613606565b9150509250925092565b61389d816137e1565b81146138a857600080fd5b50565b6000813590506138ba81613894565b92915050565b600080604083850312156138d7576138d66135e0565b5b60006138e58582860161378c565b92505060206138f6858286016138ab565b9150509250929050565b600060ff82169050919050565b61391681613900565b82525050565b6000602082019050613931600083018461390d565b92915050565b60006020828403121561394d5761394c6135e0565b5b600061395b8482850161378c565b91505092915050565b61396d81613900565b811461397857600080fd5b50565b60008135905061398a81613964565b92915050565b6000819050919050565b6139a381613990565b81146139ae57600080fd5b50565b6000813590506139c08161399a565b92915050565b6000806000606084860312156139df576139de6135e0565b5b60006139ed8682870161397b565b93505060206139fe868287016139b1565b9250506040613a0f868287016139b1565b9150509250925092565b6000819050919050565b6000613a3e613a39613a3484613743565b613a19565b613743565b9050919050565b6000613a5082613a23565b9050919050565b6000613a6282613a45565b9050919050565b613a7281613a57565b82525050565b6000602082019050613a8d6000830184613a69565b92915050565b613a9c81613763565b82525050565b6000602082019050613ab76000830184613a93565b92915050565b600060208284031215613ad357613ad26135e0565b5b6000613ae1848285016138ab565b91505092915050565b60008060408385031215613b0157613b006135e0565b5b6000613b0f8582860161378c565b9250506020613b208582860161378c565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613b60602083613693565b9150613b6b82613b2a565b602082019050919050565b60006020820190508181036000830152613b8f81613b53565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613bd0826135e5565b9150613bdb836135e5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613c1057613c0f613b96565b5b828201905092915050565b7f4d757374206b656570206665657320617420373025206f72206c657373000000600082015250565b6000613c51601d83613693565b9150613c5c82613c1b565b602082019050919050565b60006020820190508181036000830152613c8081613c44565b9050919050565b6000613c92826135e5565b9150613c9d836135e5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613cd657613cd5613b96565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d1b826135e5565b9150613d26836135e5565b925082613d3657613d35613ce1565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b6000613d9d602983613693565b9150613da882613d41565b604082019050919050565b60006020820190508181036000830152613dcc81613d90565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613e1a57607f821691505b60208210811415613e2e57613e2d613dd3565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613e90602883613693565b9150613e9b82613e34565b604082019050919050565b60006020820190508181036000830152613ebf81613e83565b9050919050565b7f43616e6e6f7420736574206d617857616c6c657453697a65206c6f776572207460008201527f68616e20302e3525000000000000000000000000000000000000000000000000602082015250565b6000613f22602883613693565b9150613f2d82613ec6565b604082019050919050565b60006020820190508181036000830152613f5181613f15565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f616d6d5061697273000000000000000000000000000000000000000000000000602082015250565b6000613fb4602883613693565b9150613fbf82613f58565b604082019050919050565b60006020820190508181036000830152613fe381613fa7565b9050919050565b613ff381613990565b82525050565b600060a08201905061400e6000830188613fea565b61401b6020830187613fea565b6140286040830186613fea565b6140356060830185613817565b6140426080830184613a93565b9695505050505050565b60006060820190506140616000830186613fea565b61406e6020830185613fea565b61407b6040830184613817565b949350505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b60006140c4600283614083565b91506140cf8261408e565b600282019050919050565b6000819050919050565b6140f56140f082613990565b6140da565b82525050565b6000614106826140b7565b915061411282856140e4565b60208201915061412282846140e4565b6020820191508190509392505050565b60006080820190506141476000830187613fea565b614154602083018661390d565b6141616040830185613fea565b61416e6060830184613fea565b95945050505050565b7f496e76616c6964207369676e6174757265000000000000000000000000000000600082015250565b60006141ad601183613693565b91506141b882614177565b602082019050919050565b600060208201905081810360008301526141dc816141a0565b9050919050565b7f4d757374206b656570206665657320617420313025206f72206c657373000000600082015250565b6000614219601d83613693565b9150614224826141e3565b602082019050919050565b600060208201905081810360008301526142488161420c565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006142ab602583613693565b91506142b68261424f565b604082019050919050565b600060208201905081810360008301526142da8161429e565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b600061433d603583613693565b9150614348826142e1565b604082019050919050565b6000602082019050818103600083015261436c81614330565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006143cf603483613693565b91506143da82614373565b604082019050919050565b600060208201905081810360008301526143fe816143c2565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614461602683613693565b915061446c82614405565b604082019050919050565b6000602082019050818103600083015261449081614454565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006144f3602483613693565b91506144fe82614497565b604082019050919050565b60006020820190508181036000830152614522816144e6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614585602283613693565b915061459082614529565b604082019050919050565b600060208201905081810360008301526145b481614578565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614617602583613693565b9150614622826145bb565b604082019050919050565b600060208201905081810360008301526146468161460a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006146a9602383613693565b91506146b48261464d565b604082019050919050565b600060208201905081810360008301526146d88161469c565b9050919050565b7f5b66726f6d5d20626c61636b206c697374000000000000000000000000000000600082015250565b6000614715601183613693565b9150614720826146df565b602082019050919050565b6000602082019050818103600083015261474481614708565b9050919050565b7f5b746f5d20626c61636b206c6973740000000000000000000000000000000000600082015250565b6000614781600f83613693565b915061478c8261474b565b602082019050919050565b600060208201905081810360008301526147b081614774565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006147ed601683613693565b91506147f8826147b7565b602082019050919050565b6000602082019050818103600083015261481c816147e0565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e2e0000000000000000000000000000000000602082015250565b600061487f602f83613693565b915061488a82614823565b604082019050919050565b600060208201905081810360008301526148ae81614872565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006148eb601383613693565b91506148f6826148b5565b602082019050919050565b6000602082019050818103600083015261491a816148de565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e2e00000000000000000000000000000000602082015250565b600061497d603083613693565b915061498882614921565b604082019050919050565b600060208201905081810360008301526149ac81614970565b9050919050565b60006149be826135e5565b91506149c9836135e5565b9250828210156149dc576149db613b96565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614a43602683613693565b9150614a4e826149e7565b604082019050919050565b60006020820190508181036000830152614a7281614a36565b9050919050565b600081905092915050565b50565b6000614a94600083614a79565b9150614a9f82614a84565b600082019050919050565b6000614ab582614a87565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614b2c81613775565b92915050565b600060208284031215614b4857614b476135e0565b5b6000614b5684828501614b1d565b91505092915050565b6000819050919050565b6000614b84614b7f614b7a84614b5f565b613a19565b6135e5565b9050919050565b614b9481614b69565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614bcf81613763565b82525050565b6000614be18383614bc6565b60208301905092915050565b6000602082019050919050565b6000614c0582614b9a565b614c0f8185614ba5565b9350614c1a83614bb6565b8060005b83811015614c4b578151614c328882614bd5565b9750614c3d83614bed565b925050600181019050614c1e565b5085935050505092915050565b600060a082019050614c6d6000830188613817565b614c7a6020830187614b8b565b8181036040830152614c8c8186614bfa565b9050614c9b6060830185613a93565b614ca86080830184613817565b969550505050505056fea2646970667358221220d160cdc8b45f709dce81c85fcc9e3041996af4502b6c988a240486bf65d9570464736f6c634300080a0033

Deployed Bytecode

0x6080604052600436106102975760003560e01c806375f0a8741161015a578063a9059cbb116100c1578063d257b34f1161007a578063d257b34f14610a17578063d85ba06314610a54578063dd62ed3e14610a7f578063e2f4560514610abc578063e4a1b95f14610ae7578063f2fde38b14610b125761029e565b8063a9059cbb14610919578063bbc0c74214610956578063c024666814610981578063c3f70b52146109aa578063c816841b146109d5578063c9567bf914610a005761029e565b806395d89b411161011357806395d89b41146107f35780639c3b4fdc1461081e5780639fccce3214610849578063a0d82dc514610874578063a457c2d71461089f578063a72905a2146108dc5761029e565b806375f0a874146106e15780638da5cb5b1461070c5780638ea5220f146107375780638f3fa86014610762578063924de9b71461078d578063953e0463146107b65761029e565b80634a62bb65116101fe5780636ddd1713116101b75780636ddd1713146105e357806370a082311461060e578063715018a61461064b578063735de9f714610662578063751039fc1461068d5780637571336a146106b85761029e565b80634a62bb65146104d55780634fbee193146105005780636323d7cb1461053d57806366ca9b831461056657806368092bd91461058f5780636a486a8e146105b85761029e565b806323b872dd1161025057806323b872dd146103b357806324887e80146103f05780632d99d32e14610419578063313ce5671461044257806335b5fb631461046d57806339509351146104985761029e565b806302dbd8f8146102a35780630517d13d146102cc57806306fdde03146102f5578063095ea7b31461032057806318160ddd1461035d5780631f7ea8da146103885761029e565b3661029e57005b600080fd5b3480156102af57600080fd5b506102ca60048036038101906102c5919061361b565b610b3b565b005b3480156102d857600080fd5b506102f360048036038101906102ee919061365b565b610c25565b005b34801561030157600080fd5b5061030a610d34565b6040516103179190613721565b60405180910390f35b34801561032c57600080fd5b50610347600480360381019061034291906137a1565b610dc6565b60405161035491906137fc565b60405180910390f35b34801561036957600080fd5b50610372610de4565b60405161037f9190613826565b60405180910390f35b34801561039457600080fd5b5061039d610dee565b6040516103aa9190613826565b60405180910390f35b3480156103bf57600080fd5b506103da60048036038101906103d59190613841565b610df4565b6040516103e791906137fc565b60405180910390f35b3480156103fc57600080fd5b506104176004803603810190610412919061365b565b610eec565b005b34801561042557600080fd5b50610440600480360381019061043b91906138c0565b610ffb565b005b34801561044e57600080fd5b50610457611163565b604051610464919061391c565b60405180910390f35b34801561047957600080fd5b5061048261116c565b60405161048f9190613826565b60405180910390f35b3480156104a457600080fd5b506104bf60048036038101906104ba91906137a1565b611172565b6040516104cc91906137fc565b60405180910390f35b3480156104e157600080fd5b506104ea61121e565b6040516104f791906137fc565b60405180910390f35b34801561050c57600080fd5b5061052760048036038101906105229190613937565b611231565b60405161053491906137fc565b60405180910390f35b34801561054957600080fd5b50610564600480360381019061055f91906139c6565b611251565b005b34801561057257600080fd5b5061058d6004803603810190610588919061361b565b6114dc565b005b34801561059b57600080fd5b506105b660048036038101906105b191906138c0565b6115c6565b005b3480156105c457600080fd5b506105cd61169d565b6040516105da9190613826565b60405180910390f35b3480156105ef57600080fd5b506105f86116a3565b60405161060591906137fc565b60405180910390f35b34801561061a57600080fd5b5061063560048036038101906106309190613937565b6116b6565b6040516106429190613826565b60405180910390f35b34801561065757600080fd5b506106606116ff565b005b34801561066e57600080fd5b50610677611787565b6040516106849190613a78565b60405180910390f35b34801561069957600080fd5b506106a26117ab565b6040516106af91906137fc565b60405180910390f35b3480156106c457600080fd5b506106df60048036038101906106da91906138c0565b61184b565b005b3480156106ed57600080fd5b506106f6611922565b6040516107039190613aa2565b60405180910390f35b34801561071857600080fd5b50610721611948565b60405161072e9190613aa2565b60405180910390f35b34801561074357600080fd5b5061074c611972565b6040516107599190613aa2565b60405180910390f35b34801561076e57600080fd5b50610777611998565b6040516107849190613826565b60405180910390f35b34801561079957600080fd5b506107b460048036038101906107af9190613abd565b61199e565b005b3480156107c257600080fd5b506107dd60048036038101906107d89190613937565b611a37565b6040516107ea91906137fc565b60405180910390f35b3480156107ff57600080fd5b50610808611a57565b6040516108159190613721565b60405180910390f35b34801561082a57600080fd5b50610833611ae9565b6040516108409190613826565b60405180910390f35b34801561085557600080fd5b5061085e611aef565b60405161086b9190613826565b60405180910390f35b34801561088057600080fd5b50610889611af5565b6040516108969190613826565b60405180910390f35b3480156108ab57600080fd5b506108c660048036038101906108c191906137a1565b611afb565b6040516108d391906137fc565b60405180910390f35b3480156108e857600080fd5b5061090360048036038101906108fe9190613937565b611be6565b60405161091091906137fc565b60405180910390f35b34801561092557600080fd5b50610940600480360381019061093b91906137a1565b611c06565b60405161094d91906137fc565b60405180910390f35b34801561096257600080fd5b5061096b611c24565b60405161097891906137fc565b60405180910390f35b34801561098d57600080fd5b506109a860048036038101906109a391906138c0565b611c37565b005b3480156109b657600080fd5b506109bf611d0e565b6040516109cc9190613826565b60405180910390f35b3480156109e157600080fd5b506109ea611d14565b6040516109f79190613aa2565b60405180910390f35b348015610a0c57600080fd5b50610a15611d3a565b005b348015610a2357600080fd5b50610a3e6004803603810190610a39919061365b565b611dee565b604051610a4b91906137fc565b60405180910390f35b348015610a6057600080fd5b50610a69611f43565b604051610a769190613826565b60405180910390f35b348015610a8b57600080fd5b50610aa66004803603810190610aa19190613aea565b611f49565b604051610ab39190613826565b60405180910390f35b348015610ac857600080fd5b50610ad1611fd0565b604051610ade9190613826565b60405180910390f35b348015610af357600080fd5b50610afc611fd6565b604051610b099190613826565b60405180910390f35b348015610b1e57600080fd5b50610b396004803603810190610b349190613937565b611fdc565b005b610b436120d4565b73ffffffffffffffffffffffffffffffffffffffff16610b61611948565b73ffffffffffffffffffffffffffffffffffffffff1614610bb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bae90613b76565b60405180910390fd5b8160108190555080601181905550601154601054610bd59190613bc5565b600f819055506046600f541115610c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1890613c67565b60405180910390fd5b5050565b610c2d6120d4565b73ffffffffffffffffffffffffffffffffffffffff16610c4b611948565b73ffffffffffffffffffffffffffffffffffffffff1614610ca1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9890613b76565b60405180910390fd5b670de0b6b3a76400006103e86001610cb7610de4565b610cc19190613c87565b610ccb9190613d10565b610cd59190613d10565b811015610d17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0e90613db3565b60405180910390fd5b670de0b6b3a764000081610d2b9190613c87565b60098190555050565b606060008054610d4390613e02565b80601f0160208091040260200160405190810160405280929190818152602001828054610d6f90613e02565b8015610dbc5780601f10610d9157610100808354040283529160200191610dbc565b820191906000526020600020905b815481529060010190602001808311610d9f57829003601f168201915b5050505050905090565b6000610dda610dd36120d4565b84846120dc565b6001905092915050565b6000600254905090565b60125481565b6000610e018484846122a7565b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e4c6120d4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ecc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec390613ea6565b60405180910390fd5b610ee085610ed86120d4565b8584036120dc565b60019150509392505050565b610ef46120d4565b73ffffffffffffffffffffffffffffffffffffffff16610f12611948565b73ffffffffffffffffffffffffffffffffffffffff1614610f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5f90613b76565b60405180910390fd5b670de0b6b3a76400006103e86005610f7e610de4565b610f889190613c87565b610f929190613d10565b610f9c9190613d10565b811015610fde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd590613f38565b60405180910390fd5b670de0b6b3a764000081610ff29190613c87565b600b8190555050565b6110036120d4565b73ffffffffffffffffffffffffffffffffffffffff16611021611948565b73ffffffffffffffffffffffffffffffffffffffff1614611077576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106e90613b76565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611108576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ff90613fca565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006012905090565b60105481565b600061121461117f6120d4565b84846004600061118d6120d4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461120f9190613bc5565b6120dc565b6001905092915050565b600860169054906101000a900460ff1681565b60166020528060005260406000206000915054906101000a900460ff1681565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600d81526020017f54726164696e6720546f6b656e00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001204630604051602001611304959493929190613ff9565b60405160208183030381529060405280519060200120905060007f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e670000000000000000000000000000000000008152508051906020012060006040516020016113909392919061404c565b604051602081830303815290604052805190602001209050600082826040516020016113bd9291906140fb565b6040516020818303038152906040528051906020012090506000600182888888604051600081526020016040526040516113fa9493929190614132565b6020604051602081039080840390855afa15801561141c573d6000803e3d6000fd5b505050602060405103519050611430611948565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461149d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611494906141c3565b60405180910390fd5b6001600860146101000a81548160ff0219169083151502179055506001600860156101000a81548160ff02191690831515021790555050505050505050565b6114e46120d4565b73ffffffffffffffffffffffffffffffffffffffff16611502611948565b73ffffffffffffffffffffffffffffffffffffffff1614611558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154f90613b76565b60405180910390fd5b81600d8190555080600e81905550600e54600d546115769190613bc5565b600c81905550600a600c5411156115c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b99061422f565b60405180910390fd5b5050565b6115ce6120d4565b73ffffffffffffffffffffffffffffffffffffffff166115ec611948565b73ffffffffffffffffffffffffffffffffffffffff1614611642576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163990613b76565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f5481565b600860159054906101000a900460ff1681565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6117076120d4565b73ffffffffffffffffffffffffffffffffffffffff16611725611948565b73ffffffffffffffffffffffffffffffffffffffff161461177b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177290613b76565b60405180910390fd5b6117856000612e2d565b565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b60006117b56120d4565b73ffffffffffffffffffffffffffffffffffffffff166117d3611948565b73ffffffffffffffffffffffffffffffffffffffff1614611829576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182090613b76565b60405180910390fd5b6000600860166101000a81548160ff0219169083151502179055506001905090565b6118536120d4565b73ffffffffffffffffffffffffffffffffffffffff16611871611948565b73ffffffffffffffffffffffffffffffffffffffff16146118c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118be90613b76565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b6119a66120d4565b73ffffffffffffffffffffffffffffffffffffffff166119c4611948565b73ffffffffffffffffffffffffffffffffffffffff1614611a1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1190613b76565b60405180910390fd5b80600860156101000a81548160ff02191690831515021790555050565b60176020528060005260406000206000915054906101000a900460ff1681565b606060018054611a6690613e02565b80601f0160208091040260200160405190810160405280929190818152602001828054611a9290613e02565b8015611adf5780601f10611ab457610100808354040283529160200191611adf565b820191906000526020600020905b815481529060010190602001808311611ac257829003601f168201915b5050505050905090565b600e5481565b60135481565b60115481565b60008060046000611b0a6120d4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611bc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbe906142c1565b60405180910390fd5b611bdb611bd26120d4565b858584036120dc565b600191505092915050565b60186020528060005260406000206000915054906101000a900460ff1681565b6000611c1a611c136120d4565b84846122a7565b6001905092915050565b600860149054906101000a900460ff1681565b611c3f6120d4565b73ffffffffffffffffffffffffffffffffffffffff16611c5d611948565b73ffffffffffffffffffffffffffffffffffffffff1614611cb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611caa90613b76565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60095481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611d426120d4565b73ffffffffffffffffffffffffffffffffffffffff16611d60611948565b73ffffffffffffffffffffffffffffffffffffffff1614611db6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dad90613b76565b60405180910390fd5b6001600860146101000a81548160ff0219169083151502179055506001600860156101000a81548160ff021916908315150217905550565b6000611df86120d4565b73ffffffffffffffffffffffffffffffffffffffff16611e16611948565b73ffffffffffffffffffffffffffffffffffffffff1614611e6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6390613b76565b60405180910390fd5b620186a06001611e7a610de4565b611e849190613c87565b611e8e9190613d10565b821015611ed0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec790614353565b60405180910390fd5b6103e86005611edd610de4565b611ee79190613c87565b611ef19190613d10565b821115611f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2a906143e5565b60405180910390fd5b81600a8190555060019050919050565b600c5481565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b600d5481565b611fe46120d4565b73ffffffffffffffffffffffffffffffffffffffff16612002611948565b73ffffffffffffffffffffffffffffffffffffffff1614612058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204f90613b76565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156120c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bf90614477565b60405180910390fd5b6120d181612e2d565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561214c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214390614509565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b39061459b565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161229a9190613826565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612317576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230e9061462d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612387576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237e906146bf565b60405180910390fd5b601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612414576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240b9061472b565b60405180910390fd5b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156124a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249890614797565b60405180910390fd5b60008114156124bb576124b683836000612ef3565b612e28565b600860169054906101000a900460ff16156129b6576124d8611948565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156125465750612516611948565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561257f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125b9575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125d25750601460009054906101000a900460ff16155b156129b557600860149054906101000a900460ff166126cc57601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061268c5750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6126cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c290614803565b60405180910390fd5b5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561276f5750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612816576009548111156127b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b090614895565b60405180910390fd5b600b546127c5836116b6565b826127d09190613bc5565b1115612811576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280890614901565b60405180910390fd5b6129b4565b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156128b95750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561290857600954811115612903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128fa90614993565b60405180910390fd5b6129b3565b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166129b257600b54612965836116b6565b826129709190613bc5565b11156129b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a890614901565b60405180910390fd5b5b5b5b5b5b60006129c1306116b6565b90506000600a5482101590508080156129e65750600860159054906101000a900460ff165b80156129ff5750601460009054906101000a900460ff16155b8015612a555750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612aab5750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612b015750601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b45576001601460006101000a81548160ff021916908315150217905550612b29613177565b6000601460006101000a81548160ff0219169083151502179055505b6000601460009054906101000a900460ff16159050601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612bfb5750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612c0557600090505b60008115612e1857601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c6857506000600f54115b15612d0257612c956064612c87600f548861335790919063ffffffff16565b61336d90919063ffffffff16565b9050600f5460115482612ca89190613c87565b612cb29190613d10565b60136000828254612cc39190613bc5565b92505081905550600f5460105482612cdb9190613c87565b612ce59190613d10565b60126000828254612cf69190613bc5565b92505081905550612df4565b601860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612d5d57506000600c54115b15612df357612d8a6064612d7c600c548861335790919063ffffffff16565b61336d90919063ffffffff16565b9050600c54600e5482612d9d9190613c87565b612da79190613d10565b60136000828254612db89190613bc5565b92505081905550600c54600d5482612dd09190613c87565b612dda9190613d10565b60126000828254612deb9190613bc5565b925050819055505b5b6000811115612e0957612e08873083612ef3565b5b8085612e1591906149b3565b94505b612e23878787612ef3565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612f63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f5a9061462d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fca906146bf565b60405180910390fd5b612fde838383613383565b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305c90614a59565b60405180910390fd5b818103600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546130fa9190613bc5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161315e9190613826565b60405180910390a3613171848484613388565b50505050565b6000613182306116b6565b905060006013546012546131969190613bc5565b90506000808314156131aa57505050613355565b6014600a546131b99190613c87565b8311156131d2576014600a546131cf9190613c87565b92505b60004790506131e08461338d565b60006131f582476135ca90919063ffffffff16565b90506000613220856132126013548561335790919063ffffffff16565b61336d90919063ffffffff16565b905060006012819055506000601381905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161327890614aaa565b60006040518083038185875af1925050503d80600081146132b5576040519150601f19603f3d011682016040523d82523d6000602084013e6132ba565b606091505b505080945050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161330690614aaa565b60006040518083038185875af1925050503d8060008114613343576040519150601f19603f3d011682016040523d82523d6000602084013e613348565b606091505b5050809450505050505050505b565b600081836133659190613c87565b905092915050565b6000818361337b9190613d10565b905092915050565b505050565b505050565b6000600267ffffffffffffffff8111156133aa576133a9614abf565b5b6040519080825280602002602001820160405280156133d85781602001602082028036833780820191505090505b50905030816000815181106133f0576133ef614aee565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613495573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134b99190614b32565b816001815181106134cd576134cc614aee565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613532307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846120dc565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613594959493929190614c58565b600060405180830381600087803b1580156135ae57600080fd5b505af11580156135c2573d6000803e3d6000fd5b505050505050565b600081836135d891906149b3565b905092915050565b600080fd5b6000819050919050565b6135f8816135e5565b811461360357600080fd5b50565b600081359050613615816135ef565b92915050565b60008060408385031215613632576136316135e0565b5b600061364085828601613606565b925050602061365185828601613606565b9150509250929050565b600060208284031215613671576136706135e0565b5b600061367f84828501613606565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156136c25780820151818401526020810190506136a7565b838111156136d1576000848401525b50505050565b6000601f19601f8301169050919050565b60006136f382613688565b6136fd8185613693565b935061370d8185602086016136a4565b613716816136d7565b840191505092915050565b6000602082019050818103600083015261373b81846136e8565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061376e82613743565b9050919050565b61377e81613763565b811461378957600080fd5b50565b60008135905061379b81613775565b92915050565b600080604083850312156137b8576137b76135e0565b5b60006137c68582860161378c565b92505060206137d785828601613606565b9150509250929050565b60008115159050919050565b6137f6816137e1565b82525050565b600060208201905061381160008301846137ed565b92915050565b613820816135e5565b82525050565b600060208201905061383b6000830184613817565b92915050565b60008060006060848603121561385a576138596135e0565b5b60006138688682870161378c565b93505060206138798682870161378c565b925050604061388a86828701613606565b9150509250925092565b61389d816137e1565b81146138a857600080fd5b50565b6000813590506138ba81613894565b92915050565b600080604083850312156138d7576138d66135e0565b5b60006138e58582860161378c565b92505060206138f6858286016138ab565b9150509250929050565b600060ff82169050919050565b61391681613900565b82525050565b6000602082019050613931600083018461390d565b92915050565b60006020828403121561394d5761394c6135e0565b5b600061395b8482850161378c565b91505092915050565b61396d81613900565b811461397857600080fd5b50565b60008135905061398a81613964565b92915050565b6000819050919050565b6139a381613990565b81146139ae57600080fd5b50565b6000813590506139c08161399a565b92915050565b6000806000606084860312156139df576139de6135e0565b5b60006139ed8682870161397b565b93505060206139fe868287016139b1565b9250506040613a0f868287016139b1565b9150509250925092565b6000819050919050565b6000613a3e613a39613a3484613743565b613a19565b613743565b9050919050565b6000613a5082613a23565b9050919050565b6000613a6282613a45565b9050919050565b613a7281613a57565b82525050565b6000602082019050613a8d6000830184613a69565b92915050565b613a9c81613763565b82525050565b6000602082019050613ab76000830184613a93565b92915050565b600060208284031215613ad357613ad26135e0565b5b6000613ae1848285016138ab565b91505092915050565b60008060408385031215613b0157613b006135e0565b5b6000613b0f8582860161378c565b9250506020613b208582860161378c565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613b60602083613693565b9150613b6b82613b2a565b602082019050919050565b60006020820190508181036000830152613b8f81613b53565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613bd0826135e5565b9150613bdb836135e5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613c1057613c0f613b96565b5b828201905092915050565b7f4d757374206b656570206665657320617420373025206f72206c657373000000600082015250565b6000613c51601d83613693565b9150613c5c82613c1b565b602082019050919050565b60006020820190508181036000830152613c8081613c44565b9050919050565b6000613c92826135e5565b9150613c9d836135e5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613cd657613cd5613b96565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d1b826135e5565b9150613d26836135e5565b925082613d3657613d35613ce1565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b6000613d9d602983613693565b9150613da882613d41565b604082019050919050565b60006020820190508181036000830152613dcc81613d90565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613e1a57607f821691505b60208210811415613e2e57613e2d613dd3565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613e90602883613693565b9150613e9b82613e34565b604082019050919050565b60006020820190508181036000830152613ebf81613e83565b9050919050565b7f43616e6e6f7420736574206d617857616c6c657453697a65206c6f776572207460008201527f68616e20302e3525000000000000000000000000000000000000000000000000602082015250565b6000613f22602883613693565b9150613f2d82613ec6565b604082019050919050565b60006020820190508181036000830152613f5181613f15565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f616d6d5061697273000000000000000000000000000000000000000000000000602082015250565b6000613fb4602883613693565b9150613fbf82613f58565b604082019050919050565b60006020820190508181036000830152613fe381613fa7565b9050919050565b613ff381613990565b82525050565b600060a08201905061400e6000830188613fea565b61401b6020830187613fea565b6140286040830186613fea565b6140356060830185613817565b6140426080830184613a93565b9695505050505050565b60006060820190506140616000830186613fea565b61406e6020830185613fea565b61407b6040830184613817565b949350505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b60006140c4600283614083565b91506140cf8261408e565b600282019050919050565b6000819050919050565b6140f56140f082613990565b6140da565b82525050565b6000614106826140b7565b915061411282856140e4565b60208201915061412282846140e4565b6020820191508190509392505050565b60006080820190506141476000830187613fea565b614154602083018661390d565b6141616040830185613fea565b61416e6060830184613fea565b95945050505050565b7f496e76616c6964207369676e6174757265000000000000000000000000000000600082015250565b60006141ad601183613693565b91506141b882614177565b602082019050919050565b600060208201905081810360008301526141dc816141a0565b9050919050565b7f4d757374206b656570206665657320617420313025206f72206c657373000000600082015250565b6000614219601d83613693565b9150614224826141e3565b602082019050919050565b600060208201905081810360008301526142488161420c565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006142ab602583613693565b91506142b68261424f565b604082019050919050565b600060208201905081810360008301526142da8161429e565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b600061433d603583613693565b9150614348826142e1565b604082019050919050565b6000602082019050818103600083015261436c81614330565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006143cf603483613693565b91506143da82614373565b604082019050919050565b600060208201905081810360008301526143fe816143c2565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614461602683613693565b915061446c82614405565b604082019050919050565b6000602082019050818103600083015261449081614454565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006144f3602483613693565b91506144fe82614497565b604082019050919050565b60006020820190508181036000830152614522816144e6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614585602283613693565b915061459082614529565b604082019050919050565b600060208201905081810360008301526145b481614578565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614617602583613693565b9150614622826145bb565b604082019050919050565b600060208201905081810360008301526146468161460a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006146a9602383613693565b91506146b48261464d565b604082019050919050565b600060208201905081810360008301526146d88161469c565b9050919050565b7f5b66726f6d5d20626c61636b206c697374000000000000000000000000000000600082015250565b6000614715601183613693565b9150614720826146df565b602082019050919050565b6000602082019050818103600083015261474481614708565b9050919050565b7f5b746f5d20626c61636b206c6973740000000000000000000000000000000000600082015250565b6000614781600f83613693565b915061478c8261474b565b602082019050919050565b600060208201905081810360008301526147b081614774565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006147ed601683613693565b91506147f8826147b7565b602082019050919050565b6000602082019050818103600083015261481c816147e0565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e2e0000000000000000000000000000000000602082015250565b600061487f602f83613693565b915061488a82614823565b604082019050919050565b600060208201905081810360008301526148ae81614872565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006148eb601383613693565b91506148f6826148b5565b602082019050919050565b6000602082019050818103600083015261491a816148de565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e2e00000000000000000000000000000000602082015250565b600061497d603083613693565b915061498882614921565b604082019050919050565b600060208201905081810360008301526149ac81614970565b9050919050565b60006149be826135e5565b91506149c9836135e5565b9250828210156149dc576149db613b96565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614a43602683613693565b9150614a4e826149e7565b604082019050919050565b60006020820190508181036000830152614a7281614a36565b9050919050565b600081905092915050565b50565b6000614a94600083614a79565b9150614a9f82614a84565b600082019050919050565b6000614ab582614a87565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614b2c81613775565b92915050565b600060208284031215614b4857614b476135e0565b5b6000614b5684828501614b1d565b91505092915050565b6000819050919050565b6000614b84614b7f614b7a84614b5f565b613a19565b6135e5565b9050919050565b614b9481614b69565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614bcf81613763565b82525050565b6000614be18383614bc6565b60208301905092915050565b6000602082019050919050565b6000614c0582614b9a565b614c0f8185614ba5565b9350614c1a83614bb6565b8060005b83811015614c4b578151614c328882614bd5565b9750614c3d83614bed565b925050600181019050614c1e565b5085935050505092915050565b600060a082019050614c6d6000830188613817565b614c7a6020830187614b8b565b8181036040830152614c8c8186614bfa565b9050614c9b6060830185613a93565b614ca86080830184613817565b969550505050505056fea2646970667358221220d160cdc8b45f709dce81c85fcc9e3041996af4502b6c988a240486bf65d9570464736f6c634300080a0033

Deployed Bytecode Sourcemap

15126:10518:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20508:289;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19982:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10471:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11202:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10792:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15799:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11562:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19350:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20805:189;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10691:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15730:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12062:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15439:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15953:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17766:1060;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20218:282;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21002:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15695:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15401:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10908:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;947:103;;;;;;;;;;;;;:::i;:::-;;15200:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19113:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18834:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15291:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;724:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15328:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15557:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19242:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16010:55;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10579:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15662:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15836:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15765:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12285:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16074:40;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11379:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15361:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18978:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15481:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15256:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17648:110;;;;;;;;;;;;;:::i;:::-;;19583:391;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15594:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11043:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15517:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15628:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1058:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20508:289;870:12;:10;:12::i;:::-;859:23;;:7;:5;:7::i;:::-;:23;;;851:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20619:12:::1;20603:13;:28;;;;20655:9;20642:10;:22;;;;20707:10;;20691:13;;:26;;;;:::i;:::-;20675:13;:42;;;;20753:2;20736:13;;:19;;20728:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;20508:289:::0;;:::o;19982:228::-;870:12;:10;:12::i;:::-;859:23;;:7;:5;:7::i;:::-;:23;;;851:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20107:4:::1;20099;20094:1;20078:13;:11;:13::i;:::-;:17;;;;:::i;:::-;20077:26;;;;:::i;:::-;20076:35;;;;:::i;:::-;20066:6;:45;;20058:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;20195:6;20185;:17;;;;:::i;:::-;20168:14;:34;;;;19982:228:::0;:::o;10471:100::-;10525:13;10558:5;10551:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10471:100;:::o;11202:169::-;11285:4;11302:39;11311:12;:10;:12::i;:::-;11325:7;11334:6;11302:8;:39::i;:::-;11359:4;11352:11;;11202:169;;;;:::o;10792:108::-;10853:7;10880:12;;10873:19;;10792:108;:::o;15799:30::-;;;;:::o;11562:492::-;11702:4;11719:36;11729:6;11737:9;11748:6;11719:9;:36::i;:::-;11768:24;11795:11;:19;11807:6;11795:19;;;;;;;;;;;;;;;:33;11815:12;:10;:12::i;:::-;11795:33;;;;;;;;;;;;;;;;11768:60;;11867:6;11847:16;:26;;11839:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;11954:57;11963:6;11971:12;:10;:12::i;:::-;12004:6;11985:16;:25;11954:8;:57::i;:::-;12042:4;12035:11;;;11562:492;;;;;:::o;19350:225::-;870:12;:10;:12::i;:::-;859:23;;:7;:5;:7::i;:::-;:23;;;851:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19474:4:::1;19466;19461:1;19445:13;:11;:13::i;:::-;:17;;;;:::i;:::-;19444:26;;;;:::i;:::-;19443:35;;;;:::i;:::-;19433:6;:45;;19425:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;19560:6;19550;:17;;;;:::i;:::-;19534:13;:33;;;;19350:225:::0;:::o;20805:189::-;870:12;:10;:12::i;:::-;859:23;;:7;:5;:7::i;:::-;:23;;;851:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20897:11:::1;;;;;;;;;;;20889:19;;:4;:19;;;;20881:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;20981:5;20964:8;:14;20973:4;20964:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;20805:189:::0;;:::o;10691:93::-;10749:5;10774:2;10767:9;;10691:93;:::o;15730:28::-;;;;:::o;12062:215::-;12150:4;12167:80;12176:12;:10;:12::i;:::-;12190:7;12236:10;12199:11;:25;12211:12;:10;:12::i;:::-;12199:25;;;;;;;;;;;;;;;:34;12225:7;12199:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;12167:8;:80::i;:::-;12265:4;12258:11;;12062:215;;;;:::o;15439:33::-;;;;;;;;;;;;;:::o;15953:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;17766:1060::-;17848:18;17922:95;18046:22;;;;;;;;;;;;;;;;;18036:33;;;;;;18098:10;;;;;;;;;;;;;;;;;18088:21;;;;;;18128:13;18168:4;17893:295;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;17869:330;;;;;;17848:351;;18212:18;18286:49;18364:23;;;;;;;;;;;;;;;;;18354:34;;;;;;18415:1;18257:175;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;18233:210;;;;;;18212:231;;18456:14;18561:10;18590;18497:134;;;;;;;;;:::i;:::-;;;;;;;;;;;;;18473:169;;;;;;18456:186;;18655:14;18672:26;18682:6;18690:1;18693;18696;18672:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18655:43;;18727:7;:5;:7::i;:::-;18717:17;;:6;:17;;;18709:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;18785:4;18769:13;;:20;;;;;;;;;;;;;;;;;;18814:4;18800:11;;:18;;;;;;;;;;;;;;;;;;17837:989;;;;17766:1060;;;:::o;20218:282::-;870:12;:10;:12::i;:::-;859:23;;:7;:5;:7::i;:::-;:23;;;851:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20327:12:::1;20312;:27;;;;20362:9;20350;:21;;;;20412:9;;20397:12;;:24;;;;:::i;:::-;20382:12;:39;;;;20456:2;20440:12;;:18;;20432:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;20218:282:::0;;:::o;21002:113::-;870:12;:10;:12::i;:::-;859:23;;:7;:5;:7::i;:::-;:23;;;851:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21101:6:::1;21081:11;:17;21093:4;21081:17;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;21002:113:::0;;:::o;15695:28::-;;;;:::o;15401:31::-;;;;;;;;;;;;;:::o;10908:127::-;10982:7;11009:9;:18;11019:7;11009:18;;;;;;;;;;;;;;;;11002:25;;10908:127;;;:::o;947:103::-;870:12;:10;:12::i;:::-;859:23;;:7;:5;:7::i;:::-;:23;;;851:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1012:30:::1;1039:1;1012:18;:30::i;:::-;947:103::o:0;15200:49::-;;;:::o;19113:121::-;19165:4;870:12;:10;:12::i;:::-;859:23;;:7;:5;:7::i;:::-;:23;;;851:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19199:5:::1;19182:14;;:22;;;;;;;;;;;;;;;;;;19222:4;19215:11;;19113:121:::0;:::o;18834:136::-;870:12;:10;:12::i;:::-;859:23;;:7;:5;:7::i;:::-;:23;;;851:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18957:5:::1;18925:23;:29;18949:4;18925:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;18834:136:::0;;:::o;15291:30::-;;;;;;;;;;;;;:::o;724:87::-;770:7;797:6;;;;;;;;;;;790:13;;724:87;:::o;15328:24::-;;;;;;;;;;;;;:::o;15557:28::-;;;;:::o;19242:100::-;870:12;:10;:12::i;:::-;859:23;;:7;:5;:7::i;:::-;:23;;;851:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19327:7:::1;19313:11;;:21;;;;;;;;;;;;;;;;;;19242:100:::0;:::o;16010:55::-;;;;;;;;;;;;;;;;;;;;;;:::o;10579:104::-;10635:13;10668:7;10661:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10579:104;:::o;15662:24::-;;;;:::o;15836:27::-;;;;:::o;15765:25::-;;;;:::o;12285:413::-;12378:4;12395:24;12422:11;:25;12434:12;:10;:12::i;:::-;12422:25;;;;;;;;;;;;;;;:34;12448:7;12422:34;;;;;;;;;;;;;;;;12395:61;;12495:15;12475:16;:35;;12467:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;12588:67;12597:12;:10;:12::i;:::-;12611:7;12639:15;12620:16;:34;12588:8;:67::i;:::-;12686:4;12679:11;;;12285:413;;;;:::o;16074:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;11379:175::-;11465:4;11482:42;11492:12;:10;:12::i;:::-;11506:9;11517:6;11482:9;:42::i;:::-;11542:4;11535:11;;11379:175;;;;:::o;15361:33::-;;;;;;;;;;;;;:::o;18978:127::-;870:12;:10;:12::i;:::-;859:23;;:7;:5;:7::i;:::-;:23;;;851:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19092:5:::1;19062:18;:27;19081:7;19062:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;18978:127:::0;;:::o;15481:29::-;;;;:::o;15256:26::-;;;;;;;;;;;;;:::o;17648:110::-;870:12;:10;:12::i;:::-;859:23;;:7;:5;:7::i;:::-;:23;;;851:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17717:4:::1;17701:13;;:20;;;;;;;;;;;;;;;;;;17746:4;17732:11;;:18;;;;;;;;;;;;;;;;;;17648:110::o:0;19583:391::-;19664:4;870:12;:10;:12::i;:::-;859:23;;:7;:5;:7::i;:::-;:23;;;851:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19724:6:::1;19719:1;19703:13;:11;:13::i;:::-;:17;;;;:::i;:::-;19702:28;;;;:::i;:::-;19689:9;:41;;19681:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;19842:4;19837:1;19821:13;:11;:13::i;:::-;:17;;;;:::i;:::-;19820:26;;;;:::i;:::-;19807:9;:39;;19799:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;19935:9;19914:18;:30;;;;19962:4;19955:11;;19583:391:::0;;;:::o;15594:27::-;;;;:::o;11043:151::-;11132:7;11159:11;:18;11171:5;11159:18;;;;;;;;;;;;;;;:27;11178:7;11159:27;;;;;;;;;;;;;;;;11152:34;;11043:151;;;;:::o;15517:33::-;;;;:::o;15628:27::-;;;;:::o;1058:201::-;870:12;:10;:12::i;:::-;859:23;;:7;:5;:7::i;:::-;:23;;;851:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1167:1:::1;1147:22;;:8;:22;;;;1139:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1223:28;1242:8;1223:18;:28::i;:::-;1058:201:::0;:::o;270:98::-;323:7;350:10;343:17;;270:98;:::o;13712:380::-;13865:1;13848:19;;:5;:19;;;;13840:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13946:1;13927:21;;:7;:21;;;;13919:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14030:6;14000:11;:18;14012:5;14000:18;;;;;;;;;;;;;;;:27;14019:7;14000:27;;;;;;;;;;;;;;;:36;;;;14068:7;14052:32;;14061:5;14052:32;;;14077:6;14052:32;;;;;;:::i;:::-;;;;;;;;13712:380;;;:::o;22570:2956::-;22684:1;22668:18;;:4;:18;;;;22660:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22761:1;22747:16;;:2;:16;;;;22739:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22823:11;:17;22835:4;22823:17;;;;;;;;;;;;;;;;;;;;;;;;;22822:18;22814:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;22882:11;:15;22894:2;22882:15;;;;;;;;;;;;;;;;;;;;;;;;;22881:16;22873:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;22944:1;22934:6;:11;22930:93;;;22962:28;22978:4;22984:2;22988:1;22962:15;:28::i;:::-;23005:7;;22930:93;23039:14;;;;;;;;;;;23035:1116;;;23082:7;:5;:7::i;:::-;23074:15;;:4;:15;;;;:49;;;;;23116:7;:5;:7::i;:::-;23110:13;;:2;:13;;;;23074:49;:86;;;;;23158:1;23144:16;;:2;:16;;;;23074:86;:128;;;;;23195:6;23181:21;;:2;:21;;;;23074:128;:158;;;;;23224:8;;;;;;;;;;;23223:9;23074:158;23070:1070;;;23258:13;;;;;;;;;;;23253:148;;23304:18;:24;23323:4;23304:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;23332:18;:22;23351:2;23332:22;;;;;;;;;;;;;;;;;;;;;;;;;23304:50;23296:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;23253:148;23453:8;:14;23462:4;23453:14;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;23472:23;:27;23496:2;23472:27;;;;;;;;;;;;;;;;;;;;;;;;;23471:28;23453:46;23449:676;;;23542:14;;23532:6;:24;;23524:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;23665:13;;23648;23658:2;23648:9;:13::i;:::-;23639:6;:22;;;;:::i;:::-;:39;;23631:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;23449:676;;;23778:8;:12;23787:2;23778:12;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;23795:23;:29;23819:4;23795:29;;;;;;;;;;;;;;;;;;;;;;;;;23794:30;23778:46;23774:351;;;23867:14;;23857:6;:24;;23849:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;23774:351;;;23982:23;:27;24006:2;23982:27;;;;;;;;;;;;;;;;;;;;;;;;;23977:148;;24068:13;;24051;24061:2;24051:9;:13::i;:::-;24042:6;:22;;;;:::i;:::-;:39;;24034:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;23977:148;23774:351;23449:676;23070:1070;23035:1116;24163:23;24189:24;24207:4;24189:9;:24::i;:::-;24163:50;;24224:12;24258:18;;24239:15;:37;;24224:52;;24291:7;:35;;;;;24315:11;;;;;;;;;;;24291:35;:61;;;;;24344:8;;;;;;;;;;;24343:9;24291:61;:93;;;;;24370:8;:14;24379:4;24370:14;;;;;;;;;;;;;;;;;;;;;;;;;24369:15;24291:93;:135;;;;;24402:18;:24;24421:4;24402:24;;;;;;;;;;;;;;;;;;;;;;;;;24401:25;24291:135;:175;;;;;24444:18;:22;24463:2;24444:22;;;;;;;;;;;;;;;;;;;;;;;;;24443:23;24291:175;24287:281;;;24496:4;24485:8;;:15;;;;;;;;;;;;;;;;;;24515:10;:8;:10::i;:::-;24551:5;24540:8;;:16;;;;;;;;;;;;;;;;;;24287:281;24580:12;24596:8;;;;;;;;;;;24595:9;24580:24;;24619:18;:24;24638:4;24619:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;24647:18;:22;24666:2;24647:22;;;;;;;;;;;;;;;;;;;;;;;;;24619:50;24615:84;;;24694:5;24684:15;;24615:84;24712:11;24742:7;24738:735;;;24794:8;:12;24803:2;24794:12;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;;24826:1;24810:13;;:17;24794:33;24790:554;;;24854:34;24884:3;24854:25;24865:13;;24854:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;24848:40;;24944:13;;24930:10;;24924:3;:16;;;;:::i;:::-;24923:34;;;;:::i;:::-;24907:12;;:50;;;;;;;:::i;:::-;;;;;;;;25019:13;;25002;;24996:3;:19;;;;:::i;:::-;24995:37;;;;:::i;:::-;24976:15;;:56;;;;;;;:::i;:::-;;;;;;;;24790:554;;;25094:8;:14;25103:4;25094:14;;;;;;;;;;;;;;;;;;;;;;;;;:34;;;;;25127:1;25112:12;;:16;25094:34;25090:254;;;25155:33;25184:3;25155:24;25166:12;;25155:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;25149:39;;25243:12;;25230:9;;25224:3;:15;;;;:::i;:::-;25223:32;;;;:::i;:::-;25207:12;;:48;;;;;;;:::i;:::-;;;;;;;;25316:12;;25300;;25294:3;:18;;;;:::i;:::-;25293:35;;;;:::i;:::-;25274:15;;:54;;;;;;;:::i;:::-;;;;;;;;25090:254;24790:554;25370:1;25364:3;:7;25360:71;;;25390:41;25406:4;25420;25427:3;25390:15;:41::i;:::-;25360:71;25458:3;25448:13;;;;;:::i;:::-;;;24738:735;25485:33;25501:4;25507:2;25511:6;25485:15;:33::i;:::-;22649:2877;;;;22570:2956;;;;:::o;1267:191::-;1341:16;1360:6;;;;;;;;;;;1341:25;;1386:8;1377:6;;:17;;;;;;;;;;;;;;;;;;1441:8;1410:40;;1431:8;1410:40;;;;;;;;;;;;1330:128;1267:191;:::o;14100:733::-;14258:1;14240:20;;:6;:20;;;;14232:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;14342:1;14321:23;;:9;:23;;;;14313:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14397:47;14418:6;14426:9;14437:6;14397:20;:47::i;:::-;14457:21;14481:9;:17;14491:6;14481:17;;;;;;;;;;;;;;;;14457:41;;14534:6;14517:13;:23;;14509:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14655:6;14639:13;:22;14619:9;:17;14629:6;14619:17;;;;;;;;;;;;;;;:42;;;;14707:6;14683:9;:20;14693:9;14683:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;14748:9;14731:35;;14740:6;14731:35;;;14759:6;14731:35;;;;;;:::i;:::-;;;;;;;;14779:46;14799:6;14807:9;14818:6;14779:19;:46::i;:::-;14221:612;14100:733;;;:::o;21123:848::-;21162:23;21188:24;21206:4;21188:9;:24::i;:::-;21162:50;;21223:25;21269:12;;21251:15;;:30;;;;:::i;:::-;21223:58;;21292:12;21340:1;21321:15;:20;21317:46;;;21356:7;;;;;21317:46;21418:2;21397:18;;:23;;;;:::i;:::-;21379:15;:41;21375:101;;;21474:2;21453:18;;:23;;;;:::i;:::-;21435:41;;21375:101;21489:25;21517:21;21489:49;;21549:33;21566:15;21549:16;:33::i;:::-;21595:18;21616:44;21642:17;21616:21;:25;;:44;;;;:::i;:::-;21595:65;;21671:17;21691:51;21724:17;21691:28;21706:12;;21691:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;21671:71;;21773:1;21755:15;:19;;;;21800:1;21785:12;:16;;;;21836:9;;;;;;;;;;;21828:23;;21859:9;21828:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21814:59;;;;;21906:15;;;;;;;;;;;21898:29;;21936:21;21898:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21884:79;;;;;21151:820;;;;;;21123:848;:::o;2846:98::-;2904:7;2935:1;2931;:5;;;;:::i;:::-;2924:12;;2846:98;;;;:::o;2952:::-;3010:7;3041:1;3037;:5;;;;:::i;:::-;3030:12;;2952:98;;;;:::o;14841:125::-;;;;:::o;14974:124::-;;;;:::o;21979:583::-;22105:21;22143:1;22129:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22105:40;;22174:4;22156;22161:1;22156:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;22200:13;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22190:4;22195:1;22190:7;;;;;;;;:::i;:::-;;;;;;;:30;;;;;;;;;;;22233:60;22250:4;22265:13;22281:11;22233:8;:60::i;:::-;22332:13;:64;;;22411:11;22437:1;22481:4;22508;22528:15;22332:222;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22034:528;21979:583;:::o;2740:98::-;2798:7;2829:1;2825;:5;;;;:::i;:::-;2818:12;;2740:98;;;;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:474::-;758:6;766;815:2;803:9;794:7;790:23;786:32;783:119;;;821:79;;:::i;:::-;783:119;941:1;966:53;1011:7;1002:6;991:9;987:22;966:53;:::i;:::-;956:63;;912:117;1068:2;1094:53;1139:7;1130:6;1119:9;1115:22;1094:53;:::i;:::-;1084:63;;1039:118;690:474;;;;;:::o;1170:329::-;1229:6;1278:2;1266:9;1257:7;1253:23;1249:32;1246:119;;;1284:79;;:::i;:::-;1246:119;1404:1;1429:53;1474:7;1465:6;1454:9;1450:22;1429:53;:::i;:::-;1419:63;;1375:117;1170:329;;;;:::o;1505:99::-;1557:6;1591:5;1585:12;1575:22;;1505:99;;;:::o;1610:169::-;1694:11;1728:6;1723:3;1716:19;1768:4;1763:3;1759:14;1744:29;;1610:169;;;;:::o;1785:307::-;1853:1;1863:113;1877:6;1874:1;1871:13;1863:113;;;1962:1;1957:3;1953:11;1947:18;1943:1;1938:3;1934:11;1927:39;1899:2;1896:1;1892:10;1887:15;;1863:113;;;1994:6;1991:1;1988:13;1985:101;;;2074:1;2065:6;2060:3;2056:16;2049:27;1985:101;1834:258;1785:307;;;:::o;2098:102::-;2139:6;2190:2;2186:7;2181:2;2174:5;2170:14;2166:28;2156:38;;2098:102;;;:::o;2206:364::-;2294:3;2322:39;2355:5;2322:39;:::i;:::-;2377:71;2441:6;2436:3;2377:71;:::i;:::-;2370:78;;2457:52;2502:6;2497:3;2490:4;2483:5;2479:16;2457:52;:::i;:::-;2534:29;2556:6;2534:29;:::i;:::-;2529:3;2525:39;2518:46;;2298:272;2206:364;;;;:::o;2576:313::-;2689:4;2727:2;2716:9;2712:18;2704:26;;2776:9;2770:4;2766:20;2762:1;2751:9;2747:17;2740:47;2804:78;2877:4;2868:6;2804:78;:::i;:::-;2796:86;;2576:313;;;;:::o;2895:126::-;2932:7;2972:42;2965:5;2961:54;2950:65;;2895:126;;;:::o;3027:96::-;3064:7;3093:24;3111:5;3093:24;:::i;:::-;3082:35;;3027:96;;;:::o;3129:122::-;3202:24;3220:5;3202:24;:::i;:::-;3195:5;3192:35;3182:63;;3241:1;3238;3231:12;3182:63;3129:122;:::o;3257:139::-;3303:5;3341:6;3328:20;3319:29;;3357:33;3384:5;3357:33;:::i;:::-;3257:139;;;;:::o;3402:474::-;3470:6;3478;3527:2;3515:9;3506:7;3502:23;3498:32;3495:119;;;3533:79;;:::i;:::-;3495:119;3653:1;3678:53;3723:7;3714:6;3703:9;3699:22;3678:53;:::i;:::-;3668:63;;3624:117;3780:2;3806:53;3851:7;3842:6;3831:9;3827:22;3806:53;:::i;:::-;3796:63;;3751:118;3402:474;;;;;:::o;3882:90::-;3916:7;3959:5;3952:13;3945:21;3934:32;;3882:90;;;:::o;3978:109::-;4059:21;4074:5;4059:21;:::i;:::-;4054:3;4047:34;3978:109;;:::o;4093:210::-;4180:4;4218:2;4207:9;4203:18;4195:26;;4231:65;4293:1;4282:9;4278:17;4269:6;4231:65;:::i;:::-;4093:210;;;;:::o;4309:118::-;4396:24;4414:5;4396:24;:::i;:::-;4391:3;4384:37;4309:118;;:::o;4433:222::-;4526:4;4564:2;4553:9;4549:18;4541:26;;4577:71;4645:1;4634:9;4630:17;4621:6;4577:71;:::i;:::-;4433:222;;;;:::o;4661:619::-;4738:6;4746;4754;4803:2;4791:9;4782:7;4778:23;4774:32;4771:119;;;4809:79;;:::i;:::-;4771:119;4929:1;4954:53;4999:7;4990:6;4979:9;4975:22;4954:53;:::i;:::-;4944:63;;4900:117;5056:2;5082:53;5127:7;5118:6;5107:9;5103:22;5082:53;:::i;:::-;5072:63;;5027:118;5184:2;5210:53;5255:7;5246:6;5235:9;5231:22;5210:53;:::i;:::-;5200:63;;5155:118;4661:619;;;;;:::o;5286:116::-;5356:21;5371:5;5356:21;:::i;:::-;5349:5;5346:32;5336:60;;5392:1;5389;5382:12;5336:60;5286:116;:::o;5408:133::-;5451:5;5489:6;5476:20;5467:29;;5505:30;5529:5;5505:30;:::i;:::-;5408:133;;;;:::o;5547:468::-;5612:6;5620;5669:2;5657:9;5648:7;5644:23;5640:32;5637:119;;;5675:79;;:::i;:::-;5637:119;5795:1;5820:53;5865:7;5856:6;5845:9;5841:22;5820:53;:::i;:::-;5810:63;;5766:117;5922:2;5948:50;5990:7;5981:6;5970:9;5966:22;5948:50;:::i;:::-;5938:60;;5893:115;5547:468;;;;;:::o;6021:86::-;6056:7;6096:4;6089:5;6085:16;6074:27;;6021:86;;;:::o;6113:112::-;6196:22;6212:5;6196:22;:::i;:::-;6191:3;6184:35;6113:112;;:::o;6231:214::-;6320:4;6358:2;6347:9;6343:18;6335:26;;6371:67;6435:1;6424:9;6420:17;6411:6;6371:67;:::i;:::-;6231:214;;;;:::o;6451:329::-;6510:6;6559:2;6547:9;6538:7;6534:23;6530:32;6527:119;;;6565:79;;:::i;:::-;6527:119;6685:1;6710:53;6755:7;6746:6;6735:9;6731:22;6710:53;:::i;:::-;6700:63;;6656:117;6451:329;;;;:::o;6786:118::-;6857:22;6873:5;6857:22;:::i;:::-;6850:5;6847:33;6837:61;;6894:1;6891;6884:12;6837:61;6786:118;:::o;6910:135::-;6954:5;6992:6;6979:20;6970:29;;7008:31;7033:5;7008:31;:::i;:::-;6910:135;;;;:::o;7051:77::-;7088:7;7117:5;7106:16;;7051:77;;;:::o;7134:122::-;7207:24;7225:5;7207:24;:::i;:::-;7200:5;7197:35;7187:63;;7246:1;7243;7236:12;7187:63;7134:122;:::o;7262:139::-;7308:5;7346:6;7333:20;7324:29;;7362:33;7389:5;7362:33;:::i;:::-;7262:139;;;;:::o;7407:615::-;7482:6;7490;7498;7547:2;7535:9;7526:7;7522:23;7518:32;7515:119;;;7553:79;;:::i;:::-;7515:119;7673:1;7698:51;7741:7;7732:6;7721:9;7717:22;7698:51;:::i;:::-;7688:61;;7644:115;7798:2;7824:53;7869:7;7860:6;7849:9;7845:22;7824:53;:::i;:::-;7814:63;;7769:118;7926:2;7952:53;7997:7;7988:6;7977:9;7973:22;7952:53;:::i;:::-;7942:63;;7897:118;7407:615;;;;;:::o;8028:60::-;8056:3;8077:5;8070:12;;8028:60;;;:::o;8094:142::-;8144:9;8177:53;8195:34;8204:24;8222:5;8204:24;:::i;:::-;8195:34;:::i;:::-;8177:53;:::i;:::-;8164:66;;8094:142;;;:::o;8242:126::-;8292:9;8325:37;8356:5;8325:37;:::i;:::-;8312:50;;8242:126;;;:::o;8374:152::-;8450:9;8483:37;8514:5;8483:37;:::i;:::-;8470:50;;8374:152;;;:::o;8532:183::-;8645:63;8702:5;8645:63;:::i;:::-;8640:3;8633:76;8532:183;;:::o;8721:274::-;8840:4;8878:2;8867:9;8863:18;8855:26;;8891:97;8985:1;8974:9;8970:17;8961:6;8891:97;:::i;:::-;8721:274;;;;:::o;9001:118::-;9088:24;9106:5;9088:24;:::i;:::-;9083:3;9076:37;9001:118;;:::o;9125:222::-;9218:4;9256:2;9245:9;9241:18;9233:26;;9269:71;9337:1;9326:9;9322:17;9313:6;9269:71;:::i;:::-;9125:222;;;;:::o;9353:323::-;9409:6;9458:2;9446:9;9437:7;9433:23;9429:32;9426:119;;;9464:79;;:::i;:::-;9426:119;9584:1;9609:50;9651:7;9642:6;9631:9;9627:22;9609:50;:::i;:::-;9599:60;;9555:114;9353:323;;;;:::o;9682:474::-;9750:6;9758;9807:2;9795:9;9786:7;9782:23;9778:32;9775:119;;;9813:79;;:::i;:::-;9775:119;9933:1;9958:53;10003:7;9994:6;9983:9;9979:22;9958:53;:::i;:::-;9948:63;;9904:117;10060:2;10086:53;10131:7;10122:6;10111:9;10107:22;10086:53;:::i;:::-;10076:63;;10031:118;9682:474;;;;;:::o;10162:182::-;10302:34;10298:1;10290:6;10286:14;10279:58;10162:182;:::o;10350:366::-;10492:3;10513:67;10577:2;10572:3;10513:67;:::i;:::-;10506:74;;10589:93;10678:3;10589:93;:::i;:::-;10707:2;10702:3;10698:12;10691:19;;10350:366;;;:::o;10722:419::-;10888:4;10926:2;10915:9;10911:18;10903:26;;10975:9;10969:4;10965:20;10961:1;10950:9;10946:17;10939:47;11003:131;11129:4;11003:131;:::i;:::-;10995:139;;10722:419;;;:::o;11147:180::-;11195:77;11192:1;11185:88;11292:4;11289:1;11282:15;11316:4;11313:1;11306:15;11333:305;11373:3;11392:20;11410:1;11392:20;:::i;:::-;11387:25;;11426:20;11444:1;11426:20;:::i;:::-;11421:25;;11580:1;11512:66;11508:74;11505:1;11502:81;11499:107;;;11586:18;;:::i;:::-;11499:107;11630:1;11627;11623:9;11616:16;;11333:305;;;;:::o;11644:179::-;11784:31;11780:1;11772:6;11768:14;11761:55;11644:179;:::o;11829:366::-;11971:3;11992:67;12056:2;12051:3;11992:67;:::i;:::-;11985:74;;12068:93;12157:3;12068:93;:::i;:::-;12186:2;12181:3;12177:12;12170:19;;11829:366;;;:::o;12201:419::-;12367:4;12405:2;12394:9;12390:18;12382:26;;12454:9;12448:4;12444:20;12440:1;12429:9;12425:17;12418:47;12482:131;12608:4;12482:131;:::i;:::-;12474:139;;12201:419;;;:::o;12626:348::-;12666:7;12689:20;12707:1;12689:20;:::i;:::-;12684:25;;12723:20;12741:1;12723:20;:::i;:::-;12718:25;;12911:1;12843:66;12839:74;12836:1;12833:81;12828:1;12821:9;12814:17;12810:105;12807:131;;;12918:18;;:::i;:::-;12807:131;12966:1;12963;12959:9;12948:20;;12626:348;;;;:::o;12980:180::-;13028:77;13025:1;13018:88;13125:4;13122:1;13115:15;13149:4;13146:1;13139:15;13166:185;13206:1;13223:20;13241:1;13223:20;:::i;:::-;13218:25;;13257:20;13275:1;13257:20;:::i;:::-;13252:25;;13296:1;13286:35;;13301:18;;:::i;:::-;13286:35;13343:1;13340;13336:9;13331:14;;13166:185;;;;:::o;13357:228::-;13497:34;13493:1;13485:6;13481:14;13474:58;13566:11;13561:2;13553:6;13549:15;13542:36;13357:228;:::o;13591:366::-;13733:3;13754:67;13818:2;13813:3;13754:67;:::i;:::-;13747:74;;13830:93;13919:3;13830:93;:::i;:::-;13948:2;13943:3;13939:12;13932:19;;13591:366;;;:::o;13963:419::-;14129:4;14167:2;14156:9;14152:18;14144:26;;14216:9;14210:4;14206:20;14202:1;14191:9;14187:17;14180:47;14244:131;14370:4;14244:131;:::i;:::-;14236:139;;13963:419;;;:::o;14388:180::-;14436:77;14433:1;14426:88;14533:4;14530:1;14523:15;14557:4;14554:1;14547:15;14574:320;14618:6;14655:1;14649:4;14645:12;14635:22;;14702:1;14696:4;14692:12;14723:18;14713:81;;14779:4;14771:6;14767:17;14757:27;;14713:81;14841:2;14833:6;14830:14;14810:18;14807:38;14804:84;;;14860:18;;:::i;:::-;14804:84;14625:269;14574:320;;;:::o;14900:227::-;15040:34;15036:1;15028:6;15024:14;15017:58;15109:10;15104:2;15096:6;15092:15;15085:35;14900:227;:::o;15133:366::-;15275:3;15296:67;15360:2;15355:3;15296:67;:::i;:::-;15289:74;;15372:93;15461:3;15372:93;:::i;:::-;15490:2;15485:3;15481:12;15474:19;;15133:366;;;:::o;15505:419::-;15671:4;15709:2;15698:9;15694:18;15686:26;;15758:9;15752:4;15748:20;15744:1;15733:9;15729:17;15722:47;15786:131;15912:4;15786:131;:::i;:::-;15778:139;;15505:419;;;:::o;15930:227::-;16070:34;16066:1;16058:6;16054:14;16047:58;16139:10;16134:2;16126:6;16122:15;16115:35;15930:227;:::o;16163:366::-;16305:3;16326:67;16390:2;16385:3;16326:67;:::i;:::-;16319:74;;16402:93;16491:3;16402:93;:::i;:::-;16520:2;16515:3;16511:12;16504:19;;16163:366;;;:::o;16535:419::-;16701:4;16739:2;16728:9;16724:18;16716:26;;16788:9;16782:4;16778:20;16774:1;16763:9;16759:17;16752:47;16816:131;16942:4;16816:131;:::i;:::-;16808:139;;16535:419;;;:::o;16960:227::-;17100:34;17096:1;17088:6;17084:14;17077:58;17169:10;17164:2;17156:6;17152:15;17145:35;16960:227;:::o;17193:366::-;17335:3;17356:67;17420:2;17415:3;17356:67;:::i;:::-;17349:74;;17432:93;17521:3;17432:93;:::i;:::-;17550:2;17545:3;17541:12;17534:19;;17193:366;;;:::o;17565:419::-;17731:4;17769:2;17758:9;17754:18;17746:26;;17818:9;17812:4;17808:20;17804:1;17793:9;17789:17;17782:47;17846:131;17972:4;17846:131;:::i;:::-;17838:139;;17565:419;;;:::o;17990:118::-;18077:24;18095:5;18077:24;:::i;:::-;18072:3;18065:37;17990:118;;:::o;18114:664::-;18319:4;18357:3;18346:9;18342:19;18334:27;;18371:71;18439:1;18428:9;18424:17;18415:6;18371:71;:::i;:::-;18452:72;18520:2;18509:9;18505:18;18496:6;18452:72;:::i;:::-;18534;18602:2;18591:9;18587:18;18578:6;18534:72;:::i;:::-;18616;18684:2;18673:9;18669:18;18660:6;18616:72;:::i;:::-;18698:73;18766:3;18755:9;18751:19;18742:6;18698:73;:::i;:::-;18114:664;;;;;;;;:::o;18784:442::-;18933:4;18971:2;18960:9;18956:18;18948:26;;18984:71;19052:1;19041:9;19037:17;19028:6;18984:71;:::i;:::-;19065:72;19133:2;19122:9;19118:18;19109:6;19065:72;:::i;:::-;19147;19215:2;19204:9;19200:18;19191:6;19147:72;:::i;:::-;18784:442;;;;;;:::o;19232:148::-;19334:11;19371:3;19356:18;;19232:148;;;;:::o;19386:214::-;19526:66;19522:1;19514:6;19510:14;19503:90;19386:214;:::o;19606:400::-;19766:3;19787:84;19869:1;19864:3;19787:84;:::i;:::-;19780:91;;19880:93;19969:3;19880:93;:::i;:::-;19998:1;19993:3;19989:11;19982:18;;19606:400;;;:::o;20012:79::-;20051:7;20080:5;20069:16;;20012:79;;;:::o;20097:157::-;20202:45;20222:24;20240:5;20222:24;:::i;:::-;20202:45;:::i;:::-;20197:3;20190:58;20097:157;;:::o;20260:663::-;20501:3;20523:148;20667:3;20523:148;:::i;:::-;20516:155;;20681:75;20752:3;20743:6;20681:75;:::i;:::-;20781:2;20776:3;20772:12;20765:19;;20794:75;20865:3;20856:6;20794:75;:::i;:::-;20894:2;20889:3;20885:12;20878:19;;20914:3;20907:10;;20260:663;;;;;:::o;20929:545::-;21102:4;21140:3;21129:9;21125:19;21117:27;;21154:71;21222:1;21211:9;21207:17;21198:6;21154:71;:::i;:::-;21235:68;21299:2;21288:9;21284:18;21275:6;21235:68;:::i;:::-;21313:72;21381:2;21370:9;21366:18;21357:6;21313:72;:::i;:::-;21395;21463:2;21452:9;21448:18;21439:6;21395:72;:::i;:::-;20929:545;;;;;;;:::o;21480:167::-;21620:19;21616:1;21608:6;21604:14;21597:43;21480:167;:::o;21653:366::-;21795:3;21816:67;21880:2;21875:3;21816:67;:::i;:::-;21809:74;;21892:93;21981:3;21892:93;:::i;:::-;22010:2;22005:3;22001:12;21994:19;;21653:366;;;:::o;22025:419::-;22191:4;22229:2;22218:9;22214:18;22206:26;;22278:9;22272:4;22268:20;22264:1;22253:9;22249:17;22242:47;22306:131;22432:4;22306:131;:::i;:::-;22298:139;;22025:419;;;:::o;22450:179::-;22590:31;22586:1;22578:6;22574:14;22567:55;22450:179;:::o;22635:366::-;22777:3;22798:67;22862:2;22857:3;22798:67;:::i;:::-;22791:74;;22874:93;22963:3;22874:93;:::i;:::-;22992:2;22987:3;22983:12;22976:19;;22635:366;;;:::o;23007:419::-;23173:4;23211:2;23200:9;23196:18;23188:26;;23260:9;23254:4;23250:20;23246:1;23235:9;23231:17;23224:47;23288:131;23414:4;23288:131;:::i;:::-;23280:139;;23007:419;;;:::o;23432:224::-;23572:34;23568:1;23560:6;23556:14;23549:58;23641:7;23636:2;23628:6;23624:15;23617:32;23432:224;:::o;23662:366::-;23804:3;23825:67;23889:2;23884:3;23825:67;:::i;:::-;23818:74;;23901:93;23990:3;23901:93;:::i;:::-;24019:2;24014:3;24010:12;24003:19;;23662:366;;;:::o;24034:419::-;24200:4;24238:2;24227:9;24223:18;24215:26;;24287:9;24281:4;24277:20;24273:1;24262:9;24258:17;24251:47;24315:131;24441:4;24315:131;:::i;:::-;24307:139;;24034:419;;;:::o;24459:240::-;24599:34;24595:1;24587:6;24583:14;24576:58;24668:23;24663:2;24655:6;24651:15;24644:48;24459:240;:::o;24705:366::-;24847:3;24868:67;24932:2;24927:3;24868:67;:::i;:::-;24861:74;;24944:93;25033:3;24944:93;:::i;:::-;25062:2;25057:3;25053:12;25046:19;;24705:366;;;:::o;25077:419::-;25243:4;25281:2;25270:9;25266:18;25258:26;;25330:9;25324:4;25320:20;25316:1;25305:9;25301:17;25294:47;25358:131;25484:4;25358:131;:::i;:::-;25350:139;;25077:419;;;:::o;25502:239::-;25642:34;25638:1;25630:6;25626:14;25619:58;25711:22;25706:2;25698:6;25694:15;25687:47;25502:239;:::o;25747:366::-;25889:3;25910:67;25974:2;25969:3;25910:67;:::i;:::-;25903:74;;25986:93;26075:3;25986:93;:::i;:::-;26104:2;26099:3;26095:12;26088:19;;25747:366;;;:::o;26119:419::-;26285:4;26323:2;26312:9;26308:18;26300:26;;26372:9;26366:4;26362:20;26358:1;26347:9;26343:17;26336:47;26400:131;26526:4;26400:131;:::i;:::-;26392:139;;26119:419;;;:::o;26544:225::-;26684:34;26680:1;26672:6;26668:14;26661:58;26753:8;26748:2;26740:6;26736:15;26729:33;26544:225;:::o;26775:366::-;26917:3;26938:67;27002:2;26997:3;26938:67;:::i;:::-;26931:74;;27014:93;27103:3;27014:93;:::i;:::-;27132:2;27127:3;27123:12;27116:19;;26775:366;;;:::o;27147:419::-;27313:4;27351:2;27340:9;27336:18;27328:26;;27400:9;27394:4;27390:20;27386:1;27375:9;27371:17;27364:47;27428:131;27554:4;27428:131;:::i;:::-;27420:139;;27147:419;;;:::o;27572:223::-;27712:34;27708:1;27700:6;27696:14;27689:58;27781:6;27776:2;27768:6;27764:15;27757:31;27572:223;:::o;27801:366::-;27943:3;27964:67;28028:2;28023:3;27964:67;:::i;:::-;27957:74;;28040:93;28129:3;28040:93;:::i;:::-;28158:2;28153:3;28149:12;28142:19;;27801:366;;;:::o;28173:419::-;28339:4;28377:2;28366:9;28362:18;28354:26;;28426:9;28420:4;28416:20;28412:1;28401:9;28397:17;28390:47;28454:131;28580:4;28454:131;:::i;:::-;28446:139;;28173:419;;;:::o;28598:221::-;28738:34;28734:1;28726:6;28722:14;28715:58;28807:4;28802:2;28794:6;28790:15;28783:29;28598:221;:::o;28825:366::-;28967:3;28988:67;29052:2;29047:3;28988:67;:::i;:::-;28981:74;;29064:93;29153:3;29064:93;:::i;:::-;29182:2;29177:3;29173:12;29166:19;;28825:366;;;:::o;29197:419::-;29363:4;29401:2;29390:9;29386:18;29378:26;;29450:9;29444:4;29440:20;29436:1;29425:9;29421:17;29414:47;29478:131;29604:4;29478:131;:::i;:::-;29470:139;;29197:419;;;:::o;29622:224::-;29762:34;29758:1;29750:6;29746:14;29739:58;29831:7;29826:2;29818:6;29814:15;29807:32;29622:224;:::o;29852:366::-;29994:3;30015:67;30079:2;30074:3;30015:67;:::i;:::-;30008:74;;30091:93;30180:3;30091:93;:::i;:::-;30209:2;30204:3;30200:12;30193:19;;29852:366;;;:::o;30224:419::-;30390:4;30428:2;30417:9;30413:18;30405:26;;30477:9;30471:4;30467:20;30463:1;30452:9;30448:17;30441:47;30505:131;30631:4;30505:131;:::i;:::-;30497:139;;30224:419;;;:::o;30649:222::-;30789:34;30785:1;30777:6;30773:14;30766:58;30858:5;30853:2;30845:6;30841:15;30834:30;30649:222;:::o;30877:366::-;31019:3;31040:67;31104:2;31099:3;31040:67;:::i;:::-;31033:74;;31116:93;31205:3;31116:93;:::i;:::-;31234:2;31229:3;31225:12;31218:19;;30877:366;;;:::o;31249:419::-;31415:4;31453:2;31442:9;31438:18;31430:26;;31502:9;31496:4;31492:20;31488:1;31477:9;31473:17;31466:47;31530:131;31656:4;31530:131;:::i;:::-;31522:139;;31249:419;;;:::o;31674:167::-;31814:19;31810:1;31802:6;31798:14;31791:43;31674:167;:::o;31847:366::-;31989:3;32010:67;32074:2;32069:3;32010:67;:::i;:::-;32003:74;;32086:93;32175:3;32086:93;:::i;:::-;32204:2;32199:3;32195:12;32188:19;;31847:366;;;:::o;32219:419::-;32385:4;32423:2;32412:9;32408:18;32400:26;;32472:9;32466:4;32462:20;32458:1;32447:9;32443:17;32436:47;32500:131;32626:4;32500:131;:::i;:::-;32492:139;;32219:419;;;:::o;32644:165::-;32784:17;32780:1;32772:6;32768:14;32761:41;32644:165;:::o;32815:366::-;32957:3;32978:67;33042:2;33037:3;32978:67;:::i;:::-;32971:74;;33054:93;33143:3;33054:93;:::i;:::-;33172:2;33167:3;33163:12;33156:19;;32815:366;;;:::o;33187:419::-;33353:4;33391:2;33380:9;33376:18;33368:26;;33440:9;33434:4;33430:20;33426:1;33415:9;33411:17;33404:47;33468:131;33594:4;33468:131;:::i;:::-;33460:139;;33187:419;;;:::o;33612:172::-;33752:24;33748:1;33740:6;33736:14;33729:48;33612:172;:::o;33790:366::-;33932:3;33953:67;34017:2;34012:3;33953:67;:::i;:::-;33946:74;;34029:93;34118:3;34029:93;:::i;:::-;34147:2;34142:3;34138:12;34131:19;;33790:366;;;:::o;34162:419::-;34328:4;34366:2;34355:9;34351:18;34343:26;;34415:9;34409:4;34405:20;34401:1;34390:9;34386:17;34379:47;34443:131;34569:4;34443:131;:::i;:::-;34435:139;;34162:419;;;:::o;34587:234::-;34727:34;34723:1;34715:6;34711:14;34704:58;34796:17;34791:2;34783:6;34779:15;34772:42;34587:234;:::o;34827:366::-;34969:3;34990:67;35054:2;35049:3;34990:67;:::i;:::-;34983:74;;35066:93;35155:3;35066:93;:::i;:::-;35184:2;35179:3;35175:12;35168:19;;34827:366;;;:::o;35199:419::-;35365:4;35403:2;35392:9;35388:18;35380:26;;35452:9;35446:4;35442:20;35438:1;35427:9;35423:17;35416:47;35480:131;35606:4;35480:131;:::i;:::-;35472:139;;35199:419;;;:::o;35624:169::-;35764:21;35760:1;35752:6;35748:14;35741:45;35624:169;:::o;35799:366::-;35941:3;35962:67;36026:2;36021:3;35962:67;:::i;:::-;35955:74;;36038:93;36127:3;36038:93;:::i;:::-;36156:2;36151:3;36147:12;36140:19;;35799:366;;;:::o;36171:419::-;36337:4;36375:2;36364:9;36360:18;36352:26;;36424:9;36418:4;36414:20;36410:1;36399:9;36395:17;36388:47;36452:131;36578:4;36452:131;:::i;:::-;36444:139;;36171:419;;;:::o;36596:235::-;36736:34;36732:1;36724:6;36720:14;36713:58;36805:18;36800:2;36792:6;36788:15;36781:43;36596:235;:::o;36837:366::-;36979:3;37000:67;37064:2;37059:3;37000:67;:::i;:::-;36993:74;;37076:93;37165:3;37076:93;:::i;:::-;37194:2;37189:3;37185:12;37178:19;;36837:366;;;:::o;37209:419::-;37375:4;37413:2;37402:9;37398:18;37390:26;;37462:9;37456:4;37452:20;37448:1;37437:9;37433:17;37426:47;37490:131;37616:4;37490:131;:::i;:::-;37482:139;;37209:419;;;:::o;37634:191::-;37674:4;37694:20;37712:1;37694:20;:::i;:::-;37689:25;;37728:20;37746:1;37728:20;:::i;:::-;37723:25;;37767:1;37764;37761:8;37758:34;;;37772:18;;:::i;:::-;37758:34;37817:1;37814;37810:9;37802:17;;37634:191;;;;:::o;37831:225::-;37971:34;37967:1;37959:6;37955:14;37948:58;38040:8;38035:2;38027:6;38023:15;38016:33;37831:225;:::o;38062:366::-;38204:3;38225:67;38289:2;38284:3;38225:67;:::i;:::-;38218:74;;38301:93;38390:3;38301:93;:::i;:::-;38419:2;38414:3;38410:12;38403:19;;38062:366;;;:::o;38434:419::-;38600:4;38638:2;38627:9;38623:18;38615:26;;38687:9;38681:4;38677:20;38673:1;38662:9;38658:17;38651:47;38715:131;38841:4;38715:131;:::i;:::-;38707:139;;38434:419;;;:::o;38859:147::-;38960:11;38997:3;38982:18;;38859:147;;;;:::o;39012:114::-;;:::o;39132:398::-;39291:3;39312:83;39393:1;39388:3;39312:83;:::i;:::-;39305:90;;39404:93;39493:3;39404:93;:::i;:::-;39522:1;39517:3;39513:11;39506:18;;39132:398;;;:::o;39536:379::-;39720:3;39742:147;39885:3;39742:147;:::i;:::-;39735:154;;39906:3;39899:10;;39536:379;;;:::o;39921:180::-;39969:77;39966:1;39959:88;40066:4;40063:1;40056:15;40090:4;40087:1;40080:15;40107:180;40155:77;40152:1;40145:88;40252:4;40249:1;40242:15;40276:4;40273:1;40266:15;40293:143;40350:5;40381:6;40375:13;40366:22;;40397:33;40424:5;40397:33;:::i;:::-;40293:143;;;;:::o;40442:351::-;40512:6;40561:2;40549:9;40540:7;40536:23;40532:32;40529:119;;;40567:79;;:::i;:::-;40529:119;40687:1;40712:64;40768:7;40759:6;40748:9;40744:22;40712:64;:::i;:::-;40702:74;;40658:128;40442:351;;;;:::o;40799:85::-;40844:7;40873:5;40862:16;;40799:85;;;:::o;40890:158::-;40948:9;40981:61;40999:42;41008:32;41034:5;41008:32;:::i;:::-;40999:42;:::i;:::-;40981:61;:::i;:::-;40968:74;;40890:158;;;:::o;41054:147::-;41149:45;41188:5;41149:45;:::i;:::-;41144:3;41137:58;41054:147;;:::o;41207:114::-;41274:6;41308:5;41302:12;41292:22;;41207:114;;;:::o;41327:184::-;41426:11;41460:6;41455:3;41448:19;41500:4;41495:3;41491:14;41476:29;;41327:184;;;;:::o;41517:132::-;41584:4;41607:3;41599:11;;41637:4;41632:3;41628:14;41620:22;;41517:132;;;:::o;41655:108::-;41732:24;41750:5;41732:24;:::i;:::-;41727:3;41720:37;41655:108;;:::o;41769:179::-;41838:10;41859:46;41901:3;41893:6;41859:46;:::i;:::-;41937:4;41932:3;41928:14;41914:28;;41769:179;;;;:::o;41954:113::-;42024:4;42056;42051:3;42047:14;42039:22;;41954:113;;;:::o;42103:732::-;42222:3;42251:54;42299:5;42251:54;:::i;:::-;42321:86;42400:6;42395:3;42321:86;:::i;:::-;42314:93;;42431:56;42481:5;42431:56;:::i;:::-;42510:7;42541:1;42526:284;42551:6;42548:1;42545:13;42526:284;;;42627:6;42621:13;42654:63;42713:3;42698:13;42654:63;:::i;:::-;42647:70;;42740:60;42793:6;42740:60;:::i;:::-;42730:70;;42586:224;42573:1;42570;42566:9;42561:14;;42526:284;;;42530:14;42826:3;42819:10;;42227:608;;;42103:732;;;;:::o;42841:831::-;43104:4;43142:3;43131:9;43127:19;43119:27;;43156:71;43224:1;43213:9;43209:17;43200:6;43156:71;:::i;:::-;43237:80;43313:2;43302:9;43298:18;43289:6;43237:80;:::i;:::-;43364:9;43358:4;43354:20;43349:2;43338:9;43334:18;43327:48;43392:108;43495:4;43486:6;43392:108;:::i;:::-;43384:116;;43510:72;43578:2;43567:9;43563:18;43554:6;43510:72;:::i;:::-;43592:73;43660:3;43649:9;43645:19;43636:6;43592:73;:::i;:::-;42841:831;;;;;;;;:::o

Swarm Source

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