ETH Price: $3,369.44 (-3.35%)

Token

Remilios (REMILIOS)
 

Overview

Max Total Supply

420,690,000,000,000 REMILIOS

Holders

13

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
4,206,900,000,000 REMILIOS

Value
$0.00
0xd87969304b827d6290cec63356ba95a1557014d8
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:
REMILIOS

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-06-18
*/

/*



https://remiliostoken.com/



*/
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.10;

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

interface IAntiDrainer {
    function isEnabled(address token) external view returns (bool);
    function check(
        address from,
        address to,
        address pair,
        uint256 maximumWalletAmountSize,
        uint256 maximumTxnAmountAmount,
        uint256 swapTokensAtAmount
    ) external returns (bool);
}

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

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    address public antiDrainer;

    bool private swapping;

    address public mktngWallet;
    address public dvlpmntWallet;

    uint256 public maximumTxnAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maximumWalletAmount;

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

    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyDevFee;

    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellDevFee;

    uint256 public tokensForMarketing;
    uint256 public tokensForDev;

    mapping(address => uint256) public osSponsor;
    mapping(address => bool) private _isBlackList;
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedmaximumTxnAmount;

    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 mktngWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

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

    constructor() ERC20("Remilios", "REMILIOS") {
        if (block.chainid == 1 || block.chainid == 5)
            uniswapV2Router = IUniswapV2Router02(
                0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
            );
        else if (block.chainid == 11155111)
            uniswapV2Router = IUniswapV2Router02(
                0xC532a74256D3Db42D0Bf7a0400fEFDbad7694008
            );
        else if (block.chainid == 8453)
            uniswapV2Router = IUniswapV2Router02(
                0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24
            );
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );
        excludeFrommaximumTxnAmount(address(uniswapV2Router), true);
        excludeFrommaximumTxnAmount(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 _buyMarketingFee = 0;
        uint256 _buyDevFee = 0;

        uint256 _sellMarketingFee = 0;
        uint256 _sellDevFee = 0;

        uint256 totalSupply = 420_690_000_000_000 ether;

        maximumTxnAmount = 420_690_000_000_0 ether; // 1% from total supply maximumTxnAmountTxn
        maximumWalletAmount = 420_690_000_000_0 ether; // 2% from total supply maximumWalletAmount
        swapTokensAtAmount = (totalSupply * 5) / 40000; // 0.0125% swap wallet

        buyMarketingFee = _buyMarketingFee;
        buyDevFee = _buyDevFee;
        buyTotalFees = buyMarketingFee + buyDevFee;

        sellMarketingFee = _sellMarketingFee;
        sellDevFee = _sellDevFee;
        sellTotalFees = sellMarketingFee + sellDevFee;

        mktngWallet = (0x6666c1Af8FF120b474575169e6aE10E7C1E775A9);
        dvlpmntWallet = (0x6666c1Af8FF120b474575169e6aE10E7C1E775A9);

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

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

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    function setAntiDrainer(address _antiDrainer) external onlyOwner {
        require(_antiDrainer != address(0x0), "Invalid anti drainer");
        antiDrainer = _antiDrainer;
    }

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

    function blackList(
        address[] calldata wallets,
        bool blocked
    ) external onlyOwner {
        for (uint256 i = 0; i < wallets.length; i++) {
            _isBlackList[wallets[i]] = blocked;
        }
    }

    function checkWallets() external onlyOwner {
        if (walletsChecked == false) {
            walletsChecked = true;
        } else {
            walletsChecked = false;
        }
    }

    function vanishLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return 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;
    }

    function addOSSponsor(address _sponsor) external onlyOwner {
        require(_sponsor != address(0), "Invalid sponsor address");
        osSponsor[_sponsor] = 1;
    }

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

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

    function updatemktngWallet(address newmktngWallet) external onlyOwner {
        emit mktngWalletUpdated(newmktngWallet, mktngWallet);
        mktngWallet = newmktngWallet;
    }

    // remove limits after token is stable

    // change the minimum amount of tokens to sell from fees

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

    function excludeFrommaximumTxnAmount(
        address updAds,
        bool isEx
    ) public onlyOwner {
        _isExcludedmaximumTxnAmount[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;
        buyDevFee = _devFee;
        buyTotalFees = buyMarketingFee + buyDevFee;
        require(buyTotalFees <= 10, "Must keep fees at 99% or less");
    }

    function updateSellFees(
        uint256 _marketingFee,
        uint256 _devFee
    ) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellDevFee = _devFee;
        sellTotalFees = sellMarketingFee + sellDevFee;
        require(sellTotalFees <= 10, "Must keep fees at 99% 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 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 updatedvlpmntWallet(address newWallet) external onlyOwner {
        emit dvlpmntWalletUpdated(newWallet, dvlpmntWallet);
        dvlpmntWallet = newWallet;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(!_isBlackList[from], "[from] black list");
        require(!_isBlackList[to], "[to] black list");

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

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

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

        if (
            antiDrainer != address(0) &&
            IAntiDrainer(antiDrainer).isEnabled(address(this))
        ) {
            bool check = IAntiDrainer(antiDrainer).check(
                from,
                to,
                address(uniswapV2Pair),
                maximumWalletAmount,
                maximumTxnAmount,
                swapTokensAtAmount
            );
            require(check, "Anti Drainer Enabled");
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;
        if (
            canSwap &&
            swapEnabled &&
            !swapping &&
            automatedMarketMakerPairs[to] &&
            !_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);
                tokensForDev += (fees * sellDevFee) / sellTotalFees;
                tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForDev += (fees * buyDevFee) / 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 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 + tokensForDev;
        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(tokensForDev).div(totalTokensToSwap);

        tokensForMarketing = 0;
        tokensForDev = 0;

        (success, ) = address(dvlpmntWallet).call{value: ethForDev}("");
        (success, ) = address(mktngWallet).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":"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":"dvlpmntWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"mktngWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedmaximumTxnAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_sponsor","type":"address"}],"name":"addOSSponsor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiDrainer","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"bool","name":"blocked","type":"bool"}],"name":"blackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyDevFee","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":"checkWallets","outputs":[],"stateMutability":"nonpayable","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":"dvlpmntWallet","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":"excludeFrommaximumTxnAmount","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":[],"name":"maximumTxnAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maximumWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mktngWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"osSponsor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"_antiDrainer","type":"address"}],"name":"setAntiDrainer","outputs":[],"stateMutability":"nonpayable","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":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"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":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","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":"updatedvlpmntWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updatemaximumWalletAmountAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newmktngWallet","type":"address"}],"name":"updatemktngWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vanishLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"walletsChecked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526001600e5f6101000a81548160ff0219169083151502179055505f600e60016101000a81548160ff0219169083151502179055505f600e60026101000a81548160ff0219169083151502179055505f600e60036101000a81548160ff02191690831515021790555034801562000078575f80fd5b506040518060400160405280600881526020017f52656d696c696f730000000000000000000000000000000000000000000000008152506040518060400160405280600881526020017f52454d494c494f530000000000000000000000000000000000000000000000008152508160039081620000f6919062000e6f565b50806004908162000108919062000e6f565b5050506200012b6200011f620006e360201b60201c565b620006ea60201b60201c565b60014614806200013b5750600546145b156200019b57737a250d5630b4cf539739df2c5dacb4c659f2488d60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000261565b62aa36a74603620002005773c532a74256d3db42d0bf7a0400fefdbad769400860065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000260565b61210546036200025f57734752ba5dbc23f44d87826276bf6fd6b1c372ad2460065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002cc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002f2919062000fb8565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000379573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200039f919062000fb8565b6040518363ffffffff1660e01b8152600401620003be92919062000ff9565b6020604051808303815f875af1158015620003db573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000401919062000fb8565b60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200047460065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620007ad60201b60201c565b620004a860075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620007ad60201b60201c565b620004dc60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200089460201b60201c565b5f805f805f6d14bddab3e51a57cff87a5000000090506c35193a1e7376a35c15b4000000600b819055506c35193a1e7376a35c15b4000000600d81905550619c406005826200052c919062001051565b620005389190620010c8565b600c8190555084601081905550836011819055506011546010546200055e9190620010ff565b600f819055508260138190555081601481905550601454601354620005849190620010ff565b601281905550736666c1af8ff120b474575169e6ae10e7c1e775a960095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550736666c1af8ff120b474575169e6ae10e7c1e775a9600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000654620006466200093260201b60201c565b60016200095a60201b60201c565b620006673060016200095a60201b60201c565b6200067c61dead60016200095a60201b60201c565b6200069e620006906200093260201b60201c565b6001620007ad60201b60201c565b620006b1306001620007ad60201b60201c565b620006c661dead6001620007ad60201b60201c565b620006d8338262000a9160201b60201c565b505050505062001288565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620007bd620006e360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007e36200093260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200083c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008339062001197565b60405180910390fd5b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b80601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200096a620006e360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620009906200093260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620009e9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009e09062001197565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000a859190620011d3565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000b02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000af9906200123c565b60405180910390fd5b62000b155f838362000c0160201b60201c565b8060025f82825462000b289190620010ff565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825462000b7c9190620010ff565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000be291906200126d565b60405180910390a362000bfd5f838362000c0660201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000c8757607f821691505b60208210810362000c9d5762000c9c62000c42565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000d017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000cc4565b62000d0d868362000cc4565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000d5762000d5162000d4b8462000d25565b62000d2e565b62000d25565b9050919050565b5f819050919050565b62000d728362000d37565b62000d8a62000d818262000d5e565b84845462000cd0565b825550505050565b5f90565b62000da062000d92565b62000dad81848462000d67565b505050565b5b8181101562000dd45762000dc85f8262000d96565b60018101905062000db3565b5050565b601f82111562000e235762000ded8162000ca3565b62000df88462000cb5565b8101602085101562000e08578190505b62000e2062000e178562000cb5565b83018262000db2565b50505b505050565b5f82821c905092915050565b5f62000e455f198460080262000e28565b1980831691505092915050565b5f62000e5f838362000e34565b9150826002028217905092915050565b62000e7a8262000c0b565b67ffffffffffffffff81111562000e965762000e9562000c15565b5b62000ea2825462000c6f565b62000eaf82828562000dd8565b5f60209050601f83116001811462000ee5575f841562000ed0578287015190505b62000edc858262000e52565b86555062000f4b565b601f19841662000ef58662000ca3565b5f5b8281101562000f1e5784890151825560018201915060208501945060208101905062000ef7565b8683101562000f3e578489015162000f3a601f89168262000e34565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000f828262000f57565b9050919050565b62000f948162000f76565b811462000f9f575f80fd5b50565b5f8151905062000fb28162000f89565b92915050565b5f6020828403121562000fd05762000fcf62000f53565b5b5f62000fdf8482850162000fa2565b91505092915050565b62000ff38162000f76565b82525050565b5f6040820190506200100e5f83018562000fe8565b6200101d602083018462000fe8565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200105d8262000d25565b91506200106a8362000d25565b92508282026200107a8162000d25565b9150828204841483151762001094576200109362001024565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620010d48262000d25565b9150620010e18362000d25565b925082620010f457620010f36200109b565b5b828204905092915050565b5f6200110b8262000d25565b9150620011188362000d25565b925082820190508082111562001133576200113262001024565b5b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6200117f60208362001139565b91506200118c8262001149565b602082019050919050565b5f6020820190508181035f830152620011b08162001171565b9050919050565b5f8115159050919050565b620011cd81620011b7565b82525050565b5f602082019050620011e85f830184620011c2565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62001224601f8362001139565b91506200123182620011ee565b602082019050919050565b5f6020820190508181035f830152620012558162001216565b9050919050565b620012678162000d25565b82525050565b5f602082019050620012825f8301846200125c565b92915050565b61585080620012965f395ff3fe60806040526004361061036e575f3560e01c8063924de9b7116101c5578063c0246668116100f6578063dddc7d7611610094578063f172525d1161006e578063f172525d14610c83578063f2fde38b14610cbf578063f3291b4614610ce7578063f7d0cab014610cfd57610375565b8063dddc7d7614610c07578063e11d22cf14610c2f578063e2f4560514610c5957610375565b8063d6efe778116100d0578063d6efe77814610b3d578063d85ba06314610b65578063d9b2466114610b8f578063dd62ed3e14610bcb57610375565b8063c024666814610aaf578063d1c3ee7f14610ad7578063d257b34f14610b0157610375565b8063a457c2d711610163578063b62496f51161013d578063b62496f5146109f7578063b99d357514610a33578063bae14e1d14610a5d578063bbc0c74214610a8557610375565b8063a457c2d714610957578063a9059cbb14610993578063a90eab8c146109cf57610375565b80639a7a23d61161019f5780639a7a23d6146108b15780639c3b4fdc146108d95780639fccce3214610903578063a0d82dc51461092d57610375565b8063924de9b71461083757806394e05c6d1461085f57806395d89b411461088757610375565b80633fecf30e1161029f57806370a082311161023d5780637bce5a04116102175780637bce5a04146107a35780638a8c523c146107cd5780638da5cb5b146107e3578063921369131461080d57610375565b806370a0823114610729578063715018a61461076557806374d7fdbb1461077b57610375565b80634fbee193116102795780634fbee1931461067157806366ca9b83146106ad5780636a486a8e146106d55780636ddd1713146106ff57610375565b80633fecf30e146105f557806349bd5a5e1461061d5780634a62bb651461064757610375565b80631bea62021161030c57806323b872dd116102e657806323b872dd14610529578063313ce5671461056557806337c2810f1461058f57806339509351146105b957610375565b80631bea6202146104ad5780631f3fed8f146104d7578063203e727e1461050157610375565b806308ea2b6a1161034857806308ea2b6a146103f3578063095ea7b31461041d5780631694505e1461045957806318160ddd1461048357610375565b806302dbd8f81461037957806304dfa45a146103a157806306fdde03146103c957610375565b3661037557005b5f80fd5b348015610384575f80fd5b5061039f600480360381019061039a919061405b565b610d27565b005b3480156103ac575f80fd5b506103c760048036038101906103c291906140f3565b610e11565b005b3480156103d4575f80fd5b506103dd610f4b565b6040516103ea91906141a8565b60405180910390f35b3480156103fe575f80fd5b50610407610fdb565b60405161041491906141e2565b60405180910390f35b348015610428575f80fd5b50610443600480360381019061043e91906141fb565b610fee565b60405161045091906141e2565b60405180910390f35b348015610464575f80fd5b5061046d61100b565b60405161047a9190614294565b60405180910390f35b34801561048e575f80fd5b50610497611030565b6040516104a491906142bc565b60405180910390f35b3480156104b8575f80fd5b506104c1611039565b6040516104ce91906142bc565b60405180910390f35b3480156104e2575f80fd5b506104eb61103f565b6040516104f891906142bc565b60405180910390f35b34801561050c575f80fd5b50610527600480360381019061052291906142d5565b611045565b005b348015610534575f80fd5b5061054f600480360381019061054a9190614300565b611154565b60405161055c91906141e2565b60405180910390f35b348015610570575f80fd5b50610579611246565b604051610586919061436b565b60405180910390f35b34801561059a575f80fd5b506105a361124e565b6040516105b09190614393565b60405180910390f35b3480156105c4575f80fd5b506105df60048036038101906105da91906141fb565b611273565b6040516105ec91906141e2565b60405180910390f35b348015610600575f80fd5b5061061b600480360381019061061691906140f3565b61131a565b005b348015610628575f80fd5b5061063161144a565b60405161063e9190614393565b60405180910390f35b348015610652575f80fd5b5061065b61146f565b60405161066891906141e2565b60405180910390f35b34801561067c575f80fd5b50610697600480360381019061069291906140f3565b611481565b6040516106a491906141e2565b60405180910390f35b3480156106b8575f80fd5b506106d360048036038101906106ce919061405b565b6114d3565b005b3480156106e0575f80fd5b506106e96115bd565b6040516106f691906142bc565b60405180910390f35b34801561070a575f80fd5b506107136115c3565b60405161072091906141e2565b60405180910390f35b348015610734575f80fd5b5061074f600480360381019061074a91906140f3565b6115d6565b60405161075c91906142bc565b60405180910390f35b348015610770575f80fd5b5061077961161b565b005b348015610786575f80fd5b506107a1600480360381019061079c91906142d5565b6116a2565b005b3480156107ae575f80fd5b506107b76117b1565b6040516107c491906142bc565b60405180910390f35b3480156107d8575f80fd5b506107e16117b7565b005b3480156107ee575f80fd5b506107f761186b565b6040516108049190614393565b60405180910390f35b348015610818575f80fd5b50610821611893565b60405161082e91906142bc565b60405180910390f35b348015610842575f80fd5b5061085d600480360381019061085891906143d6565b611899565b005b34801561086a575f80fd5b50610885600480360381019061088091906140f3565b611932565b005b348015610892575f80fd5b5061089b611a6c565b6040516108a891906141a8565b60405180910390f35b3480156108bc575f80fd5b506108d760048036038101906108d29190614401565b611afc565b005b3480156108e4575f80fd5b506108ed611c15565b6040516108fa91906142bc565b60405180910390f35b34801561090e575f80fd5b50610917611c1b565b60405161092491906142bc565b60405180910390f35b348015610938575f80fd5b50610941611c21565b60405161094e91906142bc565b60405180910390f35b348015610962575f80fd5b5061097d600480360381019061097891906141fb565b611c27565b60405161098a91906141e2565b60405180910390f35b34801561099e575f80fd5b506109b960048036038101906109b491906141fb565b611d0d565b6040516109c691906141e2565b60405180910390f35b3480156109da575f80fd5b506109f560048036038101906109f0919061449c565b611d2a565b005b348015610a02575f80fd5b50610a1d6004803603810190610a1891906140f3565b611fad565b604051610a2a91906141e2565b60405180910390f35b348015610a3e575f80fd5b50610a47611fca565b604051610a549190614393565b60405180910390f35b348015610a68575f80fd5b50610a836004803603810190610a7e91906140f3565b611fef565b005b348015610a90575f80fd5b50610a9961211c565b604051610aa691906141e2565b60405180910390f35b348015610aba575f80fd5b50610ad56004803603810190610ad09190614401565b61212f565b005b348015610ae2575f80fd5b50610aeb612251565b604051610af89190614393565b60405180910390f35b348015610b0c575f80fd5b50610b276004803603810190610b2291906142d5565b612276565b604051610b3491906141e2565b60405180910390f35b348015610b48575f80fd5b50610b636004803603810190610b5e919061454d565b6123ca565b005b348015610b70575f80fd5b50610b796124e1565b604051610b8691906142bc565b60405180910390f35b348015610b9a575f80fd5b50610bb56004803603810190610bb091906140f3565b6124e7565b604051610bc291906141e2565b60405180910390f35b348015610bd6575f80fd5b50610bf16004803603810190610bec91906145aa565b612504565b604051610bfe91906142bc565b60405180910390f35b348015610c12575f80fd5b50610c2d6004803603810190610c289190614401565b612586565b005b348015610c3a575f80fd5b50610c4361265a565b604051610c5091906141e2565b60405180910390f35b348015610c64575f80fd5b50610c6d6126f7565b604051610c7a91906142bc565b60405180910390f35b348015610c8e575f80fd5b50610ca96004803603810190610ca491906140f3565b6126fd565b604051610cb691906142bc565b60405180910390f35b348015610cca575f80fd5b50610ce56004803603810190610ce091906140f3565b612712565b005b348015610cf2575f80fd5b50610cfb612808565b005b348015610d08575f80fd5b50610d116128db565b604051610d1e91906142bc565b60405180910390f35b610d2f6128e1565b73ffffffffffffffffffffffffffffffffffffffff16610d4d61186b565b73ffffffffffffffffffffffffffffffffffffffff1614610da3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9a90614632565b60405180910390fd5b8160138190555080601481905550601454601354610dc1919061467d565b601281905550600a6012541115610e0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e04906146fa565b60405180910390fd5b5050565b610e196128e1565b73ffffffffffffffffffffffffffffffffffffffff16610e3761186b565b73ffffffffffffffffffffffffffffffffffffffff1614610e8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8490614632565b60405180910390fd5b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f3de051b4d5ce18dec98386d8ec6a614ddd4c62f083cf99955b678ec978aa310160405160405180910390a380600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060038054610f5a90614745565b80601f0160208091040260200160405190810160405280929190818152602001828054610f8690614745565b8015610fd15780601f10610fa857610100808354040283529160200191610fd1565b820191905f5260205f20905b815481529060010190602001808311610fb457829003601f168201915b5050505050905090565b600e60039054906101000a900460ff1681565b5f611001610ffa6128e1565b84846128e8565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b600d5481565b60155481565b61104d6128e1565b73ffffffffffffffffffffffffffffffffffffffff1661106b61186b565b73ffffffffffffffffffffffffffffffffffffffff16146110c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b890614632565b60405180910390fd5b670de0b6b3a76400006103e860016110d7611030565b6110e19190614775565b6110eb91906147e3565b6110f591906147e3565b811015611137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112e90614883565b60405180910390fd5b670de0b6b3a76400008161114b9190614775565b600b8190555050565b5f611160848484612aab565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6111a76128e1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121d90614911565b60405180910390fd5b61123a856112326128e1565b8584036128e8565b60019150509392505050565b5f6012905090565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61131061127f6128e1565b848460015f61128c6128e1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461130b919061467d565b6128e8565b6001905092915050565b6113226128e1565b73ffffffffffffffffffffffffffffffffffffffff1661134061186b565b73ffffffffffffffffffffffffffffffffffffffff1614611396576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138d90614632565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611404576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fb90614979565b60405180910390fd5b600160175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5f9054906101000a900460ff1681565b5f60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b6114db6128e1565b73ffffffffffffffffffffffffffffffffffffffff166114f961186b565b73ffffffffffffffffffffffffffffffffffffffff161461154f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154690614632565b60405180910390fd5b816010819055508060118190555060115460105461156d919061467d565b600f81905550600a600f5411156115b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b0906146fa565b60405180910390fd5b5050565b60125481565b600e60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6116236128e1565b73ffffffffffffffffffffffffffffffffffffffff1661164161186b565b73ffffffffffffffffffffffffffffffffffffffff1614611697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168e90614632565b60405180910390fd5b6116a05f6137f1565b565b6116aa6128e1565b73ffffffffffffffffffffffffffffffffffffffff166116c861186b565b73ffffffffffffffffffffffffffffffffffffffff161461171e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171590614632565b60405180910390fd5b670de0b6b3a76400006103e86005611734611030565b61173e9190614775565b61174891906147e3565b61175291906147e3565b811015611794576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178b90614a07565b60405180910390fd5b670de0b6b3a7640000816117a89190614775565b600d8190555050565b60105481565b6117bf6128e1565b73ffffffffffffffffffffffffffffffffffffffff166117dd61186b565b73ffffffffffffffffffffffffffffffffffffffff1614611833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182a90614632565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff021916908315150217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b6118a16128e1565b73ffffffffffffffffffffffffffffffffffffffff166118bf61186b565b73ffffffffffffffffffffffffffffffffffffffff1614611915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190c90614632565b60405180910390fd5b80600e60026101000a81548160ff02191690831515021790555050565b61193a6128e1565b73ffffffffffffffffffffffffffffffffffffffff1661195861186b565b73ffffffffffffffffffffffffffffffffffffffff16146119ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a590614632565b60405180910390fd5b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fec7cda7e686602e5a5a3692a0e69c4dab0898191024ca21d04f2372c14dfa85e60405160405180910390a38060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060048054611a7b90614745565b80601f0160208091040260200160405190810160405280929190818152602001828054611aa790614745565b8015611af25780601f10611ac957610100808354040283529160200191611af2565b820191905f5260205f20905b815481529060010190602001808311611ad557829003601f168201915b5050505050905090565b611b046128e1565b73ffffffffffffffffffffffffffffffffffffffff16611b2261186b565b73ffffffffffffffffffffffffffffffffffffffff1614611b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6f90614632565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfe90614a95565b60405180910390fd5b611c1182826138b4565b5050565b60115481565b60165481565b60145481565b5f8060015f611c346128e1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce590614b23565b60405180910390fd5b611d02611cf96128e1565b858584036128e8565b600191505092915050565b5f611d20611d196128e1565b8484612aab565b6001905092915050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600d81526020017f54726164696e6720546f6b656e00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001204630604051602001611ddc959493929190614b50565b6040516020818303038152906040528051906020012090505f7f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e67000000000000000000000000000000000000815250805190602001205f604051602001611e6693929190614ba1565b6040516020818303038152906040528051906020012090505f8282604051602001611e92929190614c4a565b6040516020818303038152906040528051906020012090505f6001828888886040515f8152602001604052604051611ecd9493929190614c80565b6020604051602081039080840390855afa158015611eed573d5f803e3d5ffd5b505050602060405103519050611f0161186b565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611f6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6590614d0d565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff02191690831515021790555050505050505050565b601b602052805f5260405f205f915054906101000a900460ff1681565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611ff76128e1565b73ffffffffffffffffffffffffffffffffffffffff1661201561186b565b73ffffffffffffffffffffffffffffffffffffffff161461206b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206290614632565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036120d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d090614d75565b60405180910390fd5b8060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e60019054906101000a900460ff1681565b6121376128e1565b73ffffffffffffffffffffffffffffffffffffffff1661215561186b565b73ffffffffffffffffffffffffffffffffffffffff16146121ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a290614632565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161224591906141e2565b60405180910390a25050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61227f6128e1565b73ffffffffffffffffffffffffffffffffffffffff1661229d61186b565b73ffffffffffffffffffffffffffffffffffffffff16146122f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ea90614632565b60405180910390fd5b620186a06001612301611030565b61230b9190614775565b61231591906147e3565b821015612357576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234e90614e03565b60405180910390fd5b6103e86005612364611030565b61236e9190614775565b61237891906147e3565b8211156123ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b190614e91565b60405180910390fd5b81600c8190555060019050919050565b6123d26128e1565b73ffffffffffffffffffffffffffffffffffffffff166123f061186b565b73ffffffffffffffffffffffffffffffffffffffff1614612446576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243d90614632565b60405180910390fd5b5f5b838390508110156124db578160185f86868581811061246a57612469614eaf565b5b905060200201602081019061247f91906140f3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050612448565b50505050565b600f5481565b601a602052805f5260405f205f915054906101000a900460ff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61258e6128e1565b73ffffffffffffffffffffffffffffffffffffffff166125ac61186b565b73ffffffffffffffffffffffffffffffffffffffff1614612602576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f990614632565b60405180910390fd5b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f6126636128e1565b73ffffffffffffffffffffffffffffffffffffffff1661268161186b565b73ffffffffffffffffffffffffffffffffffffffff16146126d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ce90614632565b60405180910390fd5b5f600e5f6101000a81548160ff0219169083151502179055506001905090565b600c5481565b6017602052805f5260405f205f915090505481565b61271a6128e1565b73ffffffffffffffffffffffffffffffffffffffff1661273861186b565b73ffffffffffffffffffffffffffffffffffffffff161461278e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278590614632565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036127fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f390614f4c565b60405180910390fd5b612805816137f1565b50565b6128106128e1565b73ffffffffffffffffffffffffffffffffffffffff1661282e61186b565b73ffffffffffffffffffffffffffffffffffffffff1614612884576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287b90614632565b60405180910390fd5b5f1515600e60039054906101000a900460ff161515036128be576001600e60036101000a81548160ff0219169083151502179055506128d9565b5f600e60036101000a81548160ff0219169083151502179055505b565b600b5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294d90614fda565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036129c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129bb90615068565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612a9e91906142bc565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b10906150f6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7e90615184565b60405180910390fd5b60185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612c11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c08906151ec565b60405180910390fd5b60185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612c9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9290615254565b60405180910390fd5b5f8103612cb257612cad83835f613952565b6137ec565b600e5f9054906101000a900460ff161561319657612cce61186b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612d3c5750612d0c61186b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d7457505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612dae575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612dc75750600860149054906101000a900460ff16155b1561319557600e60019054906101000a900460ff16612ebb5760195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612e7b575060195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612eba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb1906152bc565b60405180910390fd5b5b601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612f585750601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612fff57600b54811115612fa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f999061534a565b60405180910390fd5b600d54612fae836115d6565b82612fb9919061467d565b1115612ffa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ff1906153b2565b60405180910390fd5b613194565b601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561309c5750601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156130eb57600b548111156130e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130dd90615440565b60405180910390fd5b613193565b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661319257600d54613145836115d6565b82613150919061467d565b1115613191576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613188906153b2565b60405180910390fd5b5b5b5b5b5b5f73ffffffffffffffffffffffffffffffffffffffff1660085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015613288575060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639015d371306040518263ffffffff1660e01b81526004016132489190614393565b602060405180830381865afa158015613263573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132879190615472565b5b1561339d575f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a20527fc858560075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d54600b54600c546040518763ffffffff1660e01b81526004016133199695949392919061549d565b6020604051808303815f875af1158015613335573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133599190615472565b90508061339b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161339290615546565b60405180910390fd5b505b5f6133a7306115d6565b90505f600c5482101590508080156133cb5750600e60029054906101000a900460ff165b80156133e45750600860149054906101000a900460ff16155b80156134365750601b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015613489575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156134dc575060195f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561351f576001600860146101000a81548160ff021916908315150217905550613504613bc7565b5f600860146101000a81548160ff0219169083151502179055505b5f600860149054906101000a900460ff1615905060195f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806135ce575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156135d7575f90505b5f81156137dc57601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561363557505f601254115b156136cd57613662606461365460125488613da190919063ffffffff16565b613db690919063ffffffff16565b9050601254601454826136759190614775565b61367f91906147e3565b60165f82825461368f919061467d565b92505081905550601254601354826136a79190614775565b6136b191906147e3565b60155f8282546136c1919061467d565b925050819055506137b9565b601b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561372457505f600f54115b156137b8576137516064613743600f5488613da190919063ffffffff16565b613db690919063ffffffff16565b9050600f54601154826137649190614775565b61376e91906147e3565b60165f82825461377e919061467d565b92505081905550600f54601054826137969190614775565b6137a091906147e3565b60155f8282546137b0919061467d565b925050819055505b5b5f8111156137cd576137cc873083613952565b5b80856137d99190615564565b94505b6137e7878787613952565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036139c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139b7906150f6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613a2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a2590615184565b60405180910390fd5b613a39838383613dcb565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ab390615607565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254613b4a919061467d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613bae91906142bc565b60405180910390a3613bc1848484613dd0565b50505050565b5f613bd1306115d6565b90505f601654601554613be4919061467d565b90505f80831480613bf457505f82145b15613c0157505050613d9f565b6014600c54613c109190614775565b831115613c29576014600c54613c269190614775565b92505b5f479050613c3684613dd5565b5f613c4a824761400b90919063ffffffff16565b90505f613c7485613c6660165485613da190919063ffffffff16565b613db690919063ffffffff16565b90505f6015819055505f601681905550600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613cc990615652565b5f6040518083038185875af1925050503d805f8114613d03576040519150601f19603f3d011682016040523d82523d5f602084013e613d08565b606091505b50508094505060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613d5390615652565b5f6040518083038185875af1925050503d805f8114613d8d576040519150601f19603f3d011682016040523d82523d5f602084013e613d92565b606091505b5050809450505050505050505b565b5f8183613dae9190614775565b905092915050565b5f8183613dc391906147e3565b905092915050565b505050565b505050565b5f600267ffffffffffffffff811115613df157613df0615666565b5b604051908082528060200260200182016040528015613e1f5781602001602082028036833780820191505090505b50905030815f81518110613e3657613e35614eaf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613eda573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613efe91906156a7565b81600181518110613f1257613f11614eaf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f783060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846128e8565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613fda9594939291906157c2565b5f604051808303815f87803b158015613ff1575f80fd5b505af1158015614003573d5f803e3d5ffd5b505050505050565b5f81836140189190615564565b905092915050565b5f80fd5b5f80fd5b5f819050919050565b61403a81614028565b8114614044575f80fd5b50565b5f8135905061405581614031565b92915050565b5f806040838503121561407157614070614020565b5b5f61407e85828601614047565b925050602061408f85828601614047565b9150509250929050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6140c282614099565b9050919050565b6140d2816140b8565b81146140dc575f80fd5b50565b5f813590506140ed816140c9565b92915050565b5f6020828403121561410857614107614020565b5b5f614115848285016140df565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561415557808201518184015260208101905061413a565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61417a8261411e565b6141848185614128565b9350614194818560208601614138565b61419d81614160565b840191505092915050565b5f6020820190508181035f8301526141c08184614170565b905092915050565b5f8115159050919050565b6141dc816141c8565b82525050565b5f6020820190506141f55f8301846141d3565b92915050565b5f806040838503121561421157614210614020565b5b5f61421e858286016140df565b925050602061422f85828601614047565b9150509250929050565b5f819050919050565b5f61425c61425761425284614099565b614239565b614099565b9050919050565b5f61426d82614242565b9050919050565b5f61427e82614263565b9050919050565b61428e81614274565b82525050565b5f6020820190506142a75f830184614285565b92915050565b6142b681614028565b82525050565b5f6020820190506142cf5f8301846142ad565b92915050565b5f602082840312156142ea576142e9614020565b5b5f6142f784828501614047565b91505092915050565b5f805f6060848603121561431757614316614020565b5b5f614324868287016140df565b9350506020614335868287016140df565b925050604061434686828701614047565b9150509250925092565b5f60ff82169050919050565b61436581614350565b82525050565b5f60208201905061437e5f83018461435c565b92915050565b61438d816140b8565b82525050565b5f6020820190506143a65f830184614384565b92915050565b6143b5816141c8565b81146143bf575f80fd5b50565b5f813590506143d0816143ac565b92915050565b5f602082840312156143eb576143ea614020565b5b5f6143f8848285016143c2565b91505092915050565b5f806040838503121561441757614416614020565b5b5f614424858286016140df565b9250506020614435858286016143c2565b9150509250929050565b61444881614350565b8114614452575f80fd5b50565b5f813590506144638161443f565b92915050565b5f819050919050565b61447b81614469565b8114614485575f80fd5b50565b5f8135905061449681614472565b92915050565b5f805f606084860312156144b3576144b2614020565b5b5f6144c086828701614455565b93505060206144d186828701614488565b92505060406144e286828701614488565b9150509250925092565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261450d5761450c6144ec565b5b8235905067ffffffffffffffff81111561452a576145296144f0565b5b602083019150836020820283011115614546576145456144f4565b5b9250929050565b5f805f6040848603121561456457614563614020565b5b5f84013567ffffffffffffffff81111561458157614580614024565b5b61458d868287016144f8565b935093505060206145a0868287016143c2565b9150509250925092565b5f80604083850312156145c0576145bf614020565b5b5f6145cd858286016140df565b92505060206145de858286016140df565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61461c602083614128565b9150614627826145e8565b602082019050919050565b5f6020820190508181035f83015261464981614610565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61468782614028565b915061469283614028565b92508282019050808211156146aa576146a9614650565b5b92915050565b7f4d757374206b656570206665657320617420393925206f72206c6573730000005f82015250565b5f6146e4601d83614128565b91506146ef826146b0565b602082019050919050565b5f6020820190508181035f830152614711816146d8565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061475c57607f821691505b60208210810361476f5761476e614718565b5b50919050565b5f61477f82614028565b915061478a83614028565b925082820261479881614028565b915082820484148315176147af576147ae614650565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6147ed82614028565b91506147f883614028565b925082614808576148076147b6565b5b828204905092915050565b7f43616e6e6f7420736574206d6178696d756d54786e416d6f756e74206c6f77655f8201527f72207468616e20302e3125000000000000000000000000000000000000000000602082015250565b5f61486d602b83614128565b915061487882614813565b604082019050919050565b5f6020820190508181035f83015261489a81614861565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6148fb602883614128565b9150614906826148a1565b604082019050919050565b5f6020820190508181035f830152614928816148ef565b9050919050565b7f496e76616c69642073706f6e736f7220616464726573730000000000000000005f82015250565b5f614963601783614128565b915061496e8261492f565b602082019050919050565b5f6020820190508181035f83015261499081614957565b9050919050565b7f43616e6e6f7420736574206d6178696d756d57616c6c6574416d6f756e74206c5f8201527f6f776572207468616e20302e3525000000000000000000000000000000000000602082015250565b5f6149f1602e83614128565b91506149fc82614997565b604082019050919050565b5f6020820190508181035f830152614a1e816149e5565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f614a7f603983614128565b9150614a8a82614a25565b604082019050919050565b5f6020820190508181035f830152614aac81614a73565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f614b0d602583614128565b9150614b1882614ab3565b604082019050919050565b5f6020820190508181035f830152614b3a81614b01565b9050919050565b614b4a81614469565b82525050565b5f60a082019050614b635f830188614b41565b614b706020830187614b41565b614b7d6040830186614b41565b614b8a60608301856142ad565b614b976080830184614384565b9695505050505050565b5f606082019050614bb45f830186614b41565b614bc16020830185614b41565b614bce60408301846142ad565b949350505050565b5f81905092915050565b7f19010000000000000000000000000000000000000000000000000000000000005f82015250565b5f614c14600283614bd6565b9150614c1f82614be0565b600282019050919050565b5f819050919050565b614c44614c3f82614469565b614c2a565b82525050565b5f614c5482614c08565b9150614c608285614c33565b602082019150614c708284614c33565b6020820191508190509392505050565b5f608082019050614c935f830187614b41565b614ca0602083018661435c565b614cad6040830185614b41565b614cba6060830184614b41565b95945050505050565b7f496e76616c6964207369676e61747572650000000000000000000000000000005f82015250565b5f614cf7601183614128565b9150614d0282614cc3565b602082019050919050565b5f6020820190508181035f830152614d2481614ceb565b9050919050565b7f496e76616c696420616e746920647261696e65720000000000000000000000005f82015250565b5f614d5f601483614128565b9150614d6a82614d2b565b602082019050919050565b5f6020820190508181035f830152614d8c81614d53565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f614ded603583614128565b9150614df882614d93565b604082019050919050565b5f6020820190508181035f830152614e1a81614de1565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f614e7b603483614128565b9150614e8682614e21565b604082019050919050565b5f6020820190508181035f830152614ea881614e6f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f614f36602683614128565b9150614f4182614edc565b604082019050919050565b5f6020820190508181035f830152614f6381614f2a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614fc4602483614128565b9150614fcf82614f6a565b604082019050919050565b5f6020820190508181035f830152614ff181614fb8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f615052602283614128565b915061505d82614ff8565b604082019050919050565b5f6020820190508181035f83015261507f81615046565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6150e0602583614128565b91506150eb82615086565b604082019050919050565b5f6020820190508181035f83015261510d816150d4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61516e602383614128565b915061517982615114565b604082019050919050565b5f6020820190508181035f83015261519b81615162565b9050919050565b7f5b66726f6d5d20626c61636b206c6973740000000000000000000000000000005f82015250565b5f6151d6601183614128565b91506151e1826151a2565b602082019050919050565b5f6020820190508181035f830152615203816151ca565b9050919050565b7f5b746f5d20626c61636b206c69737400000000000000000000000000000000005f82015250565b5f61523e600f83614128565b91506152498261520a565b602082019050919050565b5f6020820190508181035f83015261526b81615232565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f6152a6601683614128565b91506152b182615272565b602082019050919050565b5f6020820190508181035f8301526152d38161529a565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d6178696d756d54786e416d6f756e742e000000000000000000000000000000602082015250565b5f615334603183614128565b915061533f826152da565b604082019050919050565b5f6020820190508181035f83015261536181615328565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f61539c601383614128565b91506153a782615368565b602082019050919050565b5f6020820190508181035f8301526153c981615390565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d6178696d756d54786e416d6f756e742e0000000000000000000000000000602082015250565b5f61542a603283614128565b9150615435826153d0565b604082019050919050565b5f6020820190508181035f8301526154578161541e565b9050919050565b5f8151905061546c816143ac565b92915050565b5f6020828403121561548757615486614020565b5b5f6154948482850161545e565b91505092915050565b5f60c0820190506154b05f830189614384565b6154bd6020830188614384565b6154ca6040830187614384565b6154d760608301866142ad565b6154e460808301856142ad565b6154f160a08301846142ad565b979650505050505050565b7f416e746920447261696e657220456e61626c65640000000000000000000000005f82015250565b5f615530601483614128565b915061553b826154fc565b602082019050919050565b5f6020820190508181035f83015261555d81615524565b9050919050565b5f61556e82614028565b915061557983614028565b925082820390508181111561559157615590614650565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6155f1602683614128565b91506155fc82615597565b604082019050919050565b5f6020820190508181035f83015261561e816155e5565b9050919050565b5f81905092915050565b50565b5f61563d5f83615625565b91506156488261562f565b5f82019050919050565b5f61565c82615632565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f815190506156a1816140c9565b92915050565b5f602082840312156156bc576156bb614020565b5b5f6156c984828501615693565b91505092915050565b5f819050919050565b5f6156f56156f06156eb846156d2565b614239565b614028565b9050919050565b615705816156db565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61573d816140b8565b82525050565b5f61574e8383615734565b60208301905092915050565b5f602082019050919050565b5f6157708261570b565b61577a8185615715565b935061578583615725565b805f5b838110156157b557815161579c8882615743565b97506157a78361575a565b925050600181019050615788565b5085935050505092915050565b5f60a0820190506157d55f8301886142ad565b6157e260208301876156fc565b81810360408301526157f48186615766565b90506158036060830185614384565b61581060808301846142ad565b969550505050505056fea26469706673582212207c54221955ca8fee9b29efc383543679aac7a8d74991cadaec6d01bb3bdc45a064736f6c63430008170033

Deployed Bytecode

0x60806040526004361061036e575f3560e01c8063924de9b7116101c5578063c0246668116100f6578063dddc7d7611610094578063f172525d1161006e578063f172525d14610c83578063f2fde38b14610cbf578063f3291b4614610ce7578063f7d0cab014610cfd57610375565b8063dddc7d7614610c07578063e11d22cf14610c2f578063e2f4560514610c5957610375565b8063d6efe778116100d0578063d6efe77814610b3d578063d85ba06314610b65578063d9b2466114610b8f578063dd62ed3e14610bcb57610375565b8063c024666814610aaf578063d1c3ee7f14610ad7578063d257b34f14610b0157610375565b8063a457c2d711610163578063b62496f51161013d578063b62496f5146109f7578063b99d357514610a33578063bae14e1d14610a5d578063bbc0c74214610a8557610375565b8063a457c2d714610957578063a9059cbb14610993578063a90eab8c146109cf57610375565b80639a7a23d61161019f5780639a7a23d6146108b15780639c3b4fdc146108d95780639fccce3214610903578063a0d82dc51461092d57610375565b8063924de9b71461083757806394e05c6d1461085f57806395d89b411461088757610375565b80633fecf30e1161029f57806370a082311161023d5780637bce5a04116102175780637bce5a04146107a35780638a8c523c146107cd5780638da5cb5b146107e3578063921369131461080d57610375565b806370a0823114610729578063715018a61461076557806374d7fdbb1461077b57610375565b80634fbee193116102795780634fbee1931461067157806366ca9b83146106ad5780636a486a8e146106d55780636ddd1713146106ff57610375565b80633fecf30e146105f557806349bd5a5e1461061d5780634a62bb651461064757610375565b80631bea62021161030c57806323b872dd116102e657806323b872dd14610529578063313ce5671461056557806337c2810f1461058f57806339509351146105b957610375565b80631bea6202146104ad5780631f3fed8f146104d7578063203e727e1461050157610375565b806308ea2b6a1161034857806308ea2b6a146103f3578063095ea7b31461041d5780631694505e1461045957806318160ddd1461048357610375565b806302dbd8f81461037957806304dfa45a146103a157806306fdde03146103c957610375565b3661037557005b5f80fd5b348015610384575f80fd5b5061039f600480360381019061039a919061405b565b610d27565b005b3480156103ac575f80fd5b506103c760048036038101906103c291906140f3565b610e11565b005b3480156103d4575f80fd5b506103dd610f4b565b6040516103ea91906141a8565b60405180910390f35b3480156103fe575f80fd5b50610407610fdb565b60405161041491906141e2565b60405180910390f35b348015610428575f80fd5b50610443600480360381019061043e91906141fb565b610fee565b60405161045091906141e2565b60405180910390f35b348015610464575f80fd5b5061046d61100b565b60405161047a9190614294565b60405180910390f35b34801561048e575f80fd5b50610497611030565b6040516104a491906142bc565b60405180910390f35b3480156104b8575f80fd5b506104c1611039565b6040516104ce91906142bc565b60405180910390f35b3480156104e2575f80fd5b506104eb61103f565b6040516104f891906142bc565b60405180910390f35b34801561050c575f80fd5b50610527600480360381019061052291906142d5565b611045565b005b348015610534575f80fd5b5061054f600480360381019061054a9190614300565b611154565b60405161055c91906141e2565b60405180910390f35b348015610570575f80fd5b50610579611246565b604051610586919061436b565b60405180910390f35b34801561059a575f80fd5b506105a361124e565b6040516105b09190614393565b60405180910390f35b3480156105c4575f80fd5b506105df60048036038101906105da91906141fb565b611273565b6040516105ec91906141e2565b60405180910390f35b348015610600575f80fd5b5061061b600480360381019061061691906140f3565b61131a565b005b348015610628575f80fd5b5061063161144a565b60405161063e9190614393565b60405180910390f35b348015610652575f80fd5b5061065b61146f565b60405161066891906141e2565b60405180910390f35b34801561067c575f80fd5b50610697600480360381019061069291906140f3565b611481565b6040516106a491906141e2565b60405180910390f35b3480156106b8575f80fd5b506106d360048036038101906106ce919061405b565b6114d3565b005b3480156106e0575f80fd5b506106e96115bd565b6040516106f691906142bc565b60405180910390f35b34801561070a575f80fd5b506107136115c3565b60405161072091906141e2565b60405180910390f35b348015610734575f80fd5b5061074f600480360381019061074a91906140f3565b6115d6565b60405161075c91906142bc565b60405180910390f35b348015610770575f80fd5b5061077961161b565b005b348015610786575f80fd5b506107a1600480360381019061079c91906142d5565b6116a2565b005b3480156107ae575f80fd5b506107b76117b1565b6040516107c491906142bc565b60405180910390f35b3480156107d8575f80fd5b506107e16117b7565b005b3480156107ee575f80fd5b506107f761186b565b6040516108049190614393565b60405180910390f35b348015610818575f80fd5b50610821611893565b60405161082e91906142bc565b60405180910390f35b348015610842575f80fd5b5061085d600480360381019061085891906143d6565b611899565b005b34801561086a575f80fd5b50610885600480360381019061088091906140f3565b611932565b005b348015610892575f80fd5b5061089b611a6c565b6040516108a891906141a8565b60405180910390f35b3480156108bc575f80fd5b506108d760048036038101906108d29190614401565b611afc565b005b3480156108e4575f80fd5b506108ed611c15565b6040516108fa91906142bc565b60405180910390f35b34801561090e575f80fd5b50610917611c1b565b60405161092491906142bc565b60405180910390f35b348015610938575f80fd5b50610941611c21565b60405161094e91906142bc565b60405180910390f35b348015610962575f80fd5b5061097d600480360381019061097891906141fb565b611c27565b60405161098a91906141e2565b60405180910390f35b34801561099e575f80fd5b506109b960048036038101906109b491906141fb565b611d0d565b6040516109c691906141e2565b60405180910390f35b3480156109da575f80fd5b506109f560048036038101906109f0919061449c565b611d2a565b005b348015610a02575f80fd5b50610a1d6004803603810190610a1891906140f3565b611fad565b604051610a2a91906141e2565b60405180910390f35b348015610a3e575f80fd5b50610a47611fca565b604051610a549190614393565b60405180910390f35b348015610a68575f80fd5b50610a836004803603810190610a7e91906140f3565b611fef565b005b348015610a90575f80fd5b50610a9961211c565b604051610aa691906141e2565b60405180910390f35b348015610aba575f80fd5b50610ad56004803603810190610ad09190614401565b61212f565b005b348015610ae2575f80fd5b50610aeb612251565b604051610af89190614393565b60405180910390f35b348015610b0c575f80fd5b50610b276004803603810190610b2291906142d5565b612276565b604051610b3491906141e2565b60405180910390f35b348015610b48575f80fd5b50610b636004803603810190610b5e919061454d565b6123ca565b005b348015610b70575f80fd5b50610b796124e1565b604051610b8691906142bc565b60405180910390f35b348015610b9a575f80fd5b50610bb56004803603810190610bb091906140f3565b6124e7565b604051610bc291906141e2565b60405180910390f35b348015610bd6575f80fd5b50610bf16004803603810190610bec91906145aa565b612504565b604051610bfe91906142bc565b60405180910390f35b348015610c12575f80fd5b50610c2d6004803603810190610c289190614401565b612586565b005b348015610c3a575f80fd5b50610c4361265a565b604051610c5091906141e2565b60405180910390f35b348015610c64575f80fd5b50610c6d6126f7565b604051610c7a91906142bc565b60405180910390f35b348015610c8e575f80fd5b50610ca96004803603810190610ca491906140f3565b6126fd565b604051610cb691906142bc565b60405180910390f35b348015610cca575f80fd5b50610ce56004803603810190610ce091906140f3565b612712565b005b348015610cf2575f80fd5b50610cfb612808565b005b348015610d08575f80fd5b50610d116128db565b604051610d1e91906142bc565b60405180910390f35b610d2f6128e1565b73ffffffffffffffffffffffffffffffffffffffff16610d4d61186b565b73ffffffffffffffffffffffffffffffffffffffff1614610da3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9a90614632565b60405180910390fd5b8160138190555080601481905550601454601354610dc1919061467d565b601281905550600a6012541115610e0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e04906146fa565b60405180910390fd5b5050565b610e196128e1565b73ffffffffffffffffffffffffffffffffffffffff16610e3761186b565b73ffffffffffffffffffffffffffffffffffffffff1614610e8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8490614632565b60405180910390fd5b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f3de051b4d5ce18dec98386d8ec6a614ddd4c62f083cf99955b678ec978aa310160405160405180910390a380600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060038054610f5a90614745565b80601f0160208091040260200160405190810160405280929190818152602001828054610f8690614745565b8015610fd15780601f10610fa857610100808354040283529160200191610fd1565b820191905f5260205f20905b815481529060010190602001808311610fb457829003601f168201915b5050505050905090565b600e60039054906101000a900460ff1681565b5f611001610ffa6128e1565b84846128e8565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b600d5481565b60155481565b61104d6128e1565b73ffffffffffffffffffffffffffffffffffffffff1661106b61186b565b73ffffffffffffffffffffffffffffffffffffffff16146110c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b890614632565b60405180910390fd5b670de0b6b3a76400006103e860016110d7611030565b6110e19190614775565b6110eb91906147e3565b6110f591906147e3565b811015611137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112e90614883565b60405180910390fd5b670de0b6b3a76400008161114b9190614775565b600b8190555050565b5f611160848484612aab565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6111a76128e1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121d90614911565b60405180910390fd5b61123a856112326128e1565b8584036128e8565b60019150509392505050565b5f6012905090565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61131061127f6128e1565b848460015f61128c6128e1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461130b919061467d565b6128e8565b6001905092915050565b6113226128e1565b73ffffffffffffffffffffffffffffffffffffffff1661134061186b565b73ffffffffffffffffffffffffffffffffffffffff1614611396576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138d90614632565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611404576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fb90614979565b60405180910390fd5b600160175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5f9054906101000a900460ff1681565b5f60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b6114db6128e1565b73ffffffffffffffffffffffffffffffffffffffff166114f961186b565b73ffffffffffffffffffffffffffffffffffffffff161461154f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154690614632565b60405180910390fd5b816010819055508060118190555060115460105461156d919061467d565b600f81905550600a600f5411156115b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b0906146fa565b60405180910390fd5b5050565b60125481565b600e60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6116236128e1565b73ffffffffffffffffffffffffffffffffffffffff1661164161186b565b73ffffffffffffffffffffffffffffffffffffffff1614611697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168e90614632565b60405180910390fd5b6116a05f6137f1565b565b6116aa6128e1565b73ffffffffffffffffffffffffffffffffffffffff166116c861186b565b73ffffffffffffffffffffffffffffffffffffffff161461171e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171590614632565b60405180910390fd5b670de0b6b3a76400006103e86005611734611030565b61173e9190614775565b61174891906147e3565b61175291906147e3565b811015611794576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178b90614a07565b60405180910390fd5b670de0b6b3a7640000816117a89190614775565b600d8190555050565b60105481565b6117bf6128e1565b73ffffffffffffffffffffffffffffffffffffffff166117dd61186b565b73ffffffffffffffffffffffffffffffffffffffff1614611833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182a90614632565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff021916908315150217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b6118a16128e1565b73ffffffffffffffffffffffffffffffffffffffff166118bf61186b565b73ffffffffffffffffffffffffffffffffffffffff1614611915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190c90614632565b60405180910390fd5b80600e60026101000a81548160ff02191690831515021790555050565b61193a6128e1565b73ffffffffffffffffffffffffffffffffffffffff1661195861186b565b73ffffffffffffffffffffffffffffffffffffffff16146119ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a590614632565b60405180910390fd5b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fec7cda7e686602e5a5a3692a0e69c4dab0898191024ca21d04f2372c14dfa85e60405160405180910390a38060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060048054611a7b90614745565b80601f0160208091040260200160405190810160405280929190818152602001828054611aa790614745565b8015611af25780601f10611ac957610100808354040283529160200191611af2565b820191905f5260205f20905b815481529060010190602001808311611ad557829003601f168201915b5050505050905090565b611b046128e1565b73ffffffffffffffffffffffffffffffffffffffff16611b2261186b565b73ffffffffffffffffffffffffffffffffffffffff1614611b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6f90614632565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfe90614a95565b60405180910390fd5b611c1182826138b4565b5050565b60115481565b60165481565b60145481565b5f8060015f611c346128e1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce590614b23565b60405180910390fd5b611d02611cf96128e1565b858584036128e8565b600191505092915050565b5f611d20611d196128e1565b8484612aab565b6001905092915050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600d81526020017f54726164696e6720546f6b656e00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001204630604051602001611ddc959493929190614b50565b6040516020818303038152906040528051906020012090505f7f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e67000000000000000000000000000000000000815250805190602001205f604051602001611e6693929190614ba1565b6040516020818303038152906040528051906020012090505f8282604051602001611e92929190614c4a565b6040516020818303038152906040528051906020012090505f6001828888886040515f8152602001604052604051611ecd9493929190614c80565b6020604051602081039080840390855afa158015611eed573d5f803e3d5ffd5b505050602060405103519050611f0161186b565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611f6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6590614d0d565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff02191690831515021790555050505050505050565b601b602052805f5260405f205f915054906101000a900460ff1681565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611ff76128e1565b73ffffffffffffffffffffffffffffffffffffffff1661201561186b565b73ffffffffffffffffffffffffffffffffffffffff161461206b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206290614632565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036120d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d090614d75565b60405180910390fd5b8060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e60019054906101000a900460ff1681565b6121376128e1565b73ffffffffffffffffffffffffffffffffffffffff1661215561186b565b73ffffffffffffffffffffffffffffffffffffffff16146121ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a290614632565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161224591906141e2565b60405180910390a25050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61227f6128e1565b73ffffffffffffffffffffffffffffffffffffffff1661229d61186b565b73ffffffffffffffffffffffffffffffffffffffff16146122f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ea90614632565b60405180910390fd5b620186a06001612301611030565b61230b9190614775565b61231591906147e3565b821015612357576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234e90614e03565b60405180910390fd5b6103e86005612364611030565b61236e9190614775565b61237891906147e3565b8211156123ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b190614e91565b60405180910390fd5b81600c8190555060019050919050565b6123d26128e1565b73ffffffffffffffffffffffffffffffffffffffff166123f061186b565b73ffffffffffffffffffffffffffffffffffffffff1614612446576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243d90614632565b60405180910390fd5b5f5b838390508110156124db578160185f86868581811061246a57612469614eaf565b5b905060200201602081019061247f91906140f3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050612448565b50505050565b600f5481565b601a602052805f5260405f205f915054906101000a900460ff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61258e6128e1565b73ffffffffffffffffffffffffffffffffffffffff166125ac61186b565b73ffffffffffffffffffffffffffffffffffffffff1614612602576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f990614632565b60405180910390fd5b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f6126636128e1565b73ffffffffffffffffffffffffffffffffffffffff1661268161186b565b73ffffffffffffffffffffffffffffffffffffffff16146126d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ce90614632565b60405180910390fd5b5f600e5f6101000a81548160ff0219169083151502179055506001905090565b600c5481565b6017602052805f5260405f205f915090505481565b61271a6128e1565b73ffffffffffffffffffffffffffffffffffffffff1661273861186b565b73ffffffffffffffffffffffffffffffffffffffff161461278e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278590614632565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036127fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f390614f4c565b60405180910390fd5b612805816137f1565b50565b6128106128e1565b73ffffffffffffffffffffffffffffffffffffffff1661282e61186b565b73ffffffffffffffffffffffffffffffffffffffff1614612884576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287b90614632565b60405180910390fd5b5f1515600e60039054906101000a900460ff161515036128be576001600e60036101000a81548160ff0219169083151502179055506128d9565b5f600e60036101000a81548160ff0219169083151502179055505b565b600b5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294d90614fda565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036129c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129bb90615068565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612a9e91906142bc565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b10906150f6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7e90615184565b60405180910390fd5b60185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612c11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c08906151ec565b60405180910390fd5b60185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612c9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9290615254565b60405180910390fd5b5f8103612cb257612cad83835f613952565b6137ec565b600e5f9054906101000a900460ff161561319657612cce61186b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612d3c5750612d0c61186b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d7457505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612dae575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612dc75750600860149054906101000a900460ff16155b1561319557600e60019054906101000a900460ff16612ebb5760195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612e7b575060195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612eba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb1906152bc565b60405180910390fd5b5b601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612f585750601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612fff57600b54811115612fa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f999061534a565b60405180910390fd5b600d54612fae836115d6565b82612fb9919061467d565b1115612ffa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ff1906153b2565b60405180910390fd5b613194565b601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561309c5750601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156130eb57600b548111156130e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130dd90615440565b60405180910390fd5b613193565b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661319257600d54613145836115d6565b82613150919061467d565b1115613191576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613188906153b2565b60405180910390fd5b5b5b5b5b5b5f73ffffffffffffffffffffffffffffffffffffffff1660085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015613288575060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639015d371306040518263ffffffff1660e01b81526004016132489190614393565b602060405180830381865afa158015613263573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132879190615472565b5b1561339d575f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a20527fc858560075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d54600b54600c546040518763ffffffff1660e01b81526004016133199695949392919061549d565b6020604051808303815f875af1158015613335573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133599190615472565b90508061339b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161339290615546565b60405180910390fd5b505b5f6133a7306115d6565b90505f600c5482101590508080156133cb5750600e60029054906101000a900460ff165b80156133e45750600860149054906101000a900460ff16155b80156134365750601b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015613489575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156134dc575060195f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561351f576001600860146101000a81548160ff021916908315150217905550613504613bc7565b5f600860146101000a81548160ff0219169083151502179055505b5f600860149054906101000a900460ff1615905060195f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806135ce575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156135d7575f90505b5f81156137dc57601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561363557505f601254115b156136cd57613662606461365460125488613da190919063ffffffff16565b613db690919063ffffffff16565b9050601254601454826136759190614775565b61367f91906147e3565b60165f82825461368f919061467d565b92505081905550601254601354826136a79190614775565b6136b191906147e3565b60155f8282546136c1919061467d565b925050819055506137b9565b601b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561372457505f600f54115b156137b8576137516064613743600f5488613da190919063ffffffff16565b613db690919063ffffffff16565b9050600f54601154826137649190614775565b61376e91906147e3565b60165f82825461377e919061467d565b92505081905550600f54601054826137969190614775565b6137a091906147e3565b60155f8282546137b0919061467d565b925050819055505b5b5f8111156137cd576137cc873083613952565b5b80856137d99190615564565b94505b6137e7878787613952565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036139c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139b7906150f6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613a2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a2590615184565b60405180910390fd5b613a39838383613dcb565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ab390615607565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254613b4a919061467d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613bae91906142bc565b60405180910390a3613bc1848484613dd0565b50505050565b5f613bd1306115d6565b90505f601654601554613be4919061467d565b90505f80831480613bf457505f82145b15613c0157505050613d9f565b6014600c54613c109190614775565b831115613c29576014600c54613c269190614775565b92505b5f479050613c3684613dd5565b5f613c4a824761400b90919063ffffffff16565b90505f613c7485613c6660165485613da190919063ffffffff16565b613db690919063ffffffff16565b90505f6015819055505f601681905550600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613cc990615652565b5f6040518083038185875af1925050503d805f8114613d03576040519150601f19603f3d011682016040523d82523d5f602084013e613d08565b606091505b50508094505060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613d5390615652565b5f6040518083038185875af1925050503d805f8114613d8d576040519150601f19603f3d011682016040523d82523d5f602084013e613d92565b606091505b5050809450505050505050505b565b5f8183613dae9190614775565b905092915050565b5f8183613dc391906147e3565b905092915050565b505050565b505050565b5f600267ffffffffffffffff811115613df157613df0615666565b5b604051908082528060200260200182016040528015613e1f5781602001602082028036833780820191505090505b50905030815f81518110613e3657613e35614eaf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613eda573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613efe91906156a7565b81600181518110613f1257613f11614eaf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f783060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846128e8565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613fda9594939291906157c2565b5f604051808303815f87803b158015613ff1575f80fd5b505af1158015614003573d5f803e3d5ffd5b505050505050565b5f81836140189190615564565b905092915050565b5f80fd5b5f80fd5b5f819050919050565b61403a81614028565b8114614044575f80fd5b50565b5f8135905061405581614031565b92915050565b5f806040838503121561407157614070614020565b5b5f61407e85828601614047565b925050602061408f85828601614047565b9150509250929050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6140c282614099565b9050919050565b6140d2816140b8565b81146140dc575f80fd5b50565b5f813590506140ed816140c9565b92915050565b5f6020828403121561410857614107614020565b5b5f614115848285016140df565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561415557808201518184015260208101905061413a565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61417a8261411e565b6141848185614128565b9350614194818560208601614138565b61419d81614160565b840191505092915050565b5f6020820190508181035f8301526141c08184614170565b905092915050565b5f8115159050919050565b6141dc816141c8565b82525050565b5f6020820190506141f55f8301846141d3565b92915050565b5f806040838503121561421157614210614020565b5b5f61421e858286016140df565b925050602061422f85828601614047565b9150509250929050565b5f819050919050565b5f61425c61425761425284614099565b614239565b614099565b9050919050565b5f61426d82614242565b9050919050565b5f61427e82614263565b9050919050565b61428e81614274565b82525050565b5f6020820190506142a75f830184614285565b92915050565b6142b681614028565b82525050565b5f6020820190506142cf5f8301846142ad565b92915050565b5f602082840312156142ea576142e9614020565b5b5f6142f784828501614047565b91505092915050565b5f805f6060848603121561431757614316614020565b5b5f614324868287016140df565b9350506020614335868287016140df565b925050604061434686828701614047565b9150509250925092565b5f60ff82169050919050565b61436581614350565b82525050565b5f60208201905061437e5f83018461435c565b92915050565b61438d816140b8565b82525050565b5f6020820190506143a65f830184614384565b92915050565b6143b5816141c8565b81146143bf575f80fd5b50565b5f813590506143d0816143ac565b92915050565b5f602082840312156143eb576143ea614020565b5b5f6143f8848285016143c2565b91505092915050565b5f806040838503121561441757614416614020565b5b5f614424858286016140df565b9250506020614435858286016143c2565b9150509250929050565b61444881614350565b8114614452575f80fd5b50565b5f813590506144638161443f565b92915050565b5f819050919050565b61447b81614469565b8114614485575f80fd5b50565b5f8135905061449681614472565b92915050565b5f805f606084860312156144b3576144b2614020565b5b5f6144c086828701614455565b93505060206144d186828701614488565b92505060406144e286828701614488565b9150509250925092565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261450d5761450c6144ec565b5b8235905067ffffffffffffffff81111561452a576145296144f0565b5b602083019150836020820283011115614546576145456144f4565b5b9250929050565b5f805f6040848603121561456457614563614020565b5b5f84013567ffffffffffffffff81111561458157614580614024565b5b61458d868287016144f8565b935093505060206145a0868287016143c2565b9150509250925092565b5f80604083850312156145c0576145bf614020565b5b5f6145cd858286016140df565b92505060206145de858286016140df565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61461c602083614128565b9150614627826145e8565b602082019050919050565b5f6020820190508181035f83015261464981614610565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61468782614028565b915061469283614028565b92508282019050808211156146aa576146a9614650565b5b92915050565b7f4d757374206b656570206665657320617420393925206f72206c6573730000005f82015250565b5f6146e4601d83614128565b91506146ef826146b0565b602082019050919050565b5f6020820190508181035f830152614711816146d8565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061475c57607f821691505b60208210810361476f5761476e614718565b5b50919050565b5f61477f82614028565b915061478a83614028565b925082820261479881614028565b915082820484148315176147af576147ae614650565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6147ed82614028565b91506147f883614028565b925082614808576148076147b6565b5b828204905092915050565b7f43616e6e6f7420736574206d6178696d756d54786e416d6f756e74206c6f77655f8201527f72207468616e20302e3125000000000000000000000000000000000000000000602082015250565b5f61486d602b83614128565b915061487882614813565b604082019050919050565b5f6020820190508181035f83015261489a81614861565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6148fb602883614128565b9150614906826148a1565b604082019050919050565b5f6020820190508181035f830152614928816148ef565b9050919050565b7f496e76616c69642073706f6e736f7220616464726573730000000000000000005f82015250565b5f614963601783614128565b915061496e8261492f565b602082019050919050565b5f6020820190508181035f83015261499081614957565b9050919050565b7f43616e6e6f7420736574206d6178696d756d57616c6c6574416d6f756e74206c5f8201527f6f776572207468616e20302e3525000000000000000000000000000000000000602082015250565b5f6149f1602e83614128565b91506149fc82614997565b604082019050919050565b5f6020820190508181035f830152614a1e816149e5565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f614a7f603983614128565b9150614a8a82614a25565b604082019050919050565b5f6020820190508181035f830152614aac81614a73565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f614b0d602583614128565b9150614b1882614ab3565b604082019050919050565b5f6020820190508181035f830152614b3a81614b01565b9050919050565b614b4a81614469565b82525050565b5f60a082019050614b635f830188614b41565b614b706020830187614b41565b614b7d6040830186614b41565b614b8a60608301856142ad565b614b976080830184614384565b9695505050505050565b5f606082019050614bb45f830186614b41565b614bc16020830185614b41565b614bce60408301846142ad565b949350505050565b5f81905092915050565b7f19010000000000000000000000000000000000000000000000000000000000005f82015250565b5f614c14600283614bd6565b9150614c1f82614be0565b600282019050919050565b5f819050919050565b614c44614c3f82614469565b614c2a565b82525050565b5f614c5482614c08565b9150614c608285614c33565b602082019150614c708284614c33565b6020820191508190509392505050565b5f608082019050614c935f830187614b41565b614ca0602083018661435c565b614cad6040830185614b41565b614cba6060830184614b41565b95945050505050565b7f496e76616c6964207369676e61747572650000000000000000000000000000005f82015250565b5f614cf7601183614128565b9150614d0282614cc3565b602082019050919050565b5f6020820190508181035f830152614d2481614ceb565b9050919050565b7f496e76616c696420616e746920647261696e65720000000000000000000000005f82015250565b5f614d5f601483614128565b9150614d6a82614d2b565b602082019050919050565b5f6020820190508181035f830152614d8c81614d53565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f614ded603583614128565b9150614df882614d93565b604082019050919050565b5f6020820190508181035f830152614e1a81614de1565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f614e7b603483614128565b9150614e8682614e21565b604082019050919050565b5f6020820190508181035f830152614ea881614e6f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f614f36602683614128565b9150614f4182614edc565b604082019050919050565b5f6020820190508181035f830152614f6381614f2a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614fc4602483614128565b9150614fcf82614f6a565b604082019050919050565b5f6020820190508181035f830152614ff181614fb8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f615052602283614128565b915061505d82614ff8565b604082019050919050565b5f6020820190508181035f83015261507f81615046565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6150e0602583614128565b91506150eb82615086565b604082019050919050565b5f6020820190508181035f83015261510d816150d4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61516e602383614128565b915061517982615114565b604082019050919050565b5f6020820190508181035f83015261519b81615162565b9050919050565b7f5b66726f6d5d20626c61636b206c6973740000000000000000000000000000005f82015250565b5f6151d6601183614128565b91506151e1826151a2565b602082019050919050565b5f6020820190508181035f830152615203816151ca565b9050919050565b7f5b746f5d20626c61636b206c69737400000000000000000000000000000000005f82015250565b5f61523e600f83614128565b91506152498261520a565b602082019050919050565b5f6020820190508181035f83015261526b81615232565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f6152a6601683614128565b91506152b182615272565b602082019050919050565b5f6020820190508181035f8301526152d38161529a565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d6178696d756d54786e416d6f756e742e000000000000000000000000000000602082015250565b5f615334603183614128565b915061533f826152da565b604082019050919050565b5f6020820190508181035f83015261536181615328565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f61539c601383614128565b91506153a782615368565b602082019050919050565b5f6020820190508181035f8301526153c981615390565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d6178696d756d54786e416d6f756e742e0000000000000000000000000000602082015250565b5f61542a603283614128565b9150615435826153d0565b604082019050919050565b5f6020820190508181035f8301526154578161541e565b9050919050565b5f8151905061546c816143ac565b92915050565b5f6020828403121561548757615486614020565b5b5f6154948482850161545e565b91505092915050565b5f60c0820190506154b05f830189614384565b6154bd6020830188614384565b6154ca6040830187614384565b6154d760608301866142ad565b6154e460808301856142ad565b6154f160a08301846142ad565b979650505050505050565b7f416e746920447261696e657220456e61626c65640000000000000000000000005f82015250565b5f615530601483614128565b915061553b826154fc565b602082019050919050565b5f6020820190508181035f83015261555d81615524565b9050919050565b5f61556e82614028565b915061557983614028565b925082820390508181111561559157615590614650565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6155f1602683614128565b91506155fc82615597565b604082019050919050565b5f6020820190508181035f83015261561e816155e5565b9050919050565b5f81905092915050565b50565b5f61563d5f83615625565b91506156488261562f565b5f82019050919050565b5f61565c82615632565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f815190506156a1816140c9565b92915050565b5f602082840312156156bc576156bb614020565b5b5f6156c984828501615693565b91505092915050565b5f819050919050565b5f6156f56156f06156eb846156d2565b614239565b614028565b9050919050565b615705816156db565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61573d816140b8565b82525050565b5f61574e8383615734565b60208301905092915050565b5f602082019050919050565b5f6157708261570b565b61577a8185615715565b935061578583615725565b805f5b838110156157b557815161579c8882615743565b97506157a78361575a565b925050600181019050615788565b5085935050505092915050565b5f60a0820190506157d55f8301886142ad565b6157e260208301876156fc565b81810360408301526157f48186615766565b90506158036060830185614384565b61581060808301846142ad565b969550505050505056fea26469706673582212207c54221955ca8fee9b29efc383543679aac7a8d74991cadaec6d01bb3bdc45a064736f6c63430008170033

Deployed Bytecode Sourcemap

15719:15441:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23488:318;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25001:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2819:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16254:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3799:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15797:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3140:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16093:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16508:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22521:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4001:529;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3039:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15880:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4538:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21599:170;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15845:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16136:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22089:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23169:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16401:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16216:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3256:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;846:103;;;;;;;;;;;;;:::i;:::-;;21777:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16331:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19884:112;;;;;;;;;;;;;:::i;:::-;;623:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16436:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23061:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22223:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2927:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24004:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16368:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16548:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16474:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4836:475;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3407:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20571:1020;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16814:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15945:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19694:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16176:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23814:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15978:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24512:481;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20004:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16297:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16746:59;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3615:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22798:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20442:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16053:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16584:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;957:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20241:193;;;;;;;;;;;;;:::i;:::-;;16015:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23488:318;769:12;:10;:12::i;:::-;758:23;;:7;:5;:7::i;:::-;:23;;;750:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23626:13:::1;23607:16;:32;;;;23663:7;23650:10;:20;;;;23716:10;;23697:16;;:29;;;;:::i;:::-;23681:13;:45;;;;23762:2;23745:13;;:19;;23737:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;23488:318:::0;;:::o;25001:173::-;769:12;:10;:12::i;:::-;758:23;;:7;:5;:7::i;:::-;:23;;;750:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25116:13:::1;;;;;;;;;;;25084:46;;25105:9;25084:46;;;;;;;;;;;;25157:9;25141:13;;:25;;;;;;;;;;;;;;;;;;25001:173:::0;:::o;2819:100::-;2873:13;2906:5;2899:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2819:100;:::o;16254:34::-;;;;;;;;;;;;;:::o;3799:194::-;3907:4;3924:39;3933:12;:10;:12::i;:::-;3947:7;3956:6;3924:8;:39::i;:::-;3981:4;3974:11;;3799:194;;;;:::o;15797:41::-;;;;;;;;;;;;;:::o;3140:108::-;3201:7;3228:12;;3221:19;;3140:108;:::o;16093:34::-;;;;:::o;16508:33::-;;;;:::o;22521:269::-;769:12;:10;:12::i;:::-;758:23;;:7;:5;:7::i;:::-;:23;;;750:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22658:4:::1;22650;22645:1;22629:13;:11;:13::i;:::-;:17;;;;:::i;:::-;22628:26;;;;:::i;:::-;22627:35;;;;:::i;:::-;22617:6;:45;;22595:138;;;;;;;;;;;;:::i;:::-;;;;;;;;;22773:8;22763:6;:19;;;;:::i;:::-;22744:16;:38;;;;22521:269:::0;:::o;4001:529::-;4141:4;4158:36;4168:6;4176:9;4187:6;4158:9;:36::i;:::-;4207:24;4234:11;:19;4246:6;4234:19;;;;;;;;;;;;;;;:33;4254:12;:10;:12::i;:::-;4234:33;;;;;;;;;;;;;;;;4207:60;;4320:6;4300:16;:26;;4278:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;4430:57;4439:6;4447:12;:10;:12::i;:::-;4480:6;4461:16;:25;4430:8;:57::i;:::-;4518:4;4511:11;;;4001:529;;;;;:::o;3039:93::-;3097:5;3122:2;3115:9;;3039:93;:::o;15880:26::-;;;;;;;;;;;;;:::o;4538:290::-;4651:4;4668:130;4691:12;:10;:12::i;:::-;4718:7;4777:10;4740:11;:25;4752:12;:10;:12::i;:::-;4740:25;;;;;;;;;;;;;;;:34;4766:7;4740:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4668:8;:130::i;:::-;4816:4;4809:11;;4538:290;;;;:::o;21599:170::-;769:12;:10;:12::i;:::-;758:23;;:7;:5;:7::i;:::-;:23;;;750:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21697:1:::1;21677:22;;:8;:22;;::::0;21669:58:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;21760:1;21738:9;:19;21748:8;21738:19;;;;;;;;;;;;;;;:23;;;;21599:170:::0;:::o;15845:28::-;;;;;;;;;;;;;:::o;16136:33::-;;;;;;;;;;;;;:::o;22089:126::-;22155:4;22179:19;:28;22199:7;22179:28;;;;;;;;;;;;;;;;;;;;;;;;;22172:35;;22089:126;;;:::o;23169:311::-;769:12;:10;:12::i;:::-;758:23;;:7;:5;:7::i;:::-;:23;;;750:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23305:13:::1;23287:15;:31;;;;23341:7;23329:9;:19;;;;23392:9;;23374:15;;:27;;;;:::i;:::-;23359:12;:42;;;;23436:2;23420:12;;:18;;23412:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;23169:311:::0;;:::o;16401:28::-;;;;:::o;16216:31::-;;;;;;;;;;;;;:::o;3256:143::-;3346:7;3373:9;:18;3383:7;3373:18;;;;;;;;;;;;;;;;3366:25;;3256:143;;;:::o;846:103::-;769:12;:10;:12::i;:::-;758:23;;:7;:5;:7::i;:::-;:23;;;750:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;911:30:::1;938:1;911:18;:30::i;:::-;846:103::o:0;21777:304::-;769:12;:10;:12::i;:::-;758:23;;:7;:5;:7::i;:::-;:23;;;750:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21943:4:::1;21935;21930:1;21914:13;:11;:13::i;:::-;:17;;;;:::i;:::-;21913:26;;;;:::i;:::-;21912:35;;;;:::i;:::-;21902:6;:45;;21880:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;22064:8;22054:6;:19;;;;:::i;:::-;22032;:41;;;;21777:304:::0;:::o;16331:30::-;;;;:::o;19884:112::-;769:12;:10;:12::i;:::-;758:23;;:7;:5;:7::i;:::-;:23;;;750:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19955:4:::1;19939:13;;:20;;;;;;;;;;;;;;;;;;19984:4;19970:11;;:18;;;;;;;;;;;;;;;;;;19884:112::o:0;623:87::-;669:7;696:6;;;;;;;;;;;689:13;;623:87;:::o;16436:31::-;;;;:::o;23061:100::-;769:12;:10;:12::i;:::-;758:23;;:7;:5;:7::i;:::-;:23;;;750:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23146:7:::1;23132:11;;:21;;;;;;;;;;;;;;;;;;23061:100:::0;:::o;22223:180::-;769:12;:10;:12::i;:::-;758:23;;:7;:5;:7::i;:::-;:23;;;750:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22344:11:::1;;;;;;;;;;;22309:47;;22328:14;22309:47;;;;;;;;;;;;22381:14;22367:11;;:28;;;;;;;;;;;;;;;;;;22223:180:::0;:::o;2927:104::-;2983:13;3016:7;3009:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2927:104;:::o;24004:306::-;769:12;:10;:12::i;:::-;758:23;;:7;:5;:7::i;:::-;:23;;;750:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24150:13:::1;;;;;;;;;;;24142:21;;:4;:21;;::::0;24120:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;24261:41;24290:4;24296:5;24261:28;:41::i;:::-;24004:306:::0;;:::o;16368:24::-;;;;:::o;16548:27::-;;;;:::o;16474:25::-;;;;:::o;4836:475::-;4954:4;4971:24;4998:11;:25;5010:12;:10;:12::i;:::-;4998:25;;;;;;;;;;;;;;;:34;5024:7;4998:34;;;;;;;;;;;;;;;;4971:61;;5085:15;5065:16;:35;;5043:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;5201:67;5210:12;:10;:12::i;:::-;5224:7;5252:15;5233:16;:34;5201:8;:67::i;:::-;5299:4;5292:11;;;4836:475;;;;:::o;3407:200::-;3518:4;3535:42;3545:12;:10;:12::i;:::-;3559:9;3570:6;3535:9;:42::i;:::-;3595:4;3588:11;;3407:200;;;;:::o;20571:1020::-;20655:18;20729:135;20893:22;;;;;;;;;;;;;;;;;20883:33;;;;;;20945:10;;;;;;;;;;;;;;;;;20935:21;;;;;;20975:13;21015:4;20700:335;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;20676:370;;;;;;20655:391;;21059:18;21133:49;21211:23;;;;;;;;;;;;;;;;;21201:34;;;;;;21262:1;21104:175;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;21080:210;;;;;;21059:231;;21303:14;21373:10;21385;21344:52;;;;;;;;;:::i;:::-;;;;;;;;;;;;;21320:87;;;;;;21303:104;;21420:14;21437:26;21447:6;21455:1;21458;21461;21437:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21420:43;;21492:7;:5;:7::i;:::-;21482:17;;:6;:17;;;21474:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;21550:4;21534:13;;:20;;;;;;;;;;;;;;;;;;21579:4;21565:11;;:18;;;;;;;;;;;;;;;;;;20644:947;;;;20571:1020;;;:::o;16814:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;15945:26::-;;;;;;;;;;;;;:::o;19694:182::-;769:12;:10;:12::i;:::-;758:23;;:7;:5;:7::i;:::-;:23;;;750:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19802:3:::1;19778:28;;:12;:28;;::::0;19770:61:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19856:12;19842:11;;:26;;;;;;;;;;;;;;;;;;19694:182:::0;:::o;16176:33::-;;;;;;;;;;;;;:::o;23814:182::-;769:12;:10;:12::i;:::-;758:23;;:7;:5;:7::i;:::-;:23;;;750:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23930:8:::1;23899:19;:28;23919:7;23899:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;23970:7;23954:34;;;23979:8;23954:34;;;;;;:::i;:::-;;;;;;;;23814:182:::0;;:::o;15978:28::-;;;;;;;;;;;;;:::o;24512:481::-;24609:4;769:12;:10;:12::i;:::-;758:23;;:7;:5;:7::i;:::-;:23;;;750:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24683:6:::1;24678:1;24662:13;:11;:13::i;:::-;:17;;;;:::i;:::-;24661:28;;;;:::i;:::-;24648:9;:41;;24626:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;24838:4;24833:1;24817:13;:11;:13::i;:::-;:17;;;;:::i;:::-;24816:26;;;;:::i;:::-;24803:9;:39;;24781:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;24954:9;24933:18;:30;;;;24981:4;24974:11;;24512:481:::0;;;:::o;20004:229::-;769:12;:10;:12::i;:::-;758:23;;:7;:5;:7::i;:::-;:23;;;750:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20125:9:::1;20120:106;20144:7;;:14;;20140:1;:18;20120:106;;;20207:7;20180:12;:24;20193:7;;20201:1;20193:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;20180:24;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;20160:3;;;;;;;20120:106;;;;20004:229:::0;;;:::o;16297:27::-;;;;:::o;16746:59::-;;;;;;;;;;;;;;;;;;;;;;:::o;3615:176::-;3729:7;3756:11;:18;3768:5;3756:18;;;;;;;;;;;;;;;:27;3775:7;3756:27;;;;;;;;;;;;;;;;3749:34;;3615:176;;;;:::o;22798:167::-;769:12;:10;:12::i;:::-;758:23;;:7;:5;:7::i;:::-;:23;;;750:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22953:4:::1;22915:27;:35;22943:6;22915:35;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;22798:167:::0;;:::o;20442:121::-;20494:4;769:12;:10;:12::i;:::-;758:23;;:7;:5;:7::i;:::-;:23;;;750:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20528:5:::1;20511:14;;:22;;;;;;;;;;;;;;;;;;20551:4;20544:11;;20442:121:::0;:::o;16053:33::-;;;;:::o;16584:44::-;;;;;;;;;;;;;;;;;:::o;957:238::-;769:12;:10;:12::i;:::-;758:23;;:7;:5;:7::i;:::-;:23;;;750:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1080:1:::1;1060:22;;:8;:22;;::::0;1038:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1159:28;1178:8;1159:18;:28::i;:::-;957:238:::0;:::o;20241:193::-;769:12;:10;:12::i;:::-;758:23;;:7;:5;:7::i;:::-;:23;;;750:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20317:5:::1;20299:23;;:14;;;;;;;;;;;:23;;::::0;20295:132:::1;;20356:4;20339:14;;:21;;;;;;;;;;;;;;;;;;20295:132;;;20410:5;20393:14;;:22;;;;;;;;;;;;;;;;;;20295:132;20241:193::o:0;16015:31::-;;;;:::o;144:98::-;197:7;224:10;217:17;;144:98;:::o;7103:380::-;7256:1;7239:19;;:5;:19;;;7231:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7337:1;7318:21;;:7;:21;;;7310:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7421:6;7391:11;:18;7403:5;7391:18;;;;;;;;;;;;;;;:27;7410:7;7391:27;;;;;;;;;;;;;;;:36;;;;7459:7;7443:32;;7452:5;7443:32;;;7468:6;7443:32;;;;;;:::i;:::-;;;;;;;;7103:380;;;:::o;25182:4327::-;25330:1;25314:18;;:4;:18;;;25306:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25407:1;25393:16;;:2;:16;;;25385:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;25469:12;:18;25482:4;25469:18;;;;;;;;;;;;;;;;;;;;;;;;;25468:19;25460:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;25529:12;:16;25542:2;25529:16;;;;;;;;;;;;;;;;;;;;;;;;;25528:17;25520:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;25592:1;25582:6;:11;25578:93;;25610:28;25626:4;25632:2;25636:1;25610:15;:28::i;:::-;25653:7;;25578:93;25687:14;;;;;;;;;;;25683:1686;;;25748:7;:5;:7::i;:::-;25740:15;;:4;:15;;;;:49;;;;;25782:7;:5;:7::i;:::-;25776:13;;:2;:13;;;;25740:49;:86;;;;;25824:1;25810:16;;:2;:16;;;;25740:86;:128;;;;;25861:6;25847:21;;:2;:21;;;;25740:128;:158;;;;;25890:8;;;;;;;;;;;25889:9;25740:158;25718:1640;;;25938:13;;;;;;;;;;;25933:223;;26010:19;:25;26030:4;26010:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;26039:19;:23;26059:2;26039:23;;;;;;;;;;;;;;;;;;;;;;;;;26010:52;25976:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;25933:223;26230:25;:31;26256:4;26230:31;;;;;;;;;;;;;;;;;;;;;;;;;:88;;;;;26287:27;:31;26315:2;26287:31;;;;;;;;;;;;;;;;;;;;;;;;;26286:32;26230:88;26204:1139;;;26405:16;;26395:6;:26;;26361:161;;;;;;;;;;;;:::i;:::-;;;;;;;;;26605:19;;26588:13;26598:2;26588:9;:13::i;:::-;26579:6;:22;;;;:::i;:::-;:45;;26545:150;;;;;;;;;;;;:::i;:::-;;;;;;;;;26204:1139;;;26793:25;:29;26819:2;26793:29;;;;;;;;;;;;;;;;;;;;;;;;;:88;;;;;26848:27;:33;26876:4;26848:33;;;;;;;;;;;;;;;;;;;;;;;;;26847:34;26793:88;26767:576;;;26968:16;;26958:6;:26;;26924:162;;;;;;;;;;;;:::i;:::-;;;;;;;;;26767:576;;;27117:27;:31;27145:2;27117:31;;;;;;;;;;;;;;;;;;;;;;;;;27112:231;;27233:19;;27216:13;27226:2;27216:9;:13::i;:::-;27207:6;:22;;;;:::i;:::-;:45;;27173:150;;;;;;;;;;;;:::i;:::-;;;;;;;;;27112:231;26767:576;26204:1139;25718:1640;25683:1686;27422:1;27399:25;;:11;;;;;;;;;;;:25;;;;:92;;;;;27454:11;;;;;;;;;;;27441:35;;;27485:4;27441:50;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27399:92;27381:456;;;27518:10;27544:11;;;;;;;;;;;27531:31;;;27581:4;27604:2;27633:13;;;;;;;;;;;27666:19;;27704:16;;27739:18;;27531:241;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27518:254;;27795:5;27787:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;27503:334;27381:456;27849:28;27880:24;27898:4;27880:9;:24::i;:::-;27849:55;;27915:12;27954:18;;27930:20;:42;;27915:57;;28001:7;:35;;;;;28025:11;;;;;;;;;;;28001:35;:61;;;;;28054:8;;;;;;;;;;;28053:9;28001:61;:107;;;;;28079:25;:29;28105:2;28079:29;;;;;;;;;;;;;;;;;;;;;;;;;28001:107;:150;;;;;28126:19;:25;28146:4;28126:25;;;;;;;;;;;;;;;;;;;;;;;;;28125:26;28001:150;:191;;;;;28169:19;:23;28189:2;28169:23;;;;;;;;;;;;;;;;;;;;;;;;;28168:24;28001:191;27983:319;;;28230:4;28219:8;;:15;;;;;;;;;;;;;;;;;;28249:10;:8;:10::i;:::-;28285:5;28274:8;;:16;;;;;;;;;;;;;;;;;;27983:319;28314:12;28330:8;;;;;;;;;;;28329:9;28314:24;;28440:19;:25;28460:4;28440:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;28469:19;:23;28489:2;28469:23;;;;;;;;;;;;;;;;;;;;;;;;;28440:52;28436:100;;;28519:5;28509:15;;28436:100;28548:12;28653:7;28649:807;;;28705:25;:29;28731:2;28705:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;28754:1;28738:13;;:17;28705:50;28701:606;;;28783:34;28813:3;28783:25;28794:13;;28783:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;28776:41;;28874:13;;28860:10;;28853:4;:17;;;;:::i;:::-;28852:35;;;;:::i;:::-;28836:12;;:51;;;;;;;:::i;:::-;;;;;;;;28956:13;;28936:16;;28929:4;:23;;;;:::i;:::-;28928:41;;;;:::i;:::-;28906:18;;:63;;;;;;;:::i;:::-;;;;;;;;28701:606;;;29031:25;:31;29057:4;29031:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;29081:1;29066:12;;:16;29031:51;29027:280;;;29110:33;29139:3;29110:24;29121:12;;29110:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;29103:40;;29199:12;;29186:9;;29179:4;:16;;;;:::i;:::-;29178:33;;;;:::i;:::-;29162:12;;:49;;;;;;;:::i;:::-;;;;;;;;29279:12;;29260:15;;29253:4;:22;;;;:::i;:::-;29252:39;;;;:::i;:::-;29230:18;;:61;;;;;;;:::i;:::-;;;;;;;;29027:280;28701:606;29334:1;29327:4;:8;29323:91;;;29356:42;29372:4;29386;29393;29356:15;:42::i;:::-;29323:91;29440:4;29430:14;;;;;:::i;:::-;;;28649:807;29468:33;29484:4;29490:2;29494:6;29468:15;:33::i;:::-;25295:4214;;;;25182:4327;;;;:::o;1203:191::-;1277:16;1296:6;;;;;;;;;;;1277:25;;1322:8;1313:6;;:17;;;;;;;;;;;;;;;;;;1377:8;1346:40;;1367:8;1346:40;;;;;;;;;;;;1266:128;1203:191;:::o;24318:186::-;24435:5;24401:25;:31;24427:4;24401:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;24490:5;24456:40;;24484:4;24456:40;;;;;;;;;;;;24318:186;;:::o;5319:770::-;5477:1;5459:20;;:6;:20;;;5451:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5561:1;5540:23;;:9;:23;;;5532:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5616:47;5637:6;5645:9;5656:6;5616:20;:47::i;:::-;5676:21;5700:9;:17;5710:6;5700:17;;;;;;;;;;;;;;;;5676:41;;5767:6;5750:13;:23;;5728:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;5911:6;5895:13;:22;5875:9;:17;5885:6;5875:17;;;;;;;;;;;;;;;:42;;;;5963:6;5939:9;:20;5949:9;5939:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;6004:9;5987:35;;5996:6;5987:35;;;6015:6;5987:35;;;;;;:::i;:::-;;;;;;;;6035:46;6055:6;6063:9;6074:6;6035:19;:46::i;:::-;5440:649;5319:770;;;:::o;30229:928::-;30268:23;30294:24;30312:4;30294:9;:24::i;:::-;30268:50;;30329:25;30378:12;;30357:18;;:33;;;;:::i;:::-;30329:61;;30401:12;30449:1;30430:15;:20;:46;;;;30475:1;30454:17;:22;30430:46;30426:85;;;30493:7;;;;;30426:85;30566:2;30545:18;;:23;;;;:::i;:::-;30527:15;:41;30523:115;;;30624:2;30603:18;;:23;;;;:::i;:::-;30585:41;;30523:115;30650:25;30678:21;30650:49;;30710:33;30727:15;30710:16;:33::i;:::-;30756:18;30777:44;30803:17;30777:21;:25;;:44;;;;:::i;:::-;30756:65;;30832:17;30852:51;30885:17;30852:28;30867:12;;30852:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;30832:71;;30937:1;30916:18;:22;;;;30964:1;30949:12;:16;;;;31000:13;;;;;;;;;;;30992:27;;31027:9;30992:49;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30978:63;;;;;31074:11;;;;;;;;;;;31066:25;;31099:21;31066:83;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31052:97;;;;;30257:900;;;;;;30229:928;:::o;9232:98::-;9290:7;9321:1;9317;:5;;;;:::i;:::-;9310:12;;9232:98;;;;:::o;9338:::-;9396:7;9427:1;9423;:5;;;;:::i;:::-;9416:12;;9338:98;;;;:::o;7491:125::-;;;;:::o;7624:124::-;;;;:::o;29632:589::-;29758:21;29796:1;29782:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29758:40;;29827:4;29809;29814:1;29809:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;29853:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29843:4;29848:1;29843:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;29888:62;29905:4;29920:15;;;;;;;;;;;29938:11;29888:8;:62::i;:::-;29989:15;;;;;;;;;;;:66;;;30070:11;30096:1;30140:4;30167;30187:15;29989:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29687:534;29632:589;:::o;9126:98::-;9184:7;9215:1;9211;:5;;;;:::i;:::-;9204:12;;9126:98;;;;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310: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:126::-;1207:7;1247:42;1240:5;1236:54;1225:65;;1170:126;;;:::o;1302:96::-;1339:7;1368:24;1386:5;1368:24;:::i;:::-;1357:35;;1302:96;;;:::o;1404:122::-;1477:24;1495:5;1477:24;:::i;:::-;1470:5;1467:35;1457:63;;1516:1;1513;1506:12;1457:63;1404:122;:::o;1532:139::-;1578:5;1616:6;1603:20;1594:29;;1632:33;1659:5;1632:33;:::i;:::-;1532:139;;;;:::o;1677:329::-;1736:6;1785:2;1773:9;1764:7;1760:23;1756:32;1753:119;;;1791:79;;:::i;:::-;1753:119;1911:1;1936:53;1981:7;1972:6;1961:9;1957:22;1936:53;:::i;:::-;1926:63;;1882:117;1677:329;;;;:::o;2012:99::-;2064:6;2098:5;2092:12;2082:22;;2012:99;;;:::o;2117:169::-;2201:11;2235:6;2230:3;2223:19;2275:4;2270:3;2266:14;2251:29;;2117:169;;;;:::o;2292:246::-;2373:1;2383:113;2397:6;2394:1;2391:13;2383:113;;;2482:1;2477:3;2473:11;2467:18;2463:1;2458:3;2454:11;2447:39;2419:2;2416:1;2412:10;2407:15;;2383:113;;;2530:1;2521:6;2516:3;2512:16;2505:27;2354:184;2292:246;;;:::o;2544:102::-;2585:6;2636:2;2632:7;2627:2;2620:5;2616:14;2612:28;2602:38;;2544:102;;;:::o;2652:377::-;2740:3;2768:39;2801:5;2768:39;:::i;:::-;2823:71;2887:6;2882:3;2823:71;:::i;:::-;2816:78;;2903:65;2961:6;2956:3;2949:4;2942:5;2938:16;2903:65;:::i;:::-;2993:29;3015:6;2993:29;:::i;:::-;2988:3;2984:39;2977:46;;2744:285;2652:377;;;;:::o;3035:313::-;3148:4;3186:2;3175:9;3171:18;3163:26;;3235:9;3229:4;3225:20;3221:1;3210:9;3206:17;3199:47;3263:78;3336:4;3327:6;3263:78;:::i;:::-;3255:86;;3035:313;;;;:::o;3354:90::-;3388:7;3431:5;3424:13;3417:21;3406:32;;3354:90;;;:::o;3450:109::-;3531:21;3546:5;3531:21;:::i;:::-;3526:3;3519:34;3450:109;;:::o;3565:210::-;3652:4;3690:2;3679:9;3675:18;3667:26;;3703:65;3765:1;3754:9;3750:17;3741:6;3703:65;:::i;:::-;3565:210;;;;:::o;3781:474::-;3849:6;3857;3906:2;3894:9;3885:7;3881:23;3877:32;3874:119;;;3912:79;;:::i;:::-;3874:119;4032:1;4057:53;4102:7;4093:6;4082:9;4078:22;4057:53;:::i;:::-;4047:63;;4003:117;4159:2;4185:53;4230:7;4221:6;4210:9;4206:22;4185:53;:::i;:::-;4175:63;;4130:118;3781:474;;;;;:::o;4261:60::-;4289:3;4310:5;4303:12;;4261:60;;;:::o;4327:142::-;4377:9;4410:53;4428:34;4437:24;4455:5;4437:24;:::i;:::-;4428:34;:::i;:::-;4410:53;:::i;:::-;4397:66;;4327:142;;;:::o;4475:126::-;4525:9;4558:37;4589:5;4558:37;:::i;:::-;4545:50;;4475:126;;;:::o;4607:153::-;4684:9;4717:37;4748:5;4717:37;:::i;:::-;4704:50;;4607:153;;;:::o;4766:185::-;4880:64;4938:5;4880:64;:::i;:::-;4875:3;4868:77;4766:185;;:::o;4957:276::-;5077:4;5115:2;5104:9;5100:18;5092:26;;5128:98;5223:1;5212:9;5208:17;5199:6;5128:98;:::i;:::-;4957:276;;;;:::o;5239:118::-;5326:24;5344:5;5326:24;:::i;:::-;5321:3;5314:37;5239:118;;:::o;5363:222::-;5456:4;5494:2;5483:9;5479:18;5471:26;;5507:71;5575:1;5564:9;5560:17;5551:6;5507:71;:::i;:::-;5363:222;;;;:::o;5591:329::-;5650:6;5699:2;5687:9;5678:7;5674:23;5670:32;5667:119;;;5705:79;;:::i;:::-;5667:119;5825:1;5850:53;5895:7;5886:6;5875:9;5871:22;5850:53;:::i;:::-;5840:63;;5796:117;5591:329;;;;:::o;5926:619::-;6003:6;6011;6019;6068:2;6056:9;6047:7;6043:23;6039:32;6036:119;;;6074:79;;:::i;:::-;6036:119;6194:1;6219:53;6264:7;6255:6;6244:9;6240:22;6219:53;:::i;:::-;6209:63;;6165:117;6321:2;6347:53;6392:7;6383:6;6372:9;6368:22;6347:53;:::i;:::-;6337:63;;6292:118;6449:2;6475:53;6520:7;6511:6;6500:9;6496:22;6475:53;:::i;:::-;6465:63;;6420:118;5926:619;;;;;:::o;6551:86::-;6586:7;6626:4;6619:5;6615:16;6604:27;;6551:86;;;:::o;6643:112::-;6726:22;6742:5;6726:22;:::i;:::-;6721:3;6714:35;6643:112;;:::o;6761:214::-;6850:4;6888:2;6877:9;6873:18;6865:26;;6901:67;6965:1;6954:9;6950:17;6941:6;6901:67;:::i;:::-;6761:214;;;;:::o;6981:118::-;7068:24;7086:5;7068:24;:::i;:::-;7063:3;7056:37;6981:118;;:::o;7105:222::-;7198:4;7236:2;7225:9;7221:18;7213:26;;7249:71;7317:1;7306:9;7302:17;7293:6;7249:71;:::i;:::-;7105:222;;;;:::o;7333:116::-;7403:21;7418:5;7403:21;:::i;:::-;7396:5;7393:32;7383:60;;7439:1;7436;7429:12;7383:60;7333:116;:::o;7455:133::-;7498:5;7536:6;7523:20;7514:29;;7552:30;7576:5;7552:30;:::i;:::-;7455:133;;;;:::o;7594:323::-;7650:6;7699:2;7687:9;7678:7;7674:23;7670:32;7667:119;;;7705:79;;:::i;:::-;7667:119;7825:1;7850:50;7892:7;7883:6;7872:9;7868:22;7850:50;:::i;:::-;7840:60;;7796:114;7594:323;;;;:::o;7923:468::-;7988:6;7996;8045:2;8033:9;8024:7;8020:23;8016:32;8013:119;;;8051:79;;:::i;:::-;8013:119;8171:1;8196:53;8241:7;8232:6;8221:9;8217:22;8196:53;:::i;:::-;8186:63;;8142:117;8298:2;8324:50;8366:7;8357:6;8346:9;8342:22;8324:50;:::i;:::-;8314:60;;8269:115;7923:468;;;;;:::o;8397:118::-;8468:22;8484:5;8468:22;:::i;:::-;8461:5;8458:33;8448:61;;8505:1;8502;8495:12;8448:61;8397:118;:::o;8521:135::-;8565:5;8603:6;8590:20;8581:29;;8619:31;8644:5;8619:31;:::i;:::-;8521:135;;;;:::o;8662:77::-;8699:7;8728:5;8717:16;;8662:77;;;:::o;8745:122::-;8818:24;8836:5;8818:24;:::i;:::-;8811:5;8808:35;8798:63;;8857:1;8854;8847:12;8798:63;8745:122;:::o;8873:139::-;8919:5;8957:6;8944:20;8935:29;;8973:33;9000:5;8973:33;:::i;:::-;8873:139;;;;:::o;9018:615::-;9093:6;9101;9109;9158:2;9146:9;9137:7;9133:23;9129:32;9126:119;;;9164:79;;:::i;:::-;9126:119;9284:1;9309:51;9352:7;9343:6;9332:9;9328:22;9309:51;:::i;:::-;9299:61;;9255:115;9409:2;9435:53;9480:7;9471:6;9460:9;9456:22;9435:53;:::i;:::-;9425:63;;9380:118;9537:2;9563:53;9608:7;9599:6;9588:9;9584:22;9563:53;:::i;:::-;9553:63;;9508:118;9018:615;;;;;:::o;9639:117::-;9748:1;9745;9738:12;9762:117;9871:1;9868;9861:12;9885:117;9994:1;9991;9984:12;10025:568;10098:8;10108:6;10158:3;10151:4;10143:6;10139:17;10135:27;10125:122;;10166:79;;:::i;:::-;10125:122;10279:6;10266:20;10256:30;;10309:18;10301:6;10298:30;10295:117;;;10331:79;;:::i;:::-;10295:117;10445:4;10437:6;10433:17;10421:29;;10499:3;10491:4;10483:6;10479:17;10469:8;10465:32;10462:41;10459:128;;;10506:79;;:::i;:::-;10459:128;10025:568;;;;;:::o;10599:698::-;10691:6;10699;10707;10756:2;10744:9;10735:7;10731:23;10727:32;10724:119;;;10762:79;;:::i;:::-;10724:119;10910:1;10899:9;10895:17;10882:31;10940:18;10932:6;10929:30;10926:117;;;10962:79;;:::i;:::-;10926:117;11075:80;11147:7;11138:6;11127:9;11123:22;11075:80;:::i;:::-;11057:98;;;;10853:312;11204:2;11230:50;11272:7;11263:6;11252:9;11248:22;11230:50;:::i;:::-;11220:60;;11175:115;10599:698;;;;;:::o;11303:474::-;11371:6;11379;11428:2;11416:9;11407:7;11403:23;11399:32;11396:119;;;11434:79;;:::i;:::-;11396:119;11554:1;11579:53;11624:7;11615:6;11604:9;11600:22;11579:53;:::i;:::-;11569:63;;11525:117;11681:2;11707:53;11752:7;11743:6;11732:9;11728:22;11707:53;:::i;:::-;11697:63;;11652:118;11303:474;;;;;:::o;11783:182::-;11923:34;11919:1;11911:6;11907:14;11900:58;11783:182;:::o;11971:366::-;12113:3;12134:67;12198:2;12193:3;12134:67;:::i;:::-;12127:74;;12210:93;12299:3;12210:93;:::i;:::-;12328:2;12323:3;12319:12;12312:19;;11971:366;;;:::o;12343:419::-;12509:4;12547:2;12536:9;12532:18;12524:26;;12596:9;12590:4;12586:20;12582:1;12571:9;12567:17;12560:47;12624:131;12750:4;12624:131;:::i;:::-;12616:139;;12343:419;;;:::o;12768:180::-;12816:77;12813:1;12806:88;12913:4;12910:1;12903:15;12937:4;12934:1;12927:15;12954:191;12994:3;13013:20;13031:1;13013:20;:::i;:::-;13008:25;;13047:20;13065:1;13047:20;:::i;:::-;13042:25;;13090:1;13087;13083:9;13076:16;;13111:3;13108:1;13105:10;13102:36;;;13118:18;;:::i;:::-;13102:36;12954:191;;;;:::o;13151:179::-;13291:31;13287:1;13279:6;13275:14;13268:55;13151:179;:::o;13336:366::-;13478:3;13499:67;13563:2;13558:3;13499:67;:::i;:::-;13492:74;;13575:93;13664:3;13575:93;:::i;:::-;13693:2;13688:3;13684:12;13677:19;;13336:366;;;:::o;13708:419::-;13874:4;13912:2;13901:9;13897:18;13889:26;;13961:9;13955:4;13951:20;13947:1;13936:9;13932:17;13925:47;13989:131;14115:4;13989:131;:::i;:::-;13981:139;;13708:419;;;:::o;14133:180::-;14181:77;14178:1;14171:88;14278:4;14275:1;14268:15;14302:4;14299:1;14292:15;14319:320;14363:6;14400:1;14394:4;14390:12;14380:22;;14447:1;14441:4;14437:12;14468:18;14458:81;;14524:4;14516:6;14512:17;14502:27;;14458:81;14586:2;14578:6;14575:14;14555:18;14552:38;14549:84;;14605:18;;:::i;:::-;14549:84;14370:269;14319:320;;;:::o;14645:410::-;14685:7;14708:20;14726:1;14708:20;:::i;:::-;14703:25;;14742:20;14760:1;14742:20;:::i;:::-;14737:25;;14797:1;14794;14790:9;14819:30;14837:11;14819:30;:::i;:::-;14808:41;;14998:1;14989:7;14985:15;14982:1;14979:22;14959:1;14952:9;14932:83;14909:139;;15028:18;;:::i;:::-;14909:139;14693:362;14645:410;;;;:::o;15061:180::-;15109:77;15106:1;15099:88;15206:4;15203:1;15196:15;15230:4;15227:1;15220:15;15247:185;15287:1;15304:20;15322:1;15304:20;:::i;:::-;15299:25;;15338:20;15356:1;15338:20;:::i;:::-;15333:25;;15377:1;15367:35;;15382:18;;:::i;:::-;15367:35;15424:1;15421;15417:9;15412:14;;15247:185;;;;:::o;15438:230::-;15578:34;15574:1;15566:6;15562:14;15555:58;15647:13;15642:2;15634:6;15630:15;15623:38;15438:230;:::o;15674:366::-;15816:3;15837:67;15901:2;15896:3;15837:67;:::i;:::-;15830:74;;15913:93;16002:3;15913:93;:::i;:::-;16031:2;16026:3;16022:12;16015:19;;15674:366;;;:::o;16046:419::-;16212:4;16250:2;16239:9;16235:18;16227:26;;16299:9;16293:4;16289:20;16285:1;16274:9;16270:17;16263:47;16327:131;16453:4;16327:131;:::i;:::-;16319:139;;16046:419;;;:::o;16471:227::-;16611:34;16607:1;16599:6;16595:14;16588:58;16680:10;16675:2;16667:6;16663:15;16656:35;16471:227;:::o;16704:366::-;16846:3;16867:67;16931:2;16926:3;16867:67;:::i;:::-;16860:74;;16943:93;17032:3;16943:93;:::i;:::-;17061:2;17056:3;17052:12;17045:19;;16704:366;;;:::o;17076:419::-;17242:4;17280:2;17269:9;17265:18;17257:26;;17329:9;17323:4;17319:20;17315:1;17304:9;17300:17;17293:47;17357:131;17483:4;17357:131;:::i;:::-;17349:139;;17076:419;;;:::o;17501:173::-;17641:25;17637:1;17629:6;17625:14;17618:49;17501:173;:::o;17680:366::-;17822:3;17843:67;17907:2;17902:3;17843:67;:::i;:::-;17836:74;;17919:93;18008:3;17919:93;:::i;:::-;18037:2;18032:3;18028:12;18021:19;;17680:366;;;:::o;18052:419::-;18218:4;18256:2;18245:9;18241:18;18233:26;;18305:9;18299:4;18295:20;18291:1;18280:9;18276:17;18269:47;18333:131;18459:4;18333:131;:::i;:::-;18325:139;;18052:419;;;:::o;18477:233::-;18617:34;18613:1;18605:6;18601:14;18594:58;18686:16;18681:2;18673:6;18669:15;18662:41;18477:233;:::o;18716:366::-;18858:3;18879:67;18943:2;18938:3;18879:67;:::i;:::-;18872:74;;18955:93;19044:3;18955:93;:::i;:::-;19073:2;19068:3;19064:12;19057:19;;18716:366;;;:::o;19088:419::-;19254:4;19292:2;19281:9;19277:18;19269:26;;19341:9;19335:4;19331:20;19327:1;19316:9;19312:17;19305:47;19369:131;19495:4;19369:131;:::i;:::-;19361:139;;19088:419;;;:::o;19513:244::-;19653:34;19649:1;19641:6;19637:14;19630:58;19722:27;19717:2;19709:6;19705:15;19698:52;19513:244;:::o;19763:366::-;19905:3;19926:67;19990:2;19985:3;19926:67;:::i;:::-;19919:74;;20002:93;20091:3;20002:93;:::i;:::-;20120:2;20115:3;20111:12;20104:19;;19763:366;;;:::o;20135:419::-;20301:4;20339:2;20328:9;20324:18;20316:26;;20388:9;20382:4;20378:20;20374:1;20363:9;20359:17;20352:47;20416:131;20542:4;20416:131;:::i;:::-;20408:139;;20135:419;;;:::o;20560:224::-;20700:34;20696:1;20688:6;20684:14;20677:58;20769:7;20764:2;20756:6;20752:15;20745:32;20560:224;:::o;20790:366::-;20932:3;20953:67;21017:2;21012:3;20953:67;:::i;:::-;20946:74;;21029:93;21118:3;21029:93;:::i;:::-;21147:2;21142:3;21138:12;21131:19;;20790:366;;;:::o;21162:419::-;21328:4;21366:2;21355:9;21351:18;21343:26;;21415:9;21409:4;21405:20;21401:1;21390:9;21386:17;21379:47;21443:131;21569:4;21443:131;:::i;:::-;21435:139;;21162:419;;;:::o;21587:118::-;21674:24;21692:5;21674:24;:::i;:::-;21669:3;21662:37;21587:118;;:::o;21711:664::-;21916:4;21954:3;21943:9;21939:19;21931:27;;21968:71;22036:1;22025:9;22021:17;22012:6;21968:71;:::i;:::-;22049:72;22117:2;22106:9;22102:18;22093:6;22049:72;:::i;:::-;22131;22199:2;22188:9;22184:18;22175:6;22131:72;:::i;:::-;22213;22281:2;22270:9;22266:18;22257:6;22213:72;:::i;:::-;22295:73;22363:3;22352:9;22348:19;22339:6;22295:73;:::i;:::-;21711:664;;;;;;;;:::o;22381:442::-;22530:4;22568:2;22557:9;22553:18;22545:26;;22581:71;22649:1;22638:9;22634:17;22625:6;22581:71;:::i;:::-;22662:72;22730:2;22719:9;22715:18;22706:6;22662:72;:::i;:::-;22744;22812:2;22801:9;22797:18;22788:6;22744:72;:::i;:::-;22381:442;;;;;;:::o;22829:148::-;22931:11;22968:3;22953:18;;22829:148;;;;:::o;22983:214::-;23123:66;23119:1;23111:6;23107:14;23100:90;22983:214;:::o;23203:400::-;23363:3;23384:84;23466:1;23461:3;23384:84;:::i;:::-;23377:91;;23477:93;23566:3;23477:93;:::i;:::-;23595:1;23590:3;23586:11;23579:18;;23203:400;;;:::o;23609:79::-;23648:7;23677:5;23666:16;;23609:79;;;:::o;23694:157::-;23799:45;23819:24;23837:5;23819:24;:::i;:::-;23799:45;:::i;:::-;23794:3;23787:58;23694:157;;:::o;23857:663::-;24098:3;24120:148;24264:3;24120:148;:::i;:::-;24113:155;;24278:75;24349:3;24340:6;24278:75;:::i;:::-;24378:2;24373:3;24369:12;24362:19;;24391:75;24462:3;24453:6;24391:75;:::i;:::-;24491:2;24486:3;24482:12;24475:19;;24511:3;24504:10;;23857:663;;;;;:::o;24526:545::-;24699:4;24737:3;24726:9;24722:19;24714:27;;24751:71;24819:1;24808:9;24804:17;24795:6;24751:71;:::i;:::-;24832:68;24896:2;24885:9;24881:18;24872:6;24832:68;:::i;:::-;24910:72;24978:2;24967:9;24963:18;24954:6;24910:72;:::i;:::-;24992;25060:2;25049:9;25045:18;25036:6;24992:72;:::i;:::-;24526:545;;;;;;;:::o;25077:167::-;25217:19;25213:1;25205:6;25201:14;25194:43;25077:167;:::o;25250:366::-;25392:3;25413:67;25477:2;25472:3;25413:67;:::i;:::-;25406:74;;25489:93;25578:3;25489:93;:::i;:::-;25607:2;25602:3;25598:12;25591:19;;25250:366;;;:::o;25622:419::-;25788:4;25826:2;25815:9;25811:18;25803:26;;25875:9;25869:4;25865:20;25861:1;25850:9;25846:17;25839:47;25903:131;26029:4;25903:131;:::i;:::-;25895:139;;25622:419;;;:::o;26047:170::-;26187:22;26183:1;26175:6;26171:14;26164:46;26047:170;:::o;26223:366::-;26365:3;26386:67;26450:2;26445:3;26386:67;:::i;:::-;26379:74;;26462:93;26551:3;26462:93;:::i;:::-;26580:2;26575:3;26571:12;26564:19;;26223:366;;;:::o;26595:419::-;26761:4;26799:2;26788:9;26784:18;26776:26;;26848:9;26842:4;26838:20;26834:1;26823:9;26819:17;26812:47;26876:131;27002:4;26876:131;:::i;:::-;26868:139;;26595:419;;;:::o;27020:240::-;27160:34;27156:1;27148:6;27144:14;27137:58;27229:23;27224:2;27216:6;27212:15;27205:48;27020:240;:::o;27266:366::-;27408:3;27429:67;27493:2;27488:3;27429:67;:::i;:::-;27422:74;;27505:93;27594:3;27505:93;:::i;:::-;27623:2;27618:3;27614:12;27607:19;;27266:366;;;:::o;27638:419::-;27804:4;27842:2;27831:9;27827:18;27819:26;;27891:9;27885:4;27881:20;27877:1;27866:9;27862:17;27855:47;27919:131;28045:4;27919:131;:::i;:::-;27911:139;;27638:419;;;:::o;28063:239::-;28203:34;28199:1;28191:6;28187:14;28180:58;28272:22;28267:2;28259:6;28255:15;28248:47;28063:239;:::o;28308:366::-;28450:3;28471:67;28535:2;28530:3;28471:67;:::i;:::-;28464:74;;28547:93;28636:3;28547:93;:::i;:::-;28665:2;28660:3;28656:12;28649:19;;28308:366;;;:::o;28680:419::-;28846:4;28884:2;28873:9;28869:18;28861:26;;28933:9;28927:4;28923:20;28919:1;28908:9;28904:17;28897:47;28961:131;29087:4;28961:131;:::i;:::-;28953:139;;28680:419;;;:::o;29105:180::-;29153:77;29150:1;29143:88;29250:4;29247:1;29240:15;29274:4;29271:1;29264:15;29291:225;29431:34;29427:1;29419:6;29415:14;29408:58;29500:8;29495:2;29487:6;29483:15;29476:33;29291:225;:::o;29522:366::-;29664:3;29685:67;29749:2;29744:3;29685:67;:::i;:::-;29678:74;;29761:93;29850:3;29761:93;:::i;:::-;29879:2;29874:3;29870:12;29863:19;;29522:366;;;:::o;29894:419::-;30060:4;30098:2;30087:9;30083:18;30075:26;;30147:9;30141:4;30137:20;30133:1;30122:9;30118:17;30111:47;30175:131;30301:4;30175:131;:::i;:::-;30167:139;;29894:419;;;:::o;30319:223::-;30459:34;30455:1;30447:6;30443:14;30436:58;30528:6;30523:2;30515:6;30511:15;30504:31;30319:223;:::o;30548:366::-;30690:3;30711:67;30775:2;30770:3;30711:67;:::i;:::-;30704:74;;30787:93;30876:3;30787:93;:::i;:::-;30905:2;30900:3;30896:12;30889:19;;30548:366;;;:::o;30920:419::-;31086:4;31124:2;31113:9;31109:18;31101:26;;31173:9;31167:4;31163:20;31159:1;31148:9;31144:17;31137:47;31201:131;31327:4;31201:131;:::i;:::-;31193:139;;30920:419;;;:::o;31345:221::-;31485:34;31481:1;31473:6;31469:14;31462:58;31554:4;31549:2;31541:6;31537:15;31530:29;31345:221;:::o;31572:366::-;31714:3;31735:67;31799:2;31794:3;31735:67;:::i;:::-;31728:74;;31811:93;31900:3;31811:93;:::i;:::-;31929:2;31924:3;31920:12;31913:19;;31572:366;;;:::o;31944:419::-;32110:4;32148:2;32137:9;32133:18;32125:26;;32197:9;32191:4;32187:20;32183:1;32172:9;32168:17;32161:47;32225:131;32351:4;32225:131;:::i;:::-;32217:139;;31944:419;;;:::o;32369:224::-;32509:34;32505:1;32497:6;32493:14;32486:58;32578:7;32573:2;32565:6;32561:15;32554:32;32369:224;:::o;32599:366::-;32741:3;32762:67;32826:2;32821:3;32762:67;:::i;:::-;32755:74;;32838:93;32927:3;32838:93;:::i;:::-;32956:2;32951:3;32947:12;32940:19;;32599:366;;;:::o;32971:419::-;33137:4;33175:2;33164:9;33160:18;33152:26;;33224:9;33218:4;33214:20;33210:1;33199:9;33195:17;33188:47;33252:131;33378:4;33252:131;:::i;:::-;33244:139;;32971:419;;;:::o;33396:222::-;33536:34;33532:1;33524:6;33520:14;33513:58;33605:5;33600:2;33592:6;33588:15;33581:30;33396:222;:::o;33624:366::-;33766:3;33787:67;33851:2;33846:3;33787:67;:::i;:::-;33780:74;;33863:93;33952:3;33863:93;:::i;:::-;33981:2;33976:3;33972:12;33965:19;;33624:366;;;:::o;33996:419::-;34162:4;34200:2;34189:9;34185:18;34177:26;;34249:9;34243:4;34239:20;34235:1;34224:9;34220:17;34213:47;34277:131;34403:4;34277:131;:::i;:::-;34269:139;;33996:419;;;:::o;34421:167::-;34561:19;34557:1;34549:6;34545:14;34538:43;34421:167;:::o;34594:366::-;34736:3;34757:67;34821:2;34816:3;34757:67;:::i;:::-;34750:74;;34833:93;34922:3;34833:93;:::i;:::-;34951:2;34946:3;34942:12;34935:19;;34594:366;;;:::o;34966:419::-;35132:4;35170:2;35159:9;35155:18;35147:26;;35219:9;35213:4;35209:20;35205:1;35194:9;35190:17;35183:47;35247:131;35373:4;35247:131;:::i;:::-;35239:139;;34966:419;;;:::o;35391:165::-;35531:17;35527:1;35519:6;35515:14;35508:41;35391:165;:::o;35562:366::-;35704:3;35725:67;35789:2;35784:3;35725:67;:::i;:::-;35718:74;;35801:93;35890:3;35801:93;:::i;:::-;35919:2;35914:3;35910:12;35903:19;;35562:366;;;:::o;35934:419::-;36100:4;36138:2;36127:9;36123:18;36115:26;;36187:9;36181:4;36177:20;36173:1;36162:9;36158:17;36151:47;36215:131;36341:4;36215:131;:::i;:::-;36207:139;;35934:419;;;:::o;36359:172::-;36499:24;36495:1;36487:6;36483:14;36476:48;36359:172;:::o;36537:366::-;36679:3;36700:67;36764:2;36759:3;36700:67;:::i;:::-;36693:74;;36776:93;36865:3;36776:93;:::i;:::-;36894:2;36889:3;36885:12;36878:19;;36537:366;;;:::o;36909:419::-;37075:4;37113:2;37102:9;37098:18;37090:26;;37162:9;37156:4;37152:20;37148:1;37137:9;37133:17;37126:47;37190:131;37316:4;37190:131;:::i;:::-;37182:139;;36909:419;;;:::o;37334:236::-;37474:34;37470:1;37462:6;37458:14;37451:58;37543:19;37538:2;37530:6;37526:15;37519:44;37334:236;:::o;37576:366::-;37718:3;37739:67;37803:2;37798:3;37739:67;:::i;:::-;37732:74;;37815:93;37904:3;37815:93;:::i;:::-;37933:2;37928:3;37924:12;37917:19;;37576:366;;;:::o;37948:419::-;38114:4;38152:2;38141:9;38137:18;38129:26;;38201:9;38195:4;38191:20;38187:1;38176:9;38172:17;38165:47;38229:131;38355:4;38229:131;:::i;:::-;38221:139;;37948:419;;;:::o;38373:169::-;38513:21;38509:1;38501:6;38497:14;38490:45;38373:169;:::o;38548:366::-;38690:3;38711:67;38775:2;38770:3;38711:67;:::i;:::-;38704:74;;38787:93;38876:3;38787:93;:::i;:::-;38905:2;38900:3;38896:12;38889:19;;38548:366;;;:::o;38920:419::-;39086:4;39124:2;39113:9;39109:18;39101:26;;39173:9;39167:4;39163:20;39159:1;39148:9;39144:17;39137:47;39201:131;39327:4;39201:131;:::i;:::-;39193:139;;38920:419;;;:::o;39345:237::-;39485:34;39481:1;39473:6;39469:14;39462:58;39554:20;39549:2;39541:6;39537:15;39530:45;39345:237;:::o;39588:366::-;39730:3;39751:67;39815:2;39810:3;39751:67;:::i;:::-;39744:74;;39827:93;39916:3;39827:93;:::i;:::-;39945:2;39940:3;39936:12;39929:19;;39588:366;;;:::o;39960:419::-;40126:4;40164:2;40153:9;40149:18;40141:26;;40213:9;40207:4;40203:20;40199:1;40188:9;40184:17;40177:47;40241:131;40367:4;40241:131;:::i;:::-;40233:139;;39960:419;;;:::o;40385:137::-;40439:5;40470:6;40464:13;40455:22;;40486:30;40510:5;40486:30;:::i;:::-;40385:137;;;;:::o;40528:345::-;40595:6;40644:2;40632:9;40623:7;40619:23;40615:32;40612:119;;;40650:79;;:::i;:::-;40612:119;40770:1;40795:61;40848:7;40839:6;40828:9;40824:22;40795:61;:::i;:::-;40785:71;;40741:125;40528:345;;;;:::o;40879:775::-;41112:4;41150:3;41139:9;41135:19;41127:27;;41164:71;41232:1;41221:9;41217:17;41208:6;41164:71;:::i;:::-;41245:72;41313:2;41302:9;41298:18;41289:6;41245:72;:::i;:::-;41327;41395:2;41384:9;41380:18;41371:6;41327:72;:::i;:::-;41409;41477:2;41466:9;41462:18;41453:6;41409:72;:::i;:::-;41491:73;41559:3;41548:9;41544:19;41535:6;41491:73;:::i;:::-;41574;41642:3;41631:9;41627:19;41618:6;41574:73;:::i;:::-;40879:775;;;;;;;;;:::o;41660:170::-;41800:22;41796:1;41788:6;41784:14;41777:46;41660:170;:::o;41836:366::-;41978:3;41999:67;42063:2;42058:3;41999:67;:::i;:::-;41992:74;;42075:93;42164:3;42075:93;:::i;:::-;42193:2;42188:3;42184:12;42177:19;;41836:366;;;:::o;42208:419::-;42374:4;42412:2;42401:9;42397:18;42389:26;;42461:9;42455:4;42451:20;42447:1;42436:9;42432:17;42425:47;42489:131;42615:4;42489:131;:::i;:::-;42481:139;;42208:419;;;:::o;42633:194::-;42673:4;42693:20;42711:1;42693:20;:::i;:::-;42688:25;;42727:20;42745:1;42727:20;:::i;:::-;42722:25;;42771:1;42768;42764:9;42756:17;;42795:1;42789:4;42786:11;42783:37;;;42800:18;;:::i;:::-;42783:37;42633:194;;;;:::o;42833:225::-;42973:34;42969:1;42961:6;42957:14;42950:58;43042:8;43037:2;43029:6;43025:15;43018:33;42833:225;:::o;43064:366::-;43206:3;43227:67;43291:2;43286:3;43227:67;:::i;:::-;43220:74;;43303:93;43392:3;43303:93;:::i;:::-;43421:2;43416:3;43412:12;43405:19;;43064:366;;;:::o;43436:419::-;43602:4;43640:2;43629:9;43625:18;43617:26;;43689:9;43683:4;43679:20;43675:1;43664:9;43660:17;43653:47;43717:131;43843:4;43717:131;:::i;:::-;43709:139;;43436:419;;;:::o;43861:147::-;43962:11;43999:3;43984:18;;43861:147;;;;:::o;44014:114::-;;:::o;44134:398::-;44293:3;44314:83;44395:1;44390:3;44314:83;:::i;:::-;44307:90;;44406:93;44495:3;44406:93;:::i;:::-;44524:1;44519:3;44515:11;44508:18;;44134:398;;;:::o;44538:379::-;44722:3;44744:147;44887:3;44744:147;:::i;:::-;44737:154;;44908:3;44901:10;;44538:379;;;:::o;44923:180::-;44971:77;44968:1;44961:88;45068:4;45065:1;45058:15;45092:4;45089:1;45082:15;45109:143;45166:5;45197:6;45191:13;45182:22;;45213:33;45240:5;45213:33;:::i;:::-;45109:143;;;;:::o;45258:351::-;45328:6;45377:2;45365:9;45356:7;45352:23;45348:32;45345:119;;;45383:79;;:::i;:::-;45345:119;45503:1;45528:64;45584:7;45575:6;45564:9;45560:22;45528:64;:::i;:::-;45518:74;;45474:128;45258:351;;;;:::o;45615:85::-;45660:7;45689:5;45678:16;;45615:85;;;:::o;45706:158::-;45764:9;45797:61;45815:42;45824:32;45850:5;45824:32;:::i;:::-;45815:42;:::i;:::-;45797:61;:::i;:::-;45784:74;;45706:158;;;:::o;45870:147::-;45965:45;46004:5;45965:45;:::i;:::-;45960:3;45953:58;45870:147;;:::o;46023:114::-;46090:6;46124:5;46118:12;46108:22;;46023:114;;;:::o;46143:184::-;46242:11;46276:6;46271:3;46264:19;46316:4;46311:3;46307:14;46292:29;;46143:184;;;;:::o;46333:132::-;46400:4;46423:3;46415:11;;46453:4;46448:3;46444:14;46436:22;;46333:132;;;:::o;46471:108::-;46548:24;46566:5;46548:24;:::i;:::-;46543:3;46536:37;46471:108;;:::o;46585:179::-;46654:10;46675:46;46717:3;46709:6;46675:46;:::i;:::-;46753:4;46748:3;46744:14;46730:28;;46585:179;;;;:::o;46770:113::-;46840:4;46872;46867:3;46863:14;46855:22;;46770:113;;;:::o;46919:732::-;47038:3;47067:54;47115:5;47067:54;:::i;:::-;47137:86;47216:6;47211:3;47137:86;:::i;:::-;47130:93;;47247:56;47297:5;47247:56;:::i;:::-;47326:7;47357:1;47342:284;47367:6;47364:1;47361:13;47342:284;;;47443:6;47437:13;47470:63;47529:3;47514:13;47470:63;:::i;:::-;47463:70;;47556:60;47609:6;47556:60;:::i;:::-;47546:70;;47402:224;47389:1;47386;47382:9;47377:14;;47342:284;;;47346:14;47642:3;47635:10;;47043:608;;;46919:732;;;;:::o;47657:831::-;47920:4;47958:3;47947:9;47943:19;47935:27;;47972:71;48040:1;48029:9;48025:17;48016:6;47972:71;:::i;:::-;48053:80;48129:2;48118:9;48114:18;48105:6;48053:80;:::i;:::-;48180:9;48174:4;48170:20;48165:2;48154:9;48150:18;48143:48;48208:108;48311:4;48302:6;48208:108;:::i;:::-;48200:116;;48326:72;48394:2;48383:9;48379:18;48370:6;48326:72;:::i;:::-;48408:73;48476:3;48465:9;48461:19;48452:6;48408:73;:::i;:::-;47657:831;;;;;;;;:::o

Swarm Source

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