ETH Price: $2,638.34 (-0.79%)
Gas: 3 Gwei

Token

RESCUE (SAVING AMERICA)
 

Overview

Max Total Supply

1,000,000,000 SAVING AMERICA

Holders

6

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
18,000,000 SAVING AMERICA

Value
$0.00
0x884f7a6155e2bd14c17526fc7744bff7d081762c
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:
RESCUE

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/*
https://truthsocial.com/@realDonaldTrump/112723620387302683
https://t.me/rescueofficial

Tax will be donated to Trump's foundation. Come join the movement.
*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;

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

interface IERC20 {

    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

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

interface IERC20Metadata is IERC20 {

    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    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 transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    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 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 _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 _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 _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

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

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 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;
}

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

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public uniswapV2Pair;
    address public constant deadAddress = address(0xdead);

    bool private swapping;

    address public marketingWallet;
    address public developmentWallet;

    uint256 public maxT;
    uint256 public swapTokensAtAmount;
    uint256 public maxW;

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

    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyDevelopmentFee;

    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellDevelopmentFee;

    uint256 public tokensForMarketing;
    uint256 public tokensForDevelopment;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedmaxT;

    mapping(address => bool) public automatedMarketMakerPairs;

    event UpdateUniswapV2Router(
        address indexed newAddress,
        address indexed oldAddress
    );

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event marketingWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    event developmentWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    constructor() ERC20("RESCUE", unicode"SAVING AMERICA") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 _buyMarketingFee = 5;
        uint256 _buyDevelopmentFee = 5;

        uint256 _sellMarketingFee = 5;
        uint256 _sellDevelopmentFee = 5;

        uint256 totalSupply = 1_000_000_000 * 1e18;

        maxT = 20_000_000 * 1e18; // 2% from total supply maxTTxn
        maxW = 20_000_000 * 1e18; // 2% from total supply maxW
        swapTokensAtAmount = (totalSupply * 5) / 10000; // 0.05% swap wallet

        buyMarketingFee = _buyMarketingFee;
        buyDevelopmentFee = _buyDevelopmentFee;
        buyTotalFees = buyMarketingFee + buyDevelopmentFee;

        sellMarketingFee = _sellMarketingFee;
        sellDevelopmentFee = _sellDevelopmentFee;
        sellTotalFees = sellMarketingFee + sellDevelopmentFee;

        marketingWallet = address(0xFa81cAF6C951e4Ed76693B1BdCDfEc7cFD8083d6);
        developmentWallet = address(0xFa81cAF6C951e4Ed76693B1BdCDfEc7cFD8083d6);

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

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

    function enableTradingWithPermit(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;
    }

    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }

    // change the minimum amount of tokens to sell from fees
    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 updatemaxTAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 1) / 1000) / 1e18,
            "Cannot set maxT lower than 0.1%"
        );
        maxT = newNum * (10**18);
    }

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

    function excludeFromMaxTransaction(address updAds, bool isEx)
        public
        onlyOwner
    {
        _isExcludedmaxT[updAds] = isEx;
    }

    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

    function updateBuyFees(
        uint256 _marketingFee,
        uint256 _devFee
    ) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyDevelopmentFee = _devFee;
        buyTotalFees = buyMarketingFee + buyDevelopmentFee;
        require(buyTotalFees <= 25, "Must keep fees at 25% or less");
    }

    function updateSellFees(
        uint256 _marketingFee,
        uint256 _devFee
    ) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellDevelopmentFee = _devFee;
        sellTotalFees = sellMarketingFee + sellDevelopmentFee;
        require(sellTotalFees <= 25, "Must keep fees at 50% or less");
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function setAutomatedMarketMakerPair(address pair, bool value)
        public
        onlyOwner
    {
        require(
            pair != uniswapV2Pair,
            "The pair cannot be removed from automatedMarketMakerPairs"
        );

        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateMarketingWallet(address newMarketingWallet) external onlyOwner {
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }

    function updatedevelopmentWallet(address newWallet) external onlyOwner {
        emit developmentWalletUpdated(newWallet, developmentWallet);
        developmentWallet = newWallet;
    }

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

    event BoughtEarly(address indexed sniper);

    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");

        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 (automatedMarketMakerPairs[from] && !_isExcludedmaxT[to]) {
                    require(amount <= maxT, "Buy transfer amount exceeds the maxT.");
                    require(amount + balanceOf(to) <= maxW, "Max wallet exceeded");
                }
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedmaxT[from]) {
                    require(amount <= maxT, "Sell transfer amount exceeds the maxT.");
                }
                else if (!_isExcludedmaxT[to]) {
                    require(amount + balanceOf(to) <= maxW, "Max wallet exceeded");
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]) {
            swapping = true;

            swapBack();

            swapping = false;
        }

        bool takeFee = !swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
                tokensForDevelopment += (fees * sellDevelopmentFee) / sellTotalFees;
                tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForDevelopment += (fees * buyDevelopmentFee) / buyTotalFees;
                tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;
            }

            if (fees > 0) {
                super._transfer(from, address(this), fees);
            }

            amount -= fees;
        }

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

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

    function manualswap(uint256 amount) external {
      require(_msgSender() == marketingWallet);
        require(amount <= balanceOf(address(this)) && amount > 0, "Wrong amount");
        swapTokensForEth(amount);
    }

    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] = uniswapV2Router.WETH();

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

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

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

        if (contractBalance == 0 || totalTokensToSwap == 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(tokensForDevelopment).div(totalTokensToSwap);

        tokensForMarketing = 0;
        tokensForDevelopment = 0;

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

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":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"developmentWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedmaxT","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevelopmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","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":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","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":"enableTradingWithPermit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","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":"account","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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxW","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevelopmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","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":"setAutomatedMarketMakerPair","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":"tokensForDevelopment","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","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"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updatedevelopmentWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updatemaxTAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updatemaxWAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526001600c5f6101000a81548160ff0219169083151502179055505f600c60016101000a81548160ff0219169083151502179055505f600c60026101000a81548160ff02191690831515021790555034801561005d575f80fd5b506040518060400160405280600681526020017f52455343554500000000000000000000000000000000000000000000000000008152506040518060400160405280600e81526020017f534156494e4720414d455249434100000000000000000000000000000000000081525081600390816100d99190610c97565b5080600490816100e99190610c97565b5050506101086100fd61055260201b60201c565b61055960201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d905061013181600161061c60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101d29190610dc4565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610237573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061025b9190610dc4565b6040518363ffffffff1660e01b8152600401610278929190610dfe565b6020604051808303815f875af1158015610294573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102b89190610dc4565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061032960065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161061c60201b60201c565b61035b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016106fc60201b60201c565b5f600590505f600590505f600590505f600590505f6b033b2e3c9fd0803ce800000090506a108b2a2c280290940000006009819055506a108b2a2c28029094000000600b819055506127106005826103b39190610e52565b6103bd9190610ec0565b600a8190555084600e8190555083600f81905550600f54600e546103e19190610ef0565b600d8190555082601181905550816012819055506012546011546104059190610ef0565b60108190555073fa81caf6c951e4ed76693b1bdcdfec7cfd8083d660075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073fa81caf6c951e4ed76693b1bdcdfec7cfd8083d660085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506104d16104c461079a60201b60201c565b60016107c260201b60201c565b6104e23060016107c260201b60201c565b6104f561dead60016107c260201b60201c565b61051361050661079a60201b60201c565b600161061c60201b60201c565b61052430600161061c60201b60201c565b61053761dead600161061c60201b60201c565b61054733826108f060201b60201c565b50505050505061105e565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61062a61055260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1661064e61079a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146106a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069b90610f7d565b60405180910390fd5b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6107d061055260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166107f461079a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161461084a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084190610f7d565b60405180910390fd5b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516108e49190610fb5565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361095e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095590611018565b60405180910390fd5b61096f5f8383610a5360201b60201c565b8060025f8282546109809190610ef0565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546109d29190610ef0565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610a369190611045565b60405180910390a3610a4f5f8383610a5860201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610ad857607f821691505b602082108103610aeb57610aea610a94565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302610b4d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610b12565b610b578683610b12565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f610b9b610b96610b9184610b6f565b610b78565b610b6f565b9050919050565b5f819050919050565b610bb483610b81565b610bc8610bc082610ba2565b848454610b1e565b825550505050565b5f90565b610bdc610bd0565b610be7818484610bab565b505050565b5b81811015610c0a57610bff5f82610bd4565b600181019050610bed565b5050565b601f821115610c4f57610c2081610af1565b610c2984610b03565b81016020851015610c38578190505b610c4c610c4485610b03565b830182610bec565b50505b505050565b5f82821c905092915050565b5f610c6f5f1984600802610c54565b1980831691505092915050565b5f610c878383610c60565b9150826002028217905092915050565b610ca082610a5d565b67ffffffffffffffff811115610cb957610cb8610a67565b5b610cc38254610ac1565b610cce828285610c0e565b5f60209050601f831160018114610cff575f8415610ced578287015190505b610cf78582610c7c565b865550610d5e565b601f198416610d0d86610af1565b5f5b82811015610d3457848901518255600182019150602085019450602081019050610d0f565b86831015610d515784890151610d4d601f891682610c60565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610d9382610d6a565b9050919050565b610da381610d89565b8114610dad575f80fd5b50565b5f81519050610dbe81610d9a565b92915050565b5f60208284031215610dd957610dd8610d66565b5b5f610de684828501610db0565b91505092915050565b610df881610d89565b82525050565b5f604082019050610e115f830185610def565b610e1e6020830184610def565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610e5c82610b6f565b9150610e6783610b6f565b9250828202610e7581610b6f565b91508282048414831517610e8c57610e8b610e25565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f610eca82610b6f565b9150610ed583610b6f565b925082610ee557610ee4610e93565b5b828204905092915050565b5f610efa82610b6f565b9150610f0583610b6f565b9250828201905080821115610f1d57610f1c610e25565b5b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f610f67602083610f23565b9150610f7282610f33565b602082019050919050565b5f6020820190508181035f830152610f9481610f5b565b9050919050565b5f8115159050919050565b610faf81610f9b565b82525050565b5f602082019050610fc85f830184610fa6565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f611002601f83610f23565b915061100d82610fce565b602082019050919050565b5f6020820190508181035f83015261102f81610ff6565b9050919050565b61103f81610b6f565b82525050565b5f6020820190506110585f830184611036565b92915050565b608051614d1461108b5f395f8181610d6d01528181613116015281816131f5015261321c0152614d145ff3fe6080604052600436106102e7575f3560e01c8063881dce601161018f578063b2041411116100db578063d257b34f11610094578063e2f456051161006e578063e2f4560514610b30578063ef8700e514610b5a578063f2fde38b14610b84578063fbc03bc814610bac576102ee565b8063d257b34f14610a8e578063d85ba06314610aca578063dd62ed3e14610af4576102ee565b8063b204141114610984578063b62496f5146109ae578063bbc0c742146109ea578063c024666814610a14578063c04a541414610a3c578063c79c04fd14610a66576102ee565b80639a7a23d611610148578063a9059cbb11610122578063a9059cbb146108bc578063a90eab8c146108f8578063aacebbe314610920578063af5b0f3714610948576102ee565b80639a7a23d61461082e578063a44edb2b14610856578063a457c2d714610880576102ee565b8063881dce601461074a5780638a8c523c146107725780638da5cb5b1461078857806392136913146107b2578063924de9b7146107dc57806395d89b4114610804576102ee565b80633aa7a74d1161024e5780636ddd171311610207578063751039fc116101e1578063751039fc146106a45780637571336a146106ce57806375f0a874146106f65780637bce5a0414610720576102ee565b80636ddd17131461062857806370a0823114610652578063715018a61461068e576102ee565b80633aa7a74d1461051e57806349bd5a5e146105465780634a62bb65146105705780634fbee1931461059a57806366ca9b83146105d65780636a486a8e146105fe576102ee565b806318a94cf1116102a057806318a94cf1146103fe5780631f3fed8f1461042857806323b872dd1461045257806327c8f8351461048e578063313ce567146104b857806339509351146104e2576102ee565b806302dbd8f8146102f257806306fdde031461031a578063095ea7b3146103445780631694505e1461038057806318126dce146103aa57806318160ddd146103d4576102ee565b366102ee57005b5f80fd5b3480156102fd575f80fd5b5061031860048036038101906103139190613819565b610bd4565b005b348015610325575f80fd5b5061032e610cbe565b60405161033b91906138c7565b60405180910390f35b34801561034f575f80fd5b5061036a60048036038101906103659190613941565b610d4e565b6040516103779190613999565b60405180910390f35b34801561038b575f80fd5b50610394610d6b565b6040516103a19190613a0d565b60405180910390f35b3480156103b5575f80fd5b506103be610d8f565b6040516103cb9190613a35565b60405180910390f35b3480156103df575f80fd5b506103e8610d95565b6040516103f59190613a35565b60405180910390f35b348015610409575f80fd5b50610412610d9e565b60405161041f9190613a35565b60405180910390f35b348015610433575f80fd5b5061043c610da4565b6040516104499190613a35565b60405180910390f35b34801561045d575f80fd5b5061047860048036038101906104739190613a4e565b610daa565b6040516104859190613999565b60405180910390f35b348015610499575f80fd5b506104a2610e9c565b6040516104af9190613aad565b60405180910390f35b3480156104c3575f80fd5b506104cc610ea2565b6040516104d99190613ae1565b60405180910390f35b3480156104ed575f80fd5b5061050860048036038101906105039190613941565b610eaa565b6040516105159190613999565b60405180910390f35b348015610529575f80fd5b50610544600480360381019061053f9190613afa565b610f51565b005b348015610551575f80fd5b5061055a611060565b6040516105679190613aad565b60405180910390f35b34801561057b575f80fd5b50610584611085565b6040516105919190613999565b60405180910390f35b3480156105a5575f80fd5b506105c060048036038101906105bb9190613b25565b611097565b6040516105cd9190613999565b60405180910390f35b3480156105e1575f80fd5b506105fc60048036038101906105f79190613819565b6110e9565b005b348015610609575f80fd5b506106126111d3565b60405161061f9190613a35565b60405180910390f35b348015610633575f80fd5b5061063c6111d9565b6040516106499190613999565b60405180910390f35b34801561065d575f80fd5b5061067860048036038101906106739190613b25565b6111ec565b6040516106859190613a35565b60405180910390f35b348015610699575f80fd5b506106a2611231565b005b3480156106af575f80fd5b506106b86112b8565b6040516106c59190613999565b60405180910390f35b3480156106d9575f80fd5b506106f460048036038101906106ef9190613b7a565b611355565b005b348015610701575f80fd5b5061070a611429565b6040516107179190613aad565b60405180910390f35b34801561072b575f80fd5b5061073461144e565b6040516107419190613a35565b60405180910390f35b348015610755575f80fd5b50610770600480360381019061076b9190613afa565b611454565b005b34801561077d575f80fd5b50610786611515565b005b348015610793575f80fd5b5061079c6115c9565b6040516107a99190613aad565b60405180910390f35b3480156107bd575f80fd5b506107c66115f1565b6040516107d39190613a35565b60405180910390f35b3480156107e7575f80fd5b5061080260048036038101906107fd9190613bb8565b6115f7565b005b34801561080f575f80fd5b50610818611690565b60405161082591906138c7565b60405180910390f35b348015610839575f80fd5b50610854600480360381019061084f9190613b7a565b611720565b005b348015610861575f80fd5b5061086a611839565b6040516108779190613a35565b60405180910390f35b34801561088b575f80fd5b506108a660048036038101906108a19190613941565b61183f565b6040516108b39190613999565b60405180910390f35b3480156108c7575f80fd5b506108e260048036038101906108dd9190613941565b611925565b6040516108ef9190613999565b60405180910390f35b348015610903575f80fd5b5061091e60048036038101906109199190613c40565b611942565b005b34801561092b575f80fd5b5061094660048036038101906109419190613b25565b611bc5565b005b348015610953575f80fd5b5061096e60048036038101906109699190613b25565b611cff565b60405161097b9190613999565b60405180910390f35b34801561098f575f80fd5b50610998611d1c565b6040516109a59190613a35565b60405180910390f35b3480156109b9575f80fd5b506109d460048036038101906109cf9190613b25565b611d22565b6040516109e19190613999565b60405180910390f35b3480156109f5575f80fd5b506109fe611d3f565b604051610a0b9190613999565b60405180910390f35b348015610a1f575f80fd5b50610a3a6004803603810190610a359190613b7a565b611d52565b005b348015610a47575f80fd5b50610a50611e74565b604051610a5d9190613aad565b60405180910390f35b348015610a71575f80fd5b50610a8c6004803603810190610a879190613b25565b611e99565b005b348015610a99575f80fd5b50610ab46004803603810190610aaf9190613afa565b611fd3565b604051610ac19190613999565b60405180910390f35b348015610ad5575f80fd5b50610ade612127565b604051610aeb9190613a35565b60405180910390f35b348015610aff575f80fd5b50610b1a6004803603810190610b159190613c90565b61212d565b604051610b279190613a35565b60405180910390f35b348015610b3b575f80fd5b50610b446121af565b604051610b519190613a35565b60405180910390f35b348015610b65575f80fd5b50610b6e6121b5565b604051610b7b9190613a35565b60405180910390f35b348015610b8f575f80fd5b50610baa6004803603810190610ba59190613b25565b6121bb565b005b348015610bb7575f80fd5b50610bd26004803603810190610bcd9190613afa565b6122b1565b005b610bdc6123c0565b73ffffffffffffffffffffffffffffffffffffffff16610bfa6115c9565b73ffffffffffffffffffffffffffffffffffffffff1614610c50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4790613d18565b60405180910390fd5b8160118190555080601281905550601254601154610c6e9190613d63565b60108190555060196010541115610cba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb190613de0565b60405180910390fd5b5050565b606060038054610ccd90613e2b565b80601f0160208091040260200160405190810160405280929190818152602001828054610cf990613e2b565b8015610d445780601f10610d1b57610100808354040283529160200191610d44565b820191905f5260205f20905b815481529060010190602001808311610d2757829003601f168201915b5050505050905090565b5f610d61610d5a6123c0565b84846123c7565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60095481565b5f600254905090565b60125481565b60135481565b5f610db684848461258a565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610dfd6123c0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610e7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7390613ecb565b60405180910390fd5b610e9085610e886123c0565b8584036123c7565b60019150509392505050565b61dead81565b5f6012905090565b5f610f47610eb66123c0565b848460015f610ec36123c0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610f429190613d63565b6123c7565b6001905092915050565b610f596123c0565b73ffffffffffffffffffffffffffffffffffffffff16610f776115c9565b73ffffffffffffffffffffffffffffffffffffffff1614610fcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc490613d18565b60405180910390fd5b670de0b6b3a76400006103e86001610fe3610d95565b610fed9190613ee9565b610ff79190613f57565b6110019190613f57565b811015611043576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103a90613fd1565b60405180910390fd5b670de0b6b3a7640000816110579190613ee9565b60098190555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5f9054906101000a900460ff1681565b5f60155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b6110f16123c0565b73ffffffffffffffffffffffffffffffffffffffff1661110f6115c9565b73ffffffffffffffffffffffffffffffffffffffff1614611165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115c90613d18565b60405180910390fd5b81600e8190555080600f81905550600f54600e546111839190613d63565b600d819055506019600d5411156111cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c690614039565b60405180910390fd5b5050565b60105481565b600c60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6112396123c0565b73ffffffffffffffffffffffffffffffffffffffff166112576115c9565b73ffffffffffffffffffffffffffffffffffffffff16146112ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a490613d18565b60405180910390fd5b6112b65f612fb6565b565b5f6112c16123c0565b73ffffffffffffffffffffffffffffffffffffffff166112df6115c9565b73ffffffffffffffffffffffffffffffffffffffff1614611335576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132c90613d18565b60405180910390fd5b5f600c5f6101000a81548160ff0219169083151502179055506001905090565b61135d6123c0565b73ffffffffffffffffffffffffffffffffffffffff1661137b6115c9565b73ffffffffffffffffffffffffffffffffffffffff16146113d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c890613d18565b60405180910390fd5b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114946123c0565b73ffffffffffffffffffffffffffffffffffffffff16146114b3575f80fd5b6114bc306111ec565b81111580156114ca57505f81115b611509576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611500906140a1565b60405180910390fd5b61151281613079565b50565b61151d6123c0565b73ffffffffffffffffffffffffffffffffffffffff1661153b6115c9565b73ffffffffffffffffffffffffffffffffffffffff1614611591576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158890613d18565b60405180910390fd5b6001600c60016101000a81548160ff0219169083151502179055506001600c60026101000a81548160ff021916908315150217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b6115ff6123c0565b73ffffffffffffffffffffffffffffffffffffffff1661161d6115c9565b73ffffffffffffffffffffffffffffffffffffffff1614611673576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166a90613d18565b60405180910390fd5b80600c60026101000a81548160ff02191690831515021790555050565b60606004805461169f90613e2b565b80601f01602080910402602001604051908101604052809291908181526020018280546116cb90613e2b565b80156117165780601f106116ed57610100808354040283529160200191611716565b820191905f5260205f20905b8154815290600101906020018083116116f957829003601f168201915b5050505050905090565b6117286123c0565b73ffffffffffffffffffffffffffffffffffffffff166117466115c9565b73ffffffffffffffffffffffffffffffffffffffff161461179c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179390613d18565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361182b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118229061412f565b60405180910390fd5b61183582826132ac565b5050565b600b5481565b5f8060015f61184c6123c0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611906576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fd906141bd565b60405180910390fd5b61191a6119116123c0565b858584036123c7565b600191505092915050565b5f6119386119316123c0565b848461258a565b6001905092915050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600d81526020017f54726164696e6720546f6b656e00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152508051906020012046306040516020016119f49594939291906141ea565b6040516020818303038152906040528051906020012090505f7f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e67000000000000000000000000000000000000815250805190602001205f604051602001611a7e9392919061423b565b6040516020818303038152906040528051906020012090505f8282604051602001611aaa9291906142e4565b6040516020818303038152906040528051906020012090505f6001828888886040515f8152602001604052604051611ae5949392919061431a565b6020604051602081039080840390855afa158015611b05573d5f803e3d5ffd5b505050602060405103519050611b196115c9565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611b86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7d906143a7565b60405180910390fd5b6001600c60016101000a81548160ff0219169083151502179055506001600c60026101000a81548160ff02191690831515021790555050505050505050565b611bcd6123c0565b73ffffffffffffffffffffffffffffffffffffffff16611beb6115c9565b73ffffffffffffffffffffffffffffffffffffffff1614611c41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3890613d18565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a38060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6016602052805f5260405f205f915054906101000a900460ff1681565b600f5481565b6017602052805f5260405f205f915054906101000a900460ff1681565b600c60019054906101000a900460ff1681565b611d5a6123c0565b73ffffffffffffffffffffffffffffffffffffffff16611d786115c9565b73ffffffffffffffffffffffffffffffffffffffff1614611dce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc590613d18565b60405180910390fd5b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611e689190613999565b60405180910390a25050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611ea16123c0565b73ffffffffffffffffffffffffffffffffffffffff16611ebf6115c9565b73ffffffffffffffffffffffffffffffffffffffff1614611f15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0c90613d18565b60405180910390fd5b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167ffaf1b77ed79f6e898c44dd8ab36b330c7b2fd39bcaab05ed6362480df870396560405160405180910390a38060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f611fdc6123c0565b73ffffffffffffffffffffffffffffffffffffffff16611ffa6115c9565b73ffffffffffffffffffffffffffffffffffffffff1614612050576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204790613d18565b60405180910390fd5b620186a0600161205e610d95565b6120689190613ee9565b6120729190613f57565b8210156120b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ab90614435565b60405180910390fd5b6103e860056120c1610d95565b6120cb9190613ee9565b6120d59190613f57565b821115612117576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210e906144c3565b60405180910390fd5b81600a8190555060019050919050565b600d5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600a5481565b60145481565b6121c36123c0565b73ffffffffffffffffffffffffffffffffffffffff166121e16115c9565b73ffffffffffffffffffffffffffffffffffffffff1614612237576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222e90613d18565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036122a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229c90614551565b60405180910390fd5b6122ae81612fb6565b50565b6122b96123c0565b73ffffffffffffffffffffffffffffffffffffffff166122d76115c9565b73ffffffffffffffffffffffffffffffffffffffff161461232d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232490613d18565b60405180910390fd5b670de0b6b3a76400006103e86005612343610d95565b61234d9190613ee9565b6123579190613f57565b6123619190613f57565b8110156123a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239a906145b9565b60405180910390fd5b670de0b6b3a7640000816123b79190613ee9565b600b8190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612435576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242c90614647565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249a906146d5565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161257d9190613a35565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ef90614763565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265d906147f1565b60405180910390fd5b5f810361267d5761267883835f61334a565b612fb1565b600c5f9054906101000a900460ff1615612b61576126996115c9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561270757506126d76115c9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561273f57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612779575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156127925750600660149054906101000a900460ff16155b15612b6057600c60019054906101000a900460ff166128865760155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612846575060155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612885576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287c90614859565b60405180910390fd5b5b60175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612923575060165f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156129ca5760095481111561296d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612964906148e7565b60405180910390fd5b600b54612979836111ec565b826129849190613d63565b11156129c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129bc9061494f565b60405180910390fd5b612b5f565b60175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612a67575060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612ab657600954811115612ab1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa8906149dd565b60405180910390fd5b612b5e565b60165f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612b5d57600b54612b10836111ec565b82612b1b9190613d63565b1115612b5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b539061494f565b60405180910390fd5b5b5b5b5b5b5f612b6b306111ec565b90505f600a548210159050808015612b8f5750600c60029054906101000a900460ff165b8015612ba85750600660149054906101000a900460ff16155b8015612bfb575060175f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612c4e575060155f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612ca1575060155f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612ce4576001600660146101000a81548160ff021916908315150217905550612cc96135bf565b5f600660146101000a81548160ff0219169083151502179055505b5f600660149054906101000a900460ff1615905060155f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612d93575060155f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612d9c575f90505b5f8115612fa15760175f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612dfa57505f601054115b15612e9257612e276064612e196010548861379990919063ffffffff16565b6137ae90919063ffffffff16565b905060105460125482612e3a9190613ee9565b612e449190613f57565b60145f828254612e549190613d63565b9250508190555060105460115482612e6c9190613ee9565b612e769190613f57565b60135f828254612e869190613d63565b92505081905550612f7e565b60175f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612ee957505f600d54115b15612f7d57612f166064612f08600d548861379990919063ffffffff16565b6137ae90919063ffffffff16565b9050600d54600f5482612f299190613ee9565b612f339190613f57565b60145f828254612f439190613d63565b92505081905550600d54600e5482612f5b9190613ee9565b612f659190613f57565b60135f828254612f759190613d63565b925050819055505b5b5f811115612f9257612f9187308361334a565b5b8085612f9e91906149fb565b94505b612fac87878761334a565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f600267ffffffffffffffff81111561309557613094614a2e565b5b6040519080825280602002602001820160405280156130c35781602001602082028036833780820191505090505b50905030815f815181106130da576130d9614a5b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561317d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131a19190614a9c565b816001815181106131b5576131b4614a5b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061321a307f0000000000000000000000000000000000000000000000000000000000000000846123c7565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161327b959493929190614bb7565b5f604051808303815f87803b158015613292575f80fd5b505af11580156132a4573d5f803e3d5ffd5b505050505050565b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036133b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133af90614763565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613426576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161341d906147f1565b60405180910390fd5b6134318383836137c3565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156134b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134ab90614c7f565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546135429190613d63565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516135a69190613a35565b60405180910390a36135b98484846137c8565b50505050565b5f6135c9306111ec565b90505f6014546013546135dc9190613d63565b90505f808314806135ec57505f82145b156135f957505050613797565b6014600a546136089190613ee9565b831115613621576014600a5461361e9190613ee9565b92505b5f47905061362e84613079565b5f61364282476137cd90919063ffffffff16565b90505f61366c8561365e6014548561379990919063ffffffff16565b6137ae90919063ffffffff16565b90505f6013819055505f60148190555060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516136c190614cca565b5f6040518083038185875af1925050503d805f81146136fb576040519150601f19603f3d011682016040523d82523d5f602084013e613700565b606091505b50508094505060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161374b90614cca565b5f6040518083038185875af1925050503d805f8114613785576040519150601f19603f3d011682016040523d82523d5f602084013e61378a565b606091505b5050809450505050505050505b565b5f81836137a69190613ee9565b905092915050565b5f81836137bb9190613f57565b905092915050565b505050565b505050565b5f81836137da91906149fb565b905092915050565b5f80fd5b5f819050919050565b6137f8816137e6565b8114613802575f80fd5b50565b5f81359050613813816137ef565b92915050565b5f806040838503121561382f5761382e6137e2565b5b5f61383c85828601613805565b925050602061384d85828601613805565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61389982613857565b6138a38185613861565b93506138b3818560208601613871565b6138bc8161387f565b840191505092915050565b5f6020820190508181035f8301526138df818461388f565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613910826138e7565b9050919050565b61392081613906565b811461392a575f80fd5b50565b5f8135905061393b81613917565b92915050565b5f8060408385031215613957576139566137e2565b5b5f6139648582860161392d565b925050602061397585828601613805565b9150509250929050565b5f8115159050919050565b6139938161397f565b82525050565b5f6020820190506139ac5f83018461398a565b92915050565b5f819050919050565b5f6139d56139d06139cb846138e7565b6139b2565b6138e7565b9050919050565b5f6139e6826139bb565b9050919050565b5f6139f7826139dc565b9050919050565b613a07816139ed565b82525050565b5f602082019050613a205f8301846139fe565b92915050565b613a2f816137e6565b82525050565b5f602082019050613a485f830184613a26565b92915050565b5f805f60608486031215613a6557613a646137e2565b5b5f613a728682870161392d565b9350506020613a838682870161392d565b9250506040613a9486828701613805565b9150509250925092565b613aa781613906565b82525050565b5f602082019050613ac05f830184613a9e565b92915050565b5f60ff82169050919050565b613adb81613ac6565b82525050565b5f602082019050613af45f830184613ad2565b92915050565b5f60208284031215613b0f57613b0e6137e2565b5b5f613b1c84828501613805565b91505092915050565b5f60208284031215613b3a57613b396137e2565b5b5f613b478482850161392d565b91505092915050565b613b598161397f565b8114613b63575f80fd5b50565b5f81359050613b7481613b50565b92915050565b5f8060408385031215613b9057613b8f6137e2565b5b5f613b9d8582860161392d565b9250506020613bae85828601613b66565b9150509250929050565b5f60208284031215613bcd57613bcc6137e2565b5b5f613bda84828501613b66565b91505092915050565b613bec81613ac6565b8114613bf6575f80fd5b50565b5f81359050613c0781613be3565b92915050565b5f819050919050565b613c1f81613c0d565b8114613c29575f80fd5b50565b5f81359050613c3a81613c16565b92915050565b5f805f60608486031215613c5757613c566137e2565b5b5f613c6486828701613bf9565b9350506020613c7586828701613c2c565b9250506040613c8686828701613c2c565b9150509250925092565b5f8060408385031215613ca657613ca56137e2565b5b5f613cb38582860161392d565b9250506020613cc48582860161392d565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613d02602083613861565b9150613d0d82613cce565b602082019050919050565b5f6020820190508181035f830152613d2f81613cf6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613d6d826137e6565b9150613d78836137e6565b9250828201905080821115613d9057613d8f613d36565b5b92915050565b7f4d757374206b656570206665657320617420353025206f72206c6573730000005f82015250565b5f613dca601d83613861565b9150613dd582613d96565b602082019050919050565b5f6020820190508181035f830152613df781613dbe565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613e4257607f821691505b602082108103613e5557613e54613dfe565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613eb5602883613861565b9150613ec082613e5b565b604082019050919050565b5f6020820190508181035f830152613ee281613ea9565b9050919050565b5f613ef3826137e6565b9150613efe836137e6565b9250828202613f0c816137e6565b91508282048414831517613f2357613f22613d36565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613f61826137e6565b9150613f6c836137e6565b925082613f7c57613f7b613f2a565b5b828204905092915050565b7f43616e6e6f7420736574206d617854206c6f776572207468616e20302e3125005f82015250565b5f613fbb601f83613861565b9150613fc682613f87565b602082019050919050565b5f6020820190508181035f830152613fe881613faf565b9050919050565b7f4d757374206b656570206665657320617420323525206f72206c6573730000005f82015250565b5f614023601d83613861565b915061402e82613fef565b602082019050919050565b5f6020820190508181035f83015261405081614017565b9050919050565b7f57726f6e6720616d6f756e7400000000000000000000000000000000000000005f82015250565b5f61408b600c83613861565b915061409682614057565b602082019050919050565b5f6020820190508181035f8301526140b88161407f565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f614119603983613861565b9150614124826140bf565b604082019050919050565b5f6020820190508181035f8301526141468161410d565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6141a7602583613861565b91506141b28261414d565b604082019050919050565b5f6020820190508181035f8301526141d48161419b565b9050919050565b6141e481613c0d565b82525050565b5f60a0820190506141fd5f8301886141db565b61420a60208301876141db565b61421760408301866141db565b6142246060830185613a26565b6142316080830184613a9e565b9695505050505050565b5f60608201905061424e5f8301866141db565b61425b60208301856141db565b6142686040830184613a26565b949350505050565b5f81905092915050565b7f19010000000000000000000000000000000000000000000000000000000000005f82015250565b5f6142ae600283614270565b91506142b98261427a565b600282019050919050565b5f819050919050565b6142de6142d982613c0d565b6142c4565b82525050565b5f6142ee826142a2565b91506142fa82856142cd565b60208201915061430a82846142cd565b6020820191508190509392505050565b5f60808201905061432d5f8301876141db565b61433a6020830186613ad2565b61434760408301856141db565b61435460608301846141db565b95945050505050565b7f496e76616c6964207369676e61747572650000000000000000000000000000005f82015250565b5f614391601183613861565b915061439c8261435d565b602082019050919050565b5f6020820190508181035f8301526143be81614385565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f61441f603583613861565b915061442a826143c5565b604082019050919050565b5f6020820190508181035f83015261444c81614413565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f6144ad603483613861565b91506144b882614453565b604082019050919050565b5f6020820190508181035f8301526144da816144a1565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61453b602683613861565b9150614546826144e1565b604082019050919050565b5f6020820190508181035f8301526145688161452f565b9050919050565b7f43616e6e6f7420736574206d617857206c6f776572207468616e20302e3525005f82015250565b5f6145a3601f83613861565b91506145ae8261456f565b602082019050919050565b5f6020820190508181035f8301526145d081614597565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614631602483613861565b915061463c826145d7565b604082019050919050565b5f6020820190508181035f83015261465e81614625565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6146bf602283613861565b91506146ca82614665565b604082019050919050565b5f6020820190508181035f8301526146ec816146b3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61474d602583613861565b9150614758826146f3565b604082019050919050565b5f6020820190508181035f83015261477a81614741565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6147db602383613861565b91506147e682614781565b604082019050919050565b5f6020820190508181035f830152614808816147cf565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f614843601683613861565b915061484e8261480f565b602082019050919050565b5f6020820190508181035f83015261487081614837565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d6178542e000000000000000000000000000000000000000000000000000000602082015250565b5f6148d1602583613861565b91506148dc82614877565b604082019050919050565b5f6020820190508181035f8301526148fe816148c5565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f614939601383613861565b915061494482614905565b602082019050919050565b5f6020820190508181035f8301526149668161492d565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d6178542e0000000000000000000000000000000000000000000000000000602082015250565b5f6149c7602683613861565b91506149d28261496d565b604082019050919050565b5f6020820190508181035f8301526149f4816149bb565b9050919050565b5f614a05826137e6565b9150614a10836137e6565b9250828203905081811115614a2857614a27613d36565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050614a9681613917565b92915050565b5f60208284031215614ab157614ab06137e2565b5b5f614abe84828501614a88565b91505092915050565b5f819050919050565b5f614aea614ae5614ae084614ac7565b6139b2565b6137e6565b9050919050565b614afa81614ad0565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614b3281613906565b82525050565b5f614b438383614b29565b60208301905092915050565b5f602082019050919050565b5f614b6582614b00565b614b6f8185614b0a565b9350614b7a83614b1a565b805f5b83811015614baa578151614b918882614b38565b9750614b9c83614b4f565b925050600181019050614b7d565b5085935050505092915050565b5f60a082019050614bca5f830188613a26565b614bd76020830187614af1565b8181036040830152614be98186614b5b565b9050614bf86060830185613a9e565b614c056080830184613a26565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614c69602683613861565b9150614c7482614c0f565b604082019050919050565b5f6020820190508181035f830152614c9681614c5d565b9050919050565b5f81905092915050565b50565b5f614cb55f83614c9d565b9150614cc082614ca7565b5f82019050919050565b5f614cd482614caa565b915081905091905056fea26469706673582212209f51ca61e878d19a637b21327301934c64911ee24741d8003dac6a04d32ed8aa64736f6c634300081a0033

Deployed Bytecode

0x6080604052600436106102e7575f3560e01c8063881dce601161018f578063b2041411116100db578063d257b34f11610094578063e2f456051161006e578063e2f4560514610b30578063ef8700e514610b5a578063f2fde38b14610b84578063fbc03bc814610bac576102ee565b8063d257b34f14610a8e578063d85ba06314610aca578063dd62ed3e14610af4576102ee565b8063b204141114610984578063b62496f5146109ae578063bbc0c742146109ea578063c024666814610a14578063c04a541414610a3c578063c79c04fd14610a66576102ee565b80639a7a23d611610148578063a9059cbb11610122578063a9059cbb146108bc578063a90eab8c146108f8578063aacebbe314610920578063af5b0f3714610948576102ee565b80639a7a23d61461082e578063a44edb2b14610856578063a457c2d714610880576102ee565b8063881dce601461074a5780638a8c523c146107725780638da5cb5b1461078857806392136913146107b2578063924de9b7146107dc57806395d89b4114610804576102ee565b80633aa7a74d1161024e5780636ddd171311610207578063751039fc116101e1578063751039fc146106a45780637571336a146106ce57806375f0a874146106f65780637bce5a0414610720576102ee565b80636ddd17131461062857806370a0823114610652578063715018a61461068e576102ee565b80633aa7a74d1461051e57806349bd5a5e146105465780634a62bb65146105705780634fbee1931461059a57806366ca9b83146105d65780636a486a8e146105fe576102ee565b806318a94cf1116102a057806318a94cf1146103fe5780631f3fed8f1461042857806323b872dd1461045257806327c8f8351461048e578063313ce567146104b857806339509351146104e2576102ee565b806302dbd8f8146102f257806306fdde031461031a578063095ea7b3146103445780631694505e1461038057806318126dce146103aa57806318160ddd146103d4576102ee565b366102ee57005b5f80fd5b3480156102fd575f80fd5b5061031860048036038101906103139190613819565b610bd4565b005b348015610325575f80fd5b5061032e610cbe565b60405161033b91906138c7565b60405180910390f35b34801561034f575f80fd5b5061036a60048036038101906103659190613941565b610d4e565b6040516103779190613999565b60405180910390f35b34801561038b575f80fd5b50610394610d6b565b6040516103a19190613a0d565b60405180910390f35b3480156103b5575f80fd5b506103be610d8f565b6040516103cb9190613a35565b60405180910390f35b3480156103df575f80fd5b506103e8610d95565b6040516103f59190613a35565b60405180910390f35b348015610409575f80fd5b50610412610d9e565b60405161041f9190613a35565b60405180910390f35b348015610433575f80fd5b5061043c610da4565b6040516104499190613a35565b60405180910390f35b34801561045d575f80fd5b5061047860048036038101906104739190613a4e565b610daa565b6040516104859190613999565b60405180910390f35b348015610499575f80fd5b506104a2610e9c565b6040516104af9190613aad565b60405180910390f35b3480156104c3575f80fd5b506104cc610ea2565b6040516104d99190613ae1565b60405180910390f35b3480156104ed575f80fd5b5061050860048036038101906105039190613941565b610eaa565b6040516105159190613999565b60405180910390f35b348015610529575f80fd5b50610544600480360381019061053f9190613afa565b610f51565b005b348015610551575f80fd5b5061055a611060565b6040516105679190613aad565b60405180910390f35b34801561057b575f80fd5b50610584611085565b6040516105919190613999565b60405180910390f35b3480156105a5575f80fd5b506105c060048036038101906105bb9190613b25565b611097565b6040516105cd9190613999565b60405180910390f35b3480156105e1575f80fd5b506105fc60048036038101906105f79190613819565b6110e9565b005b348015610609575f80fd5b506106126111d3565b60405161061f9190613a35565b60405180910390f35b348015610633575f80fd5b5061063c6111d9565b6040516106499190613999565b60405180910390f35b34801561065d575f80fd5b5061067860048036038101906106739190613b25565b6111ec565b6040516106859190613a35565b60405180910390f35b348015610699575f80fd5b506106a2611231565b005b3480156106af575f80fd5b506106b86112b8565b6040516106c59190613999565b60405180910390f35b3480156106d9575f80fd5b506106f460048036038101906106ef9190613b7a565b611355565b005b348015610701575f80fd5b5061070a611429565b6040516107179190613aad565b60405180910390f35b34801561072b575f80fd5b5061073461144e565b6040516107419190613a35565b60405180910390f35b348015610755575f80fd5b50610770600480360381019061076b9190613afa565b611454565b005b34801561077d575f80fd5b50610786611515565b005b348015610793575f80fd5b5061079c6115c9565b6040516107a99190613aad565b60405180910390f35b3480156107bd575f80fd5b506107c66115f1565b6040516107d39190613a35565b60405180910390f35b3480156107e7575f80fd5b5061080260048036038101906107fd9190613bb8565b6115f7565b005b34801561080f575f80fd5b50610818611690565b60405161082591906138c7565b60405180910390f35b348015610839575f80fd5b50610854600480360381019061084f9190613b7a565b611720565b005b348015610861575f80fd5b5061086a611839565b6040516108779190613a35565b60405180910390f35b34801561088b575f80fd5b506108a660048036038101906108a19190613941565b61183f565b6040516108b39190613999565b60405180910390f35b3480156108c7575f80fd5b506108e260048036038101906108dd9190613941565b611925565b6040516108ef9190613999565b60405180910390f35b348015610903575f80fd5b5061091e60048036038101906109199190613c40565b611942565b005b34801561092b575f80fd5b5061094660048036038101906109419190613b25565b611bc5565b005b348015610953575f80fd5b5061096e60048036038101906109699190613b25565b611cff565b60405161097b9190613999565b60405180910390f35b34801561098f575f80fd5b50610998611d1c565b6040516109a59190613a35565b60405180910390f35b3480156109b9575f80fd5b506109d460048036038101906109cf9190613b25565b611d22565b6040516109e19190613999565b60405180910390f35b3480156109f5575f80fd5b506109fe611d3f565b604051610a0b9190613999565b60405180910390f35b348015610a1f575f80fd5b50610a3a6004803603810190610a359190613b7a565b611d52565b005b348015610a47575f80fd5b50610a50611e74565b604051610a5d9190613aad565b60405180910390f35b348015610a71575f80fd5b50610a8c6004803603810190610a879190613b25565b611e99565b005b348015610a99575f80fd5b50610ab46004803603810190610aaf9190613afa565b611fd3565b604051610ac19190613999565b60405180910390f35b348015610ad5575f80fd5b50610ade612127565b604051610aeb9190613a35565b60405180910390f35b348015610aff575f80fd5b50610b1a6004803603810190610b159190613c90565b61212d565b604051610b279190613a35565b60405180910390f35b348015610b3b575f80fd5b50610b446121af565b604051610b519190613a35565b60405180910390f35b348015610b65575f80fd5b50610b6e6121b5565b604051610b7b9190613a35565b60405180910390f35b348015610b8f575f80fd5b50610baa6004803603810190610ba59190613b25565b6121bb565b005b348015610bb7575f80fd5b50610bd26004803603810190610bcd9190613afa565b6122b1565b005b610bdc6123c0565b73ffffffffffffffffffffffffffffffffffffffff16610bfa6115c9565b73ffffffffffffffffffffffffffffffffffffffff1614610c50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4790613d18565b60405180910390fd5b8160118190555080601281905550601254601154610c6e9190613d63565b60108190555060196010541115610cba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb190613de0565b60405180910390fd5b5050565b606060038054610ccd90613e2b565b80601f0160208091040260200160405190810160405280929190818152602001828054610cf990613e2b565b8015610d445780601f10610d1b57610100808354040283529160200191610d44565b820191905f5260205f20905b815481529060010190602001808311610d2757829003601f168201915b5050505050905090565b5f610d61610d5a6123c0565b84846123c7565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b60095481565b5f600254905090565b60125481565b60135481565b5f610db684848461258a565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610dfd6123c0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610e7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7390613ecb565b60405180910390fd5b610e9085610e886123c0565b8584036123c7565b60019150509392505050565b61dead81565b5f6012905090565b5f610f47610eb66123c0565b848460015f610ec36123c0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610f429190613d63565b6123c7565b6001905092915050565b610f596123c0565b73ffffffffffffffffffffffffffffffffffffffff16610f776115c9565b73ffffffffffffffffffffffffffffffffffffffff1614610fcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc490613d18565b60405180910390fd5b670de0b6b3a76400006103e86001610fe3610d95565b610fed9190613ee9565b610ff79190613f57565b6110019190613f57565b811015611043576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103a90613fd1565b60405180910390fd5b670de0b6b3a7640000816110579190613ee9565b60098190555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5f9054906101000a900460ff1681565b5f60155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b6110f16123c0565b73ffffffffffffffffffffffffffffffffffffffff1661110f6115c9565b73ffffffffffffffffffffffffffffffffffffffff1614611165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115c90613d18565b60405180910390fd5b81600e8190555080600f81905550600f54600e546111839190613d63565b600d819055506019600d5411156111cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c690614039565b60405180910390fd5b5050565b60105481565b600c60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6112396123c0565b73ffffffffffffffffffffffffffffffffffffffff166112576115c9565b73ffffffffffffffffffffffffffffffffffffffff16146112ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a490613d18565b60405180910390fd5b6112b65f612fb6565b565b5f6112c16123c0565b73ffffffffffffffffffffffffffffffffffffffff166112df6115c9565b73ffffffffffffffffffffffffffffffffffffffff1614611335576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132c90613d18565b60405180910390fd5b5f600c5f6101000a81548160ff0219169083151502179055506001905090565b61135d6123c0565b73ffffffffffffffffffffffffffffffffffffffff1661137b6115c9565b73ffffffffffffffffffffffffffffffffffffffff16146113d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c890613d18565b60405180910390fd5b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114946123c0565b73ffffffffffffffffffffffffffffffffffffffff16146114b3575f80fd5b6114bc306111ec565b81111580156114ca57505f81115b611509576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611500906140a1565b60405180910390fd5b61151281613079565b50565b61151d6123c0565b73ffffffffffffffffffffffffffffffffffffffff1661153b6115c9565b73ffffffffffffffffffffffffffffffffffffffff1614611591576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158890613d18565b60405180910390fd5b6001600c60016101000a81548160ff0219169083151502179055506001600c60026101000a81548160ff021916908315150217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b6115ff6123c0565b73ffffffffffffffffffffffffffffffffffffffff1661161d6115c9565b73ffffffffffffffffffffffffffffffffffffffff1614611673576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166a90613d18565b60405180910390fd5b80600c60026101000a81548160ff02191690831515021790555050565b60606004805461169f90613e2b565b80601f01602080910402602001604051908101604052809291908181526020018280546116cb90613e2b565b80156117165780601f106116ed57610100808354040283529160200191611716565b820191905f5260205f20905b8154815290600101906020018083116116f957829003601f168201915b5050505050905090565b6117286123c0565b73ffffffffffffffffffffffffffffffffffffffff166117466115c9565b73ffffffffffffffffffffffffffffffffffffffff161461179c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179390613d18565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361182b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118229061412f565b60405180910390fd5b61183582826132ac565b5050565b600b5481565b5f8060015f61184c6123c0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611906576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fd906141bd565b60405180910390fd5b61191a6119116123c0565b858584036123c7565b600191505092915050565b5f6119386119316123c0565b848461258a565b6001905092915050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600d81526020017f54726164696e6720546f6b656e00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152508051906020012046306040516020016119f49594939291906141ea565b6040516020818303038152906040528051906020012090505f7f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e67000000000000000000000000000000000000815250805190602001205f604051602001611a7e9392919061423b565b6040516020818303038152906040528051906020012090505f8282604051602001611aaa9291906142e4565b6040516020818303038152906040528051906020012090505f6001828888886040515f8152602001604052604051611ae5949392919061431a565b6020604051602081039080840390855afa158015611b05573d5f803e3d5ffd5b505050602060405103519050611b196115c9565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611b86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7d906143a7565b60405180910390fd5b6001600c60016101000a81548160ff0219169083151502179055506001600c60026101000a81548160ff02191690831515021790555050505050505050565b611bcd6123c0565b73ffffffffffffffffffffffffffffffffffffffff16611beb6115c9565b73ffffffffffffffffffffffffffffffffffffffff1614611c41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3890613d18565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a38060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6016602052805f5260405f205f915054906101000a900460ff1681565b600f5481565b6017602052805f5260405f205f915054906101000a900460ff1681565b600c60019054906101000a900460ff1681565b611d5a6123c0565b73ffffffffffffffffffffffffffffffffffffffff16611d786115c9565b73ffffffffffffffffffffffffffffffffffffffff1614611dce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc590613d18565b60405180910390fd5b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611e689190613999565b60405180910390a25050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611ea16123c0565b73ffffffffffffffffffffffffffffffffffffffff16611ebf6115c9565b73ffffffffffffffffffffffffffffffffffffffff1614611f15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0c90613d18565b60405180910390fd5b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167ffaf1b77ed79f6e898c44dd8ab36b330c7b2fd39bcaab05ed6362480df870396560405160405180910390a38060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f611fdc6123c0565b73ffffffffffffffffffffffffffffffffffffffff16611ffa6115c9565b73ffffffffffffffffffffffffffffffffffffffff1614612050576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204790613d18565b60405180910390fd5b620186a0600161205e610d95565b6120689190613ee9565b6120729190613f57565b8210156120b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ab90614435565b60405180910390fd5b6103e860056120c1610d95565b6120cb9190613ee9565b6120d59190613f57565b821115612117576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210e906144c3565b60405180910390fd5b81600a8190555060019050919050565b600d5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600a5481565b60145481565b6121c36123c0565b73ffffffffffffffffffffffffffffffffffffffff166121e16115c9565b73ffffffffffffffffffffffffffffffffffffffff1614612237576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222e90613d18565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036122a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229c90614551565b60405180910390fd5b6122ae81612fb6565b50565b6122b96123c0565b73ffffffffffffffffffffffffffffffffffffffff166122d76115c9565b73ffffffffffffffffffffffffffffffffffffffff161461232d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232490613d18565b60405180910390fd5b670de0b6b3a76400006103e86005612343610d95565b61234d9190613ee9565b6123579190613f57565b6123619190613f57565b8110156123a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239a906145b9565b60405180910390fd5b670de0b6b3a7640000816123b79190613ee9565b600b8190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612435576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242c90614647565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249a906146d5565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161257d9190613a35565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ef90614763565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265d906147f1565b60405180910390fd5b5f810361267d5761267883835f61334a565b612fb1565b600c5f9054906101000a900460ff1615612b61576126996115c9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561270757506126d76115c9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561273f57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612779575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156127925750600660149054906101000a900460ff16155b15612b6057600c60019054906101000a900460ff166128865760155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612846575060155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612885576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287c90614859565b60405180910390fd5b5b60175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612923575060165f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156129ca5760095481111561296d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612964906148e7565b60405180910390fd5b600b54612979836111ec565b826129849190613d63565b11156129c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129bc9061494f565b60405180910390fd5b612b5f565b60175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612a67575060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612ab657600954811115612ab1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa8906149dd565b60405180910390fd5b612b5e565b60165f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612b5d57600b54612b10836111ec565b82612b1b9190613d63565b1115612b5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b539061494f565b60405180910390fd5b5b5b5b5b5b5f612b6b306111ec565b90505f600a548210159050808015612b8f5750600c60029054906101000a900460ff165b8015612ba85750600660149054906101000a900460ff16155b8015612bfb575060175f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612c4e575060155f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612ca1575060155f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612ce4576001600660146101000a81548160ff021916908315150217905550612cc96135bf565b5f600660146101000a81548160ff0219169083151502179055505b5f600660149054906101000a900460ff1615905060155f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612d93575060155f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612d9c575f90505b5f8115612fa15760175f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612dfa57505f601054115b15612e9257612e276064612e196010548861379990919063ffffffff16565b6137ae90919063ffffffff16565b905060105460125482612e3a9190613ee9565b612e449190613f57565b60145f828254612e549190613d63565b9250508190555060105460115482612e6c9190613ee9565b612e769190613f57565b60135f828254612e869190613d63565b92505081905550612f7e565b60175f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612ee957505f600d54115b15612f7d57612f166064612f08600d548861379990919063ffffffff16565b6137ae90919063ffffffff16565b9050600d54600f5482612f299190613ee9565b612f339190613f57565b60145f828254612f439190613d63565b92505081905550600d54600e5482612f5b9190613ee9565b612f659190613f57565b60135f828254612f759190613d63565b925050819055505b5b5f811115612f9257612f9187308361334a565b5b8085612f9e91906149fb565b94505b612fac87878761334a565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f600267ffffffffffffffff81111561309557613094614a2e565b5b6040519080825280602002602001820160405280156130c35781602001602082028036833780820191505090505b50905030815f815181106130da576130d9614a5b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561317d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131a19190614a9c565b816001815181106131b5576131b4614a5b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061321a307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846123c7565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161327b959493929190614bb7565b5f604051808303815f87803b158015613292575f80fd5b505af11580156132a4573d5f803e3d5ffd5b505050505050565b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036133b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133af90614763565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613426576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161341d906147f1565b60405180910390fd5b6134318383836137c3565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156134b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134ab90614c7f565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546135429190613d63565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516135a69190613a35565b60405180910390a36135b98484846137c8565b50505050565b5f6135c9306111ec565b90505f6014546013546135dc9190613d63565b90505f808314806135ec57505f82145b156135f957505050613797565b6014600a546136089190613ee9565b831115613621576014600a5461361e9190613ee9565b92505b5f47905061362e84613079565b5f61364282476137cd90919063ffffffff16565b90505f61366c8561365e6014548561379990919063ffffffff16565b6137ae90919063ffffffff16565b90505f6013819055505f60148190555060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516136c190614cca565b5f6040518083038185875af1925050503d805f81146136fb576040519150601f19603f3d011682016040523d82523d5f602084013e613700565b606091505b50508094505060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161374b90614cca565b5f6040518083038185875af1925050503d805f8114613785576040519150601f19603f3d011682016040523d82523d5f602084013e61378a565b606091505b5050809450505050505050505b565b5f81836137a69190613ee9565b905092915050565b5f81836137bb9190613f57565b905092915050565b505050565b505050565b5f81836137da91906149fb565b905092915050565b5f80fd5b5f819050919050565b6137f8816137e6565b8114613802575f80fd5b50565b5f81359050613813816137ef565b92915050565b5f806040838503121561382f5761382e6137e2565b5b5f61383c85828601613805565b925050602061384d85828601613805565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61389982613857565b6138a38185613861565b93506138b3818560208601613871565b6138bc8161387f565b840191505092915050565b5f6020820190508181035f8301526138df818461388f565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613910826138e7565b9050919050565b61392081613906565b811461392a575f80fd5b50565b5f8135905061393b81613917565b92915050565b5f8060408385031215613957576139566137e2565b5b5f6139648582860161392d565b925050602061397585828601613805565b9150509250929050565b5f8115159050919050565b6139938161397f565b82525050565b5f6020820190506139ac5f83018461398a565b92915050565b5f819050919050565b5f6139d56139d06139cb846138e7565b6139b2565b6138e7565b9050919050565b5f6139e6826139bb565b9050919050565b5f6139f7826139dc565b9050919050565b613a07816139ed565b82525050565b5f602082019050613a205f8301846139fe565b92915050565b613a2f816137e6565b82525050565b5f602082019050613a485f830184613a26565b92915050565b5f805f60608486031215613a6557613a646137e2565b5b5f613a728682870161392d565b9350506020613a838682870161392d565b9250506040613a9486828701613805565b9150509250925092565b613aa781613906565b82525050565b5f602082019050613ac05f830184613a9e565b92915050565b5f60ff82169050919050565b613adb81613ac6565b82525050565b5f602082019050613af45f830184613ad2565b92915050565b5f60208284031215613b0f57613b0e6137e2565b5b5f613b1c84828501613805565b91505092915050565b5f60208284031215613b3a57613b396137e2565b5b5f613b478482850161392d565b91505092915050565b613b598161397f565b8114613b63575f80fd5b50565b5f81359050613b7481613b50565b92915050565b5f8060408385031215613b9057613b8f6137e2565b5b5f613b9d8582860161392d565b9250506020613bae85828601613b66565b9150509250929050565b5f60208284031215613bcd57613bcc6137e2565b5b5f613bda84828501613b66565b91505092915050565b613bec81613ac6565b8114613bf6575f80fd5b50565b5f81359050613c0781613be3565b92915050565b5f819050919050565b613c1f81613c0d565b8114613c29575f80fd5b50565b5f81359050613c3a81613c16565b92915050565b5f805f60608486031215613c5757613c566137e2565b5b5f613c6486828701613bf9565b9350506020613c7586828701613c2c565b9250506040613c8686828701613c2c565b9150509250925092565b5f8060408385031215613ca657613ca56137e2565b5b5f613cb38582860161392d565b9250506020613cc48582860161392d565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613d02602083613861565b9150613d0d82613cce565b602082019050919050565b5f6020820190508181035f830152613d2f81613cf6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613d6d826137e6565b9150613d78836137e6565b9250828201905080821115613d9057613d8f613d36565b5b92915050565b7f4d757374206b656570206665657320617420353025206f72206c6573730000005f82015250565b5f613dca601d83613861565b9150613dd582613d96565b602082019050919050565b5f6020820190508181035f830152613df781613dbe565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613e4257607f821691505b602082108103613e5557613e54613dfe565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613eb5602883613861565b9150613ec082613e5b565b604082019050919050565b5f6020820190508181035f830152613ee281613ea9565b9050919050565b5f613ef3826137e6565b9150613efe836137e6565b9250828202613f0c816137e6565b91508282048414831517613f2357613f22613d36565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613f61826137e6565b9150613f6c836137e6565b925082613f7c57613f7b613f2a565b5b828204905092915050565b7f43616e6e6f7420736574206d617854206c6f776572207468616e20302e3125005f82015250565b5f613fbb601f83613861565b9150613fc682613f87565b602082019050919050565b5f6020820190508181035f830152613fe881613faf565b9050919050565b7f4d757374206b656570206665657320617420323525206f72206c6573730000005f82015250565b5f614023601d83613861565b915061402e82613fef565b602082019050919050565b5f6020820190508181035f83015261405081614017565b9050919050565b7f57726f6e6720616d6f756e7400000000000000000000000000000000000000005f82015250565b5f61408b600c83613861565b915061409682614057565b602082019050919050565b5f6020820190508181035f8301526140b88161407f565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f614119603983613861565b9150614124826140bf565b604082019050919050565b5f6020820190508181035f8301526141468161410d565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6141a7602583613861565b91506141b28261414d565b604082019050919050565b5f6020820190508181035f8301526141d48161419b565b9050919050565b6141e481613c0d565b82525050565b5f60a0820190506141fd5f8301886141db565b61420a60208301876141db565b61421760408301866141db565b6142246060830185613a26565b6142316080830184613a9e565b9695505050505050565b5f60608201905061424e5f8301866141db565b61425b60208301856141db565b6142686040830184613a26565b949350505050565b5f81905092915050565b7f19010000000000000000000000000000000000000000000000000000000000005f82015250565b5f6142ae600283614270565b91506142b98261427a565b600282019050919050565b5f819050919050565b6142de6142d982613c0d565b6142c4565b82525050565b5f6142ee826142a2565b91506142fa82856142cd565b60208201915061430a82846142cd565b6020820191508190509392505050565b5f60808201905061432d5f8301876141db565b61433a6020830186613ad2565b61434760408301856141db565b61435460608301846141db565b95945050505050565b7f496e76616c6964207369676e61747572650000000000000000000000000000005f82015250565b5f614391601183613861565b915061439c8261435d565b602082019050919050565b5f6020820190508181035f8301526143be81614385565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f61441f603583613861565b915061442a826143c5565b604082019050919050565b5f6020820190508181035f83015261444c81614413565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f6144ad603483613861565b91506144b882614453565b604082019050919050565b5f6020820190508181035f8301526144da816144a1565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61453b602683613861565b9150614546826144e1565b604082019050919050565b5f6020820190508181035f8301526145688161452f565b9050919050565b7f43616e6e6f7420736574206d617857206c6f776572207468616e20302e3525005f82015250565b5f6145a3601f83613861565b91506145ae8261456f565b602082019050919050565b5f6020820190508181035f8301526145d081614597565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614631602483613861565b915061463c826145d7565b604082019050919050565b5f6020820190508181035f83015261465e81614625565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6146bf602283613861565b91506146ca82614665565b604082019050919050565b5f6020820190508181035f8301526146ec816146b3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61474d602583613861565b9150614758826146f3565b604082019050919050565b5f6020820190508181035f83015261477a81614741565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6147db602383613861565b91506147e682614781565b604082019050919050565b5f6020820190508181035f830152614808816147cf565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f614843601683613861565b915061484e8261480f565b602082019050919050565b5f6020820190508181035f83015261487081614837565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d6178542e000000000000000000000000000000000000000000000000000000602082015250565b5f6148d1602583613861565b91506148dc82614877565b604082019050919050565b5f6020820190508181035f8301526148fe816148c5565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f614939601383613861565b915061494482614905565b602082019050919050565b5f6020820190508181035f8301526149668161492d565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d6178542e0000000000000000000000000000000000000000000000000000602082015250565b5f6149c7602683613861565b91506149d28261496d565b604082019050919050565b5f6020820190508181035f8301526149f4816149bb565b9050919050565b5f614a05826137e6565b9150614a10836137e6565b9250828203905081811115614a2857614a27613d36565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050614a9681613917565b92915050565b5f60208284031215614ab157614ab06137e2565b5b5f614abe84828501614a88565b91505092915050565b5f819050919050565b5f614aea614ae5614ae084614ac7565b6139b2565b6137e6565b9050919050565b614afa81614ad0565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614b3281613906565b82525050565b5f614b438383614b29565b60208301905092915050565b5f602082019050919050565b5f614b6582614b00565b614b6f8185614b0a565b9350614b7a83614b1a565b805f5b83811015614baa578151614b918882614b38565b9750614b9c83614b4f565b925050600181019050614b7d565b5085935050505092915050565b5f60a082019050614bca5f830188613a26565b614bd76020830187614af1565b8181036040830152614be98186614b5b565b9050614bf86060830185613a9e565b614c056080830184613a26565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614c69602683613861565b9150614c7482614c0f565b604082019050919050565b5f6020820190508181035f830152614c9681614c5d565b9050919050565b5f81905092915050565b50565b5f614cb55f83614c9d565b9150614cc082614ca7565b5f82019050919050565b5f614cd482614caa565b915081905091905056fea26469706673582212209f51ca61e878d19a637b21327301934c64911ee24741d8003dac6a04d32ed8aa64736f6c634300081a0033

Deployed Bytecode Sourcemap

15120:13274:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21723:334;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2817:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3731:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15196:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15459:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3138:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15858:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15900;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3908:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15289:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3037:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4408:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20535:241;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15254:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15553:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23176:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21388:327;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15785:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15633:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3254:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;939:103;;;;;;;;;;;;;:::i;:::-;;19839:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21033:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15381:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15707;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26627:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18605:112;;;;;;;;;;;;;:::i;:::-;;716:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15820:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21280:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2925:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22255:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15525:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4631:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3389:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18725:1062;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22763:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16043:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15744:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16099:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15593:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22065:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15418:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22979:189;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20030:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15673:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3572:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15485:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15940:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1050:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20784:241;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21723:334;862:12;:10;:12::i;:::-;851:23;;:7;:5;:7::i;:::-;:23;;;843:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21861:13:::1;21842:16;:32;;;;21906:7;21885:18;:28;;;;21959:18;;21940:16;;:37;;;;:::i;:::-;21924:13;:53;;;;22013:2;21996:13;;:19;;21988:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;21723:334:::0;;:::o;2817:100::-;2871:13;2904:5;2897:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2817:100;:::o;3731:169::-;3814:4;3831:39;3840:12;:10;:12::i;:::-;3854:7;3863:6;3831:8;:39::i;:::-;3888:4;3881:11;;3731:169;;;;:::o;15196:51::-;;;:::o;15459:19::-;;;;:::o;3138:108::-;3199:7;3226:12;;3219:19;;3138:108;:::o;15858:33::-;;;;:::o;15900:::-;;;;:::o;3908:492::-;4048:4;4065:36;4075:6;4083:9;4094:6;4065:9;:36::i;:::-;4114:24;4141:11;:19;4153:6;4141:19;;;;;;;;;;;;;;;:33;4161:12;:10;:12::i;:::-;4141:33;;;;;;;;;;;;;;;;4114:60;;4213:6;4193:16;:26;;4185:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4300:57;4309:6;4317:12;:10;:12::i;:::-;4350:6;4331:16;:25;4300:8;:57::i;:::-;4388:4;4381:11;;;3908:492;;;;;:::o;15289:53::-;15335:6;15289:53;:::o;3037:93::-;3095:5;3120:2;3113:9;;3037:93;:::o;4408:215::-;4496:4;4513:80;4522:12;:10;:12::i;:::-;4536:7;4582:10;4545:11;:25;4557:12;:10;:12::i;:::-;4545:25;;;;;;;;;;;;;;;:34;4571:7;4545:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4513:8;:80::i;:::-;4611:4;4604:11;;4408:215;;;;:::o;20535:241::-;862:12;:10;:12::i;:::-;851:23;;:7;:5;:7::i;:::-;:23;;;843:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20670:4:::1;20662;20657:1;20641:13;:11;:13::i;:::-;:17;;;;:::i;:::-;20640:26;;;;:::i;:::-;20639:35;;;;:::i;:::-;20629:6;:45;;20607:126;;;;;;;;;;;;:::i;:::-;;;;;;;;;20761:6;20751;:17;;;;:::i;:::-;20744:4;:24;;;;20535:241:::0;:::o;15254:28::-;;;;;;;;;;;;;:::o;15553:33::-;;;;;;;;;;;;;:::o;23176:126::-;23242:4;23266:19;:28;23286:7;23266:28;;;;;;;;;;;;;;;;;;;;;;;;;23259:35;;23176:126;;;:::o;21388:327::-;862:12;:10;:12::i;:::-;851:23;;:7;:5;:7::i;:::-;:23;;;843:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21524:13:::1;21506:15;:31;;;;21568:7;21548:17;:27;;;;21619:17;;21601:15;;:35;;;;:::i;:::-;21586:12;:50;;;;21671:2;21655:12;;:18;;21647:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;21388:327:::0;;:::o;15785:28::-;;;;:::o;15633:31::-;;;;;;;;;;;;;:::o;3254:127::-;3328:7;3355:9;:18;3365:7;3355:18;;;;;;;;;;;;;;;;3348:25;;3254:127;;;:::o;939:103::-;862:12;:10;:12::i;:::-;851:23;;:7;:5;:7::i;:::-;:23;;;843:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1004:30:::1;1031:1;1004:18;:30::i;:::-;939:103::o:0;19839:121::-;19891:4;862:12;:10;:12::i;:::-;851:23;;:7;:5;:7::i;:::-;:23;;;843:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19925:5:::1;19908:14;;:22;;;;;;;;;;;;;;;;;;19948:4;19941:11;;19839:121:::0;:::o;21033:151::-;862:12;:10;:12::i;:::-;851:23;;:7;:5;:7::i;:::-;:23;;;843:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21172:4:::1;21146:15;:23;21162:6;21146:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;21033:151:::0;;:::o;15381:30::-;;;;;;;;;;;;;:::o;15707:::-;;;;:::o;26627:221::-;26705:15;;;;;;;;;;;26689:31;;:12;:10;:12::i;:::-;:31;;;26681:40;;;;;;26750:24;26768:4;26750:9;:24::i;:::-;26740:6;:34;;:48;;;;;26787:1;26778:6;:10;26740:48;26732:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;26816:24;26833:6;26816:16;:24::i;:::-;26627:221;:::o;18605:112::-;862:12;:10;:12::i;:::-;851:23;;:7;:5;:7::i;:::-;:23;;;843:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18676:4:::1;18660:13;;:20;;;;;;;;;;;;;;;;;;18705:4;18691:11;;:18;;;;;;;;;;;;;;;;;;18605:112::o:0;716:87::-;762:7;789:6;;;;;;;;;;;782:13;;716:87;:::o;15820:31::-;;;;:::o;21280:100::-;862:12;:10;:12::i;:::-;851:23;;:7;:5;:7::i;:::-;:23;;;843:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21365:7:::1;21351:11;;:21;;;;;;;;;;;;;;;;;;21280:100:::0;:::o;2925:104::-;2981:13;3014:7;3007:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2925:104;:::o;22255:304::-;862:12;:10;:12::i;:::-;851:23;;:7;:5;:7::i;:::-;:23;;;843:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22399:13:::1;;;;;;;;;;;22391:21;;:4;:21;;::::0;22369:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22510:41;22539:4;22545:5;22510:28;:41::i;:::-;22255:304:::0;;:::o;15525:19::-;;;;:::o;4631:413::-;4724:4;4741:24;4768:11;:25;4780:12;:10;:12::i;:::-;4768:25;;;;;;;;;;;;;;;:34;4794:7;4768:34;;;;;;;;;;;;;;;;4741:61;;4841:15;4821:16;:35;;4813:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4934:67;4943:12;:10;:12::i;:::-;4957:7;4985:15;4966:16;:34;4934:8;:67::i;:::-;5032:4;5025:11;;;4631:413;;;;:::o;3389:175::-;3475:4;3492:42;3502:12;:10;:12::i;:::-;3516:9;3527:6;3492:9;:42::i;:::-;3552:4;3545:11;;3389:175;;;;:::o;18725:1062::-;18809:18;18883:95;19007:22;;;;;;;;;;;;;;;;;18997:33;;;;;;19059:10;;;;;;;;;;;;;;;;;19049:21;;;;;;19089:13;19129:4;18854:295;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;18830:330;;;;;;18809:351;;19173:18;19247:49;19325:23;;;;;;;;;;;;;;;;;19315:34;;;;;;19376:1;19218:175;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;19194:210;;;;;;19173:231;;19417:14;19522:10;19551;19458:134;;;;;;;;;:::i;:::-;;;;;;;;;;;;;19434:169;;;;;;19417:186;;19616:14;19633:26;19643:6;19651:1;19654;19657;19633:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19616:43;;19688:7;:5;:7::i;:::-;19678:17;;:6;:17;;;19670:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;19746:4;19730:13;;:20;;;;;;;;;;;;;;;;;;19775:4;19761:11;;:18;;;;;;;;;;;;;;;;;;18798:989;;;;18725:1062;;;:::o;22763:208::-;862:12;:10;:12::i;:::-;851:23;;:7;:5;:7::i;:::-;:23;;;843:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22900:15:::1;;;;;;;;;;;22857:59;;22880:18;22857:59;;;;;;;;;;;;22945:18;22927:15;;:36;;;;;;;;;;;;;;;;;;22763:208:::0;:::o;16043:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;15744:32::-;;;;:::o;16099:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;15593:33::-;;;;;;;;;;;;;:::o;22065:182::-;862:12;:10;:12::i;:::-;851:23;;:7;:5;:7::i;:::-;:23;;;843:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22181:8:::1;22150:19;:28;22170:7;22150:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;22221:7;22205:34;;;22230:8;22205:34;;;;;;:::i;:::-;;;;;;;;22065:182:::0;;:::o;15418:32::-;;;;;;;;;;;;;:::o;22979:189::-;862:12;:10;:12::i;:::-;851:23;;:7;:5;:7::i;:::-;:23;;;843:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23102:17:::1;;;;;;;;;;;23066:54;;23091:9;23066:54;;;;;;;;;;;;23151:9;23131:17;;:29;;;;;;;;;;;;;;;;;;22979:189:::0;:::o;20030:497::-;20138:4;862:12;:10;:12::i;:::-;851:23;;:7;:5;:7::i;:::-;:23;;;843:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20217:6:::1;20212:1;20196:13;:11;:13::i;:::-;:17;;;;:::i;:::-;20195:28;;;;:::i;:::-;20182:9;:41;;20160:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;20372:4;20367:1;20351:13;:11;:13::i;:::-;:17;;;;:::i;:::-;20350:26;;;;:::i;:::-;20337:9;:39;;20315:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;20488:9;20467:18;:30;;;;20515:4;20508:11;;20030:497:::0;;;:::o;15673:27::-;;;;:::o;3572:151::-;3661:7;3688:11;:18;3700:5;3688:18;;;;;;;;;;;;;;;:27;3707:7;3688:27;;;;;;;;;;;;;;;;3681:34;;3572:151;;;;:::o;15485:33::-;;;;:::o;15940:35::-;;;;:::o;1050:201::-;862:12;:10;:12::i;:::-;851:23;;:7;:5;:7::i;:::-;:23;;;843:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1159:1:::1;1139:22;;:8;:22;;::::0;1131:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1215:28;1234:8;1215:18;:28::i;:::-;1050:201:::0;:::o;20784:241::-;862:12;:10;:12::i;:::-;851:23;;:7;:5;:7::i;:::-;:23;;;843:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20919:4:::1;20911;20906:1;20890:13;:11;:13::i;:::-;:17;;;;:::i;:::-;20889:26;;;;:::i;:::-;20888:35;;;;:::i;:::-;20878:6;:45;;20856:126;;;;;;;;;;;;:::i;:::-;;;;;;;;;21010:6;21000;:17;;;;:::i;:::-;20993:4;:24;;;;20784:241:::0;:::o;262:98::-;315:7;342:10;335:17;;262:98;:::o;6799:380::-;6952:1;6935:19;;:5;:19;;;6927:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7033:1;7014:21;;:7;:21;;;7006:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7117:6;7087:11;:18;7099:5;7087:18;;;;;;;;;;;;;;;:27;7106:7;7087:27;;;;;;;;;;;;;;;:36;;;;7155:7;7139:32;;7148:5;7139:32;;;7164:6;7139:32;;;;;;:::i;:::-;;;;;;;;6799:380;;;:::o;23360:3144::-;23508:1;23492:18;;:4;:18;;;23484:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23585:1;23571:16;;:2;:16;;;23563:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23654:1;23644:6;:11;23640:93;;23672:28;23688:4;23694:2;23698:1;23672:15;:28::i;:::-;23715:7;;23640:93;23749:14;;;;;;;;;;;23745:1070;;;23792:7;:5;:7::i;:::-;23784:15;;:4;:15;;;;:49;;;;;23826:7;:5;:7::i;:::-;23820:13;;:2;:13;;;;23784:49;:86;;;;;23868:1;23854:16;;:2;:16;;;;23784:86;:128;;;;;23905:6;23891:21;;:2;:21;;;;23784:128;:158;;;;;23934:8;;;;;;;;;;;23933:9;23784:158;23780:1024;;;23968:13;;;;;;;;;;;23963:150;;24014:19;:25;24034:4;24014:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;24043:19;:23;24063:2;24043:23;;;;;;;;;;;;;;;;;;;;;;;;;24014:52;24006:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;23963:150;24165:25;:31;24191:4;24165:31;;;;;;;;;;;;;;;;;;;;;;;;;:55;;;;;24201:15;:19;24217:2;24201:19;;;;;;;;;;;;;;;;;;;;;;;;;24200:20;24165:55;24161:628;;;24263:4;;24253:6;:14;;24245:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;24366:4;;24349:13;24359:2;24349:9;:13::i;:::-;24340:6;:22;;;;:::i;:::-;:30;;24332:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;24161:628;;;24470:25;:29;24496:2;24470:29;;;;;;;;;;;;;;;;;;;;;;;;;:55;;;;;24504:15;:21;24520:4;24504:21;;;;;;;;;;;;;;;;;;;;;;;;;24503:22;24470:55;24466:323;;;24568:4;;24558:6;:14;;24550:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;24466:323;;;24663:15;:19;24679:2;24663:19;;;;;;;;;;;;;;;;;;;;;;;;;24658:131;;24741:4;;24724:13;24734:2;24724:9;:13::i;:::-;24715:6;:22;;;;:::i;:::-;:30;;24707:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;24658:131;24466:323;24161:628;23780:1024;23745:1070;24827:28;24858:24;24876:4;24858:9;:24::i;:::-;24827:55;;24893:12;24932:18;;24908:20;:42;;24893:57;;24967:7;:35;;;;;24991:11;;;;;;;;;;;24967:35;:61;;;;;25020:8;;;;;;;;;;;25019:9;24967:61;:110;;;;;25046:25;:31;25072:4;25046:31;;;;;;;;;;;;;;;;;;;;;;;;;25045:32;24967:110;:153;;;;;25095:19;:25;25115:4;25095:25;;;;;;;;;;;;;;;;;;;;;;;;;25094:26;24967:153;:194;;;;;25138:19;:23;25158:2;25138:23;;;;;;;;;;;;;;;;;;;;;;;;;25137:24;24967:194;24963:302;;;25189:4;25178:8;;:15;;;;;;;;;;;;;;;;;;25210:10;:8;:10::i;:::-;25248:5;25237:8;;:16;;;;;;;;;;;;;;;;;;24963:302;25277:12;25293:8;;;;;;;;;;;25292:9;25277:24;;25403:19;:25;25423:4;25403:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;25432:19;:23;25452:2;25432:23;;;;;;;;;;;;;;;;;;;;;;;;;25403:52;25399:100;;;25482:5;25472:15;;25399:100;25511:12;25616:7;25612:839;;;25668:25;:29;25694:2;25668:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;25717:1;25701:13;;:17;25668:50;25664:638;;;25746:34;25776:3;25746:25;25757:13;;25746:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;25739:41;;25853:13;;25831:18;;25824:4;:25;;;;:::i;:::-;25823:43;;;;:::i;:::-;25799:20;;:67;;;;;;;:::i;:::-;;;;;;;;25935:13;;25915:16;;25908:4;:23;;;;:::i;:::-;25907:41;;;;:::i;:::-;25885:18;;:63;;;;;;;:::i;:::-;;;;;;;;25664:638;;;26010:25;:31;26036:4;26010:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;26060:1;26045:12;;:16;26010:51;26006:296;;;26089:33;26118:3;26089:24;26100:12;;26089:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;26082:40;;26194:12;;26173:17;;26166:4;:24;;;;:::i;:::-;26165:41;;;;:::i;:::-;26141:20;;:65;;;;;;;:::i;:::-;;;;;;;;26274:12;;26255:15;;26248:4;:22;;;;:::i;:::-;26247:39;;;;:::i;:::-;26225:18;;:61;;;;;;;:::i;:::-;;;;;;;;26006:296;25664:638;26329:1;26322:4;:8;26318:91;;;26351:42;26367:4;26381;26388;26351:15;:42::i;:::-;26318:91;26435:4;26425:14;;;;;:::i;:::-;;;25612:839;26463:33;26479:4;26485:2;26489:6;26463:15;:33::i;:::-;23473:3031;;;;23360:3144;;;;:::o;1259:191::-;1333:16;1352:6;;;;;;;;;;;1333:25;;1378:8;1369:6;;:17;;;;;;;;;;;;;;;;;;1433:8;1402:40;;1423:8;1402:40;;;;;;;;;;;;1322:128;1259:191;:::o;26856:589::-;26982:21;27020:1;27006:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26982:40;;27051:4;27033;27038:1;27033:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;27077:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27067:4;27072:1;27067:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;27112:62;27129:4;27144:15;27162:11;27112:8;:62::i;:::-;27213:15;:66;;;27294:11;27320:1;27364:4;27391;27411:15;27213:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26911:534;26856:589;:::o;22567:188::-;22684:5;22650:25;:31;22676:4;22650:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;22741:5;22707:40;;22735:4;22707:40;;;;;;;;;;;;22567:188;;:::o;5052:733::-;5210:1;5192:20;;:6;:20;;;5184:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5294:1;5273:23;;:9;:23;;;5265:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5349:47;5370:6;5378:9;5389:6;5349:20;:47::i;:::-;5409:21;5433:9;:17;5443:6;5433:17;;;;;;;;;;;;;;;;5409:41;;5486:6;5469:13;:23;;5461:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5607:6;5591:13;:22;5571:9;:17;5581:6;5571:17;;;;;;;;;;;;;;;:42;;;;5659:6;5635:9;:20;5645:9;5635:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5700:9;5683:35;;5692:6;5683:35;;;5711:6;5683:35;;;;;;:::i;:::-;;;;;;;;5731:46;5751:6;5759:9;5770:6;5731:19;:46::i;:::-;5173:612;5052:733;;;:::o;27453:938::-;27492:23;27518:24;27536:4;27518:9;:24::i;:::-;27492:50;;27553:25;27602:20;;27581:18;;:41;;;;:::i;:::-;27553:69;;27633:12;27681:1;27662:15;:20;:46;;;;27707:1;27686:17;:22;27662:46;27658:85;;;27725:7;;;;;27658:85;27798:2;27777:18;;:23;;;;:::i;:::-;27759:15;:41;27755:115;;;27856:2;27835:18;;:23;;;;:::i;:::-;27817:41;;27755:115;27882:25;27910:21;27882:49;;27942:33;27959:15;27942:16;:33::i;:::-;27988:18;28009:44;28035:17;28009:21;:25;;:44;;;;:::i;:::-;27988:65;;28064:17;28084:59;28125:17;28084:36;28099:20;;28084:10;:14;;:36;;;;:::i;:::-;:40;;:59;;;;:::i;:::-;28064:79;;28177:1;28156:18;:22;;;;28212:1;28189:20;:24;;;;28248:17;;;;;;;;;;;28240:31;;28279:9;28240:53;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28226:67;;;;;28326:15;;;;;;;;;;;28318:29;;28356:21;28318:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28304:79;;;;;27481:910;;;;;;27453:938;:::o;8805:98::-;8863:7;8894:1;8890;:5;;;;:::i;:::-;8883:12;;8805:98;;;;:::o;8911:::-;8969:7;9000:1;8996;:5;;;;:::i;:::-;8989:12;;8911:98;;;;:::o;7187:125::-;;;;:::o;7320:124::-;;;;:::o;8699:98::-;8757:7;8788:1;8784;:5;;;;:::i;:::-;8777:12;;8699: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:99::-;1222:6;1256:5;1250:12;1240:22;;1170:99;;;:::o;1275:169::-;1359:11;1393:6;1388:3;1381:19;1433:4;1428:3;1424:14;1409:29;;1275:169;;;;:::o;1450:139::-;1539:6;1534:3;1529;1523:23;1580:1;1571:6;1566:3;1562:16;1555:27;1450:139;;;:::o;1595:102::-;1636:6;1687:2;1683:7;1678:2;1671:5;1667:14;1663:28;1653:38;;1595:102;;;:::o;1703:377::-;1791:3;1819:39;1852:5;1819:39;:::i;:::-;1874:71;1938:6;1933:3;1874:71;:::i;:::-;1867:78;;1954:65;2012:6;2007:3;2000:4;1993:5;1989:16;1954:65;:::i;:::-;2044:29;2066:6;2044:29;:::i;:::-;2039:3;2035:39;2028:46;;1795:285;1703:377;;;;:::o;2086:313::-;2199:4;2237:2;2226:9;2222:18;2214:26;;2286:9;2280:4;2276:20;2272:1;2261:9;2257:17;2250:47;2314:78;2387:4;2378:6;2314:78;:::i;:::-;2306:86;;2086:313;;;;:::o;2405:126::-;2442:7;2482:42;2475:5;2471:54;2460:65;;2405:126;;;:::o;2537:96::-;2574:7;2603:24;2621:5;2603:24;:::i;:::-;2592:35;;2537:96;;;:::o;2639:122::-;2712:24;2730:5;2712:24;:::i;:::-;2705:5;2702:35;2692:63;;2751:1;2748;2741:12;2692:63;2639:122;:::o;2767:139::-;2813:5;2851:6;2838:20;2829:29;;2867:33;2894:5;2867:33;:::i;:::-;2767:139;;;;:::o;2912:474::-;2980:6;2988;3037:2;3025:9;3016:7;3012:23;3008:32;3005:119;;;3043:79;;:::i;:::-;3005:119;3163:1;3188:53;3233:7;3224:6;3213:9;3209:22;3188:53;:::i;:::-;3178:63;;3134:117;3290:2;3316:53;3361:7;3352:6;3341:9;3337:22;3316:53;:::i;:::-;3306:63;;3261:118;2912:474;;;;;:::o;3392:90::-;3426:7;3469:5;3462:13;3455:21;3444:32;;3392:90;;;:::o;3488:109::-;3569:21;3584:5;3569:21;:::i;:::-;3564:3;3557:34;3488:109;;:::o;3603:210::-;3690:4;3728:2;3717:9;3713:18;3705:26;;3741:65;3803:1;3792:9;3788:17;3779:6;3741:65;:::i;:::-;3603:210;;;;:::o;3819:60::-;3847:3;3868:5;3861:12;;3819:60;;;:::o;3885:142::-;3935:9;3968:53;3986:34;3995:24;4013:5;3995:24;:::i;:::-;3986:34;:::i;:::-;3968:53;:::i;:::-;3955:66;;3885:142;;;:::o;4033:126::-;4083:9;4116:37;4147:5;4116:37;:::i;:::-;4103:50;;4033:126;;;:::o;4165:153::-;4242:9;4275:37;4306:5;4275:37;:::i;:::-;4262:50;;4165:153;;;:::o;4324:185::-;4438:64;4496:5;4438:64;:::i;:::-;4433:3;4426:77;4324:185;;:::o;4515:276::-;4635:4;4673:2;4662:9;4658:18;4650:26;;4686:98;4781:1;4770:9;4766:17;4757:6;4686:98;:::i;:::-;4515:276;;;;:::o;4797:118::-;4884:24;4902:5;4884:24;:::i;:::-;4879:3;4872:37;4797:118;;:::o;4921:222::-;5014:4;5052:2;5041:9;5037:18;5029:26;;5065:71;5133:1;5122:9;5118:17;5109:6;5065:71;:::i;:::-;4921:222;;;;:::o;5149:619::-;5226:6;5234;5242;5291:2;5279:9;5270:7;5266:23;5262:32;5259:119;;;5297:79;;:::i;:::-;5259:119;5417:1;5442:53;5487:7;5478:6;5467:9;5463:22;5442:53;:::i;:::-;5432:63;;5388:117;5544:2;5570:53;5615:7;5606:6;5595:9;5591:22;5570:53;:::i;:::-;5560:63;;5515:118;5672:2;5698:53;5743:7;5734:6;5723:9;5719:22;5698:53;:::i;:::-;5688:63;;5643:118;5149:619;;;;;:::o;5774:118::-;5861:24;5879:5;5861:24;:::i;:::-;5856:3;5849:37;5774:118;;:::o;5898:222::-;5991:4;6029:2;6018:9;6014:18;6006:26;;6042:71;6110:1;6099:9;6095:17;6086:6;6042:71;:::i;:::-;5898:222;;;;:::o;6126:86::-;6161:7;6201:4;6194:5;6190:16;6179:27;;6126:86;;;:::o;6218:112::-;6301:22;6317:5;6301:22;:::i;:::-;6296:3;6289:35;6218:112;;:::o;6336:214::-;6425:4;6463:2;6452:9;6448:18;6440:26;;6476:67;6540:1;6529:9;6525:17;6516:6;6476:67;:::i;:::-;6336:214;;;;:::o;6556:329::-;6615:6;6664:2;6652:9;6643:7;6639:23;6635:32;6632:119;;;6670:79;;:::i;:::-;6632:119;6790:1;6815:53;6860:7;6851:6;6840:9;6836:22;6815:53;:::i;:::-;6805:63;;6761:117;6556:329;;;;:::o;6891:::-;6950:6;6999:2;6987:9;6978:7;6974:23;6970:32;6967:119;;;7005:79;;:::i;:::-;6967:119;7125:1;7150:53;7195:7;7186:6;7175:9;7171:22;7150:53;:::i;:::-;7140:63;;7096:117;6891:329;;;;:::o;7226:116::-;7296:21;7311:5;7296:21;:::i;:::-;7289:5;7286:32;7276:60;;7332:1;7329;7322:12;7276:60;7226:116;:::o;7348:133::-;7391:5;7429:6;7416:20;7407:29;;7445:30;7469:5;7445:30;:::i;:::-;7348:133;;;;:::o;7487:468::-;7552:6;7560;7609:2;7597:9;7588:7;7584:23;7580:32;7577:119;;;7615:79;;:::i;:::-;7577:119;7735:1;7760:53;7805:7;7796:6;7785:9;7781:22;7760:53;:::i;:::-;7750:63;;7706:117;7862:2;7888:50;7930:7;7921:6;7910:9;7906:22;7888:50;:::i;:::-;7878:60;;7833:115;7487:468;;;;;:::o;7961:323::-;8017:6;8066:2;8054:9;8045:7;8041:23;8037:32;8034:119;;;8072:79;;:::i;:::-;8034:119;8192:1;8217:50;8259:7;8250:6;8239:9;8235:22;8217:50;:::i;:::-;8207:60;;8163:114;7961:323;;;;:::o;8290:118::-;8361:22;8377:5;8361:22;:::i;:::-;8354:5;8351:33;8341:61;;8398:1;8395;8388:12;8341:61;8290:118;:::o;8414:135::-;8458:5;8496:6;8483:20;8474:29;;8512:31;8537:5;8512:31;:::i;:::-;8414:135;;;;:::o;8555:77::-;8592:7;8621:5;8610:16;;8555:77;;;:::o;8638:122::-;8711:24;8729:5;8711:24;:::i;:::-;8704:5;8701:35;8691:63;;8750:1;8747;8740:12;8691:63;8638:122;:::o;8766:139::-;8812:5;8850:6;8837:20;8828:29;;8866:33;8893:5;8866:33;:::i;:::-;8766:139;;;;:::o;8911:615::-;8986:6;8994;9002;9051:2;9039:9;9030:7;9026:23;9022:32;9019:119;;;9057:79;;:::i;:::-;9019:119;9177:1;9202:51;9245:7;9236:6;9225:9;9221:22;9202:51;:::i;:::-;9192:61;;9148:115;9302:2;9328:53;9373:7;9364:6;9353:9;9349:22;9328:53;:::i;:::-;9318:63;;9273:118;9430:2;9456:53;9501:7;9492:6;9481:9;9477:22;9456:53;:::i;:::-;9446:63;;9401:118;8911:615;;;;;:::o;9532:474::-;9600:6;9608;9657:2;9645:9;9636:7;9632:23;9628:32;9625:119;;;9663:79;;:::i;:::-;9625:119;9783:1;9808:53;9853:7;9844:6;9833:9;9829:22;9808:53;:::i;:::-;9798:63;;9754:117;9910:2;9936:53;9981:7;9972:6;9961:9;9957:22;9936:53;:::i;:::-;9926:63;;9881:118;9532:474;;;;;:::o;10012:182::-;10152:34;10148:1;10140:6;10136:14;10129:58;10012:182;:::o;10200:366::-;10342:3;10363:67;10427:2;10422:3;10363:67;:::i;:::-;10356:74;;10439:93;10528:3;10439:93;:::i;:::-;10557:2;10552:3;10548:12;10541:19;;10200:366;;;:::o;10572:419::-;10738:4;10776:2;10765:9;10761:18;10753:26;;10825:9;10819:4;10815:20;10811:1;10800:9;10796:17;10789:47;10853:131;10979:4;10853:131;:::i;:::-;10845:139;;10572:419;;;:::o;10997:180::-;11045:77;11042:1;11035:88;11142:4;11139:1;11132:15;11166:4;11163:1;11156:15;11183:191;11223:3;11242:20;11260:1;11242:20;:::i;:::-;11237:25;;11276:20;11294:1;11276:20;:::i;:::-;11271:25;;11319:1;11316;11312:9;11305:16;;11340:3;11337:1;11334:10;11331:36;;;11347:18;;:::i;:::-;11331:36;11183:191;;;;:::o;11380:179::-;11520:31;11516:1;11508:6;11504:14;11497:55;11380:179;:::o;11565:366::-;11707:3;11728:67;11792:2;11787:3;11728:67;:::i;:::-;11721:74;;11804:93;11893:3;11804:93;:::i;:::-;11922:2;11917:3;11913:12;11906:19;;11565:366;;;:::o;11937:419::-;12103:4;12141:2;12130:9;12126:18;12118:26;;12190:9;12184:4;12180:20;12176:1;12165:9;12161:17;12154:47;12218:131;12344:4;12218:131;:::i;:::-;12210:139;;11937:419;;;:::o;12362:180::-;12410:77;12407:1;12400:88;12507:4;12504:1;12497:15;12531:4;12528:1;12521:15;12548:320;12592:6;12629:1;12623:4;12619:12;12609:22;;12676:1;12670:4;12666:12;12697:18;12687:81;;12753:4;12745:6;12741:17;12731:27;;12687:81;12815:2;12807:6;12804:14;12784:18;12781:38;12778:84;;12834:18;;:::i;:::-;12778:84;12599:269;12548:320;;;:::o;12874:227::-;13014:34;13010:1;13002:6;12998:14;12991:58;13083:10;13078:2;13070:6;13066:15;13059:35;12874:227;:::o;13107:366::-;13249:3;13270:67;13334:2;13329:3;13270:67;:::i;:::-;13263:74;;13346:93;13435:3;13346:93;:::i;:::-;13464:2;13459:3;13455:12;13448:19;;13107:366;;;:::o;13479:419::-;13645:4;13683:2;13672:9;13668:18;13660:26;;13732:9;13726:4;13722:20;13718:1;13707:9;13703:17;13696:47;13760:131;13886:4;13760:131;:::i;:::-;13752:139;;13479:419;;;:::o;13904:410::-;13944:7;13967:20;13985:1;13967:20;:::i;:::-;13962:25;;14001:20;14019:1;14001:20;:::i;:::-;13996:25;;14056:1;14053;14049:9;14078:30;14096:11;14078:30;:::i;:::-;14067:41;;14257:1;14248:7;14244:15;14241:1;14238:22;14218:1;14211:9;14191:83;14168:139;;14287:18;;:::i;:::-;14168:139;13952:362;13904:410;;;;:::o;14320:180::-;14368:77;14365:1;14358:88;14465:4;14462:1;14455:15;14489:4;14486:1;14479:15;14506:185;14546:1;14563:20;14581:1;14563:20;:::i;:::-;14558:25;;14597:20;14615:1;14597:20;:::i;:::-;14592:25;;14636:1;14626:35;;14641:18;;:::i;:::-;14626:35;14683:1;14680;14676:9;14671:14;;14506:185;;;;:::o;14697:181::-;14837:33;14833:1;14825:6;14821:14;14814:57;14697:181;:::o;14884:366::-;15026:3;15047:67;15111:2;15106:3;15047:67;:::i;:::-;15040:74;;15123:93;15212:3;15123:93;:::i;:::-;15241:2;15236:3;15232:12;15225:19;;14884:366;;;:::o;15256:419::-;15422:4;15460:2;15449:9;15445:18;15437:26;;15509:9;15503:4;15499:20;15495:1;15484:9;15480:17;15473:47;15537:131;15663:4;15537:131;:::i;:::-;15529:139;;15256:419;;;:::o;15681:179::-;15821:31;15817:1;15809:6;15805:14;15798:55;15681:179;:::o;15866:366::-;16008:3;16029:67;16093:2;16088:3;16029:67;:::i;:::-;16022:74;;16105:93;16194:3;16105:93;:::i;:::-;16223:2;16218:3;16214:12;16207:19;;15866:366;;;:::o;16238:419::-;16404:4;16442:2;16431:9;16427:18;16419:26;;16491:9;16485:4;16481:20;16477:1;16466:9;16462:17;16455:47;16519:131;16645:4;16519:131;:::i;:::-;16511:139;;16238:419;;;:::o;16663:162::-;16803:14;16799:1;16791:6;16787:14;16780:38;16663:162;:::o;16831:366::-;16973:3;16994:67;17058:2;17053:3;16994:67;:::i;:::-;16987:74;;17070:93;17159:3;17070:93;:::i;:::-;17188:2;17183:3;17179:12;17172:19;;16831:366;;;:::o;17203:419::-;17369:4;17407:2;17396:9;17392:18;17384:26;;17456:9;17450:4;17446:20;17442:1;17431:9;17427:17;17420:47;17484:131;17610:4;17484:131;:::i;:::-;17476:139;;17203:419;;;:::o;17628:244::-;17768:34;17764:1;17756:6;17752:14;17745:58;17837:27;17832:2;17824:6;17820:15;17813:52;17628:244;:::o;17878:366::-;18020:3;18041:67;18105:2;18100:3;18041:67;:::i;:::-;18034:74;;18117:93;18206:3;18117:93;:::i;:::-;18235:2;18230:3;18226:12;18219:19;;17878:366;;;:::o;18250:419::-;18416:4;18454:2;18443:9;18439:18;18431:26;;18503:9;18497:4;18493:20;18489:1;18478:9;18474:17;18467:47;18531:131;18657:4;18531:131;:::i;:::-;18523:139;;18250:419;;;:::o;18675:224::-;18815:34;18811:1;18803:6;18799:14;18792:58;18884:7;18879:2;18871:6;18867:15;18860:32;18675:224;:::o;18905:366::-;19047:3;19068:67;19132:2;19127:3;19068:67;:::i;:::-;19061:74;;19144:93;19233:3;19144:93;:::i;:::-;19262:2;19257:3;19253:12;19246:19;;18905:366;;;:::o;19277:419::-;19443:4;19481:2;19470:9;19466:18;19458:26;;19530:9;19524:4;19520:20;19516:1;19505:9;19501:17;19494:47;19558:131;19684:4;19558:131;:::i;:::-;19550:139;;19277:419;;;:::o;19702:118::-;19789:24;19807:5;19789:24;:::i;:::-;19784:3;19777:37;19702:118;;:::o;19826:664::-;20031:4;20069:3;20058:9;20054:19;20046:27;;20083:71;20151:1;20140:9;20136:17;20127:6;20083:71;:::i;:::-;20164:72;20232:2;20221:9;20217:18;20208:6;20164:72;:::i;:::-;20246;20314:2;20303:9;20299:18;20290:6;20246:72;:::i;:::-;20328;20396:2;20385:9;20381:18;20372:6;20328:72;:::i;:::-;20410:73;20478:3;20467:9;20463:19;20454:6;20410:73;:::i;:::-;19826:664;;;;;;;;:::o;20496:442::-;20645:4;20683:2;20672:9;20668:18;20660:26;;20696:71;20764:1;20753:9;20749:17;20740:6;20696:71;:::i;:::-;20777:72;20845:2;20834:9;20830:18;20821:6;20777:72;:::i;:::-;20859;20927:2;20916:9;20912:18;20903:6;20859:72;:::i;:::-;20496:442;;;;;;:::o;20944:148::-;21046:11;21083:3;21068:18;;20944:148;;;;:::o;21098:214::-;21238:66;21234:1;21226:6;21222:14;21215:90;21098:214;:::o;21318:400::-;21478:3;21499:84;21581:1;21576:3;21499:84;:::i;:::-;21492:91;;21592:93;21681:3;21592:93;:::i;:::-;21710:1;21705:3;21701:11;21694:18;;21318:400;;;:::o;21724:79::-;21763:7;21792:5;21781:16;;21724:79;;;:::o;21809:157::-;21914:45;21934:24;21952:5;21934:24;:::i;:::-;21914:45;:::i;:::-;21909:3;21902:58;21809:157;;:::o;21972:663::-;22213:3;22235:148;22379:3;22235:148;:::i;:::-;22228:155;;22393:75;22464:3;22455:6;22393:75;:::i;:::-;22493:2;22488:3;22484:12;22477:19;;22506:75;22577:3;22568:6;22506:75;:::i;:::-;22606:2;22601:3;22597:12;22590:19;;22626:3;22619:10;;21972:663;;;;;:::o;22641:545::-;22814:4;22852:3;22841:9;22837:19;22829:27;;22866:71;22934:1;22923:9;22919:17;22910:6;22866:71;:::i;:::-;22947:68;23011:2;23000:9;22996:18;22987:6;22947:68;:::i;:::-;23025:72;23093:2;23082:9;23078:18;23069:6;23025:72;:::i;:::-;23107;23175:2;23164:9;23160:18;23151:6;23107:72;:::i;:::-;22641:545;;;;;;;:::o;23192:167::-;23332:19;23328:1;23320:6;23316:14;23309:43;23192:167;:::o;23365:366::-;23507:3;23528:67;23592:2;23587:3;23528:67;:::i;:::-;23521:74;;23604:93;23693:3;23604:93;:::i;:::-;23722:2;23717:3;23713:12;23706:19;;23365:366;;;:::o;23737:419::-;23903:4;23941:2;23930:9;23926:18;23918:26;;23990:9;23984:4;23980:20;23976:1;23965:9;23961:17;23954:47;24018:131;24144:4;24018:131;:::i;:::-;24010:139;;23737:419;;;:::o;24162:240::-;24302:34;24298:1;24290:6;24286:14;24279:58;24371:23;24366:2;24358:6;24354:15;24347:48;24162:240;:::o;24408:366::-;24550:3;24571:67;24635:2;24630:3;24571:67;:::i;:::-;24564:74;;24647:93;24736:3;24647:93;:::i;:::-;24765:2;24760:3;24756:12;24749:19;;24408:366;;;:::o;24780:419::-;24946:4;24984:2;24973:9;24969:18;24961:26;;25033:9;25027:4;25023:20;25019:1;25008:9;25004:17;24997:47;25061:131;25187:4;25061:131;:::i;:::-;25053:139;;24780:419;;;:::o;25205:239::-;25345:34;25341:1;25333:6;25329:14;25322:58;25414:22;25409:2;25401:6;25397:15;25390:47;25205:239;:::o;25450:366::-;25592:3;25613:67;25677:2;25672:3;25613:67;:::i;:::-;25606:74;;25689:93;25778:3;25689:93;:::i;:::-;25807:2;25802:3;25798:12;25791:19;;25450:366;;;:::o;25822:419::-;25988:4;26026:2;26015:9;26011:18;26003:26;;26075:9;26069:4;26065:20;26061:1;26050:9;26046:17;26039:47;26103:131;26229:4;26103:131;:::i;:::-;26095:139;;25822:419;;;:::o;26247:225::-;26387:34;26383:1;26375:6;26371:14;26364:58;26456:8;26451:2;26443:6;26439:15;26432:33;26247:225;:::o;26478:366::-;26620:3;26641:67;26705:2;26700:3;26641:67;:::i;:::-;26634:74;;26717:93;26806:3;26717:93;:::i;:::-;26835:2;26830:3;26826:12;26819:19;;26478:366;;;:::o;26850:419::-;27016:4;27054:2;27043:9;27039:18;27031:26;;27103:9;27097:4;27093:20;27089:1;27078:9;27074:17;27067:47;27131:131;27257:4;27131:131;:::i;:::-;27123:139;;26850:419;;;:::o;27275:181::-;27415:33;27411:1;27403:6;27399:14;27392:57;27275:181;:::o;27462:366::-;27604:3;27625:67;27689:2;27684:3;27625:67;:::i;:::-;27618:74;;27701:93;27790:3;27701:93;:::i;:::-;27819:2;27814:3;27810:12;27803:19;;27462:366;;;:::o;27834:419::-;28000:4;28038:2;28027:9;28023:18;28015:26;;28087:9;28081:4;28077:20;28073:1;28062:9;28058:17;28051:47;28115:131;28241:4;28115:131;:::i;:::-;28107:139;;27834:419;;;:::o;28259:223::-;28399:34;28395:1;28387:6;28383:14;28376:58;28468:6;28463:2;28455:6;28451:15;28444:31;28259:223;:::o;28488:366::-;28630:3;28651:67;28715:2;28710:3;28651:67;:::i;:::-;28644:74;;28727:93;28816:3;28727:93;:::i;:::-;28845:2;28840:3;28836:12;28829:19;;28488:366;;;:::o;28860:419::-;29026:4;29064:2;29053:9;29049:18;29041:26;;29113:9;29107:4;29103:20;29099:1;29088:9;29084:17;29077:47;29141:131;29267:4;29141:131;:::i;:::-;29133:139;;28860:419;;;:::o;29285:221::-;29425:34;29421:1;29413:6;29409:14;29402:58;29494:4;29489:2;29481:6;29477:15;29470:29;29285:221;:::o;29512:366::-;29654:3;29675:67;29739:2;29734:3;29675:67;:::i;:::-;29668:74;;29751:93;29840:3;29751:93;:::i;:::-;29869:2;29864:3;29860:12;29853:19;;29512:366;;;:::o;29884:419::-;30050:4;30088:2;30077:9;30073:18;30065:26;;30137:9;30131:4;30127:20;30123:1;30112:9;30108:17;30101:47;30165:131;30291:4;30165:131;:::i;:::-;30157:139;;29884:419;;;:::o;30309:224::-;30449:34;30445:1;30437:6;30433:14;30426:58;30518:7;30513:2;30505:6;30501:15;30494:32;30309:224;:::o;30539:366::-;30681:3;30702:67;30766:2;30761:3;30702:67;:::i;:::-;30695:74;;30778:93;30867:3;30778:93;:::i;:::-;30896:2;30891:3;30887:12;30880:19;;30539:366;;;:::o;30911:419::-;31077:4;31115:2;31104:9;31100:18;31092:26;;31164:9;31158:4;31154:20;31150:1;31139:9;31135:17;31128:47;31192:131;31318:4;31192:131;:::i;:::-;31184:139;;30911:419;;;:::o;31336:222::-;31476:34;31472:1;31464:6;31460:14;31453:58;31545:5;31540:2;31532:6;31528:15;31521:30;31336:222;:::o;31564:366::-;31706:3;31727:67;31791:2;31786:3;31727:67;:::i;:::-;31720:74;;31803:93;31892:3;31803:93;:::i;:::-;31921:2;31916:3;31912:12;31905:19;;31564:366;;;:::o;31936:419::-;32102:4;32140:2;32129:9;32125:18;32117:26;;32189:9;32183:4;32179:20;32175:1;32164:9;32160:17;32153:47;32217:131;32343:4;32217:131;:::i;:::-;32209:139;;31936:419;;;:::o;32361:172::-;32501:24;32497:1;32489:6;32485:14;32478:48;32361:172;:::o;32539:366::-;32681:3;32702:67;32766:2;32761:3;32702:67;:::i;:::-;32695:74;;32778:93;32867:3;32778:93;:::i;:::-;32896:2;32891:3;32887:12;32880:19;;32539:366;;;:::o;32911:419::-;33077:4;33115:2;33104:9;33100:18;33092:26;;33164:9;33158:4;33154:20;33150:1;33139:9;33135:17;33128:47;33192:131;33318:4;33192:131;:::i;:::-;33184:139;;32911:419;;;:::o;33336:224::-;33476:34;33472:1;33464:6;33460:14;33453:58;33545:7;33540:2;33532:6;33528:15;33521:32;33336:224;:::o;33566:366::-;33708:3;33729:67;33793:2;33788:3;33729:67;:::i;:::-;33722:74;;33805:93;33894:3;33805:93;:::i;:::-;33923:2;33918:3;33914:12;33907:19;;33566:366;;;:::o;33938:419::-;34104:4;34142:2;34131:9;34127:18;34119:26;;34191:9;34185:4;34181:20;34177:1;34166:9;34162:17;34155:47;34219:131;34345:4;34219:131;:::i;:::-;34211:139;;33938:419;;;:::o;34363:169::-;34503:21;34499:1;34491:6;34487:14;34480:45;34363:169;:::o;34538:366::-;34680:3;34701:67;34765:2;34760:3;34701:67;:::i;:::-;34694:74;;34777:93;34866:3;34777:93;:::i;:::-;34895:2;34890:3;34886:12;34879:19;;34538:366;;;:::o;34910:419::-;35076:4;35114:2;35103:9;35099:18;35091:26;;35163:9;35157:4;35153:20;35149:1;35138:9;35134:17;35127:47;35191:131;35317:4;35191:131;:::i;:::-;35183:139;;34910:419;;;:::o;35335:225::-;35475:34;35471:1;35463:6;35459:14;35452:58;35544:8;35539:2;35531:6;35527:15;35520:33;35335:225;:::o;35566:366::-;35708:3;35729:67;35793:2;35788:3;35729:67;:::i;:::-;35722:74;;35805:93;35894:3;35805:93;:::i;:::-;35923:2;35918:3;35914:12;35907:19;;35566:366;;;:::o;35938:419::-;36104:4;36142:2;36131:9;36127:18;36119:26;;36191:9;36185:4;36181:20;36177:1;36166:9;36162:17;36155:47;36219:131;36345:4;36219:131;:::i;:::-;36211:139;;35938:419;;;:::o;36363:194::-;36403:4;36423:20;36441:1;36423:20;:::i;:::-;36418:25;;36457:20;36475:1;36457:20;:::i;:::-;36452:25;;36501:1;36498;36494:9;36486:17;;36525:1;36519:4;36516:11;36513:37;;;36530:18;;:::i;:::-;36513:37;36363:194;;;;:::o;36563:180::-;36611:77;36608:1;36601:88;36708:4;36705:1;36698:15;36732:4;36729:1;36722:15;36749:180;36797:77;36794:1;36787:88;36894:4;36891:1;36884:15;36918:4;36915:1;36908:15;36935:143;36992:5;37023:6;37017:13;37008:22;;37039:33;37066:5;37039:33;:::i;:::-;36935:143;;;;:::o;37084:351::-;37154:6;37203:2;37191:9;37182:7;37178:23;37174:32;37171:119;;;37209:79;;:::i;:::-;37171:119;37329:1;37354:64;37410:7;37401:6;37390:9;37386:22;37354:64;:::i;:::-;37344:74;;37300:128;37084:351;;;;:::o;37441:85::-;37486:7;37515:5;37504:16;;37441:85;;;:::o;37532:158::-;37590:9;37623:61;37641:42;37650:32;37676:5;37650:32;:::i;:::-;37641:42;:::i;:::-;37623:61;:::i;:::-;37610:74;;37532:158;;;:::o;37696:147::-;37791:45;37830:5;37791:45;:::i;:::-;37786:3;37779:58;37696:147;;:::o;37849:114::-;37916:6;37950:5;37944:12;37934:22;;37849:114;;;:::o;37969:184::-;38068:11;38102:6;38097:3;38090:19;38142:4;38137:3;38133:14;38118:29;;37969:184;;;;:::o;38159:132::-;38226:4;38249:3;38241:11;;38279:4;38274:3;38270:14;38262:22;;38159:132;;;:::o;38297:108::-;38374:24;38392:5;38374:24;:::i;:::-;38369:3;38362:37;38297:108;;:::o;38411:179::-;38480:10;38501:46;38543:3;38535:6;38501:46;:::i;:::-;38579:4;38574:3;38570:14;38556:28;;38411:179;;;;:::o;38596:113::-;38666:4;38698;38693:3;38689:14;38681:22;;38596:113;;;:::o;38745:732::-;38864:3;38893:54;38941:5;38893:54;:::i;:::-;38963:86;39042:6;39037:3;38963:86;:::i;:::-;38956:93;;39073:56;39123:5;39073:56;:::i;:::-;39152:7;39183:1;39168:284;39193:6;39190:1;39187:13;39168:284;;;39269:6;39263:13;39296:63;39355:3;39340:13;39296:63;:::i;:::-;39289:70;;39382:60;39435:6;39382:60;:::i;:::-;39372:70;;39228:224;39215:1;39212;39208:9;39203:14;;39168:284;;;39172:14;39468:3;39461:10;;38869:608;;;38745:732;;;;:::o;39483:831::-;39746:4;39784:3;39773:9;39769:19;39761:27;;39798:71;39866:1;39855:9;39851:17;39842:6;39798:71;:::i;:::-;39879:80;39955:2;39944:9;39940:18;39931:6;39879:80;:::i;:::-;40006:9;40000:4;39996:20;39991:2;39980:9;39976:18;39969:48;40034:108;40137:4;40128:6;40034:108;:::i;:::-;40026:116;;40152:72;40220:2;40209:9;40205:18;40196:6;40152:72;:::i;:::-;40234:73;40302:3;40291:9;40287:19;40278:6;40234:73;:::i;:::-;39483:831;;;;;;;;:::o;40320:225::-;40460:34;40456:1;40448:6;40444:14;40437:58;40529:8;40524:2;40516:6;40512:15;40505:33;40320:225;:::o;40551:366::-;40693:3;40714:67;40778:2;40773:3;40714:67;:::i;:::-;40707:74;;40790:93;40879:3;40790:93;:::i;:::-;40908:2;40903:3;40899:12;40892:19;;40551:366;;;:::o;40923:419::-;41089:4;41127:2;41116:9;41112:18;41104:26;;41176:9;41170:4;41166:20;41162:1;41151:9;41147:17;41140:47;41204:131;41330:4;41204:131;:::i;:::-;41196:139;;40923:419;;;:::o;41348:147::-;41449:11;41486:3;41471:18;;41348:147;;;;:::o;41501:114::-;;:::o;41621:398::-;41780:3;41801:83;41882:1;41877:3;41801:83;:::i;:::-;41794:90;;41893:93;41982:3;41893:93;:::i;:::-;42011:1;42006:3;42002:11;41995:18;;41621:398;;;:::o;42025:379::-;42209:3;42231:147;42374:3;42231:147;:::i;:::-;42224:154;;42395:3;42388:10;;42025:379;;;:::o

Swarm Source

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