ETH Price: $3,099.41 (+0.37%)

Token

Diamond Doge (DDOGE)
 

Overview

Max Total Supply

100,000,000 DDOGE

Holders

45

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
142,474.82 DDOGE

Value
$0.00
0x40f412e2ca363c3b45d0f498c333d445ad42e118
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:
DIAMONDDOGE

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

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

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

// Dex Factory contract interface
interface IDexFactory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}

// Dex Router contract interface
interface IDexRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

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

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

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _owner = _msgSender();
        emit OwnershipTransferred(address(0), _owner);
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = payable(address(0));
    }

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

contract DIAMONDDOGE is Context, IERC20, Ownable {
    using SafeMath for uint256;

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

    mapping(address => bool) public isExcludedFromFee;
    mapping(address => bool) public isExcludedFromMaxTxn;
    mapping(address => bool) public isExcludedFromMaxHolding;
    mapping(address => bool) public isBot;

    string private _name = "Diamond Doge";
    string private _symbol = "DDOGE";
    uint8 private _decimals = 9;
    uint256 private _totalSupply = 100_000_000 * 1e9;

    address private constant DEAD = address(0xdead);
    address private constant ZERO = address(0);
    IDexRouter public dexRouter;
    address public dexPair;
    address public marketingWallet;
    address public NFTRewardWallet;
    address public liquidityReceiverWallet;

    uint256 public minTokenToSwap = _totalSupply.div(1e5); // this amount will trigger swap and distribute
    uint256 public maxHoldLimit = _totalSupply; // this is the max wallet holding limit
    uint256 public maxTxnLimit = _totalSupply; // this is the max transaction limit
    uint256 public percentDivider = 1000;
    uint256 public snipingTime = 0 seconds;
    uint256 public launchedAt;

    bool public distributeAndLiquifyStatus; // should be true to turn on to liquidate the pool
    bool public feesStatus = true; // enable by default
    bool public trading; // once enable can't be disable afterwards

    uint256 public liquidityFeeOnBuying = 0; // 0% will be added to the liquidity
    uint256 public marketingFeeOnBuying = 20; // 2% will be added to the marketing address
    uint256 public NFTRewardFeeOnBuying = 20; // 2% will be added to the NFT rewards address

    uint256 public liquidityFeeOnSelling = 0; // 0% will be added to the liquidity
    uint256 public marketingFeeOnSelling = 20; // 2% will be added to the marketing address
    uint256 public NFTRewardFeeOnSelling = 20; // 2% will be added to the NFT rewards address

    uint256 liquidityFeeCounter = 0;
    uint256 marketingFeeCounter = 0;
    uint256 NFTRewardFeeCounter = 0;

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    constructor() {
        _balances[owner()] = _totalSupply;
        liquidityReceiverWallet = address(0);
        marketingWallet = address(0x00377196acb768D1b9A845c359b7403e2a026151);
        NFTRewardWallet = address(0xC3c44f4e0DE9073457744C828f6637816352D2C4);

        IDexRouter _dexRouter = IDexRouter(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        // Create a dex pair for this new ERC20
        address _dexPair = IDexFactory(_dexRouter.factory()).createPair(
            address(this),
            _dexRouter.WETH()
        );
        dexPair = _dexPair;

        // set the rest of the contract variables
        dexRouter = _dexRouter;

        //exclude owner and this contract from fee
        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;

        //exclude owner and this contract from max Txn
        isExcludedFromMaxTxn[owner()] = true;
        isExcludedFromMaxTxn[address(this)] = true;

        //exclude owner and this contract from max hold limit
        isExcludedFromMaxHolding[owner()] = true;
        isExcludedFromMaxHolding[address(this)] = true;
        isExcludedFromMaxHolding[dexPair] = true;
        isExcludedFromMaxHolding[marketingWallet] = true;
        isExcludedFromMaxHolding[NFTRewardWallet] = true;

        emit Transfer(address(0), owner(), _totalSupply);
    }

    //to receive ETH from dexRouter when swapping
    receive() external payable {}

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

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

    function decimals() public view returns (uint8) {
        return _decimals;
    }

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "Transfer amount exceeds allowance"
            )
        );
        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].sub(
                subtractedValue,
                "Decreased allowance or below zero"
            )
        );
        return true;
    }

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

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

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

    function removeBots(address account)
        external
        onlyOwner
    {
        isBot[account] = false;
    }

    function setMinTokenToSwap(uint256 _amount) external onlyOwner {
        require(_amount > 0,"Can't be 0");
        minTokenToSwap = _amount;
    }

    function setMaxHoldLimit(uint256 _amount) external onlyOwner {
        maxHoldLimit = _amount;
    }

    function setMaxTxnLimit(uint256 _amount) external onlyOwner {
        maxTxnLimit = _amount;
    }

    function setBuyFeePercent(uint256 _lwFee, uint256 _marketingFee, uint256 _NFTRewardFee)
        external
        onlyOwner
    {
        marketingFeeOnBuying = _lwFee;
        NFTRewardFeeOnBuying = _NFTRewardFee;
        liquidityFeeOnBuying = _marketingFee;
        require(
            _lwFee.add(_marketingFee).add(_NFTRewardFee) <= percentDivider.div(10),
            "Can't be more than 10%"
        );
    }

    function setSellFeePercent(uint256 _lwFee, uint256 _marketingFee, uint256 _NFTRewardFee)
        external
        onlyOwner
    {
        marketingFeeOnSelling = _lwFee;
        NFTRewardFeeOnSelling = _NFTRewardFee;
        liquidityFeeOnSelling = _marketingFee;
        require(
            _lwFee.add(_marketingFee).add(_NFTRewardFee) <= percentDivider.div(10),
            "Can't be more than 10%"
        );
    }

    function setDistributionStatus(bool _value) public onlyOwner {
        distributeAndLiquifyStatus = _value;
    }

    function enableOrDisableFees(bool _value) external onlyOwner {
        feesStatus = _value;
    }

    function removeStuckEth(address _receiver) public onlyOwner {
        payable(_receiver).transfer(address(this).balance);
    }

    function updateAddresses(address _marketingWallet, address _NFTRewardWallet, address _liquidityReceiverWallet) external onlyOwner {
        marketingWallet = _marketingWallet;
        NFTRewardWallet = _NFTRewardWallet;
        liquidityReceiverWallet = _liquidityReceiverWallet;
    }

    function enableTrading() external onlyOwner {
        require(!trading, "Already enabled");
        trading = true;
        feesStatus = true;
        distributeAndLiquifyStatus = true;
        launchedAt = block.timestamp;
    }

    function totalBuyFeePerTx(uint256 amount) public view returns (uint256) {
        uint256 fee = amount.mul(marketingFeeOnBuying.add(liquidityFeeOnBuying).add(NFTRewardFeeOnBuying)).div(
            percentDivider
        );
        return fee;
    }

    function totalSellFeePerTx(uint256 amount) public view returns (uint256) {
        uint256 fee = amount
            .mul(marketingFeeOnSelling.add(liquidityFeeOnSelling).add(NFTRewardFeeOnSelling))
            .div(percentDivider);
        return fee;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "Approve from the zero address");
        require(spender != address(0), "Approve to the zero address");

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "Transfer from the zero address");
        require(to != address(0), "Transfer to the zero address");
        require(amount > 0, "Amount must be greater than zero");
        require(!isBot[from], "Bot detected");

        if (!isExcludedFromMaxTxn[from] && !isExcludedFromMaxTxn[to]) {
            require(amount <= maxTxnLimit, "Max txn limit exceeds");

            // trading disable till launch
            if (!trading) {
                require(
                    dexPair != from && dexPair != to,
                    "Trading is disabled"
                );
            }
            // antibot
            if (
                block.timestamp < launchedAt + snipingTime &&
                from != address(dexRouter)
            ) {
                if (dexPair == from) {
                    isBot[to] = true;
                } else if (dexPair == to) {
                    isBot[from] = true;
                }
            }
        }

        if (!isExcludedFromMaxHolding[to]) {
            require(
                balanceOf(to).add(amount) <= maxHoldLimit,
                "Max hold limit exceeds"
            );
        }

        // swap and liquify
        distributeAndLiquify(from, to);

        //indicates if fee should be deducted from transfer
        bool takeFee = true;

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

        //transfer amount, it will take tax, burn, liquidity fee
        _tokenTransfer(from, to, amount, takeFee);
    }

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (dexPair == sender && takeFee) {
            uint256 allFee = totalBuyFeePerTx(amount);
            uint256 tTransferAmount = amount.sub(allFee);
            _balances[sender] = _balances[sender].sub(amount,"Insufficient balance");
            _balances[recipient] = _balances[recipient].add(tTransferAmount);

            emit Transfer(sender, recipient, tTransferAmount);
            takeTokenFee(sender, allFee);
            setFeeCountersOnBuying(amount);
        } else if (dexPair == recipient && takeFee) {
            uint256 allFee = totalSellFeePerTx(amount);
            uint256 tTransferAmount = amount.sub(allFee);
            _balances[sender] = _balances[sender].sub(amount,"Insufficient balance");
            _balances[recipient] = _balances[recipient].add(tTransferAmount);

            emit Transfer(sender, recipient, tTransferAmount);
            takeTokenFee(sender, allFee);
            setFeeCountersOnSelling(amount);
        } else {
            _balances[sender] = _balances[sender].sub(amount,"Insufficient balance");
            _balances[recipient] = _balances[recipient].add(amount);

            emit Transfer(sender, recipient, amount);
        }
    }

    function takeTokenFee(address sender, uint256 amount) private {
        _balances[address(this)] = _balances[address(this)].add(amount);

        emit Transfer(sender, address(this), amount);
    }

    function setFeeCountersOnBuying(uint256 amount) private {
        liquidityFeeCounter += amount.mul(liquidityFeeOnBuying).div(
            percentDivider
        );
        marketingFeeCounter += amount.mul(marketingFeeOnBuying).div(percentDivider);
        NFTRewardFeeCounter += amount.mul(NFTRewardFeeOnBuying).div(percentDivider);
    }

    function setFeeCountersOnSelling(uint256 amount) private {
        liquidityFeeCounter += amount.mul(liquidityFeeOnSelling).div(
            percentDivider
        );
        marketingFeeCounter += amount.mul(marketingFeeOnSelling).div(percentDivider);
        NFTRewardFeeCounter += amount.mul(NFTRewardFeeOnSelling).div(percentDivider);
    }

    function distributeAndLiquify(address from, address to) private {
        // is the token balance of this contract address over the min number of
        // tokens that we need to initiate a swap + liquidity lock?
        // also, don't get caught in a circular liquidity event.
        // also, don't swap & liquify if sender is Dex pair.
        uint256 contractTokenBalance = balanceOf(address(this));

        bool shouldSell = contractTokenBalance >= minTokenToSwap;

        if (
            shouldSell &&
            from != dexPair &&
            distributeAndLiquifyStatus &&
            !(from == address(this) && to == address(dexPair)) // swap 1 time
        ) {
            // approve contract
            _approve(address(this), address(dexRouter), contractTokenBalance);

            uint256 halfLiquidity = liquidityFeeCounter.div(2);
            uint256 otherHalfLiquidity = liquidityFeeCounter.sub(halfLiquidity);

            uint256 tokenAmountToBeSwapped = contractTokenBalance.sub(
                otherHalfLiquidity
            );

            uint256 balanceBefore = address(this).balance;

            // now is to lock into liquidty pool
            Utils.swapTokensForEth(address(dexRouter), tokenAmountToBeSwapped);

            uint256 deltaBalance = address(this).balance.sub(balanceBefore);
            uint256 ethToBeAddedToLiquidity = deltaBalance
                .mul(halfLiquidity)
                .div(tokenAmountToBeSwapped);
            uint256 ethFormarketing = deltaBalance.mul(marketingFeeCounter).div(
                tokenAmountToBeSwapped
            );
            uint256 ethForNFTReward = deltaBalance.sub(ethToBeAddedToLiquidity).sub(
                ethFormarketing
            );

            // add liquidity to Dex
            if (ethToBeAddedToLiquidity > 0) {
                Utils.addLiquidity(
                    address(dexRouter),
                    liquidityReceiverWallet,
                    otherHalfLiquidity,
                    ethToBeAddedToLiquidity
                );

                emit SwapAndLiquify(
                    halfLiquidity,
                    ethToBeAddedToLiquidity,
                    otherHalfLiquidity
                );
            }

            // sending eth to marketing wallet
            if (ethFormarketing > 0) payable(marketingWallet).transfer(ethFormarketing);

            // sending eth to NFT rewards wallet
            if (ethForNFTReward > 0) payable(NFTRewardWallet).transfer(ethForNFTReward);

            // Reset all fee counters
            liquidityFeeCounter = 0;
            marketingFeeCounter = 0;
            NFTRewardFeeCounter = 0;
        }
    }
}

// Library for doing a swap on Dex
library Utils {
    using SafeMath for uint256;

    function swapTokensForEth(address routerAddress, uint256 tokenAmount)
        internal
    {
        IDexRouter dexRouter = IDexRouter(routerAddress);

        // generate the Dex pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

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

    function addLiquidity(
        address routerAddress,
        address owner,
        uint256 tokenAmount,
        uint256 ethAmount
    ) internal {
        IDexRouter dexRouter = IDexRouter(routerAddress);

        // add the liquidity
        dexRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner,
            block.timestamp + 300
        );
    }
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"NFTRewardFeeOnBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NFTRewardFeeOnSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NFTRewardWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributeAndLiquifyStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"enableOrDisableFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feesStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromMaxHolding","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromMaxTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromMaxHolding","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromMaxTxn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeOnBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeOnSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityReceiverWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHoldLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxnLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minTokenToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentDivider","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"name":"removeStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lwFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_NFTRewardFee","type":"uint256"}],"name":"setBuyFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"setDistributionStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxHoldLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxTxnLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMinTokenToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lwFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_NFTRewardFee","type":"uint256"}],"name":"setSellFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snipingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"totalBuyFeePerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"totalSellFeePerTx","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":"trading","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":[{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_NFTRewardWallet","type":"address"},{"internalType":"address","name":"_liquidityReceiverWallet","type":"address"}],"name":"updateAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526040518060400160405280600c81526020017f4469616d6f6e6420446f67650000000000000000000000000000000000000000815250600790805190602001906200005192919062000a7b565b506040518060400160405280600581526020017f44444f4745000000000000000000000000000000000000000000000000000000815250600890805190602001906200009f92919062000a7b565b5060098060006101000a81548160ff021916908360ff16021790555067016345785d8a0000600a55620000e6620186a0600a546200099060201b620024771790919060201c565b601055600a54601155600a546012556103e860135560006014556001601660016101000a81548160ff0219169083151502179055506000601755601460185560146019556000601a556014601b556014601c556000601d556000601e556000601f553480156200015557600080fd5b5062000166620009e260201b60201c565b6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600a546001600062000237620009ea60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555072377196acb768d1b9a845c359b7403e2a026151600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c3c44f4e0de9073457744c828f6637816352d2c4600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ed919062000b95565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000455573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047b919062000b95565b6040518363ffffffff1660e01b81526004016200049a92919062000bd8565b6020604051808303816000875af1158015620004ba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004e0919062000b95565b905080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360006200057a620009ea60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016004600062000639620009ea60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000620006f8620009ea60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200091f620009ea60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a5460405162000980919062000c20565b60405180910390a3505062000dd1565b6000620009da83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000a1360201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000808311829062000a5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a54919062000ce1565b60405180910390fd5b506000838562000a6e919062000d34565b9050809150509392505050565b82805462000a899062000d9b565b90600052602060002090601f01602090048101928262000aad576000855562000af9565b82601f1062000ac857805160ff191683800117855562000af9565b8280016001018555821562000af9579182015b8281111562000af857825182559160200191906001019062000adb565b5b50905062000b08919062000b0c565b5090565b5b8082111562000b2757600081600090555060010162000b0d565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b5d8262000b30565b9050919050565b62000b6f8162000b50565b811462000b7b57600080fd5b50565b60008151905062000b8f8162000b64565b92915050565b60006020828403121562000bae5762000bad62000b2b565b5b600062000bbe8482850162000b7e565b91505092915050565b62000bd28162000b50565b82525050565b600060408201905062000bef600083018562000bc7565b62000bfe602083018462000bc7565b9392505050565b6000819050919050565b62000c1a8162000c05565b82525050565b600060208201905062000c37600083018462000c0f565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101562000c7957808201518184015260208101905062000c5c565b8381111562000c89576000848401525b50505050565b6000601f19601f8301169050919050565b600062000cad8262000c3d565b62000cb9818562000c48565b935062000ccb81856020860162000c59565b62000cd68162000c8f565b840191505092915050565b6000602082019050818103600083015262000cfd818462000ca0565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000d418262000c05565b915062000d4e8362000c05565b92508262000d615762000d6062000d05565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000db457607f821691505b6020821081141562000dcb5762000dca62000d6c565b5b50919050565b6150748062000de16000396000f3fe6080604052600436106103395760003560e01c80638756aabd116101ab578063be19674b116100f7578063ec44acf211610095578063f242ab411161006f578063f242ab4114610c41578063f2fde38b14610c6c578063f4b3dbc314610c95578063fe6f1b0514610cd257610340565b8063ec44acf214610bb0578063ed42142914610bdb578063f097ea1a14610c1857610340565b8063dd62ed3e116100d1578063dd62ed3e14610af6578063e41f9efe14610b33578063e6c84dc614610b5c578063ea5b9e8514610b8757610340565b8063be19674b14610a77578063bf56b37114610aa0578063dcbbe9d414610acb57610340565b80639a36dfa111610164578063a7c29b401161013e578063a7c29b40146109bd578063a9059cbb146109e6578063b0a30f6a14610a23578063b0bc2a2d14610a4e57610340565b80639a36dfa11461092c5780639b6a275014610957578063a457c2d71461098057610340565b80638756aabd1461082e578063879dd3c5146108575780638a8c523c146108825780638da5cb5b1461089957806395d89b41146108c457806399b102b5146108ef57610340565b8063352bfe2f11610285578063715018a6116102235780637c6a9a9c116101fd5780637c6a9a9c146107705780637d99c66d1461079b578063844af78e146107c657806384ea21bc146107f157610340565b8063715018a61461070357806375f0a8741461071a57806379777b4e1461074557610340565b80635342acb41161025f5780635342acb414610635578063679a3c5914610672578063681aa3621461069b57806370a08231146106c657610340565b8063352bfe2f1461059057806339509351146105bb5780633bbac579146105f857610340565b80631884f1e6116102f25780632d129390116102cc5780632d129390146104e8578063313ce567146105115780633326d7f21461053c578063334c14391461056757610340565b80631884f1e61461045557806323b872dd1461048057806325d90189146104bd57610340565b806306fdde03146103455780630758d92414610370578063095ea7b31461039b5780630a2d140c146103d8578063151cd1c21461040157806318160ddd1461042a57610340565b3661034057005b600080fd5b34801561035157600080fd5b5061035a610cfd565b6040516103679190613fc7565b60405180910390f35b34801561037c57600080fd5b50610385610d8f565b6040516103929190614068565b60405180910390f35b3480156103a757600080fd5b506103c260048036038101906103bd91906140fc565b610db5565b6040516103cf9190614157565b60405180910390f35b3480156103e457600080fd5b506103ff60048036038101906103fa919061419e565b610dd3565b005b34801561040d57600080fd5b50610428600480360381019061042391906141cb565b610e85565b005b34801561043657600080fd5b5061043f610fb0565b60405161044c919061422d565b60405180910390f35b34801561046157600080fd5b5061046a610fba565b604051610477919061422d565b60405180910390f35b34801561048c57600080fd5b506104a760048036038101906104a29190614248565b610fc0565b6040516104b49190614157565b60405180910390f35b3480156104c957600080fd5b506104d2611099565b6040516104df919061422d565b60405180910390f35b3480156104f457600080fd5b5061050f600480360381019061050a919061429b565b61109f565b005b34801561051d57600080fd5b5061052661118f565b60405161053391906142f7565b60405180910390f35b34801561054857600080fd5b506105516111a6565b60405161055e919061422d565b60405180910390f35b34801561057357600080fd5b5061058e60048036038101906105899190614312565b6111ac565b005b34801561059c57600080fd5b506105a5611309565b6040516105b29190614374565b60405180910390f35b3480156105c757600080fd5b506105e260048036038101906105dd91906140fc565b61132f565b6040516105ef9190614157565b60405180910390f35b34801561060457600080fd5b5061061f600480360381019061061a919061438f565b6113e2565b60405161062c9190614157565b60405180910390f35b34801561064157600080fd5b5061065c6004803603810190610657919061438f565b611402565b6040516106699190614157565b60405180910390f35b34801561067e57600080fd5b506106996004803603810190610694919061438f565b611422565b005b3480156106a757600080fd5b506106b0611501565b6040516106bd919061422d565b60405180910390f35b3480156106d257600080fd5b506106ed60048036038101906106e8919061438f565b611507565b6040516106fa919061422d565b60405180910390f35b34801561070f57600080fd5b50610718611550565b005b34801561072657600080fd5b5061072f6116a3565b60405161073c9190614374565b60405180910390f35b34801561075157600080fd5b5061075a6116c9565b6040516107679190614157565b60405180910390f35b34801561077c57600080fd5b506107856116dc565b604051610792919061422d565b60405180910390f35b3480156107a757600080fd5b506107b06116e2565b6040516107bd919061422d565b60405180910390f35b3480156107d257600080fd5b506107db6116e8565b6040516107e8919061422d565b60405180910390f35b3480156107fd57600080fd5b506108186004803603810190610813919061438f565b6116ee565b6040516108259190614157565b60405180910390f35b34801561083a57600080fd5b50610855600480360381019061085091906143bc565b61170e565b005b34801561086357600080fd5b5061086c6117ad565b6040516108799190614157565b60405180910390f35b34801561088e57600080fd5b506108976117c0565b005b3480156108a557600080fd5b506108ae6118ff565b6040516108bb9190614374565b60405180910390f35b3480156108d057600080fd5b506108d9611928565b6040516108e69190613fc7565b60405180910390f35b3480156108fb57600080fd5b506109166004803603810190610911919061438f565b6119ba565b6040516109239190614157565b60405180910390f35b34801561093857600080fd5b506109416119da565b60405161094e919061422d565b60405180910390f35b34801561096357600080fd5b5061097e600480360381019061097991906143bc565b6119e0565b005b34801561098c57600080fd5b506109a760048036038101906109a291906140fc565b611a7f565b6040516109b49190614157565b60405180910390f35b3480156109c957600080fd5b506109e460048036038101906109df919061429b565b611b4c565b005b3480156109f257600080fd5b50610a0d6004803603810190610a0891906140fc565b611c3c565b604051610a1a9190614157565b60405180910390f35b348015610a2f57600080fd5b50610a38611c5a565b604051610a459190614374565b60405180910390f35b348015610a5a57600080fd5b50610a756004803603810190610a70919061419e565b611c80565b005b348015610a8357600080fd5b50610a9e6004803603810190610a9991906141cb565b611d32565b005b348015610aac57600080fd5b50610ab5611e5d565b604051610ac2919061422d565b60405180910390f35b348015610ad757600080fd5b50610ae0611e63565b604051610aed919061422d565b60405180910390f35b348015610b0257600080fd5b50610b1d6004803603810190610b1891906143e9565b611e69565b604051610b2a919061422d565b60405180910390f35b348015610b3f57600080fd5b50610b5a6004803603810190610b55919061438f565b611ef0565b005b348015610b6857600080fd5b50610b71611fe0565b604051610b7e919061422d565b60405180910390f35b348015610b9357600080fd5b50610bae6004803603810190610ba9919061429b565b611fe6565b005b348015610bbc57600080fd5b50610bc56120d6565b604051610bd29190614157565b60405180910390f35b348015610be757600080fd5b50610c026004803603810190610bfd91906143bc565b6120e9565b604051610c0f919061422d565b60405180910390f35b348015610c2457600080fd5b50610c3f6004803603810190610c3a91906143bc565b612148565b005b348015610c4d57600080fd5b50610c5661222a565b604051610c639190614374565b60405180910390f35b348015610c7857600080fd5b50610c936004803603810190610c8e919061438f565b612250565b005b348015610ca157600080fd5b50610cbc6004803603810190610cb791906143bc565b612412565b604051610cc9919061422d565b60405180910390f35b348015610cde57600080fd5b50610ce7612471565b604051610cf4919061422d565b60405180910390f35b606060078054610d0c90614458565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3890614458565b8015610d855780601f10610d5a57610100808354040283529160200191610d85565b820191906000526020600020905b815481529060010190602001808311610d6857829003601f168201915b5050505050905090565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610dc9610dc26124c1565b84846124c9565b6001905092915050565b610ddb6124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5f906144d6565b60405180910390fd5b80601660006101000a81548160ff02191690831515021790555050565b610e8d6124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f11906144d6565b60405180910390fd5b82601b8190555080601c8190555081601a81905550610f45600a60135461247790919063ffffffff16565b610f6a82610f5c858761269490919063ffffffff16565b61269490919063ffffffff16565b1115610fab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa290614542565b60405180910390fd5b505050565b6000600a54905090565b60105481565b6000610fcd8484846126f2565b61108e84610fd96124c1565b61108985604051806060016040528060218152602001614ffd60219139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061103f6124c1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfc9092919063ffffffff16565b6124c9565b600190509392505050565b601c5481565b6110a76124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611134576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112b906144d6565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600960009054906101000a900460ff16905090565b60175481565b6111b46124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611241576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611238906144d6565b60405180910390fd5b82600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006113d861133c6124c1565b846113d3856002600061134d6124c1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269490919063ffffffff16565b6124c9565b6001905092915050565b60066020528060005260406000206000915054906101000a900460ff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b61142a6124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ae906144d6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156114fd573d6000803e3d6000fd5b5050565b60125481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6115586124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dc906144d6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601660009054906101000a900460ff1681565b60185481565b60145481565b601b5481565b60056020528060005260406000206000915054906101000a900460ff1681565b6117166124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179a906144d6565b60405180910390fd5b8060118190555050565b601660019054906101000a900460ff1681565b6117c86124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184c906144d6565b60405180910390fd5b601660029054906101000a900460ff16156118a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189c906145ae565b60405180910390fd5b6001601660026101000a81548160ff0219169083151502179055506001601660016101000a81548160ff0219169083151502179055506001601660006101000a81548160ff02191690831515021790555042601581905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606008805461193790614458565b80601f016020809104026020016040519081016040528092919081815260200182805461196390614458565b80156119b05780601f10611985576101008083540402835291602001916119b0565b820191906000526020600020905b81548152906001019060200180831161199357829003601f168201915b5050505050905090565b60046020528060005260406000206000915054906101000a900460ff1681565b60115481565b6119e86124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6c906144d6565b60405180910390fd5b8060128190555050565b6000611b42611a8c6124c1565b84611b3d8560405180606001604052806021815260200161501e6021913960026000611ab66124c1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfc9092919063ffffffff16565b6124c9565b6001905092915050565b611b546124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611be1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd8906144d6565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611c50611c496124c1565b84846126f2565b6001905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611c886124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0c906144d6565b60405180910390fd5b80601660016101000a81548160ff02191690831515021790555050565b611d3a6124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbe906144d6565b60405180910390fd5b826018819055508060198190555081601781905550611df2600a60135461247790919063ffffffff16565b611e1782611e09858761269490919063ffffffff16565b61269490919063ffffffff16565b1115611e58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4f90614542565b60405180910390fd5b505050565b60155481565b60195481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611ef86124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7c906144d6565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601a5481565b611fee6124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461207b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612072906144d6565b60405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601660029054906101000a900460ff1681565b60008061213d60135461212f61212060195461211260175460185461269490919063ffffffff16565b61269490919063ffffffff16565b86612e6090919063ffffffff16565b61247790919063ffffffff16565b905080915050919050565b6121506124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d4906144d6565b60405180910390fd5b60008111612220576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122179061461a565b60405180910390fd5b8060108190555050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6122586124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122dc906144d6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612355576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234c906146ac565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080612466601354612458612449601c5461243b601a54601b5461269490919063ffffffff16565b61269490919063ffffffff16565b86612e6090919063ffffffff16565b61247790919063ffffffff16565b905080915050919050565b60135481565b60006124b983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612edb565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612539576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253090614718565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a090614784565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612687919061422d565b60405180910390a3505050565b60008082846126a391906147d3565b9050838110156126e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126df90614875565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612762576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612759906148e1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c99061494d565b60405180910390fd5b60008111612815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280c906149b9565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156128a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289990614a25565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156129465750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c6657601254811115612990576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298790614a91565b60405180910390fd5b601660029054906101000a900460ff16612a90578273ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015612a5057508173ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b612a8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8690614afd565b60405180910390fd5b5b601454601554612aa091906147d3565b42108015612afc5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612c65578273ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612bb4576001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612c64565b8173ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612c63576001600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b5b5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612d1757601154612cd582612cc785611507565b61269490919063ffffffff16565b1115612d16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0d90614b69565b60405180910390fd5b5b612d218383612f3e565b600060019050600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612dc85750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612de05750601660019054906101000a900460ff16155b15612dea57600090505b612df68484848461333c565b50505050565b6000838311158290612e44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3b9190613fc7565b60405180910390fd5b5060008385612e539190614b89565b9050809150509392505050565b600080831415612e735760009050612ed5565b60008284612e819190614bbd565b9050828482612e909190614c46565b14612ed0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ec790614ce9565b60405180910390fd5b809150505b92915050565b60008083118290612f22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f199190613fc7565b60405180910390fd5b5060008385612f319190614c46565b9050809150509392505050565b6000612f4930611507565b905060006010548210159050808015612fb05750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612fc85750601660009054906101000a900460ff165b801561305957503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156130575750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b155b156133365761308b30600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846124c9565b60006130a36002601d5461247790919063ffffffff16565b905060006130bc82601d546139d090919063ffffffff16565b905060006130d382866139d090919063ffffffff16565b90506000479050613106600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613a1a565b600061311b82476139d090919063ffffffff16565b90506000613144846131368885612e6090919063ffffffff16565b61247790919063ffffffff16565b9050600061316f85613161601e5486612e6090919063ffffffff16565b61247790919063ffffffff16565b905060006131988261318a85876139d090919063ffffffff16565b6139d090919063ffffffff16565b9050600083111561322f576131f3600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168986613c00565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56188848960405161322693929190614d09565b60405180910390a15b60008211156132a257600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156132a0573d6000803e3d6000fd5b505b600081111561331557600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613313573d6000803e3d6000fd5b505b6000601d819055506000601e819055506000601f8190555050505050505050505b50505050565b8373ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156133965750805b1561359f5760006133a6836120e9565b905060006133bd82856139d090919063ffffffff16565b9050613448846040518060400160405280601481526020017f496e73756666696369656e742062616c616e6365000000000000000000000000815250600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfc9092919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134dd81600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269490919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161357d919061422d565b60405180910390a361358f8683613ca4565b61359884613da2565b50506139ca565b8273ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156135f95750805b1561380257600061360983612412565b9050600061362082856139d090919063ffffffff16565b90506136ab846040518060400160405280601481526020017f496e73756666696369656e742062616c616e6365000000000000000000000000815250600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfc9092919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061374081600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269490919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516137e0919061422d565b60405180910390a36137f28683613ca4565b6137fb84613e68565b50506139c9565b61388b826040518060400160405280601481526020017f496e73756666696369656e742062616c616e6365000000000000000000000000815250600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfc9092919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061392082600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269490919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516139c0919061422d565b60405180910390a35b5b50505050565b6000613a1283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612dfc565b905092915050565b60008290506000600267ffffffffffffffff811115613a3c57613a3b614d40565b5b604051908082528060200260200182016040528015613a6a5781602001602082028036833780820191505090505b5090503081600081518110613a8257613a81614d6f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b2b9190614db3565b81600181518110613b3f57613b3e614d6f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663791ac947846000843061012c42613ba891906147d3565b6040518663ffffffff1660e01b8152600401613bc8959493929190614ed9565b600060405180830381600087803b158015613be257600080fd5b505af1158015613bf6573d6000803e3d6000fd5b5050505050505050565b60008490508073ffffffffffffffffffffffffffffffffffffffff1663f305d7198330866000808a61012c42613c3691906147d3565b6040518863ffffffff1660e01b8152600401613c5796959493929190614f33565b60606040518083038185885af1158015613c75573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613c9a9190614fa9565b5050505050505050565b613cf681600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269490919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613d96919061422d565b60405180910390a35050565b613dcb601354613dbd60175484612e6090919063ffffffff16565b61247790919063ffffffff16565b601d6000828254613ddc91906147d3565b92505081905550613e0c601354613dfe60185484612e6090919063ffffffff16565b61247790919063ffffffff16565b601e6000828254613e1d91906147d3565b92505081905550613e4d601354613e3f60195484612e6090919063ffffffff16565b61247790919063ffffffff16565b601f6000828254613e5e91906147d3565b9250508190555050565b613e91601354613e83601a5484612e6090919063ffffffff16565b61247790919063ffffffff16565b601d6000828254613ea291906147d3565b92505081905550613ed2601354613ec4601b5484612e6090919063ffffffff16565b61247790919063ffffffff16565b601e6000828254613ee391906147d3565b92505081905550613f13601354613f05601c5484612e6090919063ffffffff16565b61247790919063ffffffff16565b601f6000828254613f2491906147d3565b9250508190555050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613f68578082015181840152602081019050613f4d565b83811115613f77576000848401525b50505050565b6000601f19601f8301169050919050565b6000613f9982613f2e565b613fa38185613f39565b9350613fb3818560208601613f4a565b613fbc81613f7d565b840191505092915050565b60006020820190508181036000830152613fe18184613f8e565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061402e61402961402484613fe9565b614009565b613fe9565b9050919050565b600061404082614013565b9050919050565b600061405282614035565b9050919050565b61406281614047565b82525050565b600060208201905061407d6000830184614059565b92915050565b600080fd5b600061409382613fe9565b9050919050565b6140a381614088565b81146140ae57600080fd5b50565b6000813590506140c08161409a565b92915050565b6000819050919050565b6140d9816140c6565b81146140e457600080fd5b50565b6000813590506140f6816140d0565b92915050565b6000806040838503121561411357614112614083565b5b6000614121858286016140b1565b9250506020614132858286016140e7565b9150509250929050565b60008115159050919050565b6141518161413c565b82525050565b600060208201905061416c6000830184614148565b92915050565b61417b8161413c565b811461418657600080fd5b50565b60008135905061419881614172565b92915050565b6000602082840312156141b4576141b3614083565b5b60006141c284828501614189565b91505092915050565b6000806000606084860312156141e4576141e3614083565b5b60006141f2868287016140e7565b9350506020614203868287016140e7565b9250506040614214868287016140e7565b9150509250925092565b614227816140c6565b82525050565b6000602082019050614242600083018461421e565b92915050565b60008060006060848603121561426157614260614083565b5b600061426f868287016140b1565b9350506020614280868287016140b1565b9250506040614291868287016140e7565b9150509250925092565b600080604083850312156142b2576142b1614083565b5b60006142c0858286016140b1565b92505060206142d185828601614189565b9150509250929050565b600060ff82169050919050565b6142f1816142db565b82525050565b600060208201905061430c60008301846142e8565b92915050565b60008060006060848603121561432b5761432a614083565b5b6000614339868287016140b1565b935050602061434a868287016140b1565b925050604061435b868287016140b1565b9150509250925092565b61436e81614088565b82525050565b60006020820190506143896000830184614365565b92915050565b6000602082840312156143a5576143a4614083565b5b60006143b3848285016140b1565b91505092915050565b6000602082840312156143d2576143d1614083565b5b60006143e0848285016140e7565b91505092915050565b60008060408385031215614400576143ff614083565b5b600061440e858286016140b1565b925050602061441f858286016140b1565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061447057607f821691505b6020821081141561448457614483614429565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006144c0602083613f39565b91506144cb8261448a565b602082019050919050565b600060208201905081810360008301526144ef816144b3565b9050919050565b7f43616e2774206265206d6f7265207468616e2031302500000000000000000000600082015250565b600061452c601683613f39565b9150614537826144f6565b602082019050919050565b6000602082019050818103600083015261455b8161451f565b9050919050565b7f416c726561647920656e61626c65640000000000000000000000000000000000600082015250565b6000614598600f83613f39565b91506145a382614562565b602082019050919050565b600060208201905081810360008301526145c78161458b565b9050919050565b7f43616e2774206265203000000000000000000000000000000000000000000000600082015250565b6000614604600a83613f39565b915061460f826145ce565b602082019050919050565b60006020820190508181036000830152614633816145f7565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614696602683613f39565b91506146a18261463a565b604082019050919050565b600060208201905081810360008301526146c581614689565b9050919050565b7f417070726f76652066726f6d20746865207a65726f2061646472657373000000600082015250565b6000614702601d83613f39565b915061470d826146cc565b602082019050919050565b60006020820190508181036000830152614731816146f5565b9050919050565b7f417070726f766520746f20746865207a65726f20616464726573730000000000600082015250565b600061476e601b83613f39565b915061477982614738565b602082019050919050565b6000602082019050818103600083015261479d81614761565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006147de826140c6565b91506147e9836140c6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561481e5761481d6147a4565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061485f601b83613f39565b915061486a82614829565b602082019050919050565b6000602082019050818103600083015261488e81614852565b9050919050565b7f5472616e736665722066726f6d20746865207a65726f20616464726573730000600082015250565b60006148cb601e83613f39565b91506148d682614895565b602082019050919050565b600060208201905081810360008301526148fa816148be565b9050919050565b7f5472616e7366657220746f20746865207a65726f206164647265737300000000600082015250565b6000614937601c83613f39565b915061494282614901565b602082019050919050565b600060208201905081810360008301526149668161492a565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f600082015250565b60006149a3602083613f39565b91506149ae8261496d565b602082019050919050565b600060208201905081810360008301526149d281614996565b9050919050565b7f426f742064657465637465640000000000000000000000000000000000000000600082015250565b6000614a0f600c83613f39565b9150614a1a826149d9565b602082019050919050565b60006020820190508181036000830152614a3e81614a02565b9050919050565b7f4d61782074786e206c696d697420657863656564730000000000000000000000600082015250565b6000614a7b601583613f39565b9150614a8682614a45565b602082019050919050565b60006020820190508181036000830152614aaa81614a6e565b9050919050565b7f54726164696e672069732064697361626c656400000000000000000000000000600082015250565b6000614ae7601383613f39565b9150614af282614ab1565b602082019050919050565b60006020820190508181036000830152614b1681614ada565b9050919050565b7f4d617820686f6c64206c696d6974206578636565647300000000000000000000600082015250565b6000614b53601683613f39565b9150614b5e82614b1d565b602082019050919050565b60006020820190508181036000830152614b8281614b46565b9050919050565b6000614b94826140c6565b9150614b9f836140c6565b925082821015614bb257614bb16147a4565b5b828203905092915050565b6000614bc8826140c6565b9150614bd3836140c6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614c0c57614c0b6147a4565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614c51826140c6565b9150614c5c836140c6565b925082614c6c57614c6b614c17565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614cd3602183613f39565b9150614cde82614c77565b604082019050919050565b60006020820190508181036000830152614d0281614cc6565b9050919050565b6000606082019050614d1e600083018661421e565b614d2b602083018561421e565b614d38604083018461421e565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614dad8161409a565b92915050565b600060208284031215614dc957614dc8614083565b5b6000614dd784828501614d9e565b91505092915050565b6000819050919050565b6000614e05614e00614dfb84614de0565b614009565b6140c6565b9050919050565b614e1581614dea565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614e5081614088565b82525050565b6000614e628383614e47565b60208301905092915050565b6000602082019050919050565b6000614e8682614e1b565b614e908185614e26565b9350614e9b83614e37565b8060005b83811015614ecc578151614eb38882614e56565b9750614ebe83614e6e565b925050600181019050614e9f565b5085935050505092915050565b600060a082019050614eee600083018861421e565b614efb6020830187614e0c565b8181036040830152614f0d8186614e7b565b9050614f1c6060830185614365565b614f29608083018461421e565b9695505050505050565b600060c082019050614f486000830189614365565b614f55602083018861421e565b614f626040830187614e0c565b614f6f6060830186614e0c565b614f7c6080830185614365565b614f8960a083018461421e565b979650505050505050565b600081519050614fa3816140d0565b92915050565b600080600060608486031215614fc257614fc1614083565b5b6000614fd086828701614f94565b9350506020614fe186828701614f94565b9250506040614ff286828701614f94565b915050925092509256fe5472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636544656372656173656420616c6c6f77616e6365206f722062656c6f77207a65726fa2646970667358221220d4779c9a1bbd5e85ee60f885103268eaced3082a36146d45441eea4ec358b8d964736f6c634300080a0033

Deployed Bytecode

0x6080604052600436106103395760003560e01c80638756aabd116101ab578063be19674b116100f7578063ec44acf211610095578063f242ab411161006f578063f242ab4114610c41578063f2fde38b14610c6c578063f4b3dbc314610c95578063fe6f1b0514610cd257610340565b8063ec44acf214610bb0578063ed42142914610bdb578063f097ea1a14610c1857610340565b8063dd62ed3e116100d1578063dd62ed3e14610af6578063e41f9efe14610b33578063e6c84dc614610b5c578063ea5b9e8514610b8757610340565b8063be19674b14610a77578063bf56b37114610aa0578063dcbbe9d414610acb57610340565b80639a36dfa111610164578063a7c29b401161013e578063a7c29b40146109bd578063a9059cbb146109e6578063b0a30f6a14610a23578063b0bc2a2d14610a4e57610340565b80639a36dfa11461092c5780639b6a275014610957578063a457c2d71461098057610340565b80638756aabd1461082e578063879dd3c5146108575780638a8c523c146108825780638da5cb5b1461089957806395d89b41146108c457806399b102b5146108ef57610340565b8063352bfe2f11610285578063715018a6116102235780637c6a9a9c116101fd5780637c6a9a9c146107705780637d99c66d1461079b578063844af78e146107c657806384ea21bc146107f157610340565b8063715018a61461070357806375f0a8741461071a57806379777b4e1461074557610340565b80635342acb41161025f5780635342acb414610635578063679a3c5914610672578063681aa3621461069b57806370a08231146106c657610340565b8063352bfe2f1461059057806339509351146105bb5780633bbac579146105f857610340565b80631884f1e6116102f25780632d129390116102cc5780632d129390146104e8578063313ce567146105115780633326d7f21461053c578063334c14391461056757610340565b80631884f1e61461045557806323b872dd1461048057806325d90189146104bd57610340565b806306fdde03146103455780630758d92414610370578063095ea7b31461039b5780630a2d140c146103d8578063151cd1c21461040157806318160ddd1461042a57610340565b3661034057005b600080fd5b34801561035157600080fd5b5061035a610cfd565b6040516103679190613fc7565b60405180910390f35b34801561037c57600080fd5b50610385610d8f565b6040516103929190614068565b60405180910390f35b3480156103a757600080fd5b506103c260048036038101906103bd91906140fc565b610db5565b6040516103cf9190614157565b60405180910390f35b3480156103e457600080fd5b506103ff60048036038101906103fa919061419e565b610dd3565b005b34801561040d57600080fd5b50610428600480360381019061042391906141cb565b610e85565b005b34801561043657600080fd5b5061043f610fb0565b60405161044c919061422d565b60405180910390f35b34801561046157600080fd5b5061046a610fba565b604051610477919061422d565b60405180910390f35b34801561048c57600080fd5b506104a760048036038101906104a29190614248565b610fc0565b6040516104b49190614157565b60405180910390f35b3480156104c957600080fd5b506104d2611099565b6040516104df919061422d565b60405180910390f35b3480156104f457600080fd5b5061050f600480360381019061050a919061429b565b61109f565b005b34801561051d57600080fd5b5061052661118f565b60405161053391906142f7565b60405180910390f35b34801561054857600080fd5b506105516111a6565b60405161055e919061422d565b60405180910390f35b34801561057357600080fd5b5061058e60048036038101906105899190614312565b6111ac565b005b34801561059c57600080fd5b506105a5611309565b6040516105b29190614374565b60405180910390f35b3480156105c757600080fd5b506105e260048036038101906105dd91906140fc565b61132f565b6040516105ef9190614157565b60405180910390f35b34801561060457600080fd5b5061061f600480360381019061061a919061438f565b6113e2565b60405161062c9190614157565b60405180910390f35b34801561064157600080fd5b5061065c6004803603810190610657919061438f565b611402565b6040516106699190614157565b60405180910390f35b34801561067e57600080fd5b506106996004803603810190610694919061438f565b611422565b005b3480156106a757600080fd5b506106b0611501565b6040516106bd919061422d565b60405180910390f35b3480156106d257600080fd5b506106ed60048036038101906106e8919061438f565b611507565b6040516106fa919061422d565b60405180910390f35b34801561070f57600080fd5b50610718611550565b005b34801561072657600080fd5b5061072f6116a3565b60405161073c9190614374565b60405180910390f35b34801561075157600080fd5b5061075a6116c9565b6040516107679190614157565b60405180910390f35b34801561077c57600080fd5b506107856116dc565b604051610792919061422d565b60405180910390f35b3480156107a757600080fd5b506107b06116e2565b6040516107bd919061422d565b60405180910390f35b3480156107d257600080fd5b506107db6116e8565b6040516107e8919061422d565b60405180910390f35b3480156107fd57600080fd5b506108186004803603810190610813919061438f565b6116ee565b6040516108259190614157565b60405180910390f35b34801561083a57600080fd5b50610855600480360381019061085091906143bc565b61170e565b005b34801561086357600080fd5b5061086c6117ad565b6040516108799190614157565b60405180910390f35b34801561088e57600080fd5b506108976117c0565b005b3480156108a557600080fd5b506108ae6118ff565b6040516108bb9190614374565b60405180910390f35b3480156108d057600080fd5b506108d9611928565b6040516108e69190613fc7565b60405180910390f35b3480156108fb57600080fd5b506109166004803603810190610911919061438f565b6119ba565b6040516109239190614157565b60405180910390f35b34801561093857600080fd5b506109416119da565b60405161094e919061422d565b60405180910390f35b34801561096357600080fd5b5061097e600480360381019061097991906143bc565b6119e0565b005b34801561098c57600080fd5b506109a760048036038101906109a291906140fc565b611a7f565b6040516109b49190614157565b60405180910390f35b3480156109c957600080fd5b506109e460048036038101906109df919061429b565b611b4c565b005b3480156109f257600080fd5b50610a0d6004803603810190610a0891906140fc565b611c3c565b604051610a1a9190614157565b60405180910390f35b348015610a2f57600080fd5b50610a38611c5a565b604051610a459190614374565b60405180910390f35b348015610a5a57600080fd5b50610a756004803603810190610a70919061419e565b611c80565b005b348015610a8357600080fd5b50610a9e6004803603810190610a9991906141cb565b611d32565b005b348015610aac57600080fd5b50610ab5611e5d565b604051610ac2919061422d565b60405180910390f35b348015610ad757600080fd5b50610ae0611e63565b604051610aed919061422d565b60405180910390f35b348015610b0257600080fd5b50610b1d6004803603810190610b1891906143e9565b611e69565b604051610b2a919061422d565b60405180910390f35b348015610b3f57600080fd5b50610b5a6004803603810190610b55919061438f565b611ef0565b005b348015610b6857600080fd5b50610b71611fe0565b604051610b7e919061422d565b60405180910390f35b348015610b9357600080fd5b50610bae6004803603810190610ba9919061429b565b611fe6565b005b348015610bbc57600080fd5b50610bc56120d6565b604051610bd29190614157565b60405180910390f35b348015610be757600080fd5b50610c026004803603810190610bfd91906143bc565b6120e9565b604051610c0f919061422d565b60405180910390f35b348015610c2457600080fd5b50610c3f6004803603810190610c3a91906143bc565b612148565b005b348015610c4d57600080fd5b50610c5661222a565b604051610c639190614374565b60405180910390f35b348015610c7857600080fd5b50610c936004803603810190610c8e919061438f565b612250565b005b348015610ca157600080fd5b50610cbc6004803603810190610cb791906143bc565b612412565b604051610cc9919061422d565b60405180910390f35b348015610cde57600080fd5b50610ce7612471565b604051610cf4919061422d565b60405180910390f35b606060078054610d0c90614458565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3890614458565b8015610d855780601f10610d5a57610100808354040283529160200191610d85565b820191906000526020600020905b815481529060010190602001808311610d6857829003601f168201915b5050505050905090565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610dc9610dc26124c1565b84846124c9565b6001905092915050565b610ddb6124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5f906144d6565b60405180910390fd5b80601660006101000a81548160ff02191690831515021790555050565b610e8d6124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f11906144d6565b60405180910390fd5b82601b8190555080601c8190555081601a81905550610f45600a60135461247790919063ffffffff16565b610f6a82610f5c858761269490919063ffffffff16565b61269490919063ffffffff16565b1115610fab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa290614542565b60405180910390fd5b505050565b6000600a54905090565b60105481565b6000610fcd8484846126f2565b61108e84610fd96124c1565b61108985604051806060016040528060218152602001614ffd60219139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061103f6124c1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfc9092919063ffffffff16565b6124c9565b600190509392505050565b601c5481565b6110a76124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611134576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112b906144d6565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600960009054906101000a900460ff16905090565b60175481565b6111b46124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611241576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611238906144d6565b60405180910390fd5b82600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006113d861133c6124c1565b846113d3856002600061134d6124c1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269490919063ffffffff16565b6124c9565b6001905092915050565b60066020528060005260406000206000915054906101000a900460ff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b61142a6124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ae906144d6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156114fd573d6000803e3d6000fd5b5050565b60125481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6115586124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dc906144d6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601660009054906101000a900460ff1681565b60185481565b60145481565b601b5481565b60056020528060005260406000206000915054906101000a900460ff1681565b6117166124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179a906144d6565b60405180910390fd5b8060118190555050565b601660019054906101000a900460ff1681565b6117c86124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184c906144d6565b60405180910390fd5b601660029054906101000a900460ff16156118a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189c906145ae565b60405180910390fd5b6001601660026101000a81548160ff0219169083151502179055506001601660016101000a81548160ff0219169083151502179055506001601660006101000a81548160ff02191690831515021790555042601581905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606008805461193790614458565b80601f016020809104026020016040519081016040528092919081815260200182805461196390614458565b80156119b05780601f10611985576101008083540402835291602001916119b0565b820191906000526020600020905b81548152906001019060200180831161199357829003601f168201915b5050505050905090565b60046020528060005260406000206000915054906101000a900460ff1681565b60115481565b6119e86124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6c906144d6565b60405180910390fd5b8060128190555050565b6000611b42611a8c6124c1565b84611b3d8560405180606001604052806021815260200161501e6021913960026000611ab66124c1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfc9092919063ffffffff16565b6124c9565b6001905092915050565b611b546124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611be1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd8906144d6565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611c50611c496124c1565b84846126f2565b6001905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611c886124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0c906144d6565b60405180910390fd5b80601660016101000a81548160ff02191690831515021790555050565b611d3a6124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbe906144d6565b60405180910390fd5b826018819055508060198190555081601781905550611df2600a60135461247790919063ffffffff16565b611e1782611e09858761269490919063ffffffff16565b61269490919063ffffffff16565b1115611e58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4f90614542565b60405180910390fd5b505050565b60155481565b60195481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611ef86124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7c906144d6565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601a5481565b611fee6124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461207b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612072906144d6565b60405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601660029054906101000a900460ff1681565b60008061213d60135461212f61212060195461211260175460185461269490919063ffffffff16565b61269490919063ffffffff16565b86612e6090919063ffffffff16565b61247790919063ffffffff16565b905080915050919050565b6121506124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d4906144d6565b60405180910390fd5b60008111612220576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122179061461a565b60405180910390fd5b8060108190555050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6122586124c1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122dc906144d6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612355576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234c906146ac565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080612466601354612458612449601c5461243b601a54601b5461269490919063ffffffff16565b61269490919063ffffffff16565b86612e6090919063ffffffff16565b61247790919063ffffffff16565b905080915050919050565b60135481565b60006124b983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612edb565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612539576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253090614718565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a090614784565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612687919061422d565b60405180910390a3505050565b60008082846126a391906147d3565b9050838110156126e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126df90614875565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612762576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612759906148e1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c99061494d565b60405180910390fd5b60008111612815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280c906149b9565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156128a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289990614a25565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156129465750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c6657601254811115612990576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298790614a91565b60405180910390fd5b601660029054906101000a900460ff16612a90578273ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015612a5057508173ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b612a8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8690614afd565b60405180910390fd5b5b601454601554612aa091906147d3565b42108015612afc5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612c65578273ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612bb4576001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612c64565b8173ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612c63576001600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b5b5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612d1757601154612cd582612cc785611507565b61269490919063ffffffff16565b1115612d16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0d90614b69565b60405180910390fd5b5b612d218383612f3e565b600060019050600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612dc85750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612de05750601660019054906101000a900460ff16155b15612dea57600090505b612df68484848461333c565b50505050565b6000838311158290612e44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3b9190613fc7565b60405180910390fd5b5060008385612e539190614b89565b9050809150509392505050565b600080831415612e735760009050612ed5565b60008284612e819190614bbd565b9050828482612e909190614c46565b14612ed0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ec790614ce9565b60405180910390fd5b809150505b92915050565b60008083118290612f22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f199190613fc7565b60405180910390fd5b5060008385612f319190614c46565b9050809150509392505050565b6000612f4930611507565b905060006010548210159050808015612fb05750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612fc85750601660009054906101000a900460ff165b801561305957503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156130575750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b155b156133365761308b30600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846124c9565b60006130a36002601d5461247790919063ffffffff16565b905060006130bc82601d546139d090919063ffffffff16565b905060006130d382866139d090919063ffffffff16565b90506000479050613106600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613a1a565b600061311b82476139d090919063ffffffff16565b90506000613144846131368885612e6090919063ffffffff16565b61247790919063ffffffff16565b9050600061316f85613161601e5486612e6090919063ffffffff16565b61247790919063ffffffff16565b905060006131988261318a85876139d090919063ffffffff16565b6139d090919063ffffffff16565b9050600083111561322f576131f3600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168986613c00565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56188848960405161322693929190614d09565b60405180910390a15b60008211156132a257600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156132a0573d6000803e3d6000fd5b505b600081111561331557600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613313573d6000803e3d6000fd5b505b6000601d819055506000601e819055506000601f8190555050505050505050505b50505050565b8373ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156133965750805b1561359f5760006133a6836120e9565b905060006133bd82856139d090919063ffffffff16565b9050613448846040518060400160405280601481526020017f496e73756666696369656e742062616c616e6365000000000000000000000000815250600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfc9092919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134dd81600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269490919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161357d919061422d565b60405180910390a361358f8683613ca4565b61359884613da2565b50506139ca565b8273ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156135f95750805b1561380257600061360983612412565b9050600061362082856139d090919063ffffffff16565b90506136ab846040518060400160405280601481526020017f496e73756666696369656e742062616c616e6365000000000000000000000000815250600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfc9092919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061374081600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269490919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516137e0919061422d565b60405180910390a36137f28683613ca4565b6137fb84613e68565b50506139c9565b61388b826040518060400160405280601481526020017f496e73756666696369656e742062616c616e6365000000000000000000000000815250600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfc9092919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061392082600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269490919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516139c0919061422d565b60405180910390a35b5b50505050565b6000613a1283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612dfc565b905092915050565b60008290506000600267ffffffffffffffff811115613a3c57613a3b614d40565b5b604051908082528060200260200182016040528015613a6a5781602001602082028036833780820191505090505b5090503081600081518110613a8257613a81614d6f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b2b9190614db3565b81600181518110613b3f57613b3e614d6f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663791ac947846000843061012c42613ba891906147d3565b6040518663ffffffff1660e01b8152600401613bc8959493929190614ed9565b600060405180830381600087803b158015613be257600080fd5b505af1158015613bf6573d6000803e3d6000fd5b5050505050505050565b60008490508073ffffffffffffffffffffffffffffffffffffffff1663f305d7198330866000808a61012c42613c3691906147d3565b6040518863ffffffff1660e01b8152600401613c5796959493929190614f33565b60606040518083038185885af1158015613c75573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613c9a9190614fa9565b5050505050505050565b613cf681600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269490919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613d96919061422d565b60405180910390a35050565b613dcb601354613dbd60175484612e6090919063ffffffff16565b61247790919063ffffffff16565b601d6000828254613ddc91906147d3565b92505081905550613e0c601354613dfe60185484612e6090919063ffffffff16565b61247790919063ffffffff16565b601e6000828254613e1d91906147d3565b92505081905550613e4d601354613e3f60195484612e6090919063ffffffff16565b61247790919063ffffffff16565b601f6000828254613e5e91906147d3565b9250508190555050565b613e91601354613e83601a5484612e6090919063ffffffff16565b61247790919063ffffffff16565b601d6000828254613ea291906147d3565b92505081905550613ed2601354613ec4601b5484612e6090919063ffffffff16565b61247790919063ffffffff16565b601e6000828254613ee391906147d3565b92505081905550613f13601354613f05601c5484612e6090919063ffffffff16565b61247790919063ffffffff16565b601f6000828254613f2491906147d3565b9250508190555050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613f68578082015181840152602081019050613f4d565b83811115613f77576000848401525b50505050565b6000601f19601f8301169050919050565b6000613f9982613f2e565b613fa38185613f39565b9350613fb3818560208601613f4a565b613fbc81613f7d565b840191505092915050565b60006020820190508181036000830152613fe18184613f8e565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061402e61402961402484613fe9565b614009565b613fe9565b9050919050565b600061404082614013565b9050919050565b600061405282614035565b9050919050565b61406281614047565b82525050565b600060208201905061407d6000830184614059565b92915050565b600080fd5b600061409382613fe9565b9050919050565b6140a381614088565b81146140ae57600080fd5b50565b6000813590506140c08161409a565b92915050565b6000819050919050565b6140d9816140c6565b81146140e457600080fd5b50565b6000813590506140f6816140d0565b92915050565b6000806040838503121561411357614112614083565b5b6000614121858286016140b1565b9250506020614132858286016140e7565b9150509250929050565b60008115159050919050565b6141518161413c565b82525050565b600060208201905061416c6000830184614148565b92915050565b61417b8161413c565b811461418657600080fd5b50565b60008135905061419881614172565b92915050565b6000602082840312156141b4576141b3614083565b5b60006141c284828501614189565b91505092915050565b6000806000606084860312156141e4576141e3614083565b5b60006141f2868287016140e7565b9350506020614203868287016140e7565b9250506040614214868287016140e7565b9150509250925092565b614227816140c6565b82525050565b6000602082019050614242600083018461421e565b92915050565b60008060006060848603121561426157614260614083565b5b600061426f868287016140b1565b9350506020614280868287016140b1565b9250506040614291868287016140e7565b9150509250925092565b600080604083850312156142b2576142b1614083565b5b60006142c0858286016140b1565b92505060206142d185828601614189565b9150509250929050565b600060ff82169050919050565b6142f1816142db565b82525050565b600060208201905061430c60008301846142e8565b92915050565b60008060006060848603121561432b5761432a614083565b5b6000614339868287016140b1565b935050602061434a868287016140b1565b925050604061435b868287016140b1565b9150509250925092565b61436e81614088565b82525050565b60006020820190506143896000830184614365565b92915050565b6000602082840312156143a5576143a4614083565b5b60006143b3848285016140b1565b91505092915050565b6000602082840312156143d2576143d1614083565b5b60006143e0848285016140e7565b91505092915050565b60008060408385031215614400576143ff614083565b5b600061440e858286016140b1565b925050602061441f858286016140b1565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061447057607f821691505b6020821081141561448457614483614429565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006144c0602083613f39565b91506144cb8261448a565b602082019050919050565b600060208201905081810360008301526144ef816144b3565b9050919050565b7f43616e2774206265206d6f7265207468616e2031302500000000000000000000600082015250565b600061452c601683613f39565b9150614537826144f6565b602082019050919050565b6000602082019050818103600083015261455b8161451f565b9050919050565b7f416c726561647920656e61626c65640000000000000000000000000000000000600082015250565b6000614598600f83613f39565b91506145a382614562565b602082019050919050565b600060208201905081810360008301526145c78161458b565b9050919050565b7f43616e2774206265203000000000000000000000000000000000000000000000600082015250565b6000614604600a83613f39565b915061460f826145ce565b602082019050919050565b60006020820190508181036000830152614633816145f7565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614696602683613f39565b91506146a18261463a565b604082019050919050565b600060208201905081810360008301526146c581614689565b9050919050565b7f417070726f76652066726f6d20746865207a65726f2061646472657373000000600082015250565b6000614702601d83613f39565b915061470d826146cc565b602082019050919050565b60006020820190508181036000830152614731816146f5565b9050919050565b7f417070726f766520746f20746865207a65726f20616464726573730000000000600082015250565b600061476e601b83613f39565b915061477982614738565b602082019050919050565b6000602082019050818103600083015261479d81614761565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006147de826140c6565b91506147e9836140c6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561481e5761481d6147a4565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061485f601b83613f39565b915061486a82614829565b602082019050919050565b6000602082019050818103600083015261488e81614852565b9050919050565b7f5472616e736665722066726f6d20746865207a65726f20616464726573730000600082015250565b60006148cb601e83613f39565b91506148d682614895565b602082019050919050565b600060208201905081810360008301526148fa816148be565b9050919050565b7f5472616e7366657220746f20746865207a65726f206164647265737300000000600082015250565b6000614937601c83613f39565b915061494282614901565b602082019050919050565b600060208201905081810360008301526149668161492a565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f600082015250565b60006149a3602083613f39565b91506149ae8261496d565b602082019050919050565b600060208201905081810360008301526149d281614996565b9050919050565b7f426f742064657465637465640000000000000000000000000000000000000000600082015250565b6000614a0f600c83613f39565b9150614a1a826149d9565b602082019050919050565b60006020820190508181036000830152614a3e81614a02565b9050919050565b7f4d61782074786e206c696d697420657863656564730000000000000000000000600082015250565b6000614a7b601583613f39565b9150614a8682614a45565b602082019050919050565b60006020820190508181036000830152614aaa81614a6e565b9050919050565b7f54726164696e672069732064697361626c656400000000000000000000000000600082015250565b6000614ae7601383613f39565b9150614af282614ab1565b602082019050919050565b60006020820190508181036000830152614b1681614ada565b9050919050565b7f4d617820686f6c64206c696d6974206578636565647300000000000000000000600082015250565b6000614b53601683613f39565b9150614b5e82614b1d565b602082019050919050565b60006020820190508181036000830152614b8281614b46565b9050919050565b6000614b94826140c6565b9150614b9f836140c6565b925082821015614bb257614bb16147a4565b5b828203905092915050565b6000614bc8826140c6565b9150614bd3836140c6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614c0c57614c0b6147a4565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614c51826140c6565b9150614c5c836140c6565b925082614c6c57614c6b614c17565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614cd3602183613f39565b9150614cde82614c77565b604082019050919050565b60006020820190508181036000830152614d0281614cc6565b9050919050565b6000606082019050614d1e600083018661421e565b614d2b602083018561421e565b614d38604083018461421e565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614dad8161409a565b92915050565b600060208284031215614dc957614dc8614083565b5b6000614dd784828501614d9e565b91505092915050565b6000819050919050565b6000614e05614e00614dfb84614de0565b614009565b6140c6565b9050919050565b614e1581614dea565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614e5081614088565b82525050565b6000614e628383614e47565b60208301905092915050565b6000602082019050919050565b6000614e8682614e1b565b614e908185614e26565b9350614e9b83614e37565b8060005b83811015614ecc578151614eb38882614e56565b9750614ebe83614e6e565b925050600181019050614e9f565b5085935050505092915050565b600060a082019050614eee600083018861421e565b614efb6020830187614e0c565b8181036040830152614f0d8186614e7b565b9050614f1c6060830185614365565b614f29608083018461421e565b9695505050505050565b600060c082019050614f486000830189614365565b614f55602083018861421e565b614f626040830187614e0c565b614f6f6060830186614e0c565b614f7c6080830185614365565b614f8960a083018461421e565b979650505050505050565b600081519050614fa3816140d0565b92915050565b600080600060608486031215614fc257614fc1614083565b5b6000614fd086828701614f94565b9350506020614fe186828701614f94565b9250506040614ff286828701614f94565b915050925092509256fe5472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636544656372656173656420616c6c6f77616e6365206f722062656c6f77207a65726fa2646970667358221220d4779c9a1bbd5e85ee60f885103268eaced3082a36146d45441eea4ec358b8d964736f6c634300080a0033

Deployed Bytecode Sourcemap

3176:16717:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7006:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3896:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7917:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11166:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10729:429;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7283:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4080:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8118:439;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5156:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9613:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7192:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4708:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11533:289;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3996:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8565:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3573:37;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3395:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11396:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4277:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7391:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2723:157;;;;;;;;;;;;;:::i;:::-;;3959:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4484:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4791:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4405:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5063:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3510:56;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10078:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4580:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11830:235;;;;;;;;;;;;;:::i;:::-;;2509:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7097:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3451:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4188:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10188:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8873:396;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9442:163;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7518:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4033:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11289:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10296:425;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4450:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4883:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7725:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9792:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4979:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9277:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4637:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12073:254;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9920:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3930:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2888:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12335:262;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4362:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7006:83;7043:13;7076:5;7069:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7006:83;:::o;3896:27::-;;;;;;;;;;;;;:::o;7917:193::-;8019:4;8041:39;8050:12;:10;:12::i;:::-;8064:7;8073:6;8041:8;:39::i;:::-;8098:4;8091:11;;7917:193;;;;:::o;11166:115::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11267:6:::1;11238:26;;:35;;;;;;;;;;;;;;;;;;11166:115:::0;:::o;10729:429::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10895:6:::1;10871:21;:30;;;;10936:13;10912:21;:37;;;;10984:13;10960:21;:37;;;;11078:22;11097:2;11078:14;;:18;;:22;;;;:::i;:::-;11030:44;11060:13;11030:25;11041:13;11030:6;:10;;:25;;;;:::i;:::-;:29;;:44;;;;:::i;:::-;:70;;11008:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;10729:429:::0;;;:::o;7283:100::-;7336:7;7363:12;;7356:19;;7283:100;:::o;4080:53::-;;;;:::o;8118:439::-;8250:4;8267:36;8277:6;8285:9;8296:6;8267:9;:36::i;:::-;8314:213;8337:6;8358:12;:10;:12::i;:::-;8385:131;8441:6;8385:131;;;;;;;;;;;;;;;;;:11;:19;8397:6;8385:19;;;;;;;;;;;;;;;:33;8405:12;:10;:12::i;:::-;8385:33;;;;;;;;;;;;;;;;:37;;:131;;;;;:::i;:::-;8314:8;:213::i;:::-;8545:4;8538:11;;8118:439;;;;;:::o;5156:41::-;;;;:::o;9613:171::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9771:5:::1;9735:24;:33;9760:7;9735:33;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;9613:171:::0;;:::o;7192:83::-;7233:5;7258:9;;;;;;;;;;;7251:16;;7192:83;:::o;4708:39::-;;;;:::o;11533:289::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11692:16:::1;11674:15;;:34;;;;;;;;;;;;;;;;;;11737:16;11719:15;;:34;;;;;;;;;;;;;;;;;;11790:24;11764:23;;:50;;;;;;;;;;;;;;;;;;11533:289:::0;;;:::o;3996:30::-;;;;;;;;;;;;;:::o;8565:300::-;8680:4;8702:133;8725:12;:10;:12::i;:::-;8752:7;8774:50;8813:10;8774:11;:25;8786:12;:10;:12::i;:::-;8774:25;;;;;;;;;;;;;;;:34;8800:7;8774:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;8702:8;:133::i;:::-;8853:4;8846:11;;8565:300;;;;:::o;3573:37::-;;;;;;;;;;;;;;;;;;;;;;:::o;3395:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;11396:129::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11475:9:::1;11467:27;;:50;11495:21;11467:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;11396:129:::0;:::o;4277:41::-;;;;:::o;7391:119::-;7457:7;7484:9;:18;7494:7;7484:18;;;;;;;;;;;;;;;;7477:25;;7391:119;;;:::o;2723:157::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2830:1:::1;2793:40;;2814:6;::::0;::::1;;;;;;;;2793:40;;;;;;;;;;;;2869:1;2844:6:::0;::::1;:28;;;;;;;;;;;;;;;;;;2723:157::o:0;3959:30::-;;;;;;;;;;;;;:::o;4484:38::-;;;;;;;;;;;;;:::o;4791:40::-;;;;:::o;4405:38::-;;;;:::o;5063:41::-;;;;:::o;3510:56::-;;;;;;;;;;;;;;;;;;;;;;:::o;10078:102::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10165:7:::1;10150:12;:22;;;;10078:102:::0;:::o;4580:29::-;;;;;;;;;;;;;:::o;11830:235::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11894:7:::1;;;;;;;;;;;11893:8;11885:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;11942:4;11932:7;;:14;;;;;;;;;;;;;;;;;;11970:4;11957:10;;:17;;;;;;;;;;;;;;;;;;12014:4;11985:26;;:33;;;;;;;;;;;;;;;;;;12042:15;12029:10;:28;;;;11830:235::o:0;2509:79::-;2547:7;2574:6;;;;;;;;;;;2567:13;;2509:79;:::o;7097:87::-;7136:13;7169:7;7162:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7097:87;:::o;3451:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;4188:42::-;;;;:::o;10188:100::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10273:7:::1;10259:11;:21;;;;10188:100:::0;:::o;8873:396::-;8993:4;9015:224;9038:12;:10;:12::i;:::-;9065:7;9087:141;9144:15;9087:141;;;;;;;;;;;;;;;;;:11;:25;9099:12;:10;:12::i;:::-;9087:25;;;;;;;;;;;;;;;:34;9113:7;9087:34;;;;;;;;;;;;;;;;:38;;:141;;;;;:::i;:::-;9015:8;:224::i;:::-;9257:4;9250:11;;8873:396;;;;:::o;9442:163::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9592:5:::1;9560:20;:29;9581:7;9560:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;9442:163:::0;;:::o;7518:199::-;7623:4;7645:42;7655:12;:10;:12::i;:::-;7669:9;7680:6;7645:9;:42::i;:::-;7705:4;7698:11;;7518:199;;;;:::o;4033:38::-;;;;;;;;;;;;;:::o;11289:99::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11374:6:::1;11361:10;;:19;;;;;;;;;;;;;;;;;;11289:99:::0;:::o;10296:425::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10460:6:::1;10437:20;:29;;;;10500:13;10477:20;:36;;;;10547:13;10524:20;:36;;;;10641:22;10660:2;10641:14;;:18;;:22;;;;:::i;:::-;10593:44;10623:13;10593:25;10604:13;10593:6;:10;;:25;;;;:::i;:::-;:29;;:44;;;;:::i;:::-;:70;;10571:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;10296:425:::0;;;:::o;4450:25::-;;;;:::o;4883:40::-;;;;:::o;7725:184::-;7842:7;7874:11;:18;7886:5;7874:18;;;;;;;;;;;;;;;:27;7893:7;7874:27;;;;;;;;;;;;;;;;7867:34;;7725:184;;;;:::o;9792:120::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9899:5:::1;9882;:14;9888:7;9882:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;9792:120:::0;:::o;4979:40::-;;;;:::o;9277:157::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9421:5:::1;9392:17;:26;9410:7;9392:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;9277:157:::0;;:::o;4637:19::-;;;;;;;;;;;;;:::o;12073:254::-;12136:7;12156:11;12170:128;12273:14;;12170:84;12181:72;12232:20;;12181:46;12206:20;;12181;;:24;;:46;;;;:::i;:::-;:50;;:72;;;;:::i;:::-;12170:6;:10;;:84;;;;:::i;:::-;:88;;:128;;;;:::i;:::-;12156:142;;12316:3;12309:10;;;12073:254;;;:::o;9920:150::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10012:1:::1;10002:7;:11;9994:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;10055:7;10038:14;:24;;;;9920:150:::0;:::o;3930:22::-;;;;;;;;;;;;;:::o;2888:281::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3011:1:::1;2991:22;;:8;:22;;;;2969:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;3124:8;3095:38;;3116:6;::::0;::::1;;;;;;;;3095:38;;;;;;;;;;;;3153:8;3144:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2888:281:::0;:::o;12335:262::-;12399:7;12419:11;12433:135;12553:14;;12433:101;12458:75;12511:21;;12458:48;12484:21;;12458;;:25;;:48;;;;:::i;:::-;:52;;:75;;;;:::i;:::-;12433:6;:24;;:101;;;;:::i;:::-;:119;;:135;;;;:::i;:::-;12419:149;;12586:3;12579:10;;;12335:262;;;:::o;4362:36::-;;;;:::o;22189:132::-;22247:7;22274:39;22278:1;22281;22274:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;22267:46;;22189:132;;;;:::o;1845:115::-;1898:15;1941:10;1926:26;;1845:115;:::o;12605:357::-;12749:1;12732:19;;:5;:19;;;;12724:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;12823:1;12804:21;;:7;:21;;;;12796:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;12900:6;12870:11;:18;12882:5;12870:18;;;;;;;;;;;;;;;:27;12889:7;12870:27;;;;;;;;;;;;;;;:36;;;;12938:7;12922:32;;12931:5;12922:32;;;12947:6;12922:32;;;;;;:::i;:::-;;;;;;;;12605:357;;;:::o;21143:181::-;21201:7;21221:9;21237:1;21233;:5;;;;:::i;:::-;21221:17;;21262:1;21257;:6;;21249:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;21315:1;21308:8;;;21143:181;;;;:::o;12970:1810::-;13108:1;13092:18;;:4;:18;;;;13084:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;13178:1;13164:16;;:2;:16;;;;13156:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;13241:1;13232:6;:10;13224:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;13299:5;:11;13305:4;13299:11;;;;;;;;;;;;;;;;;;;;;;;;;13298:12;13290:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;13345:20;:26;13366:4;13345:26;;;;;;;;;;;;;;;;;;;;;;;;;13344:27;:56;;;;;13376:20;:24;13397:2;13376:24;;;;;;;;;;;;;;;;;;;;;;;;;13375:25;13344:56;13340:743;;;13435:11;;13425:6;:21;;13417:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;13538:7;;;;;;;;;;;13533:174;;13607:4;13596:15;;:7;;;;;;;;;;;:15;;;;:32;;;;;13626:2;13615:13;;:7;;;;;;;;;;;:13;;;;13596:32;13566:125;;;;;;;;;;;;:::i;:::-;;;;;;;;;13533:174;13798:11;;13785:10;;:24;;;;:::i;:::-;13767:15;:42;:89;;;;;13846:9;;;;;;;;;;;13830:26;;:4;:26;;;;13767:89;13745:327;;;13906:4;13895:15;;:7;;;;;;;;;;;:15;;;13891:166;;;13947:4;13935:5;:9;13941:2;13935:9;;;;;;;;;;;;;;;;:16;;;;;;;;;;;;;;;;;;13891:166;;;13992:2;13981:13;;:7;;;;;;;;;;;:13;;;13977:80;;;14033:4;14019:5;:11;14025:4;14019:11;;;;;;;;;;;;;;;;:18;;;;;;;;;;;;;;;;;;13977:80;13891:166;13745:327;13340:743;14100:24;:28;14125:2;14100:28;;;;;;;;;;;;;;;;;;;;;;;;;14095:187;;14200:12;;14171:25;14189:6;14171:13;14181:2;14171:9;:13::i;:::-;:17;;:25;;;;:::i;:::-;:41;;14145:125;;;;;;;;;;;;:::i;:::-;;;;;;;;;14095:187;14323:30;14344:4;14350:2;14323:20;:30::i;:::-;14427:12;14442:4;14427:19;;14546:17;:23;14564:4;14546:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;14573:17;:21;14591:2;14573:21;;;;;;;;;;;;;;;;;;;;;;;;;14546:48;:63;;;;14599:10;;;;;;;;;;;14598:11;14546:63;14542:111;;;14636:5;14626:15;;14542:111;14731:41;14746:4;14752:2;14756:6;14764:7;14731:14;:41::i;:::-;13073:1707;12970:1810;;;:::o;21476:226::-;21596:7;21629:1;21624;:6;;21632:12;21616:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;21656:9;21672:1;21668;:5;;;;:::i;:::-;21656:17;;21693:1;21686:8;;;21476:226;;;;;:::o;21710:471::-;21768:7;22018:1;22013;:6;22009:47;;;22043:1;22036:8;;;;22009:47;22068:9;22084:1;22080;:5;;;;:::i;:::-;22068:17;;22113:1;22108;22104;:5;;;;:::i;:::-;:10;22096:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;22172:1;22165:8;;;21710:471;;;;;:::o;22329:312::-;22449:7;22481:1;22477;:5;22484:12;22469:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;22508:9;22524:1;22520;:5;;;;:::i;:::-;22508:17;;22632:1;22625:8;;;22329:312;;;;;:::o;17153:2737::-;17506:28;17537:24;17555:4;17537:9;:24::i;:::-;17506:55;;17574:15;17616:14;;17592:20;:38;;17574:56;;17661:10;:42;;;;;17696:7;;;;;;;;;;;17688:15;;:4;:15;;;;17661:42;:85;;;;;17720:26;;;;;;;;;;;17661:85;:152;;;;;17781:4;17765:21;;:4;:21;;;:47;;;;;17804:7;;;;;;;;;;;17790:22;;:2;:22;;;17765:47;17763:50;17661:152;17643:2240;;;17888:65;17905:4;17920:9;;;;;;;;;;;17932:20;17888:8;:65::i;:::-;17970:21;17994:26;18018:1;17994:19;;:23;;:26;;;;:::i;:::-;17970:50;;18035:26;18064:38;18088:13;18064:19;;:23;;:38;;;;:::i;:::-;18035:67;;18119:30;18152:76;18195:18;18152:20;:24;;:76;;;;:::i;:::-;18119:109;;18245:21;18269;18245:45;;18357:66;18388:9;;;;;;;;;;;18400:22;18357;:66::i;:::-;18440:20;18463:40;18489:13;18463:21;:25;;:40;;;;:::i;:::-;18440:63;;18518:31;18552:95;18624:22;18552:49;18587:13;18552:12;:34;;:49;;;;:::i;:::-;:71;;:95;;;;:::i;:::-;18518:129;;18662:23;18688:97;18748:22;18688:37;18705:19;;18688:12;:16;;:37;;;;:::i;:::-;:41;;:97;;;;:::i;:::-;18662:123;;18800:23;18826:94;18890:15;18826:41;18843:23;18826:12;:16;;:41;;;;:::i;:::-;:45;;:94;;;;:::i;:::-;18800:120;;19004:1;18978:23;:27;18974:461;;;19026:211;19075:9;;;;;;;;;;;19108:23;;;;;;;;;;;19154:18;19195:23;19026:18;:211::i;:::-;19263:156;19300:13;19336:23;19382:18;19263:156;;;;;;;;:::i;:::-;;;;;;;;18974:461;19521:1;19503:15;:19;19499:75;;;19532:15;;;;;;;;;;;19524:33;;:50;19558:15;19524:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19499:75;19663:1;19645:15;:19;19641:75;;;19674:15;;;;;;;;;;;19666:33;;:50;19700:15;19666:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19641:75;19794:1;19772:19;:23;;;;19832:1;19810:19;:23;;;;19870:1;19848:19;:23;;;;17840:2043;;;;;;;;17643:2240;17217:2673;;17153:2737;;:::o;14861:1363::-;15027:6;15016:17;;:7;;;;;;;;;;;:17;;;:28;;;;;15037:7;15016:28;15012:1205;;;15061:14;15078:24;15095:6;15078:16;:24::i;:::-;15061:41;;15117:23;15143:18;15154:6;15143;:10;;:18;;;;:::i;:::-;15117:44;;15196:52;15218:6;15196:52;;;;;;;;;;;;;;;;;:9;:17;15206:6;15196:17;;;;;;;;;;;;;;;;:21;;:52;;;;;:::i;:::-;15176:9;:17;15186:6;15176:17;;;;;;;;;;;;;;;:72;;;;15286:41;15311:15;15286:9;:20;15296:9;15286:20;;;;;;;;;;;;;;;;:24;;:41;;;;:::i;:::-;15263:9;:20;15273:9;15263:20;;;;;;;;;;;;;;;:64;;;;15366:9;15349:44;;15358:6;15349:44;;;15377:15;15349:44;;;;;;:::i;:::-;;;;;;;;15408:28;15421:6;15429;15408:12;:28::i;:::-;15451:30;15474:6;15451:22;:30::i;:::-;15046:447;;15012:1205;;;15514:9;15503:20;;:7;;;;;;;;;;;:20;;;:31;;;;;15527:7;15503:31;15499:718;;;15551:14;15568:25;15586:6;15568:17;:25::i;:::-;15551:42;;15608:23;15634:18;15645:6;15634;:10;;:18;;;;:::i;:::-;15608:44;;15687:52;15709:6;15687:52;;;;;;;;;;;;;;;;;:9;:17;15697:6;15687:17;;;;;;;;;;;;;;;;:21;;:52;;;;;:::i;:::-;15667:9;:17;15677:6;15667:17;;;;;;;;;;;;;;;:72;;;;15777:41;15802:15;15777:9;:20;15787:9;15777:20;;;;;;;;;;;;;;;;:24;;:41;;;;:::i;:::-;15754:9;:20;15764:9;15754:20;;;;;;;;;;;;;;;:64;;;;15857:9;15840:44;;15849:6;15840:44;;;15868:15;15840:44;;;;;;:::i;:::-;;;;;;;;15899:28;15912:6;15920;15899:12;:28::i;:::-;15942:31;15966:6;15942:23;:31::i;:::-;15536:449;;15499:718;;;16026:52;16048:6;16026:52;;;;;;;;;;;;;;;;;:9;:17;16036:6;16026:17;;;;;;;;;;;;;;;;:21;;:52;;;;;:::i;:::-;16006:9;:17;16016:6;16006:17;;;;;;;;;;;;;;;:72;;;;16116:32;16141:6;16116:9;:20;16126:9;16116:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;16093:9;:20;16103:9;16093:20;;;;;;;;;;;;;;;:55;;;;16187:9;16170:35;;16179:6;16170:35;;;16198:6;16170:35;;;;;;:::i;:::-;;;;;;;;15499:718;15012:1205;14861:1363;;;;:::o;21332:136::-;21390:7;21417:43;21421:1;21424;21417:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;21410:50;;21332:136;;;;:::o;19989:603::-;20093:20;20127:13;20093:48;;20210:21;20248:1;20234:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20210:40;;20279:4;20261;20266:1;20261:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;20305:9;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20295:4;20300:1;20295:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;20360:9;:60;;;20435:11;20461:1;20505:4;20532;20570:3;20552:15;:21;;;;:::i;:::-;20360:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20082:510;;19989:603;;:::o;20600:512::-;20763:20;20797:13;20763:48;;20854:9;:25;;;20887:9;20920:4;20940:11;20966:1;21009;21052:5;21090:3;21072:15;:21;;;;:::i;:::-;20854:250;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20752:360;20600:512;;;;:::o;16232:201::-;16332:36;16361:6;16332:9;:24;16350:4;16332:24;;;;;;;;;;;;;;;;:28;;:36;;;;:::i;:::-;16305:9;:24;16323:4;16305:24;;;;;;;;;;;;;;;:63;;;;16411:4;16386:39;;16395:6;16386:39;;;16418:6;16386:39;;;;;;:::i;:::-;;;;;;;;16232:201;;:::o;16441:346::-;16531:76;16582:14;;16531:32;16542:20;;16531:6;:10;;:32;;;;:::i;:::-;:36;;:76;;;;:::i;:::-;16508:19;;:99;;;;;;;:::i;:::-;;;;;;;;16641:52;16678:14;;16641:32;16652:20;;16641:6;:10;;:32;;;;:::i;:::-;:36;;:52;;;;:::i;:::-;16618:19;;:75;;;;;;;:::i;:::-;;;;;;;;16727:52;16764:14;;16727:32;16738:20;;16727:6;:10;;:32;;;;:::i;:::-;:36;;:52;;;;:::i;:::-;16704:19;;:75;;;;;;;:::i;:::-;;;;;;;;16441:346;:::o;16795:350::-;16886:77;16938:14;;16886:33;16897:21;;16886:6;:10;;:33;;;;:::i;:::-;:37;;:77;;;;:::i;:::-;16863:19;;:100;;;;;;;:::i;:::-;;;;;;;;16997:53;17035:14;;16997:33;17008:21;;16997:6;:10;;:33;;;;:::i;:::-;:37;;:53;;;;:::i;:::-;16974:19;;:76;;;;;;;:::i;:::-;;;;;;;;17084:53;17122:14;;17084:33;17095:21;;17084:6;:10;;:33;;;;:::i;:::-;:37;;:53;;;;:::i;:::-;17061:19;;:76;;;;;;;:::i;:::-;;;;;;;;16795:350;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:126::-;1434:7;1474:42;1467:5;1463:54;1452:65;;1397:126;;;:::o;1529:60::-;1557:3;1578:5;1571:12;;1529:60;;;:::o;1595:142::-;1645:9;1678:53;1696:34;1705:24;1723:5;1705:24;:::i;:::-;1696:34;:::i;:::-;1678:53;:::i;:::-;1665:66;;1595:142;;;:::o;1743:126::-;1793:9;1826:37;1857:5;1826:37;:::i;:::-;1813:50;;1743:126;;;:::o;1875:144::-;1943:9;1976:37;2007:5;1976:37;:::i;:::-;1963:50;;1875:144;;;:::o;2025:167::-;2130:55;2179:5;2130:55;:::i;:::-;2125:3;2118:68;2025:167;;:::o;2198:258::-;2309:4;2347:2;2336:9;2332:18;2324:26;;2360:89;2446:1;2435:9;2431:17;2422:6;2360:89;:::i;:::-;2198:258;;;;:::o;2543:117::-;2652:1;2649;2642:12;2789:96;2826:7;2855:24;2873:5;2855:24;:::i;:::-;2844:35;;2789:96;;;:::o;2891:122::-;2964:24;2982:5;2964:24;:::i;:::-;2957:5;2954:35;2944:63;;3003:1;3000;2993:12;2944:63;2891:122;:::o;3019:139::-;3065:5;3103:6;3090:20;3081:29;;3119:33;3146:5;3119:33;:::i;:::-;3019:139;;;;:::o;3164:77::-;3201:7;3230:5;3219:16;;3164:77;;;:::o;3247:122::-;3320:24;3338:5;3320:24;:::i;:::-;3313:5;3310:35;3300:63;;3359:1;3356;3349:12;3300:63;3247:122;:::o;3375:139::-;3421:5;3459:6;3446:20;3437:29;;3475:33;3502:5;3475:33;:::i;:::-;3375:139;;;;:::o;3520:474::-;3588:6;3596;3645:2;3633:9;3624:7;3620:23;3616:32;3613:119;;;3651:79;;:::i;:::-;3613:119;3771:1;3796:53;3841:7;3832:6;3821:9;3817:22;3796:53;:::i;:::-;3786:63;;3742:117;3898:2;3924:53;3969:7;3960:6;3949:9;3945:22;3924:53;:::i;:::-;3914:63;;3869:118;3520:474;;;;;:::o;4000:90::-;4034:7;4077:5;4070:13;4063:21;4052:32;;4000:90;;;:::o;4096:109::-;4177:21;4192:5;4177:21;:::i;:::-;4172:3;4165:34;4096:109;;:::o;4211:210::-;4298:4;4336:2;4325:9;4321:18;4313:26;;4349:65;4411:1;4400:9;4396:17;4387:6;4349:65;:::i;:::-;4211:210;;;;:::o;4427:116::-;4497:21;4512:5;4497:21;:::i;:::-;4490:5;4487:32;4477:60;;4533:1;4530;4523:12;4477:60;4427:116;:::o;4549:133::-;4592:5;4630:6;4617:20;4608:29;;4646:30;4670:5;4646:30;:::i;:::-;4549:133;;;;:::o;4688:323::-;4744:6;4793:2;4781:9;4772:7;4768:23;4764:32;4761:119;;;4799:79;;:::i;:::-;4761:119;4919:1;4944:50;4986:7;4977:6;4966:9;4962:22;4944:50;:::i;:::-;4934:60;;4890:114;4688:323;;;;:::o;5017:619::-;5094:6;5102;5110;5159:2;5147:9;5138:7;5134:23;5130:32;5127:119;;;5165:79;;:::i;:::-;5127:119;5285:1;5310:53;5355:7;5346:6;5335:9;5331:22;5310:53;:::i;:::-;5300:63;;5256:117;5412:2;5438:53;5483:7;5474:6;5463:9;5459:22;5438:53;:::i;:::-;5428:63;;5383:118;5540:2;5566:53;5611:7;5602:6;5591:9;5587:22;5566:53;:::i;:::-;5556:63;;5511:118;5017:619;;;;;:::o;5642:118::-;5729:24;5747:5;5729:24;:::i;:::-;5724:3;5717:37;5642:118;;:::o;5766:222::-;5859:4;5897:2;5886:9;5882:18;5874:26;;5910:71;5978:1;5967:9;5963:17;5954:6;5910:71;:::i;:::-;5766:222;;;;:::o;5994:619::-;6071:6;6079;6087;6136:2;6124:9;6115:7;6111:23;6107:32;6104:119;;;6142:79;;:::i;:::-;6104:119;6262:1;6287:53;6332:7;6323:6;6312:9;6308:22;6287:53;:::i;:::-;6277:63;;6233:117;6389:2;6415:53;6460:7;6451:6;6440:9;6436:22;6415:53;:::i;:::-;6405:63;;6360:118;6517:2;6543:53;6588:7;6579:6;6568:9;6564:22;6543:53;:::i;:::-;6533:63;;6488:118;5994:619;;;;;:::o;6619:468::-;6684:6;6692;6741:2;6729:9;6720:7;6716:23;6712:32;6709:119;;;6747:79;;:::i;:::-;6709:119;6867:1;6892:53;6937:7;6928:6;6917:9;6913:22;6892:53;:::i;:::-;6882:63;;6838:117;6994:2;7020:50;7062:7;7053:6;7042:9;7038:22;7020:50;:::i;:::-;7010:60;;6965:115;6619:468;;;;;:::o;7093:86::-;7128:7;7168:4;7161:5;7157:16;7146:27;;7093:86;;;:::o;7185:112::-;7268:22;7284:5;7268:22;:::i;:::-;7263:3;7256:35;7185:112;;:::o;7303:214::-;7392:4;7430:2;7419:9;7415:18;7407:26;;7443:67;7507:1;7496:9;7492:17;7483:6;7443:67;:::i;:::-;7303:214;;;;:::o;7523:619::-;7600:6;7608;7616;7665:2;7653:9;7644:7;7640:23;7636:32;7633:119;;;7671:79;;:::i;:::-;7633:119;7791:1;7816:53;7861:7;7852:6;7841:9;7837:22;7816:53;:::i;:::-;7806:63;;7762:117;7918:2;7944:53;7989:7;7980:6;7969:9;7965:22;7944:53;:::i;:::-;7934:63;;7889:118;8046:2;8072:53;8117:7;8108:6;8097:9;8093:22;8072:53;:::i;:::-;8062:63;;8017:118;7523:619;;;;;:::o;8148:118::-;8235:24;8253:5;8235:24;:::i;:::-;8230:3;8223:37;8148:118;;:::o;8272:222::-;8365:4;8403:2;8392:9;8388:18;8380:26;;8416:71;8484:1;8473:9;8469:17;8460:6;8416:71;:::i;:::-;8272:222;;;;:::o;8500:329::-;8559:6;8608:2;8596:9;8587:7;8583:23;8579:32;8576:119;;;8614:79;;:::i;:::-;8576:119;8734:1;8759:53;8804:7;8795:6;8784:9;8780:22;8759:53;:::i;:::-;8749:63;;8705:117;8500:329;;;;:::o;8835:::-;8894:6;8943:2;8931:9;8922:7;8918:23;8914:32;8911:119;;;8949:79;;:::i;:::-;8911:119;9069:1;9094:53;9139:7;9130:6;9119:9;9115:22;9094:53;:::i;:::-;9084:63;;9040:117;8835:329;;;;:::o;9170:474::-;9238:6;9246;9295:2;9283:9;9274:7;9270:23;9266:32;9263:119;;;9301:79;;:::i;:::-;9263:119;9421:1;9446:53;9491:7;9482:6;9471:9;9467:22;9446:53;:::i;:::-;9436:63;;9392:117;9548:2;9574:53;9619:7;9610:6;9599:9;9595:22;9574:53;:::i;:::-;9564:63;;9519:118;9170:474;;;;;:::o;9650:180::-;9698:77;9695:1;9688:88;9795:4;9792:1;9785:15;9819:4;9816:1;9809:15;9836:320;9880:6;9917:1;9911:4;9907:12;9897:22;;9964:1;9958:4;9954:12;9985:18;9975:81;;10041:4;10033:6;10029:17;10019:27;;9975:81;10103:2;10095:6;10092:14;10072:18;10069:38;10066:84;;;10122:18;;:::i;:::-;10066:84;9887:269;9836:320;;;:::o;10162:182::-;10302:34;10298:1;10290:6;10286:14;10279:58;10162:182;:::o;10350:366::-;10492:3;10513:67;10577:2;10572:3;10513:67;:::i;:::-;10506:74;;10589:93;10678:3;10589:93;:::i;:::-;10707:2;10702:3;10698:12;10691:19;;10350:366;;;:::o;10722:419::-;10888:4;10926:2;10915:9;10911:18;10903:26;;10975:9;10969:4;10965:20;10961:1;10950:9;10946:17;10939:47;11003:131;11129:4;11003:131;:::i;:::-;10995:139;;10722:419;;;:::o;11147:172::-;11287:24;11283:1;11275:6;11271:14;11264:48;11147:172;:::o;11325:366::-;11467:3;11488:67;11552:2;11547:3;11488:67;:::i;:::-;11481:74;;11564:93;11653:3;11564:93;:::i;:::-;11682:2;11677:3;11673:12;11666:19;;11325:366;;;:::o;11697:419::-;11863:4;11901:2;11890:9;11886:18;11878:26;;11950:9;11944:4;11940:20;11936:1;11925:9;11921:17;11914:47;11978:131;12104:4;11978:131;:::i;:::-;11970:139;;11697:419;;;:::o;12122:165::-;12262:17;12258:1;12250:6;12246:14;12239:41;12122:165;:::o;12293:366::-;12435:3;12456:67;12520:2;12515:3;12456:67;:::i;:::-;12449:74;;12532:93;12621:3;12532:93;:::i;:::-;12650:2;12645:3;12641:12;12634:19;;12293:366;;;:::o;12665:419::-;12831:4;12869:2;12858:9;12854:18;12846:26;;12918:9;12912:4;12908:20;12904:1;12893:9;12889:17;12882:47;12946:131;13072:4;12946:131;:::i;:::-;12938:139;;12665:419;;;:::o;13090:160::-;13230:12;13226:1;13218:6;13214:14;13207:36;13090:160;:::o;13256:366::-;13398:3;13419:67;13483:2;13478:3;13419:67;:::i;:::-;13412:74;;13495:93;13584:3;13495:93;:::i;:::-;13613:2;13608:3;13604:12;13597:19;;13256:366;;;:::o;13628:419::-;13794:4;13832:2;13821:9;13817:18;13809:26;;13881:9;13875:4;13871:20;13867:1;13856:9;13852:17;13845:47;13909:131;14035:4;13909:131;:::i;:::-;13901:139;;13628:419;;;:::o;14053:225::-;14193:34;14189:1;14181:6;14177:14;14170:58;14262:8;14257:2;14249:6;14245:15;14238:33;14053:225;:::o;14284:366::-;14426:3;14447:67;14511:2;14506:3;14447:67;:::i;:::-;14440:74;;14523:93;14612:3;14523:93;:::i;:::-;14641:2;14636:3;14632:12;14625:19;;14284:366;;;:::o;14656:419::-;14822:4;14860:2;14849:9;14845:18;14837:26;;14909:9;14903:4;14899:20;14895:1;14884:9;14880:17;14873:47;14937:131;15063:4;14937:131;:::i;:::-;14929:139;;14656:419;;;:::o;15081:179::-;15221:31;15217:1;15209:6;15205:14;15198:55;15081:179;:::o;15266:366::-;15408:3;15429:67;15493:2;15488:3;15429:67;:::i;:::-;15422:74;;15505:93;15594:3;15505:93;:::i;:::-;15623:2;15618:3;15614:12;15607:19;;15266:366;;;:::o;15638:419::-;15804:4;15842:2;15831:9;15827:18;15819:26;;15891:9;15885:4;15881:20;15877:1;15866:9;15862:17;15855:47;15919:131;16045:4;15919:131;:::i;:::-;15911:139;;15638:419;;;:::o;16063:177::-;16203:29;16199:1;16191:6;16187:14;16180:53;16063:177;:::o;16246:366::-;16388:3;16409:67;16473:2;16468:3;16409:67;:::i;:::-;16402:74;;16485:93;16574:3;16485:93;:::i;:::-;16603:2;16598:3;16594:12;16587:19;;16246:366;;;:::o;16618:419::-;16784:4;16822:2;16811:9;16807:18;16799:26;;16871:9;16865:4;16861:20;16857:1;16846:9;16842:17;16835:47;16899:131;17025:4;16899:131;:::i;:::-;16891:139;;16618:419;;;:::o;17043:180::-;17091:77;17088:1;17081:88;17188:4;17185:1;17178:15;17212:4;17209:1;17202:15;17229:305;17269:3;17288:20;17306:1;17288:20;:::i;:::-;17283:25;;17322:20;17340:1;17322:20;:::i;:::-;17317:25;;17476:1;17408:66;17404:74;17401:1;17398:81;17395:107;;;17482:18;;:::i;:::-;17395:107;17526:1;17523;17519:9;17512:16;;17229:305;;;;:::o;17540:177::-;17680:29;17676:1;17668:6;17664:14;17657:53;17540:177;:::o;17723:366::-;17865:3;17886:67;17950:2;17945:3;17886:67;:::i;:::-;17879:74;;17962:93;18051:3;17962:93;:::i;:::-;18080:2;18075:3;18071:12;18064:19;;17723:366;;;:::o;18095:419::-;18261:4;18299:2;18288:9;18284:18;18276:26;;18348:9;18342:4;18338:20;18334:1;18323:9;18319:17;18312:47;18376:131;18502:4;18376:131;:::i;:::-;18368:139;;18095:419;;;:::o;18520:180::-;18660:32;18656:1;18648:6;18644:14;18637:56;18520:180;:::o;18706:366::-;18848:3;18869:67;18933:2;18928:3;18869:67;:::i;:::-;18862:74;;18945:93;19034:3;18945:93;:::i;:::-;19063:2;19058:3;19054:12;19047:19;;18706:366;;;:::o;19078:419::-;19244:4;19282:2;19271:9;19267:18;19259:26;;19331:9;19325:4;19321:20;19317:1;19306:9;19302:17;19295:47;19359:131;19485:4;19359:131;:::i;:::-;19351:139;;19078:419;;;:::o;19503:178::-;19643:30;19639:1;19631:6;19627:14;19620:54;19503:178;:::o;19687:366::-;19829:3;19850:67;19914:2;19909:3;19850:67;:::i;:::-;19843:74;;19926:93;20015:3;19926:93;:::i;:::-;20044:2;20039:3;20035:12;20028:19;;19687:366;;;:::o;20059:419::-;20225:4;20263:2;20252:9;20248:18;20240:26;;20312:9;20306:4;20302:20;20298:1;20287:9;20283:17;20276:47;20340:131;20466:4;20340:131;:::i;:::-;20332:139;;20059:419;;;:::o;20484:182::-;20624:34;20620:1;20612:6;20608:14;20601:58;20484:182;:::o;20672:366::-;20814:3;20835:67;20899:2;20894:3;20835:67;:::i;:::-;20828:74;;20911:93;21000:3;20911:93;:::i;:::-;21029:2;21024:3;21020:12;21013:19;;20672:366;;;:::o;21044:419::-;21210:4;21248:2;21237:9;21233:18;21225:26;;21297:9;21291:4;21287:20;21283:1;21272:9;21268:17;21261:47;21325:131;21451:4;21325:131;:::i;:::-;21317:139;;21044:419;;;:::o;21469:162::-;21609:14;21605:1;21597:6;21593:14;21586:38;21469:162;:::o;21637:366::-;21779:3;21800:67;21864:2;21859:3;21800:67;:::i;:::-;21793:74;;21876:93;21965:3;21876:93;:::i;:::-;21994:2;21989:3;21985:12;21978:19;;21637:366;;;:::o;22009:419::-;22175:4;22213:2;22202:9;22198:18;22190:26;;22262:9;22256:4;22252:20;22248:1;22237:9;22233:17;22226:47;22290:131;22416:4;22290:131;:::i;:::-;22282:139;;22009:419;;;:::o;22434:171::-;22574:23;22570:1;22562:6;22558:14;22551:47;22434:171;:::o;22611:366::-;22753:3;22774:67;22838:2;22833:3;22774:67;:::i;:::-;22767:74;;22850:93;22939:3;22850:93;:::i;:::-;22968:2;22963:3;22959:12;22952:19;;22611:366;;;:::o;22983:419::-;23149:4;23187:2;23176:9;23172:18;23164:26;;23236:9;23230:4;23226:20;23222:1;23211:9;23207:17;23200:47;23264:131;23390:4;23264:131;:::i;:::-;23256:139;;22983:419;;;:::o;23408:169::-;23548:21;23544:1;23536:6;23532:14;23525:45;23408:169;:::o;23583:366::-;23725:3;23746:67;23810:2;23805:3;23746:67;:::i;:::-;23739:74;;23822:93;23911:3;23822:93;:::i;:::-;23940:2;23935:3;23931:12;23924:19;;23583:366;;;:::o;23955:419::-;24121:4;24159:2;24148:9;24144:18;24136:26;;24208:9;24202:4;24198:20;24194:1;24183:9;24179:17;24172:47;24236:131;24362:4;24236:131;:::i;:::-;24228:139;;23955:419;;;:::o;24380:172::-;24520:24;24516:1;24508:6;24504:14;24497:48;24380:172;:::o;24558:366::-;24700:3;24721:67;24785:2;24780:3;24721:67;:::i;:::-;24714:74;;24797:93;24886:3;24797:93;:::i;:::-;24915:2;24910:3;24906:12;24899:19;;24558:366;;;:::o;24930:419::-;25096:4;25134:2;25123:9;25119:18;25111:26;;25183:9;25177:4;25173:20;25169:1;25158:9;25154:17;25147:47;25211:131;25337:4;25211:131;:::i;:::-;25203:139;;24930:419;;;:::o;25355:191::-;25395:4;25415:20;25433:1;25415:20;:::i;:::-;25410:25;;25449:20;25467:1;25449:20;:::i;:::-;25444:25;;25488:1;25485;25482:8;25479:34;;;25493:18;;:::i;:::-;25479:34;25538:1;25535;25531:9;25523:17;;25355:191;;;;:::o;25552:348::-;25592:7;25615:20;25633:1;25615:20;:::i;:::-;25610:25;;25649:20;25667:1;25649:20;:::i;:::-;25644:25;;25837:1;25769:66;25765:74;25762:1;25759:81;25754:1;25747:9;25740:17;25736:105;25733:131;;;25844:18;;:::i;:::-;25733:131;25892:1;25889;25885:9;25874:20;;25552:348;;;;:::o;25906:180::-;25954:77;25951:1;25944:88;26051:4;26048:1;26041:15;26075:4;26072:1;26065:15;26092:185;26132:1;26149:20;26167:1;26149:20;:::i;:::-;26144:25;;26183:20;26201:1;26183:20;:::i;:::-;26178:25;;26222:1;26212:35;;26227:18;;:::i;:::-;26212:35;26269:1;26266;26262:9;26257:14;;26092:185;;;;:::o;26283:220::-;26423:34;26419:1;26411:6;26407:14;26400:58;26492:3;26487:2;26479:6;26475:15;26468:28;26283:220;:::o;26509:366::-;26651:3;26672:67;26736:2;26731:3;26672:67;:::i;:::-;26665:74;;26748:93;26837:3;26748:93;:::i;:::-;26866:2;26861:3;26857:12;26850:19;;26509:366;;;:::o;26881:419::-;27047:4;27085:2;27074:9;27070:18;27062:26;;27134:9;27128:4;27124:20;27120:1;27109:9;27105:17;27098:47;27162:131;27288:4;27162:131;:::i;:::-;27154:139;;26881:419;;;:::o;27306:442::-;27455:4;27493:2;27482:9;27478:18;27470:26;;27506:71;27574:1;27563:9;27559:17;27550:6;27506:71;:::i;:::-;27587:72;27655:2;27644:9;27640:18;27631:6;27587:72;:::i;:::-;27669;27737:2;27726:9;27722:18;27713:6;27669:72;:::i;:::-;27306:442;;;;;;:::o;27754:180::-;27802:77;27799:1;27792:88;27899:4;27896:1;27889:15;27923:4;27920:1;27913:15;27940:180;27988:77;27985:1;27978:88;28085:4;28082:1;28075:15;28109:4;28106:1;28099:15;28126:143;28183:5;28214:6;28208:13;28199:22;;28230:33;28257:5;28230:33;:::i;:::-;28126:143;;;;:::o;28275:351::-;28345:6;28394:2;28382:9;28373:7;28369:23;28365:32;28362:119;;;28400:79;;:::i;:::-;28362:119;28520:1;28545:64;28601:7;28592:6;28581:9;28577:22;28545:64;:::i;:::-;28535:74;;28491:128;28275:351;;;;:::o;28632:85::-;28677:7;28706:5;28695:16;;28632:85;;;:::o;28723:158::-;28781:9;28814:61;28832:42;28841:32;28867:5;28841:32;:::i;:::-;28832:42;:::i;:::-;28814:61;:::i;:::-;28801:74;;28723:158;;;:::o;28887:147::-;28982:45;29021:5;28982:45;:::i;:::-;28977:3;28970:58;28887:147;;:::o;29040:114::-;29107:6;29141:5;29135:12;29125:22;;29040:114;;;:::o;29160:184::-;29259:11;29293:6;29288:3;29281:19;29333:4;29328:3;29324:14;29309:29;;29160:184;;;;:::o;29350:132::-;29417:4;29440:3;29432:11;;29470:4;29465:3;29461:14;29453:22;;29350:132;;;:::o;29488:108::-;29565:24;29583:5;29565:24;:::i;:::-;29560:3;29553:37;29488:108;;:::o;29602:179::-;29671:10;29692:46;29734:3;29726:6;29692:46;:::i;:::-;29770:4;29765:3;29761:14;29747:28;;29602:179;;;;:::o;29787:113::-;29857:4;29889;29884:3;29880:14;29872:22;;29787:113;;;:::o;29936:732::-;30055:3;30084:54;30132:5;30084:54;:::i;:::-;30154:86;30233:6;30228:3;30154:86;:::i;:::-;30147:93;;30264:56;30314:5;30264:56;:::i;:::-;30343:7;30374:1;30359:284;30384:6;30381:1;30378:13;30359:284;;;30460:6;30454:13;30487:63;30546:3;30531:13;30487:63;:::i;:::-;30480:70;;30573:60;30626:6;30573:60;:::i;:::-;30563:70;;30419:224;30406:1;30403;30399:9;30394:14;;30359:284;;;30363:14;30659:3;30652:10;;30060:608;;;29936:732;;;;:::o;30674:831::-;30937:4;30975:3;30964:9;30960:19;30952:27;;30989:71;31057:1;31046:9;31042:17;31033:6;30989:71;:::i;:::-;31070:80;31146:2;31135:9;31131:18;31122:6;31070:80;:::i;:::-;31197:9;31191:4;31187:20;31182:2;31171:9;31167:18;31160:48;31225:108;31328:4;31319:6;31225:108;:::i;:::-;31217:116;;31343:72;31411:2;31400:9;31396:18;31387:6;31343:72;:::i;:::-;31425:73;31493:3;31482:9;31478:19;31469:6;31425:73;:::i;:::-;30674:831;;;;;;;;:::o;31511:807::-;31760:4;31798:3;31787:9;31783:19;31775:27;;31812:71;31880:1;31869:9;31865:17;31856:6;31812:71;:::i;:::-;31893:72;31961:2;31950:9;31946:18;31937:6;31893:72;:::i;:::-;31975:80;32051:2;32040:9;32036:18;32027:6;31975:80;:::i;:::-;32065;32141:2;32130:9;32126:18;32117:6;32065:80;:::i;:::-;32155:73;32223:3;32212:9;32208:19;32199:6;32155:73;:::i;:::-;32238;32306:3;32295:9;32291:19;32282:6;32238:73;:::i;:::-;31511:807;;;;;;;;;:::o;32324:143::-;32381:5;32412:6;32406:13;32397:22;;32428:33;32455:5;32428:33;:::i;:::-;32324:143;;;;:::o;32473:663::-;32561:6;32569;32577;32626:2;32614:9;32605:7;32601:23;32597:32;32594:119;;;32632:79;;:::i;:::-;32594:119;32752:1;32777:64;32833:7;32824:6;32813:9;32809:22;32777:64;:::i;:::-;32767:74;;32723:128;32890:2;32916:64;32972:7;32963:6;32952:9;32948:22;32916:64;:::i;:::-;32906:74;;32861:129;33029:2;33055:64;33111:7;33102:6;33091:9;33087:22;33055:64;:::i;:::-;33045:74;;33000:129;32473:663;;;;;:::o

Swarm Source

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