ETH Price: $3,320.43 (+1.70%)
Gas: 5 Gwei

Token

Hedex (HEDEX)
 

Overview

Max Total Supply

100,000,000 HEDEX

Holders

238

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
697,908.114193398 HEDEX

Value
$0.00
0x4c9f531abd589fd16effbbe8d481326a6bc9f589
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:
Hedex

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**

Website: https://hedexbot.com/

Twitter: https://twitter.com/hedexbot

Telegram: https://t.me/hedexbotgateway

Youtube: https://youtube.com/@Hedexbot

*/
// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

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

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

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

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

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

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

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

contract Hedex is IERC20Metadata, Ownable {
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) public isExcludedFromFee;
    mapping(address => bool) public isExcludedFromMaxWalletToken;

    address payable public marketingWallet;
    address payable public devWallet;
    address payable public constant burnWallet = payable(0x000000000000000000000000000000000000dEaD);
    address payable public serviceWallet;

    uint8 private constant _decimals = 9;
    uint256 private _tTotal = 10**8 * 10**_decimals;
    string private constant _name = "Hedex";
    string private constant _symbol = "HEDEX";

    uint256 public swapMinTokens = 10**4 * 10**_decimals;

    uint256 public buyTax = 30;
    uint256 public sellTax = 30;
    uint256 public maxTransactionTax = 20;

    uint256 public marketingPct = 40;
    uint256 public devPct = 40;
    uint256 public taxPct = 20;
    uint256 public maxPct = 100;

    uint256 public maxWalletSize = (_tTotal * 2) / maxPct;

    IUniswapV2Router02 public _uniswapV2Router;
    address public uniswapV2Pair;
    bool public inSwapAndLiquify;

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

    event UpdateServiceWallet(address newtax_, address oldServiceWallet);
    event UpdatedBuySellTaxes(uint256 buyTax, uint256 sellTax);
    event UpdatedPercentTaxes(uint256 marketing, uint256 dev);
    event UpdatedIsExcludedFromFee(address account, bool flag);
    event UpdatedIsExcludedFromMaxWallet(address account, bool flag);
    event UpdatedMarketingAndDevWallet(address marketing, address dev);

    modifier lockTheSwap() {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor(address uniswapRouterAddress) {
        _tOwned[owner()] = _tTotal;

        _uniswapV2Router = IUniswapV2Router02(uniswapRouterAddress);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        marketingWallet = payable(0x27e6Ac04Cce84090c50bef278Bb4504C04F461eC);
        devWallet = payable(0x94342f18C2a63C90e255535117D0B7283893F864);
        serviceWallet = payable(0x423fa214FF267e4F3D187DdD435D2681a1259242);

        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[marketingWallet] = true;
        isExcludedFromFee[devWallet] = true;
        isExcludedFromFee[burnWallet] = true;
        isExcludedFromFee[serviceWallet] = true;
        isExcludedFromFee[uniswapRouterAddress] = true;

        isExcludedFromMaxWalletToken[uniswapRouterAddress] = true;
        isExcludedFromMaxWalletToken[owner()] = true;
        isExcludedFromMaxWalletToken[address(this)] = true;
        isExcludedFromMaxWalletToken[marketingWallet] = true;
        isExcludedFromMaxWalletToken[devWallet] = true;
        isExcludedFromMaxWalletToken[burnWallet] = true;
        isExcludedFromMaxWalletToken[serviceWallet] = true;
        isExcludedFromMaxWalletToken[uniswapV2Pair] = true;

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

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

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

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

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

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

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

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

    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()] - amount
        );
        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender] - subtractedValue
        );
        return true;
    }

    receive() external payable {}

    function _approve(
        address theOwner,
        address theSpender,
        uint256 amount
    ) private {
        require(
            theOwner != address(0) && theSpender != address(0),
            "Zero address."
        );
        _allowances[theOwner][theSpender] = amount;
        emit Approval(theOwner, theSpender, amount);
    }

    function setTax(
        uint256 buy,
        uint256 sell
    ) public onlyOwner {
        require(buy <= maxTransactionTax, "Buy tax cannot exceed the maximum.");
        require(sell <= maxTransactionTax, "Sell tax cannot exceed the maximum.");

        buyTax = buy;
        sellTax = sell;

        emit UpdatedBuySellTaxes(buy, sell);
    }

    function setPercentTax(
        uint256 marketing,
        uint256 dev
    ) public onlyOwner {
        require(marketing + dev == 80, "The sum of percentages must equal 80.");
        marketingPct = marketing;
        devPct = dev;

        emit UpdatedPercentTaxes(marketing, dev);
    }
    function excludeFromFee(address account) external onlyOwner {
        isExcludedFromFee[account] = true;

        emit UpdatedIsExcludedFromFee(account, true);
    }

    function includeInFee(address account) external onlyOwner {
        isExcludedFromFee[account] = false;

        emit UpdatedIsExcludedFromFee(account, false);
    }

	function excludeMaxWallet(address account) external onlyOwner {
        isExcludedFromMaxWalletToken[account] = true;
        emit UpdatedIsExcludedFromMaxWallet(account, true);
    }

    function includeMaxWallet(address account) external onlyOwner {
        isExcludedFromMaxWalletToken[account] = false;
        emit UpdatedIsExcludedFromMaxWallet(account, false);
    }

    function setWallets(
        address marketing,
        address dev
    ) public onlyOwner {
        require(marketing != address(0) && dev != address(0), "Invalid wallet addresses.");
        isExcludedFromFee[marketingWallet] = false;
        isExcludedFromFee[devWallet] = false;

        marketingWallet = payable(marketing);
        devWallet = payable(dev);

        isExcludedFromFee[marketing] = true;
        isExcludedFromFee[dev] = true;

        emit UpdatedMarketingAndDevWallet(marketing, dev);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        if (!isExcludedFromMaxWalletToken[to]) {
            uint256 heldTokens = balanceOf(to);
            require(
                (heldTokens + amount) <= maxWalletSize,
                "Over wallet limit."
            );
        }

        require(
            from != address(0) && to != address(0),
            "Using 0 address!"
        );

        require(amount > 0, "Token value must be higher than zero.");

        if (
            balanceOf(address(this)) >= swapMinTokens &&
            !inSwapAndLiquify &&
            from != uniswapV2Pair
        ) {
            swapAndDistributeTaxes();
        }

        _tokenTransfer(from, to, amount);
    }

   function multipleAirdrop(
        address[] memory _address,
        uint256[] memory _amount
    ) external onlyOwner {
        require(_address.length == _amount.length, "Arrays length mismatch");
        uint256 totalAmount = 0;
        for (uint256 i = 0; i < _amount.length; i++) {
            totalAmount += _amount[i];
        }
        require(balanceOf(msg.sender) >= totalAmount * 10**decimals(), "Insufficient balance");

        for (uint256 i = 0; i < _amount.length; i++) {
            address adr = _address[i];
            uint256 amnt = _amount[i] * 10**decimals();
            _transfer(msg.sender, adr, amnt);
        }
    }

    function _sendToWallet(address payable wallet, uint256 amount) private {
        wallet.transfer(amount);
    }

    function setSwapMinTokens(uint256 minTokens) external onlyOwner {
        swapMinTokens = minTokens * 10**decimals();
        require(swapMinTokens < totalSupply(), "Min tokens for swap is too high.");
    }

    function swapAndDistributeTaxes() private lockTheSwap {
        uint256 contractTokenBalance = balanceOf(address(this));
        uint256 marketingTokensShare = (contractTokenBalance * marketingPct) / maxPct;
        uint256 devTokensShare = (contractTokenBalance * devPct) / maxPct;
        uint256 taxTokensShare = (contractTokenBalance * taxPct) / maxPct;

        uint256 bnbBalanceBeforeSwap = address(this).balance;
        swapTokensForBNB(taxTokensShare + marketingTokensShare + devTokensShare);
        uint256 bnbReceived = address(this).balance - bnbBalanceBeforeSwap;

        uint256 marketingSplit = (marketingPct * maxPct) / (taxPct + marketingPct + devPct);
        uint256 bnbToMarketing = (bnbReceived * marketingSplit) / maxPct;

        //uint256 devSplit = (devPct * maxPct) / (taxPct + marketingPct + devPct);
        //uint256 bnbToDev = (bnbReceived * devSplit) / maxPct;

        uint256 taxSplit = (taxPct * maxPct) / (taxPct + marketingPct + devPct);
        uint256 bnbToTax = (bnbReceived * taxSplit) / maxPct;

        _sendToWallet(devWallet, bnbToTax);
        _sendToWallet(marketingWallet, bnbToMarketing);
        _sendToWallet(devWallet, address(this).balance);
    }

    function swapTokensForBNB(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _uniswapV2Router.WETH();
        _approve(address(this), address(_uniswapV2Router), tokenAmount);
        _uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function withdraw() external onlyOwner {
        uint256 contractBalance = address(this).balance;
        require(contractBalance > 0, "Hedex::Contract balance is empty");

        (bool status, ) = payable(owner()).call{value: contractBalance}("");

        require(status, "Hedex::Failed to send contract balance");
    }

    function removeStuckTokens (
        address tokenAddress,
        uint256 pctOfTokens
    ) public returns (bool _sent) {
        require(
            tokenAddress != address(this),
            "Can not remove native token."
        );
        require(pctOfTokens <= 100, "Percentage must be less than or equal to 100.");
        uint256 totalRandom = IERC20(tokenAddress).balanceOf(address(this));
        uint256 removeRandom = (totalRandom * pctOfTokens) / maxPct;
        _sent = IERC20(tokenAddress).transfer(devWallet, removeRandom);
    }

    function _tokenTransfer(
        address from,
        address to,
        uint256 tAmount
    ) private {
        bool isBuy = (from == uniswapV2Pair);
        bool isSell = (to == uniswapV2Pair);
        bool isBuyOrSell = isBuy || isSell;
        bool takeFee = isBuyOrSell && !(isExcludedFromFee[from] || isExcludedFromFee[to]);

        uint256 fee = !takeFee
            ? 0
            : isBuy
                ? (tAmount * buyTax) / maxPct
                : (tAmount * sellTax) / maxPct;
        uint256 tTransferAmount = tAmount - fee;

        _tOwned[from] = _tOwned[from] - tAmount;
        _tOwned[to] = _tOwned[to] + tTransferAmount;
        _tOwned[address(this)] = _tOwned[address(this)] + fee;
        emit Transfer(from, to, tTransferAmount);
        if (to == burnWallet) _tTotal = _tTotal - tTransferAmount;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"uniswapRouterAddress","type":"address"}],"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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newtax_","type":"address"},{"indexed":false,"internalType":"address","name":"oldServiceWallet","type":"address"}],"name":"UpdateServiceWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"buyTax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellTax","type":"uint256"}],"name":"UpdatedBuySellTaxes","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"flag","type":"bool"}],"name":"UpdatedIsExcludedFromFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"flag","type":"bool"}],"name":"UpdatedIsExcludedFromMaxWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketing","type":"address"},{"indexed":false,"internalType":"address","name":"dev","type":"address"}],"name":"UpdatedMarketingAndDevWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"marketing","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"dev","type":"uint256"}],"name":"UpdatedPercentTaxes","type":"event"},{"inputs":[],"name":"_uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"theOwner","type":"address"},{"internalType":"address","name":"theSpender","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":"burnWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":"devPct","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"inSwapAndLiquify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeMaxWallet","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":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromMaxWalletToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingPct","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPct","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_address","type":"address[]"},{"internalType":"uint256[]","name":"_amount","type":"uint256[]"}],"name":"multipleAirdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"pctOfTokens","type":"uint256"}],"name":"removeStuckTokens","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"serviceWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"name":"setPercentTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"minTokens","type":"uint256"}],"name":"setSwapMinTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"}],"name":"setTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"marketing","type":"address"},{"internalType":"address","name":"dev","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapMinTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxPct","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526009600a62000014919062000da8565b6305f5e10062000025919062000df9565b6008556009600a62000038919062000da8565b61271062000047919062000df9565b600955601e600a55601e600b556014600c556028600d556028600e556014600f556064601055601054600260085462000081919062000df9565b6200008d919062000e73565b6011553480156200009d57600080fd5b5060405162005413380380620054138339818101604052810190620000c3919062000f15565b620000e3620000d762000b1960201b60201c565b62000b2160201b60201c565b60085460016000620000fa62000be560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001e7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020d919062000f15565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000297573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002bd919062000f15565b6040518363ffffffff1660e01b8152600401620002dc92919062000f58565b6020604051808303816000875af1158015620002fc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000322919062000f15565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507327e6ac04cce84090c50bef278bb4504c04f461ec600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507394342f18c2a63c90e255535117d0b7283893f864600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073423fa214ff267e4f3d187ddd435d2681a1259242600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360006200047762000be560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016003600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000620007ae62000be560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016004600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000aa962000be560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60085460405162000b0a919062000f96565b60405180910390a35062000fb3565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000c9c5780860481111562000c745762000c7362000c0e565b5b600185161562000c845780820291505b808102905062000c948562000c3d565b945062000c54565b94509492505050565b60008262000cb7576001905062000d8a565b8162000cc7576000905062000d8a565b816001811462000ce0576002811462000ceb5762000d21565b600191505062000d8a565b60ff84111562000d005762000cff62000c0e565b5b8360020a91508482111562000d1a5762000d1962000c0e565b5b5062000d8a565b5060208310610133831016604e8410600b841016171562000d5b5782820a90508381111562000d555762000d5462000c0e565b5b62000d8a565b62000d6a848484600162000c4a565b9250905081840481111562000d845762000d8362000c0e565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000db58262000d91565b915062000dc28362000d9b565b925062000df17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000ca5565b905092915050565b600062000e068262000d91565b915062000e138362000d91565b925082820262000e238162000d91565b9150828204841483151762000e3d5762000e3c62000c0e565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e808262000d91565b915062000e8d8362000d91565b92508262000ea05762000e9f62000e44565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000edd8262000eb0565b9050919050565b62000eef8162000ed0565b811462000efb57600080fd5b50565b60008151905062000f0f8162000ee4565b92915050565b60006020828403121562000f2e5762000f2d62000eab565b5b600062000f3e8482850162000efe565b91505092915050565b62000f528162000ed0565b82525050565b600060408201905062000f6f600083018562000f47565b62000f7e602083018462000f47565b9392505050565b62000f908162000d91565b82525050565b600060208201905062000fad600083018462000f85565b92915050565b6144508062000fc36000396000f3fe6080604052600436106102605760003560e01c80635450e093116101445780638f3fa860116100b6578063a90bb2bf1161007a578063a90bb2bf14610911578063cc1776d31461093a578063d3f6a15714610965578063dd62ed3e1461098e578063ea2f0b37146109cb578063f2fde38b146109f457610267565b80638f3fa86014610816578063950fdad71461084157806395d89b411461086c578063a457c2d714610897578063a9059cbb146108d457610267565b8063667f652611610108578063667f65261461071857806370a0823114610741578063715018a61461077e57806375f0a874146107955780638da5cb5b146107c05780638ea5220f146107eb57610267565b80635450e09314610631578063546417a91461065c5780635641f3c314610685578063583e0568146106b05780636476b069146106db57610267565b806333a4ea06116101dd57806349bd5a5e116101a157806349bd5a5e146105215780634a73a2801461054c5780634f7041a5146105755780634fb639f3146105a0578063522ac058146105c95780635342acb4146105f457610267565b806333a4ea0614610450578063395093511461047b5780633ccfd60b146104b8578063437823ec146104cf57806343f07b58146104f857610267565b80631783e052116102245780631783e0521461036757806318160ddd14610392578063220f6696146103bd57806323b872dd146103e8578063313ce5671461042557610267565b8063062287491461026c57806306fdde0314610297578063095ea7b3146102c25780630fe0eb0f146102ff5780630ff974e71461032a57610267565b3661026757005b600080fd5b34801561027857600080fd5b50610281610a1d565b60405161028e9190612efb565b60405180910390f35b3480156102a357600080fd5b506102ac610a23565b6040516102b99190612fa6565b60405180910390f35b3480156102ce57600080fd5b506102e960048036038101906102e49190613050565b610a60565b6040516102f691906130ab565b60405180910390f35b34801561030b57600080fd5b50610314610a7e565b60405161032191906130d5565b60405180910390f35b34801561033657600080fd5b50610351600480360381019061034c91906130f0565b610a84565b60405161035e91906130ab565b60405180910390f35b34801561037357600080fd5b5061037c610aa4565b60405161038991906130d5565b60405180910390f35b34801561039e57600080fd5b506103a7610aaa565b6040516103b491906130d5565b60405180910390f35b3480156103c957600080fd5b506103d2610ab4565b6040516103df91906130ab565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a919061311d565b610ac7565b60405161041c91906130ab565b60405180910390f35b34801561043157600080fd5b5061043a610b7f565b604051610447919061318c565b60405180910390f35b34801561045c57600080fd5b50610465610b88565b60405161047291906130d5565b60405180910390f35b34801561048757600080fd5b506104a2600480360381019061049d9190613050565b610b8e565b6040516104af91906130ab565b60405180910390f35b3480156104c457600080fd5b506104cd610c3a565b005b3480156104db57600080fd5b506104f660048036038101906104f191906130f0565b610db5565b005b34801561050457600080fd5b5061051f600480360381019061051a91906130f0565b610ec6565b005b34801561052d57600080fd5b50610536610fd7565b60405161054391906131b6565b60405180910390f35b34801561055857600080fd5b50610573600480360381019061056e91906133dc565b610ffd565b005b34801561058157600080fd5b5061058a6111fd565b60405161059791906130d5565b60405180910390f35b3480156105ac57600080fd5b506105c760048036038101906105c29190613454565b611203565b005b3480156105d557600080fd5b506105de6112f2565b6040516105eb91906130d5565b60405180910390f35b34801561060057600080fd5b5061061b600480360381019061061691906130f0565b6112f8565b60405161062891906130ab565b60405180910390f35b34801561063d57600080fd5b50610646611318565b60405161065391906130d5565b60405180910390f35b34801561066857600080fd5b50610683600480360381019061067e91906130f0565b61131e565b005b34801561069157600080fd5b5061069a61142f565b6040516106a79190612efb565b60405180910390f35b3480156106bc57600080fd5b506106c5611455565b6040516106d291906134e0565b60405180910390f35b3480156106e757600080fd5b5061070260048036038101906106fd9190613050565b61147b565b60405161070f91906130ab565b60405180910390f35b34801561072457600080fd5b5061073f600480360381019061073a91906134fb565b611674565b005b34801561074d57600080fd5b50610768600480360381019061076391906130f0565b6117c5565b60405161077591906130d5565b60405180910390f35b34801561078a57600080fd5b5061079361180e565b005b3480156107a157600080fd5b506107aa611896565b6040516107b79190612efb565b60405180910390f35b3480156107cc57600080fd5b506107d56118bc565b6040516107e291906131b6565b60405180910390f35b3480156107f757600080fd5b506108006118e5565b60405161080d9190612efb565b60405180910390f35b34801561082257600080fd5b5061082b61190b565b60405161083891906130d5565b60405180910390f35b34801561084d57600080fd5b50610856611911565b60405161086391906130d5565b60405180910390f35b34801561087857600080fd5b50610881611917565b60405161088e9190612fa6565b60405180910390f35b3480156108a357600080fd5b506108be60048036038101906108b99190613050565b611954565b6040516108cb91906130ab565b60405180910390f35b3480156108e057600080fd5b506108fb60048036038101906108f69190613050565b611a00565b60405161090891906130ab565b60405180910390f35b34801561091d57600080fd5b50610938600480360381019061093391906134fb565b611a1e565b005b34801561094657600080fd5b5061094f611b33565b60405161095c91906130d5565b60405180910390f35b34801561097157600080fd5b5061098c6004803603810190610987919061353b565b611b39565b005b34801561099a57600080fd5b506109b560048036038101906109b0919061353b565b611ec1565b6040516109c291906130d5565b60405180910390f35b3480156109d757600080fd5b506109f260048036038101906109ed91906130f0565b611f48565b005b348015610a0057600080fd5b50610a1b6004803603810190610a1691906130f0565b612059565b005b61dead81565b60606040518060400160405280600581526020017f4865646578000000000000000000000000000000000000000000000000000000815250905090565b6000610a74610a6d612150565b8484612158565b6001905092915050565b600c5481565b60046020528060005260406000206000915054906101000a900460ff1681565b60095481565b6000600854905090565b601360149054906101000a900460ff1681565b6000610ad48484846122ec565b610b7484610ae0612150565b84600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b2a612150565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b6f91906135aa565b612158565b600190509392505050565b60006009905090565b600f5481565b6000610c30610b9b612150565b848460026000610ba9612150565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c2b91906135de565b612158565b6001905092915050565b610c42612150565b73ffffffffffffffffffffffffffffffffffffffff16610c606118bc565b73ffffffffffffffffffffffffffffffffffffffff1614610cb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cad9061365e565b60405180910390fd5b600047905060008111610cfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf5906136ca565b60405180910390fd5b6000610d086118bc565b73ffffffffffffffffffffffffffffffffffffffff1682604051610d2b9061371b565b60006040518083038185875af1925050503d8060008114610d68576040519150601f19603f3d011682016040523d82523d6000602084013e610d6d565b606091505b5050905080610db1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da8906137a2565b60405180910390fd5b5050565b610dbd612150565b73ffffffffffffffffffffffffffffffffffffffff16610ddb6118bc565b73ffffffffffffffffffffffffffffffffffffffff1614610e31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e289061365e565b60405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507ff410d6c4def96d69e5baed8146061b716dd4ace2384481d53122138bbe4f4347816001604051610ebb9291906137c2565b60405180910390a150565b610ece612150565b73ffffffffffffffffffffffffffffffffffffffff16610eec6118bc565b73ffffffffffffffffffffffffffffffffffffffff1614610f42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f399061365e565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f99daa791459a6f561a09f304798c43002eb4416e52640c5f42ebdc73a4eda411816000604051610fcc9291906137c2565b60405180910390a150565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611005612150565b73ffffffffffffffffffffffffffffffffffffffff166110236118bc565b73ffffffffffffffffffffffffffffffffffffffff1614611079576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110709061365e565b60405180910390fd5b80518251146110bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b490613837565b60405180910390fd5b6000805b8251811015611105578281815181106110dd576110dc613857565b5b6020026020010151826110f091906135de565b915080806110fd90613886565b9150506110c1565b5061110e610b7f565b600a61111a9190613a01565b816111259190613a4c565b61112e336117c5565b101561116f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116690613ada565b60405180910390fd5b60005b82518110156111f75760008482815181106111905761118f613857565b5b6020026020010151905060006111a4610b7f565b600a6111b09190613a01565b8584815181106111c3576111c2613857565b5b60200260200101516111d59190613a4c565b90506111e23383836122ec565b505080806111ef90613886565b915050611172565b50505050565b600a5481565b61120b612150565b73ffffffffffffffffffffffffffffffffffffffff166112296118bc565b73ffffffffffffffffffffffffffffffffffffffff161461127f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112769061365e565b60405180910390fd5b611287610b7f565b600a6112939190613a01565b8161129e9190613a4c565b6009819055506112ac610aaa565b600954106112ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e690613b46565b60405180910390fd5b50565b60105481565b60036020528060005260406000206000915054906101000a900460ff1681565b600d5481565b611326612150565b73ffffffffffffffffffffffffffffffffffffffff166113446118bc565b73ffffffffffffffffffffffffffffffffffffffff161461139a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113919061365e565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f99daa791459a6f561a09f304798c43002eb4416e52640c5f42ebdc73a4eda4118160016040516114249291906137c2565b60405180910390a150565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e290613bb2565b60405180910390fd5b606482111561152f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152690613c44565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161156a91906131b6565b602060405180830381865afa158015611587573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ab9190613c79565b9050600060105484836115be9190613a4c565b6115c89190613cd5565b90508473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611627929190613d27565b6020604051808303816000875af1158015611646573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166a9190613d7c565b9250505092915050565b61167c612150565b73ffffffffffffffffffffffffffffffffffffffff1661169a6118bc565b73ffffffffffffffffffffffffffffffffffffffff16146116f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e79061365e565b60405180910390fd5b600c54821115611735576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172c90613e1b565b60405180910390fd5b600c5481111561177a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177190613ead565b60405180910390fd5b81600a8190555080600b819055507fee384adbada91a649af3c708314e31b6fe6974f02a951d6be3674ad17c956efe82826040516117b9929190613ecd565b60405180910390a15050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611816612150565b73ffffffffffffffffffffffffffffffffffffffff166118346118bc565b73ffffffffffffffffffffffffffffffffffffffff161461188a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118819061365e565b60405180910390fd5b6118946000612527565b565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b600e5481565b60606040518060400160405280600581526020017f4845444558000000000000000000000000000000000000000000000000000000815250905090565b60006119f6611961612150565b84846002600061196f612150565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119f191906135aa565b612158565b6001905092915050565b6000611a14611a0d612150565b84846122ec565b6001905092915050565b611a26612150565b73ffffffffffffffffffffffffffffffffffffffff16611a446118bc565b73ffffffffffffffffffffffffffffffffffffffff1614611a9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a919061365e565b60405180910390fd5b60508183611aa891906135de565b14611ae8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adf90613f68565b60405180910390fd5b81600d8190555080600e819055507f6675f8bcbf6132f90b29b99d5f4aae60ec816a76eeab53148e434183515b90568282604051611b27929190613ecd565b60405180910390a15050565b600b5481565b611b41612150565b73ffffffffffffffffffffffffffffffffffffffff16611b5f6118bc565b73ffffffffffffffffffffffffffffffffffffffff1614611bb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bac9061365e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611c1f5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b611c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5590613fd4565b60405180910390fd5b600060036000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600060036000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f1e28ff4341fc5e5dbba78e864f67855d4b87ecce752be336375b358c90b529ec8282604051611eb5929190613ff4565b60405180910390a15050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611f50612150565b73ffffffffffffffffffffffffffffffffffffffff16611f6e6118bc565b73ffffffffffffffffffffffffffffffffffffffff1614611fc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbb9061365e565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507ff410d6c4def96d69e5baed8146061b716dd4ace2384481d53122138bbe4f434781600060405161204e9291906137c2565b60405180910390a150565b612061612150565b73ffffffffffffffffffffffffffffffffffffffff1661207f6118bc565b73ffffffffffffffffffffffffffffffffffffffff16146120d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cc9061365e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612144576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213b9061408f565b60405180910390fd5b61214d81612527565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156121c25750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b612201576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f8906140fb565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516122df91906130d5565b60405180910390a3505050565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661239c576000612348836117c5565b9050601154828261235991906135de565b111561239a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239190614167565b60405180910390fd5b505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156124065750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b612445576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243c906141d3565b60405180910390fd5b60008111612488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247f90614265565b60405180910390fd5b600954612494306117c5565b101580156124af5750601360149054906101000a900460ff16155b80156125095750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612517576125166125eb565b5b6125228383836127ff565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001601360146101000a81548160ff0219169083151502179055506000612611306117c5565b90506000601054600d54836126269190613a4c565b6126309190613cd5565b90506000601054600e54846126459190613a4c565b61264f9190613cd5565b90506000601054600f54856126649190613a4c565b61266e9190613cd5565b9050600047905061269483858461268591906135de565b61268f91906135de565b612c2c565b600081476126a291906135aa565b90506000600e54600d54600f546126b991906135de565b6126c391906135de565b601054600d546126d39190613a4c565b6126dd9190613cd5565b9050600060105482846126f09190613a4c565b6126fa9190613cd5565b90506000600e54600d54600f5461271191906135de565b61271b91906135de565b601054600f5461272b9190613a4c565b6127359190613cd5565b9050600060105482866127489190613a4c565b6127529190613cd5565b9050612780600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682612e6f565b6127ac600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612e6f565b6127d8600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1647612e6f565b505050505050505050506000601360146101000a81548160ff021916908315150217905550565b6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490506000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16149050600082806128b45750815b905060008180156129635750600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806129615750600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b155b9050600081156129b3578461299257601054600b54876129839190613a4c565b61298d9190613cd5565b6129ae565b601054600a54876129a39190613a4c565b6129ad9190613cd5565b5b6129b6565b60005b9050600081876129c691906135aa565b905086600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1391906135aa565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aa191906135de565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b2f91906135de565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612bcf91906130d5565b60405180910390a361dead73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1603612c215780600854612c1a91906135aa565b6008819055505b505050505050505050565b6000600267ffffffffffffffff811115612c4957612c486131d6565b5b604051908082528060200260200182016040528015612c775781602001602082028036833780820191505090505b5090503081600081518110612c8f57612c8e613857565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d5a919061429a565b81600181518110612d6e57612d6d613857565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612dd530601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612158565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612e399594939291906143c0565b600060405180830381600087803b158015612e5357600080fd5b505af1158015612e67573d6000803e3d6000fd5b505050505050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612eb5573d6000803e3d6000fd5b505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612ee582612eba565b9050919050565b612ef581612eda565b82525050565b6000602082019050612f106000830184612eec565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f50578082015181840152602081019050612f35565b60008484015250505050565b6000601f19601f8301169050919050565b6000612f7882612f16565b612f828185612f21565b9350612f92818560208601612f32565b612f9b81612f5c565b840191505092915050565b60006020820190508181036000830152612fc08184612f6d565b905092915050565b6000604051905090565b600080fd5b600080fd5b6000612fe782612eba565b9050919050565b612ff781612fdc565b811461300257600080fd5b50565b60008135905061301481612fee565b92915050565b6000819050919050565b61302d8161301a565b811461303857600080fd5b50565b60008135905061304a81613024565b92915050565b6000806040838503121561306757613066612fd2565b5b600061307585828601613005565b92505060206130868582860161303b565b9150509250929050565b60008115159050919050565b6130a581613090565b82525050565b60006020820190506130c0600083018461309c565b92915050565b6130cf8161301a565b82525050565b60006020820190506130ea60008301846130c6565b92915050565b60006020828403121561310657613105612fd2565b5b600061311484828501613005565b91505092915050565b60008060006060848603121561313657613135612fd2565b5b600061314486828701613005565b935050602061315586828701613005565b92505060406131668682870161303b565b9150509250925092565b600060ff82169050919050565b61318681613170565b82525050565b60006020820190506131a1600083018461317d565b92915050565b6131b081612fdc565b82525050565b60006020820190506131cb60008301846131a7565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61320e82612f5c565b810181811067ffffffffffffffff8211171561322d5761322c6131d6565b5b80604052505050565b6000613240612fc8565b905061324c8282613205565b919050565b600067ffffffffffffffff82111561326c5761326b6131d6565b5b602082029050602081019050919050565b600080fd5b600061329561329084613251565b613236565b905080838252602082019050602084028301858111156132b8576132b761327d565b5b835b818110156132e157806132cd8882613005565b8452602084019350506020810190506132ba565b5050509392505050565b600082601f830112613300576132ff6131d1565b5b8135613310848260208601613282565b91505092915050565b600067ffffffffffffffff821115613334576133336131d6565b5b602082029050602081019050919050565b600061335861335384613319565b613236565b9050808382526020820190506020840283018581111561337b5761337a61327d565b5b835b818110156133a45780613390888261303b565b84526020840193505060208101905061337d565b5050509392505050565b600082601f8301126133c3576133c26131d1565b5b81356133d3848260208601613345565b91505092915050565b600080604083850312156133f3576133f2612fd2565b5b600083013567ffffffffffffffff81111561341157613410612fd7565b5b61341d858286016132eb565b925050602083013567ffffffffffffffff81111561343e5761343d612fd7565b5b61344a858286016133ae565b9150509250929050565b60006020828403121561346a57613469612fd2565b5b60006134788482850161303b565b91505092915050565b6000819050919050565b60006134a66134a161349c84612eba565b613481565b612eba565b9050919050565b60006134b88261348b565b9050919050565b60006134ca826134ad565b9050919050565b6134da816134bf565b82525050565b60006020820190506134f560008301846134d1565b92915050565b6000806040838503121561351257613511612fd2565b5b60006135208582860161303b565b92505060206135318582860161303b565b9150509250929050565b6000806040838503121561355257613551612fd2565b5b600061356085828601613005565b925050602061357185828601613005565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006135b58261301a565b91506135c08361301a565b92508282039050818111156135d8576135d761357b565b5b92915050565b60006135e98261301a565b91506135f48361301a565b925082820190508082111561360c5761360b61357b565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613648602083612f21565b915061365382613612565b602082019050919050565b600060208201905081810360008301526136778161363b565b9050919050565b7f48656465783a3a436f6e74726163742062616c616e636520697320656d707479600082015250565b60006136b4602083612f21565b91506136bf8261367e565b602082019050919050565b600060208201905081810360008301526136e3816136a7565b9050919050565b600081905092915050565b50565b60006137056000836136ea565b9150613710826136f5565b600082019050919050565b6000613726826136f8565b9150819050919050565b7f48656465783a3a4661696c656420746f2073656e6420636f6e7472616374206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061378c602683612f21565b915061379782613730565b604082019050919050565b600060208201905081810360008301526137bb8161377f565b9050919050565b60006040820190506137d760008301856131a7565b6137e4602083018461309c565b9392505050565b7f417272617973206c656e677468206d69736d6174636800000000000000000000600082015250565b6000613821601683612f21565b915061382c826137eb565b602082019050919050565b6000602082019050818103600083015261385081613814565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006138918261301a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036138c3576138c261357b565b5b600182019050919050565b60008160011c9050919050565b6000808291508390505b6001851115613925578086048111156139015761390061357b565b5b60018516156139105780820291505b808102905061391e856138ce565b94506138e5565b94509492505050565b60008261393e57600190506139fa565b8161394c57600090506139fa565b8160018114613962576002811461396c5761399b565b60019150506139fa565b60ff84111561397e5761397d61357b565b5b8360020a9150848211156139955761399461357b565b5b506139fa565b5060208310610133831016604e8410600b84101617156139d05782820a9050838111156139cb576139ca61357b565b5b6139fa565b6139dd84848460016138db565b925090508184048111156139f4576139f361357b565b5b81810290505b9392505050565b6000613a0c8261301a565b9150613a1783613170565b9250613a447fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461392e565b905092915050565b6000613a578261301a565b9150613a628361301a565b9250828202613a708161301a565b91508282048414831517613a8757613a8661357b565b5b5092915050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b6000613ac4601483612f21565b9150613acf82613a8e565b602082019050919050565b60006020820190508181036000830152613af381613ab7565b9050919050565b7f4d696e20746f6b656e7320666f72207377617020697320746f6f20686967682e600082015250565b6000613b30602083612f21565b9150613b3b82613afa565b602082019050919050565b60006020820190508181036000830152613b5f81613b23565b9050919050565b7f43616e206e6f742072656d6f7665206e617469766520746f6b656e2e00000000600082015250565b6000613b9c601c83612f21565b9150613ba782613b66565b602082019050919050565b60006020820190508181036000830152613bcb81613b8f565b9050919050565b7f50657263656e74616765206d757374206265206c657373207468616e206f722060008201527f657175616c20746f203130302e00000000000000000000000000000000000000602082015250565b6000613c2e602d83612f21565b9150613c3982613bd2565b604082019050919050565b60006020820190508181036000830152613c5d81613c21565b9050919050565b600081519050613c7381613024565b92915050565b600060208284031215613c8f57613c8e612fd2565b5b6000613c9d84828501613c64565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ce08261301a565b9150613ceb8361301a565b925082613cfb57613cfa613ca6565b5b828204905092915050565b6000613d11826134ad565b9050919050565b613d2181613d06565b82525050565b6000604082019050613d3c6000830185613d18565b613d4960208301846130c6565b9392505050565b613d5981613090565b8114613d6457600080fd5b50565b600081519050613d7681613d50565b92915050565b600060208284031215613d9257613d91612fd2565b5b6000613da084828501613d67565b91505092915050565b7f427579207461782063616e6e6f742065786365656420746865206d6178696d7560008201527f6d2e000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e05602283612f21565b9150613e1082613da9565b604082019050919050565b60006020820190508181036000830152613e3481613df8565b9050919050565b7f53656c6c207461782063616e6e6f742065786365656420746865206d6178696d60008201527f756d2e0000000000000000000000000000000000000000000000000000000000602082015250565b6000613e97602383612f21565b9150613ea282613e3b565b604082019050919050565b60006020820190508181036000830152613ec681613e8a565b9050919050565b6000604082019050613ee260008301856130c6565b613eef60208301846130c6565b9392505050565b7f5468652073756d206f662070657263656e7461676573206d757374206571756160008201527f6c2038302e000000000000000000000000000000000000000000000000000000602082015250565b6000613f52602583612f21565b9150613f5d82613ef6565b604082019050919050565b60006020820190508181036000830152613f8181613f45565b9050919050565b7f496e76616c69642077616c6c6574206164647265737365732e00000000000000600082015250565b6000613fbe601983612f21565b9150613fc982613f88565b602082019050919050565b60006020820190508181036000830152613fed81613fb1565b9050919050565b600060408201905061400960008301856131a7565b61401660208301846131a7565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614079602683612f21565b91506140848261401d565b604082019050919050565b600060208201905081810360008301526140a88161406c565b9050919050565b7f5a65726f20616464726573732e00000000000000000000000000000000000000600082015250565b60006140e5600d83612f21565b91506140f0826140af565b602082019050919050565b60006020820190508181036000830152614114816140d8565b9050919050565b7f4f7665722077616c6c6574206c696d69742e0000000000000000000000000000600082015250565b6000614151601283612f21565b915061415c8261411b565b602082019050919050565b6000602082019050818103600083015261418081614144565b9050919050565b7f5573696e67203020616464726573732100000000000000000000000000000000600082015250565b60006141bd601083612f21565b91506141c882614187565b602082019050919050565b600060208201905081810360008301526141ec816141b0565b9050919050565b7f546f6b656e2076616c7565206d75737420626520686967686572207468616e2060008201527f7a65726f2e000000000000000000000000000000000000000000000000000000602082015250565b600061424f602583612f21565b915061425a826141f3565b604082019050919050565b6000602082019050818103600083015261427e81614242565b9050919050565b60008151905061429481612fee565b92915050565b6000602082840312156142b0576142af612fd2565b5b60006142be84828501614285565b91505092915050565b6000819050919050565b60006142ec6142e76142e2846142c7565b613481565b61301a565b9050919050565b6142fc816142d1565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61433781612fdc565b82525050565b6000614349838361432e565b60208301905092915050565b6000602082019050919050565b600061436d82614302565b614377818561430d565b93506143828361431e565b8060005b838110156143b357815161439a888261433d565b97506143a583614355565b925050600181019050614386565b5085935050505092915050565b600060a0820190506143d560008301886130c6565b6143e260208301876142f3565b81810360408301526143f48186614362565b905061440360608301856131a7565b61441060808301846130c6565b969550505050505056fea2646970667358221220f2a9a47d43332a78fd34d8be589af18e0f5e8ddbc862bdfd3d8d35436010ad5064736f6c634300081300330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

Deployed Bytecode

0x6080604052600436106102605760003560e01c80635450e093116101445780638f3fa860116100b6578063a90bb2bf1161007a578063a90bb2bf14610911578063cc1776d31461093a578063d3f6a15714610965578063dd62ed3e1461098e578063ea2f0b37146109cb578063f2fde38b146109f457610267565b80638f3fa86014610816578063950fdad71461084157806395d89b411461086c578063a457c2d714610897578063a9059cbb146108d457610267565b8063667f652611610108578063667f65261461071857806370a0823114610741578063715018a61461077e57806375f0a874146107955780638da5cb5b146107c05780638ea5220f146107eb57610267565b80635450e09314610631578063546417a91461065c5780635641f3c314610685578063583e0568146106b05780636476b069146106db57610267565b806333a4ea06116101dd57806349bd5a5e116101a157806349bd5a5e146105215780634a73a2801461054c5780634f7041a5146105755780634fb639f3146105a0578063522ac058146105c95780635342acb4146105f457610267565b806333a4ea0614610450578063395093511461047b5780633ccfd60b146104b8578063437823ec146104cf57806343f07b58146104f857610267565b80631783e052116102245780631783e0521461036757806318160ddd14610392578063220f6696146103bd57806323b872dd146103e8578063313ce5671461042557610267565b8063062287491461026c57806306fdde0314610297578063095ea7b3146102c25780630fe0eb0f146102ff5780630ff974e71461032a57610267565b3661026757005b600080fd5b34801561027857600080fd5b50610281610a1d565b60405161028e9190612efb565b60405180910390f35b3480156102a357600080fd5b506102ac610a23565b6040516102b99190612fa6565b60405180910390f35b3480156102ce57600080fd5b506102e960048036038101906102e49190613050565b610a60565b6040516102f691906130ab565b60405180910390f35b34801561030b57600080fd5b50610314610a7e565b60405161032191906130d5565b60405180910390f35b34801561033657600080fd5b50610351600480360381019061034c91906130f0565b610a84565b60405161035e91906130ab565b60405180910390f35b34801561037357600080fd5b5061037c610aa4565b60405161038991906130d5565b60405180910390f35b34801561039e57600080fd5b506103a7610aaa565b6040516103b491906130d5565b60405180910390f35b3480156103c957600080fd5b506103d2610ab4565b6040516103df91906130ab565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a919061311d565b610ac7565b60405161041c91906130ab565b60405180910390f35b34801561043157600080fd5b5061043a610b7f565b604051610447919061318c565b60405180910390f35b34801561045c57600080fd5b50610465610b88565b60405161047291906130d5565b60405180910390f35b34801561048757600080fd5b506104a2600480360381019061049d9190613050565b610b8e565b6040516104af91906130ab565b60405180910390f35b3480156104c457600080fd5b506104cd610c3a565b005b3480156104db57600080fd5b506104f660048036038101906104f191906130f0565b610db5565b005b34801561050457600080fd5b5061051f600480360381019061051a91906130f0565b610ec6565b005b34801561052d57600080fd5b50610536610fd7565b60405161054391906131b6565b60405180910390f35b34801561055857600080fd5b50610573600480360381019061056e91906133dc565b610ffd565b005b34801561058157600080fd5b5061058a6111fd565b60405161059791906130d5565b60405180910390f35b3480156105ac57600080fd5b506105c760048036038101906105c29190613454565b611203565b005b3480156105d557600080fd5b506105de6112f2565b6040516105eb91906130d5565b60405180910390f35b34801561060057600080fd5b5061061b600480360381019061061691906130f0565b6112f8565b60405161062891906130ab565b60405180910390f35b34801561063d57600080fd5b50610646611318565b60405161065391906130d5565b60405180910390f35b34801561066857600080fd5b50610683600480360381019061067e91906130f0565b61131e565b005b34801561069157600080fd5b5061069a61142f565b6040516106a79190612efb565b60405180910390f35b3480156106bc57600080fd5b506106c5611455565b6040516106d291906134e0565b60405180910390f35b3480156106e757600080fd5b5061070260048036038101906106fd9190613050565b61147b565b60405161070f91906130ab565b60405180910390f35b34801561072457600080fd5b5061073f600480360381019061073a91906134fb565b611674565b005b34801561074d57600080fd5b50610768600480360381019061076391906130f0565b6117c5565b60405161077591906130d5565b60405180910390f35b34801561078a57600080fd5b5061079361180e565b005b3480156107a157600080fd5b506107aa611896565b6040516107b79190612efb565b60405180910390f35b3480156107cc57600080fd5b506107d56118bc565b6040516107e291906131b6565b60405180910390f35b3480156107f757600080fd5b506108006118e5565b60405161080d9190612efb565b60405180910390f35b34801561082257600080fd5b5061082b61190b565b60405161083891906130d5565b60405180910390f35b34801561084d57600080fd5b50610856611911565b60405161086391906130d5565b60405180910390f35b34801561087857600080fd5b50610881611917565b60405161088e9190612fa6565b60405180910390f35b3480156108a357600080fd5b506108be60048036038101906108b99190613050565b611954565b6040516108cb91906130ab565b60405180910390f35b3480156108e057600080fd5b506108fb60048036038101906108f69190613050565b611a00565b60405161090891906130ab565b60405180910390f35b34801561091d57600080fd5b50610938600480360381019061093391906134fb565b611a1e565b005b34801561094657600080fd5b5061094f611b33565b60405161095c91906130d5565b60405180910390f35b34801561097157600080fd5b5061098c6004803603810190610987919061353b565b611b39565b005b34801561099a57600080fd5b506109b560048036038101906109b0919061353b565b611ec1565b6040516109c291906130d5565b60405180910390f35b3480156109d757600080fd5b506109f260048036038101906109ed91906130f0565b611f48565b005b348015610a0057600080fd5b50610a1b6004803603810190610a1691906130f0565b612059565b005b61dead81565b60606040518060400160405280600581526020017f4865646578000000000000000000000000000000000000000000000000000000815250905090565b6000610a74610a6d612150565b8484612158565b6001905092915050565b600c5481565b60046020528060005260406000206000915054906101000a900460ff1681565b60095481565b6000600854905090565b601360149054906101000a900460ff1681565b6000610ad48484846122ec565b610b7484610ae0612150565b84600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b2a612150565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b6f91906135aa565b612158565b600190509392505050565b60006009905090565b600f5481565b6000610c30610b9b612150565b848460026000610ba9612150565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c2b91906135de565b612158565b6001905092915050565b610c42612150565b73ffffffffffffffffffffffffffffffffffffffff16610c606118bc565b73ffffffffffffffffffffffffffffffffffffffff1614610cb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cad9061365e565b60405180910390fd5b600047905060008111610cfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf5906136ca565b60405180910390fd5b6000610d086118bc565b73ffffffffffffffffffffffffffffffffffffffff1682604051610d2b9061371b565b60006040518083038185875af1925050503d8060008114610d68576040519150601f19603f3d011682016040523d82523d6000602084013e610d6d565b606091505b5050905080610db1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da8906137a2565b60405180910390fd5b5050565b610dbd612150565b73ffffffffffffffffffffffffffffffffffffffff16610ddb6118bc565b73ffffffffffffffffffffffffffffffffffffffff1614610e31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e289061365e565b60405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507ff410d6c4def96d69e5baed8146061b716dd4ace2384481d53122138bbe4f4347816001604051610ebb9291906137c2565b60405180910390a150565b610ece612150565b73ffffffffffffffffffffffffffffffffffffffff16610eec6118bc565b73ffffffffffffffffffffffffffffffffffffffff1614610f42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f399061365e565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f99daa791459a6f561a09f304798c43002eb4416e52640c5f42ebdc73a4eda411816000604051610fcc9291906137c2565b60405180910390a150565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611005612150565b73ffffffffffffffffffffffffffffffffffffffff166110236118bc565b73ffffffffffffffffffffffffffffffffffffffff1614611079576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110709061365e565b60405180910390fd5b80518251146110bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b490613837565b60405180910390fd5b6000805b8251811015611105578281815181106110dd576110dc613857565b5b6020026020010151826110f091906135de565b915080806110fd90613886565b9150506110c1565b5061110e610b7f565b600a61111a9190613a01565b816111259190613a4c565b61112e336117c5565b101561116f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116690613ada565b60405180910390fd5b60005b82518110156111f75760008482815181106111905761118f613857565b5b6020026020010151905060006111a4610b7f565b600a6111b09190613a01565b8584815181106111c3576111c2613857565b5b60200260200101516111d59190613a4c565b90506111e23383836122ec565b505080806111ef90613886565b915050611172565b50505050565b600a5481565b61120b612150565b73ffffffffffffffffffffffffffffffffffffffff166112296118bc565b73ffffffffffffffffffffffffffffffffffffffff161461127f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112769061365e565b60405180910390fd5b611287610b7f565b600a6112939190613a01565b8161129e9190613a4c565b6009819055506112ac610aaa565b600954106112ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e690613b46565b60405180910390fd5b50565b60105481565b60036020528060005260406000206000915054906101000a900460ff1681565b600d5481565b611326612150565b73ffffffffffffffffffffffffffffffffffffffff166113446118bc565b73ffffffffffffffffffffffffffffffffffffffff161461139a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113919061365e565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f99daa791459a6f561a09f304798c43002eb4416e52640c5f42ebdc73a4eda4118160016040516114249291906137c2565b60405180910390a150565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e290613bb2565b60405180910390fd5b606482111561152f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152690613c44565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161156a91906131b6565b602060405180830381865afa158015611587573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ab9190613c79565b9050600060105484836115be9190613a4c565b6115c89190613cd5565b90508473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611627929190613d27565b6020604051808303816000875af1158015611646573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166a9190613d7c565b9250505092915050565b61167c612150565b73ffffffffffffffffffffffffffffffffffffffff1661169a6118bc565b73ffffffffffffffffffffffffffffffffffffffff16146116f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e79061365e565b60405180910390fd5b600c54821115611735576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172c90613e1b565b60405180910390fd5b600c5481111561177a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177190613ead565b60405180910390fd5b81600a8190555080600b819055507fee384adbada91a649af3c708314e31b6fe6974f02a951d6be3674ad17c956efe82826040516117b9929190613ecd565b60405180910390a15050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611816612150565b73ffffffffffffffffffffffffffffffffffffffff166118346118bc565b73ffffffffffffffffffffffffffffffffffffffff161461188a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118819061365e565b60405180910390fd5b6118946000612527565b565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b600e5481565b60606040518060400160405280600581526020017f4845444558000000000000000000000000000000000000000000000000000000815250905090565b60006119f6611961612150565b84846002600061196f612150565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119f191906135aa565b612158565b6001905092915050565b6000611a14611a0d612150565b84846122ec565b6001905092915050565b611a26612150565b73ffffffffffffffffffffffffffffffffffffffff16611a446118bc565b73ffffffffffffffffffffffffffffffffffffffff1614611a9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a919061365e565b60405180910390fd5b60508183611aa891906135de565b14611ae8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adf90613f68565b60405180910390fd5b81600d8190555080600e819055507f6675f8bcbf6132f90b29b99d5f4aae60ec816a76eeab53148e434183515b90568282604051611b27929190613ecd565b60405180910390a15050565b600b5481565b611b41612150565b73ffffffffffffffffffffffffffffffffffffffff16611b5f6118bc565b73ffffffffffffffffffffffffffffffffffffffff1614611bb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bac9061365e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611c1f5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b611c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5590613fd4565b60405180910390fd5b600060036000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600060036000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f1e28ff4341fc5e5dbba78e864f67855d4b87ecce752be336375b358c90b529ec8282604051611eb5929190613ff4565b60405180910390a15050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611f50612150565b73ffffffffffffffffffffffffffffffffffffffff16611f6e6118bc565b73ffffffffffffffffffffffffffffffffffffffff1614611fc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbb9061365e565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507ff410d6c4def96d69e5baed8146061b716dd4ace2384481d53122138bbe4f434781600060405161204e9291906137c2565b60405180910390a150565b612061612150565b73ffffffffffffffffffffffffffffffffffffffff1661207f6118bc565b73ffffffffffffffffffffffffffffffffffffffff16146120d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cc9061365e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612144576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213b9061408f565b60405180910390fd5b61214d81612527565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156121c25750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b612201576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f8906140fb565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516122df91906130d5565b60405180910390a3505050565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661239c576000612348836117c5565b9050601154828261235991906135de565b111561239a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239190614167565b60405180910390fd5b505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156124065750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b612445576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243c906141d3565b60405180910390fd5b60008111612488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247f90614265565b60405180910390fd5b600954612494306117c5565b101580156124af5750601360149054906101000a900460ff16155b80156125095750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612517576125166125eb565b5b6125228383836127ff565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001601360146101000a81548160ff0219169083151502179055506000612611306117c5565b90506000601054600d54836126269190613a4c565b6126309190613cd5565b90506000601054600e54846126459190613a4c565b61264f9190613cd5565b90506000601054600f54856126649190613a4c565b61266e9190613cd5565b9050600047905061269483858461268591906135de565b61268f91906135de565b612c2c565b600081476126a291906135aa565b90506000600e54600d54600f546126b991906135de565b6126c391906135de565b601054600d546126d39190613a4c565b6126dd9190613cd5565b9050600060105482846126f09190613a4c565b6126fa9190613cd5565b90506000600e54600d54600f5461271191906135de565b61271b91906135de565b601054600f5461272b9190613a4c565b6127359190613cd5565b9050600060105482866127489190613a4c565b6127529190613cd5565b9050612780600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682612e6f565b6127ac600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612e6f565b6127d8600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1647612e6f565b505050505050505050506000601360146101000a81548160ff021916908315150217905550565b6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490506000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16149050600082806128b45750815b905060008180156129635750600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806129615750600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b155b9050600081156129b3578461299257601054600b54876129839190613a4c565b61298d9190613cd5565b6129ae565b601054600a54876129a39190613a4c565b6129ad9190613cd5565b5b6129b6565b60005b9050600081876129c691906135aa565b905086600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1391906135aa565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aa191906135de565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b2f91906135de565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612bcf91906130d5565b60405180910390a361dead73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1603612c215780600854612c1a91906135aa565b6008819055505b505050505050505050565b6000600267ffffffffffffffff811115612c4957612c486131d6565b5b604051908082528060200260200182016040528015612c775781602001602082028036833780820191505090505b5090503081600081518110612c8f57612c8e613857565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d5a919061429a565b81600181518110612d6e57612d6d613857565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612dd530601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612158565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612e399594939291906143c0565b600060405180830381600087803b158015612e5357600080fd5b505af1158015612e67573d6000803e3d6000fd5b505050505050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612eb5573d6000803e3d6000fd5b505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612ee582612eba565b9050919050565b612ef581612eda565b82525050565b6000602082019050612f106000830184612eec565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f50578082015181840152602081019050612f35565b60008484015250505050565b6000601f19601f8301169050919050565b6000612f7882612f16565b612f828185612f21565b9350612f92818560208601612f32565b612f9b81612f5c565b840191505092915050565b60006020820190508181036000830152612fc08184612f6d565b905092915050565b6000604051905090565b600080fd5b600080fd5b6000612fe782612eba565b9050919050565b612ff781612fdc565b811461300257600080fd5b50565b60008135905061301481612fee565b92915050565b6000819050919050565b61302d8161301a565b811461303857600080fd5b50565b60008135905061304a81613024565b92915050565b6000806040838503121561306757613066612fd2565b5b600061307585828601613005565b92505060206130868582860161303b565b9150509250929050565b60008115159050919050565b6130a581613090565b82525050565b60006020820190506130c0600083018461309c565b92915050565b6130cf8161301a565b82525050565b60006020820190506130ea60008301846130c6565b92915050565b60006020828403121561310657613105612fd2565b5b600061311484828501613005565b91505092915050565b60008060006060848603121561313657613135612fd2565b5b600061314486828701613005565b935050602061315586828701613005565b92505060406131668682870161303b565b9150509250925092565b600060ff82169050919050565b61318681613170565b82525050565b60006020820190506131a1600083018461317d565b92915050565b6131b081612fdc565b82525050565b60006020820190506131cb60008301846131a7565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61320e82612f5c565b810181811067ffffffffffffffff8211171561322d5761322c6131d6565b5b80604052505050565b6000613240612fc8565b905061324c8282613205565b919050565b600067ffffffffffffffff82111561326c5761326b6131d6565b5b602082029050602081019050919050565b600080fd5b600061329561329084613251565b613236565b905080838252602082019050602084028301858111156132b8576132b761327d565b5b835b818110156132e157806132cd8882613005565b8452602084019350506020810190506132ba565b5050509392505050565b600082601f830112613300576132ff6131d1565b5b8135613310848260208601613282565b91505092915050565b600067ffffffffffffffff821115613334576133336131d6565b5b602082029050602081019050919050565b600061335861335384613319565b613236565b9050808382526020820190506020840283018581111561337b5761337a61327d565b5b835b818110156133a45780613390888261303b565b84526020840193505060208101905061337d565b5050509392505050565b600082601f8301126133c3576133c26131d1565b5b81356133d3848260208601613345565b91505092915050565b600080604083850312156133f3576133f2612fd2565b5b600083013567ffffffffffffffff81111561341157613410612fd7565b5b61341d858286016132eb565b925050602083013567ffffffffffffffff81111561343e5761343d612fd7565b5b61344a858286016133ae565b9150509250929050565b60006020828403121561346a57613469612fd2565b5b60006134788482850161303b565b91505092915050565b6000819050919050565b60006134a66134a161349c84612eba565b613481565b612eba565b9050919050565b60006134b88261348b565b9050919050565b60006134ca826134ad565b9050919050565b6134da816134bf565b82525050565b60006020820190506134f560008301846134d1565b92915050565b6000806040838503121561351257613511612fd2565b5b60006135208582860161303b565b92505060206135318582860161303b565b9150509250929050565b6000806040838503121561355257613551612fd2565b5b600061356085828601613005565b925050602061357185828601613005565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006135b58261301a565b91506135c08361301a565b92508282039050818111156135d8576135d761357b565b5b92915050565b60006135e98261301a565b91506135f48361301a565b925082820190508082111561360c5761360b61357b565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613648602083612f21565b915061365382613612565b602082019050919050565b600060208201905081810360008301526136778161363b565b9050919050565b7f48656465783a3a436f6e74726163742062616c616e636520697320656d707479600082015250565b60006136b4602083612f21565b91506136bf8261367e565b602082019050919050565b600060208201905081810360008301526136e3816136a7565b9050919050565b600081905092915050565b50565b60006137056000836136ea565b9150613710826136f5565b600082019050919050565b6000613726826136f8565b9150819050919050565b7f48656465783a3a4661696c656420746f2073656e6420636f6e7472616374206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061378c602683612f21565b915061379782613730565b604082019050919050565b600060208201905081810360008301526137bb8161377f565b9050919050565b60006040820190506137d760008301856131a7565b6137e4602083018461309c565b9392505050565b7f417272617973206c656e677468206d69736d6174636800000000000000000000600082015250565b6000613821601683612f21565b915061382c826137eb565b602082019050919050565b6000602082019050818103600083015261385081613814565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006138918261301a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036138c3576138c261357b565b5b600182019050919050565b60008160011c9050919050565b6000808291508390505b6001851115613925578086048111156139015761390061357b565b5b60018516156139105780820291505b808102905061391e856138ce565b94506138e5565b94509492505050565b60008261393e57600190506139fa565b8161394c57600090506139fa565b8160018114613962576002811461396c5761399b565b60019150506139fa565b60ff84111561397e5761397d61357b565b5b8360020a9150848211156139955761399461357b565b5b506139fa565b5060208310610133831016604e8410600b84101617156139d05782820a9050838111156139cb576139ca61357b565b5b6139fa565b6139dd84848460016138db565b925090508184048111156139f4576139f361357b565b5b81810290505b9392505050565b6000613a0c8261301a565b9150613a1783613170565b9250613a447fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461392e565b905092915050565b6000613a578261301a565b9150613a628361301a565b9250828202613a708161301a565b91508282048414831517613a8757613a8661357b565b5b5092915050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b6000613ac4601483612f21565b9150613acf82613a8e565b602082019050919050565b60006020820190508181036000830152613af381613ab7565b9050919050565b7f4d696e20746f6b656e7320666f72207377617020697320746f6f20686967682e600082015250565b6000613b30602083612f21565b9150613b3b82613afa565b602082019050919050565b60006020820190508181036000830152613b5f81613b23565b9050919050565b7f43616e206e6f742072656d6f7665206e617469766520746f6b656e2e00000000600082015250565b6000613b9c601c83612f21565b9150613ba782613b66565b602082019050919050565b60006020820190508181036000830152613bcb81613b8f565b9050919050565b7f50657263656e74616765206d757374206265206c657373207468616e206f722060008201527f657175616c20746f203130302e00000000000000000000000000000000000000602082015250565b6000613c2e602d83612f21565b9150613c3982613bd2565b604082019050919050565b60006020820190508181036000830152613c5d81613c21565b9050919050565b600081519050613c7381613024565b92915050565b600060208284031215613c8f57613c8e612fd2565b5b6000613c9d84828501613c64565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ce08261301a565b9150613ceb8361301a565b925082613cfb57613cfa613ca6565b5b828204905092915050565b6000613d11826134ad565b9050919050565b613d2181613d06565b82525050565b6000604082019050613d3c6000830185613d18565b613d4960208301846130c6565b9392505050565b613d5981613090565b8114613d6457600080fd5b50565b600081519050613d7681613d50565b92915050565b600060208284031215613d9257613d91612fd2565b5b6000613da084828501613d67565b91505092915050565b7f427579207461782063616e6e6f742065786365656420746865206d6178696d7560008201527f6d2e000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e05602283612f21565b9150613e1082613da9565b604082019050919050565b60006020820190508181036000830152613e3481613df8565b9050919050565b7f53656c6c207461782063616e6e6f742065786365656420746865206d6178696d60008201527f756d2e0000000000000000000000000000000000000000000000000000000000602082015250565b6000613e97602383612f21565b9150613ea282613e3b565b604082019050919050565b60006020820190508181036000830152613ec681613e8a565b9050919050565b6000604082019050613ee260008301856130c6565b613eef60208301846130c6565b9392505050565b7f5468652073756d206f662070657263656e7461676573206d757374206571756160008201527f6c2038302e000000000000000000000000000000000000000000000000000000602082015250565b6000613f52602583612f21565b9150613f5d82613ef6565b604082019050919050565b60006020820190508181036000830152613f8181613f45565b9050919050565b7f496e76616c69642077616c6c6574206164647265737365732e00000000000000600082015250565b6000613fbe601983612f21565b9150613fc982613f88565b602082019050919050565b60006020820190508181036000830152613fed81613fb1565b9050919050565b600060408201905061400960008301856131a7565b61401660208301846131a7565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614079602683612f21565b91506140848261401d565b604082019050919050565b600060208201905081810360008301526140a88161406c565b9050919050565b7f5a65726f20616464726573732e00000000000000000000000000000000000000600082015250565b60006140e5600d83612f21565b91506140f0826140af565b602082019050919050565b60006020820190508181036000830152614114816140d8565b9050919050565b7f4f7665722077616c6c6574206c696d69742e0000000000000000000000000000600082015250565b6000614151601283612f21565b915061415c8261411b565b602082019050919050565b6000602082019050818103600083015261418081614144565b9050919050565b7f5573696e67203020616464726573732100000000000000000000000000000000600082015250565b60006141bd601083612f21565b91506141c882614187565b602082019050919050565b600060208201905081810360008301526141ec816141b0565b9050919050565b7f546f6b656e2076616c7565206d75737420626520686967686572207468616e2060008201527f7a65726f2e000000000000000000000000000000000000000000000000000000602082015250565b600061424f602583612f21565b915061425a826141f3565b604082019050919050565b6000602082019050818103600083015261427e81614242565b9050919050565b60008151905061429481612fee565b92915050565b6000602082840312156142b0576142af612fd2565b5b60006142be84828501614285565b91505092915050565b6000819050919050565b60006142ec6142e76142e2846142c7565b613481565b61301a565b9050919050565b6142fc816142d1565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61433781612fdc565b82525050565b6000614349838361432e565b60208301905092915050565b6000602082019050919050565b600061436d82614302565b614377818561430d565b93506143828361431e565b8060005b838110156143b357815161439a888261433d565b97506143a583614355565b925050600181019050614386565b5085935050505092915050565b600060a0820190506143d560008301886130c6565b6143e260208301876142f3565b81810360408301526143f48186614362565b905061440360608301856131a7565b61441060808301846130c6565b969550505050505056fea2646970667358221220f2a9a47d43332a78fd34d8be589af18e0f5e8ddbc862bdfd3d8d35436010ad5064736f6c63430008130033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

-----Decoded View---------------
Arg [0] : uniswapRouterAddress (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d


Deployed Bytecode Sourcemap

3637:13043:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4019:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6956:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7872:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4488:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3866:60;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4360:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7233:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4821:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8073:350;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7142:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4606:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8431:297;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14919:330;;;;;;;;;;;;;:::i;:::-;;10118:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10663:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4786:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12198:660;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4421:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12987:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4639:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3810:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4534:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10469:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4122:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4737:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15257:558;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9449:357;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7336:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1863:94;;;;;;;;;;;;;:::i;:::-;;3935:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1640:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3980:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4675:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4573:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7047:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8736:307;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7461:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9814:298;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4454:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10859:529;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7668:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10295:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1965:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4019:96;4072:42;4019:96;:::o;6956:83::-;6993:13;7026:5;;;;;;;;;;;;;;;;;7019:12;;6956:83;:::o;7872:193::-;7974:4;7996:39;8005:12;:10;:12::i;:::-;8019:7;8028:6;7996:8;:39::i;:::-;8053:4;8046:11;;7872:193;;;;:::o;4488:37::-;;;;:::o;3866:60::-;;;;;;;;;;;;;;;;;;;;;;:::o;4360:52::-;;;;:::o;7233:95::-;7286:7;7313;;7306:14;;7233:95;:::o;4821:28::-;;;;;;;;;;;;;:::o;8073:350::-;8205:4;8222:36;8232:6;8240:9;8251:6;8222:9;:36::i;:::-;8269:124;8292:6;8313:12;:10;:12::i;:::-;8376:6;8340:11;:19;8352:6;8340:19;;;;;;;;;;;;;;;:33;8360:12;:10;:12::i;:::-;8340:33;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;8269:8;:124::i;:::-;8411:4;8404:11;;8073:350;;;;;:::o;7142:83::-;7183:5;4202:1;7201:16;;7142:83;:::o;4606:26::-;;;;:::o;8431:297::-;8546:4;8568:130;8591:12;:10;:12::i;:::-;8618:7;8677:10;8640:11;:25;8652:12;:10;:12::i;:::-;8640:25;;;;;;;;;;;;;;;:34;8666:7;8640:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;8568:8;:130::i;:::-;8716:4;8709:11;;8431:297;;;;:::o;14919:330::-;1786:12;:10;:12::i;:::-;1775:23;;:7;:5;:7::i;:::-;:23;;;1767:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14969:23:::1;14995:21;14969:47;;15053:1;15035:15;:19;15027:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15105:11;15130:7;:5;:7::i;:::-;15122:21;;15151:15;15122:49;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15104:67;;;15192:6;15184:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;14958:291;;14919:330::o:0;10118:169::-;1786:12;:10;:12::i;:::-;1775:23;;:7;:5;:7::i;:::-;:23;;;1767:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10218:4:::1;10189:17;:26;10207:7;10189:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;10240:39;10265:7;10274:4;10240:39;;;;;;;:::i;:::-;;;;;;;;10118:169:::0;:::o;10663:188::-;1786:12;:10;:12::i;:::-;1775:23;;:7;:5;:7::i;:::-;:23;;;1767:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10776:5:::1;10736:28;:37;10765:7;10736:37;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;10797:46;10828:7;10837:5;10797:46;;;;;;;:::i;:::-;;;;;;;;10663:188:::0;:::o;4786:28::-;;;;;;;;;;;;;:::o;12198:660::-;1786:12;:10;:12::i;:::-;1775:23;;:7;:5;:7::i;:::-;:23;;;1767:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12358:7:::1;:14;12339:8;:15;:33;12331:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12410:19;12449:9:::0;12444:97:::1;12468:7;:14;12464:1;:18;12444:97;;;12519:7;12527:1;12519:10;;;;;;;;:::i;:::-;;;;;;;;12504:25;;;;;:::i;:::-;;;12484:3;;;;;:::i;:::-;;;;12444:97;;;;12602:10;:8;:10::i;:::-;12598:2;:14;;;;:::i;:::-;12584:11;:28;;;;:::i;:::-;12559:21;12569:10;12559:9;:21::i;:::-;:53;;12551:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;12655:9;12650:201;12674:7;:14;12670:1;:18;12650:201;;;12710:11;12724:8;12733:1;12724:11;;;;;;;;:::i;:::-;;;;;;;;12710:25;;12750:12;12782:10;:8;:10::i;:::-;12778:2;:14;;;;:::i;:::-;12765:7;12773:1;12765:10;;;;;;;;:::i;:::-;;;;;;;;:27;;;;:::i;:::-;12750:42;;12807:32;12817:10;12829:3;12834:4;12807:9;:32::i;:::-;12695:156;;12690:3;;;;;:::i;:::-;;;;12650:201;;;;12320:538;12198:660:::0;;:::o;4421:26::-;;;;:::o;12987:210::-;1786:12;:10;:12::i;:::-;1775:23;;:7;:5;:7::i;:::-;:23;;;1767:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13094:10:::1;:8;:10::i;:::-;13090:2;:14;;;;:::i;:::-;13078:9;:26;;;;:::i;:::-;13062:13;:42;;;;13139:13;:11;:13::i;:::-;13123;;:29;13115:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12987:210:::0;:::o;4639:27::-;;;;:::o;3810:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;4534:32::-;;;;:::o;10469:186::-;1786:12;:10;:12::i;:::-;1775:23;;:7;:5;:7::i;:::-;:23;;;1767:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10582:4:::1;10542:28;:37;10571:7;10542:37;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;10602:45;10633:7;10642:4;10602:45;;;;;;;:::i;:::-;;;;;;;;10469:186:::0;:::o;4122:36::-;;;;;;;;;;;;;:::o;4737:42::-;;;;;;;;;;;;;:::o;15257:558::-;15369:10;15438:4;15414:29;;:12;:29;;;15392:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;15533:3;15518:11;:18;;15510:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;15597:19;15626:12;15619:30;;;15658:4;15619:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15597:67;;15675:20;15728:6;;15713:11;15699;:25;;;;:::i;:::-;15698:36;;;;:::i;:::-;15675:59;;15760:12;15753:29;;;15783:9;;;;;;;;;;;15794:12;15753:54;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15745:62;;15381:434;;15257:558;;;;:::o;9449:357::-;1786:12;:10;:12::i;:::-;1775:23;;:7;:5;:7::i;:::-;:23;;;1767:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9560:17:::1;;9553:3;:24;;9545:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9643:17;;9635:4;:25;;9627:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;9722:3;9713:6;:12;;;;9746:4;9736:7;:14;;;;9768:30;9788:3;9793:4;9768:30;;;;;;;:::i;:::-;;;;;;;;9449:357:::0;;:::o;7336:117::-;7402:7;7429;:16;7437:7;7429:16;;;;;;;;;;;;;;;;7422:23;;7336:117;;;:::o;1863:94::-;1786:12;:10;:12::i;:::-;1775:23;;:7;:5;:7::i;:::-;:23;;;1767:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1928:21:::1;1946:1;1928:9;:21::i;:::-;1863:94::o:0;3935:38::-;;;;;;;;;;;;;:::o;1640:87::-;1686:7;1713:6;;;;;;;;;;;1706:13;;1640:87;:::o;3980:32::-;;;;;;;;;;;;;:::o;4675:53::-;;;;:::o;4573:26::-;;;;:::o;7047:87::-;7086:13;7119:7;;;;;;;;;;;;;;;;;7112:14;;7047:87;:::o;8736:307::-;8856:4;8878:135;8901:12;:10;:12::i;:::-;8928:7;8987:15;8950:11;:25;8962:12;:10;:12::i;:::-;8950:25;;;;;;;;;;;;;;;:34;8976:7;8950:34;;;;;;;;;;;;;;;;:52;;;;:::i;:::-;8878:8;:135::i;:::-;9031:4;9024:11;;8736:307;;;;:::o;7461:199::-;7566:4;7588:42;7598:12;:10;:12::i;:::-;7612:9;7623:6;7588:9;:42::i;:::-;7648:4;7641:11;;7461:199;;;;:::o;9814:298::-;1786:12;:10;:12::i;:::-;1775:23;;:7;:5;:7::i;:::-;:23;;;1767:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9949:2:::1;9942:3;9930:9;:15;;;;:::i;:::-;:21;9922:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;10019:9;10004:12;:24;;;;10048:3;10039:6;:12;;;;10069:35;10089:9;10100:3;10069:35;;;;;;;:::i;:::-;;;;;;;;9814:298:::0;;:::o;4454:27::-;;;;:::o;10859:529::-;1786:12;:10;:12::i;:::-;1775:23;;:7;:5;:7::i;:::-;:23;;;1767:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10993:1:::1;10972:23;;:9;:23;;;;:44;;;;;11014:1;10999:17;;:3;:17;;;;10972:44;10964:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;11094:5;11057:17;:34;11075:15;;;;;;;;;;;11057:34;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;11141:5;11110:17;:28;11128:9;;;;;;;;;;;11110:28;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;11185:9;11159:15;;:36;;;;;;;;;;;;;;;;;;11226:3;11206:9;;:24;;;;;;;;;;;;;;;;;;11274:4;11243:17;:28;11261:9;11243:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;11314:4;11289:17;:22;11307:3;11289:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;11336:44;11365:9;11376:3;11336:44;;;;;;;:::i;:::-;;;;;;;;10859:529:::0;;:::o;7668:196::-;7791:7;7823:11;:21;7835:8;7823:21;;;;;;;;;;;;;;;:33;7845:10;7823:33;;;;;;;;;;;;;;;;7816:40;;7668:196;;;;:::o;10295:169::-;1786:12;:10;:12::i;:::-;1775:23;;:7;:5;:7::i;:::-;:23;;;1767:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10393:5:::1;10364:17;:26;10382:7;10364:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;10416:40;10441:7;10450:5;10416:40;;;;;;;:::i;:::-;;;;;;;;10295:169:::0;:::o;1965:192::-;1786:12;:10;:12::i;:::-;1775:23;;:7;:5;:7::i;:::-;:23;;;1767:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2074:1:::1;2054:22;;:8;:22;;::::0;2046:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2130:19;2140:8;2130:9;:19::i;:::-;1965:192:::0;:::o;263:98::-;316:7;343:10;336:17;;263:98;:::o;9088:353::-;9255:1;9235:22;;:8;:22;;;;:50;;;;;9283:1;9261:24;;:10;:24;;;;9235:50;9213:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;9373:6;9337:11;:21;9349:8;9337:21;;;;;;;;;;;;;;;:33;9359:10;9337:33;;;;;;;;;;;;;;;:42;;;;9414:10;9395:38;;9404:8;9395:38;;;9426:6;9395:38;;;;;;:::i;:::-;;;;;;;;9088:353;;;:::o;11396:795::-;11515:28;:32;11544:2;11515:32;;;;;;;;;;;;;;;;;;;;;;;;;11510:233;;11564:18;11585:13;11595:2;11585:9;:13::i;:::-;11564:34;;11664:13;;11653:6;11640:10;:19;;;;:::i;:::-;11639:38;;11613:118;;;;;;;;;;;;:::i;:::-;;;;;;;;;11549:194;11510:233;11793:1;11777:18;;:4;:18;;;;:38;;;;;11813:1;11799:16;;:2;:16;;;;11777:38;11755:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;11889:1;11880:6;:10;11872:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;11991:13;;11963:24;11981:4;11963:9;:24::i;:::-;:41;;:75;;;;;12022:16;;;;;;;;;;;12021:17;11963:75;:113;;;;;12063:13;;;;;;;;;;;12055:21;;:4;:21;;;;11963:113;11945:194;;;12103:24;:22;:24::i;:::-;11945:194;12151:32;12166:4;12172:2;12176:6;12151:14;:32::i;:::-;11396:795;;;:::o;2165:173::-;2221:16;2240:6;;;;;;;;;;;2221:25;;2266:8;2257:6;;:17;;;;;;;;;;;;;;;;;;2321:8;2290:40;;2311:8;2290:40;;;;;;;;;;;;2210:128;2165:173;:::o;13205:1224::-;5461:4;5442:16;;:23;;;;;;;;;;;;;;;;;;13270:28:::1;13301:24;13319:4;13301:9;:24::i;:::-;13270:55;;13336:28;13407:6;;13391:12;;13368:20;:35;;;;:::i;:::-;13367:46;;;;:::i;:::-;13336:77;;13424:22;13483:6;;13473;;13450:20;:29;;;;:::i;:::-;13449:40;;;;:::i;:::-;13424:65;;13500:22;13559:6;;13549;;13526:20;:29;;;;:::i;:::-;13525:40;;;;:::i;:::-;13500:65;;13578:28;13609:21;13578:52;;13641:72;13698:14;13675:20;13658:14;:37;;;;:::i;:::-;:54;;;;:::i;:::-;13641:16;:72::i;:::-;13724:19;13770:20;13746:21;:44;;;;:::i;:::-;13724:66;;13803:22;13879:6;;13864:12;;13855:6;;:21;;;;:::i;:::-;:30;;;;:::i;:::-;13844:6;;13829:12;;:21;;;;:::i;:::-;13828:58;;;;:::i;:::-;13803:83;;13897:22;13955:6;;13937:14;13923:11;:28;;;;:::i;:::-;13922:39;;;;:::i;:::-;13897:64;;14125:16;14189:6;;14174:12;;14165:6;;:21;;;;:::i;:::-;:30;;;;:::i;:::-;14154:6;;14145;;:15;;;;:::i;:::-;14144:52;;;;:::i;:::-;14125:71;;14207:16;14253:6;;14241:8;14227:11;:22;;;;:::i;:::-;14226:33;;;;:::i;:::-;14207:52;;14272:34;14286:9;;;;;;;;;;;14297:8;14272:13;:34::i;:::-;14317:46;14331:15;;;;;;;;;;;14348:14;14317:13;:46::i;:::-;14374:47;14388:9;;;;;;;;;;;14399:21;14374:13;:47::i;:::-;13259:1170;;;;;;;;;;5507:5:::0;5488:16;;:24;;;;;;;;;;;;;;;;;;13205:1224::o;15823:854::-;15943:10;15965:13;;;;;;;;;;;15957:21;;:4;:21;;;15943:36;;15990:11;16011:13;;;;;;;;;;;16005:19;;:2;:19;;;15990:35;;16036:16;16055:5;:15;;;;16064:6;16055:15;16036:34;;16081:12;16096:11;:66;;;;;16113:17;:23;16131:4;16113:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;16140:17;:21;16158:2;16140:21;;;;;;;;;;;;;;;;;;;;;;;;;16113:48;16111:51;16096:66;16081:81;;16175:11;16190:7;16189:8;:141;;16230:5;:100;;16324:6;;16313:7;;16303;:17;;;;:::i;:::-;16302:28;;;;:::i;:::-;16230:100;;;16276:6;;16266;;16256:7;:16;;;;:::i;:::-;16255:27;;;;:::i;:::-;16230:100;16189:141;;;16213:1;16189:141;16175:155;;16341:23;16377:3;16367:7;:13;;;;:::i;:::-;16341:39;;16425:7;16409;:13;16417:4;16409:13;;;;;;;;;;;;;;;;:23;;;;:::i;:::-;16393:7;:13;16401:4;16393:13;;;;;;;;;;;;;;;:39;;;;16471:15;16457:7;:11;16465:2;16457:11;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;16443:7;:11;16451:2;16443:11;;;;;;;;;;;;;;;:43;;;;16547:3;16522:7;:22;16538:4;16522:22;;;;;;;;;;;;;;;;:28;;;;:::i;:::-;16497:7;:22;16513:4;16497:22;;;;;;;;;;;;;;;:53;;;;16581:2;16566:35;;16575:4;16566:35;;;16585:15;16566:35;;;;;;:::i;:::-;;;;;;;;4072:42;16616:16;;:2;:16;;;16612:57;;16654:15;16644:7;;:25;;;;:::i;:::-;16634:7;:35;;;;16612:57;15932:745;;;;;;15823:854;;;:::o;14437:474::-;14503:21;14541:1;14527:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14503:40;;14572:4;14554;14559:1;14554:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;14598:16;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14588:4;14593:1;14588:7;;;;;;;;:::i;:::-;;;;;;;:33;;;;;;;;;;;14632:63;14649:4;14664:16;;;;;;;;;;;14683:11;14632:8;:63::i;:::-;14706:16;;;;;;;;;;;:67;;;14788:11;14814:1;14830:4;14857;14877:15;14706:197;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14492:419;14437:474;:::o;12866:113::-;12948:6;:15;;:23;12964:6;12948:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12866:113;;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:104::-;184:7;213:24;231:5;213:24;:::i;:::-;202:35;;139:104;;;:::o;249:142::-;352:32;378:5;352:32;:::i;:::-;347:3;340:45;249:142;;:::o;397:254::-;506:4;544:2;533:9;529:18;521:26;;557:87;641:1;630:9;626:17;617:6;557:87;:::i;:::-;397:254;;;;:::o;657:99::-;709:6;743:5;737:12;727:22;;657:99;;;:::o;762:169::-;846:11;880:6;875:3;868:19;920:4;915:3;911:14;896:29;;762:169;;;;:::o;937:246::-;1018:1;1028:113;1042:6;1039:1;1036:13;1028:113;;;1127:1;1122:3;1118:11;1112:18;1108:1;1103:3;1099:11;1092:39;1064:2;1061:1;1057:10;1052:15;;1028:113;;;1175:1;1166:6;1161:3;1157:16;1150:27;999:184;937:246;;;:::o;1189:102::-;1230:6;1281:2;1277:7;1272:2;1265:5;1261:14;1257:28;1247:38;;1189:102;;;:::o;1297:377::-;1385:3;1413:39;1446:5;1413:39;:::i;:::-;1468:71;1532:6;1527:3;1468:71;:::i;:::-;1461:78;;1548:65;1606:6;1601:3;1594:4;1587:5;1583:16;1548:65;:::i;:::-;1638:29;1660:6;1638:29;:::i;:::-;1633:3;1629:39;1622:46;;1389:285;1297:377;;;;:::o;1680:313::-;1793:4;1831:2;1820:9;1816:18;1808:26;;1880:9;1874:4;1870:20;1866:1;1855:9;1851:17;1844:47;1908:78;1981:4;1972:6;1908:78;:::i;:::-;1900:86;;1680:313;;;;:::o;1999:75::-;2032:6;2065:2;2059:9;2049:19;;1999:75;:::o;2080:117::-;2189:1;2186;2179:12;2203:117;2312:1;2309;2302:12;2326:96;2363:7;2392:24;2410:5;2392:24;:::i;:::-;2381:35;;2326:96;;;:::o;2428:122::-;2501:24;2519:5;2501:24;:::i;:::-;2494:5;2491:35;2481:63;;2540:1;2537;2530:12;2481:63;2428:122;:::o;2556:139::-;2602:5;2640:6;2627:20;2618:29;;2656:33;2683:5;2656:33;:::i;:::-;2556:139;;;;:::o;2701:77::-;2738:7;2767:5;2756:16;;2701:77;;;:::o;2784:122::-;2857:24;2875:5;2857:24;:::i;:::-;2850:5;2847:35;2837:63;;2896:1;2893;2886:12;2837:63;2784:122;:::o;2912:139::-;2958:5;2996:6;2983:20;2974:29;;3012:33;3039:5;3012:33;:::i;:::-;2912:139;;;;:::o;3057:474::-;3125:6;3133;3182:2;3170:9;3161:7;3157:23;3153:32;3150:119;;;3188:79;;:::i;:::-;3150:119;3308:1;3333:53;3378:7;3369:6;3358:9;3354:22;3333:53;:::i;:::-;3323:63;;3279:117;3435:2;3461:53;3506:7;3497:6;3486:9;3482:22;3461:53;:::i;:::-;3451:63;;3406:118;3057:474;;;;;:::o;3537:90::-;3571:7;3614:5;3607:13;3600:21;3589:32;;3537:90;;;:::o;3633:109::-;3714:21;3729:5;3714:21;:::i;:::-;3709:3;3702:34;3633:109;;:::o;3748:210::-;3835:4;3873:2;3862:9;3858:18;3850:26;;3886:65;3948:1;3937:9;3933:17;3924:6;3886:65;:::i;:::-;3748:210;;;;:::o;3964:118::-;4051:24;4069:5;4051:24;:::i;:::-;4046:3;4039:37;3964:118;;:::o;4088:222::-;4181:4;4219:2;4208:9;4204:18;4196:26;;4232:71;4300:1;4289:9;4285:17;4276:6;4232:71;:::i;:::-;4088:222;;;;:::o;4316:329::-;4375:6;4424:2;4412:9;4403:7;4399:23;4395:32;4392:119;;;4430:79;;:::i;:::-;4392:119;4550:1;4575:53;4620:7;4611:6;4600:9;4596:22;4575:53;:::i;:::-;4565:63;;4521:117;4316:329;;;;:::o;4651:619::-;4728:6;4736;4744;4793:2;4781:9;4772:7;4768:23;4764:32;4761:119;;;4799:79;;:::i;:::-;4761:119;4919:1;4944:53;4989:7;4980:6;4969:9;4965:22;4944:53;:::i;:::-;4934:63;;4890:117;5046:2;5072:53;5117:7;5108:6;5097:9;5093:22;5072:53;:::i;:::-;5062:63;;5017:118;5174:2;5200:53;5245:7;5236:6;5225:9;5221:22;5200:53;:::i;:::-;5190:63;;5145:118;4651:619;;;;;:::o;5276:86::-;5311:7;5351:4;5344:5;5340:16;5329:27;;5276:86;;;:::o;5368:112::-;5451:22;5467:5;5451:22;:::i;:::-;5446:3;5439:35;5368:112;;:::o;5486:214::-;5575:4;5613:2;5602:9;5598:18;5590:26;;5626:67;5690:1;5679:9;5675:17;5666:6;5626:67;:::i;:::-;5486:214;;;;:::o;5706:118::-;5793:24;5811:5;5793:24;:::i;:::-;5788:3;5781:37;5706:118;;:::o;5830:222::-;5923:4;5961:2;5950:9;5946:18;5938:26;;5974:71;6042:1;6031:9;6027:17;6018:6;5974:71;:::i;:::-;5830:222;;;;:::o;6058:117::-;6167:1;6164;6157:12;6181:180;6229:77;6226:1;6219:88;6326:4;6323:1;6316:15;6350:4;6347:1;6340:15;6367:281;6450:27;6472:4;6450:27;:::i;:::-;6442:6;6438:40;6580:6;6568:10;6565:22;6544:18;6532:10;6529:34;6526:62;6523:88;;;6591:18;;:::i;:::-;6523:88;6631:10;6627:2;6620:22;6410:238;6367:281;;:::o;6654:129::-;6688:6;6715:20;;:::i;:::-;6705:30;;6744:33;6772:4;6764:6;6744:33;:::i;:::-;6654:129;;;:::o;6789:311::-;6866:4;6956:18;6948:6;6945:30;6942:56;;;6978:18;;:::i;:::-;6942:56;7028:4;7020:6;7016:17;7008:25;;7088:4;7082;7078:15;7070:23;;6789:311;;;:::o;7106:117::-;7215:1;7212;7205:12;7246:710;7342:5;7367:81;7383:64;7440:6;7383:64;:::i;:::-;7367:81;:::i;:::-;7358:90;;7468:5;7497:6;7490:5;7483:21;7531:4;7524:5;7520:16;7513:23;;7584:4;7576:6;7572:17;7564:6;7560:30;7613:3;7605:6;7602:15;7599:122;;;7632:79;;:::i;:::-;7599:122;7747:6;7730:220;7764:6;7759:3;7756:15;7730:220;;;7839:3;7868:37;7901:3;7889:10;7868:37;:::i;:::-;7863:3;7856:50;7935:4;7930:3;7926:14;7919:21;;7806:144;7790:4;7785:3;7781:14;7774:21;;7730:220;;;7734:21;7348:608;;7246:710;;;;;:::o;7979:370::-;8050:5;8099:3;8092:4;8084:6;8080:17;8076:27;8066:122;;8107:79;;:::i;:::-;8066:122;8224:6;8211:20;8249:94;8339:3;8331:6;8324:4;8316:6;8312:17;8249:94;:::i;:::-;8240:103;;8056:293;7979:370;;;;:::o;8355:311::-;8432:4;8522:18;8514:6;8511:30;8508:56;;;8544:18;;:::i;:::-;8508:56;8594:4;8586:6;8582:17;8574:25;;8654:4;8648;8644:15;8636:23;;8355:311;;;:::o;8689:710::-;8785:5;8810:81;8826:64;8883:6;8826:64;:::i;:::-;8810:81;:::i;:::-;8801:90;;8911:5;8940:6;8933:5;8926:21;8974:4;8967:5;8963:16;8956:23;;9027:4;9019:6;9015:17;9007:6;9003:30;9056:3;9048:6;9045:15;9042:122;;;9075:79;;:::i;:::-;9042:122;9190:6;9173:220;9207:6;9202:3;9199:15;9173:220;;;9282:3;9311:37;9344:3;9332:10;9311:37;:::i;:::-;9306:3;9299:50;9378:4;9373:3;9369:14;9362:21;;9249:144;9233:4;9228:3;9224:14;9217:21;;9173:220;;;9177:21;8791:608;;8689:710;;;;;:::o;9422:370::-;9493:5;9542:3;9535:4;9527:6;9523:17;9519:27;9509:122;;9550:79;;:::i;:::-;9509:122;9667:6;9654:20;9692:94;9782:3;9774:6;9767:4;9759:6;9755:17;9692:94;:::i;:::-;9683:103;;9499:293;9422:370;;;;:::o;9798:894::-;9916:6;9924;9973:2;9961:9;9952:7;9948:23;9944:32;9941:119;;;9979:79;;:::i;:::-;9941:119;10127:1;10116:9;10112:17;10099:31;10157:18;10149:6;10146:30;10143:117;;;10179:79;;:::i;:::-;10143:117;10284:78;10354:7;10345:6;10334:9;10330:22;10284:78;:::i;:::-;10274:88;;10070:302;10439:2;10428:9;10424:18;10411:32;10470:18;10462:6;10459:30;10456:117;;;10492:79;;:::i;:::-;10456:117;10597:78;10667:7;10658:6;10647:9;10643:22;10597:78;:::i;:::-;10587:88;;10382:303;9798:894;;;;;:::o;10698:329::-;10757:6;10806:2;10794:9;10785:7;10781:23;10777:32;10774:119;;;10812:79;;:::i;:::-;10774:119;10932:1;10957:53;11002:7;10993:6;10982:9;10978:22;10957:53;:::i;:::-;10947:63;;10903:117;10698:329;;;;:::o;11033:60::-;11061:3;11082:5;11075:12;;11033:60;;;:::o;11099:142::-;11149:9;11182:53;11200:34;11209:24;11227:5;11209:24;:::i;:::-;11200:34;:::i;:::-;11182:53;:::i;:::-;11169:66;;11099:142;;;:::o;11247:126::-;11297:9;11330:37;11361:5;11330:37;:::i;:::-;11317:50;;11247:126;;;:::o;11379:152::-;11455:9;11488:37;11519:5;11488:37;:::i;:::-;11475:50;;11379:152;;;:::o;11537:183::-;11650:63;11707:5;11650:63;:::i;:::-;11645:3;11638:76;11537:183;;:::o;11726:274::-;11845:4;11883:2;11872:9;11868:18;11860:26;;11896:97;11990:1;11979:9;11975:17;11966:6;11896:97;:::i;:::-;11726:274;;;;:::o;12006:474::-;12074:6;12082;12131:2;12119:9;12110:7;12106:23;12102:32;12099:119;;;12137:79;;:::i;:::-;12099:119;12257:1;12282:53;12327:7;12318:6;12307:9;12303:22;12282:53;:::i;:::-;12272:63;;12228:117;12384:2;12410:53;12455:7;12446:6;12435:9;12431:22;12410:53;:::i;:::-;12400:63;;12355:118;12006:474;;;;;:::o;12486:::-;12554:6;12562;12611:2;12599:9;12590:7;12586:23;12582:32;12579:119;;;12617:79;;:::i;:::-;12579:119;12737:1;12762:53;12807:7;12798:6;12787:9;12783:22;12762:53;:::i;:::-;12752:63;;12708:117;12864:2;12890:53;12935:7;12926:6;12915:9;12911:22;12890:53;:::i;:::-;12880:63;;12835:118;12486:474;;;;;:::o;12966:180::-;13014:77;13011:1;13004:88;13111:4;13108:1;13101:15;13135:4;13132:1;13125:15;13152:194;13192:4;13212:20;13230:1;13212:20;:::i;:::-;13207:25;;13246:20;13264:1;13246:20;:::i;:::-;13241:25;;13290:1;13287;13283:9;13275:17;;13314:1;13308:4;13305:11;13302:37;;;13319:18;;:::i;:::-;13302:37;13152:194;;;;:::o;13352:191::-;13392:3;13411:20;13429:1;13411:20;:::i;:::-;13406:25;;13445:20;13463:1;13445:20;:::i;:::-;13440:25;;13488:1;13485;13481:9;13474:16;;13509:3;13506:1;13503:10;13500:36;;;13516:18;;:::i;:::-;13500:36;13352:191;;;;:::o;13549:182::-;13689:34;13685:1;13677:6;13673:14;13666:58;13549:182;:::o;13737:366::-;13879:3;13900:67;13964:2;13959:3;13900:67;:::i;:::-;13893:74;;13976:93;14065:3;13976:93;:::i;:::-;14094:2;14089:3;14085:12;14078:19;;13737:366;;;:::o;14109:419::-;14275:4;14313:2;14302:9;14298:18;14290:26;;14362:9;14356:4;14352:20;14348:1;14337:9;14333:17;14326:47;14390:131;14516:4;14390:131;:::i;:::-;14382:139;;14109:419;;;:::o;14534:182::-;14674:34;14670:1;14662:6;14658:14;14651:58;14534:182;:::o;14722:366::-;14864:3;14885:67;14949:2;14944:3;14885:67;:::i;:::-;14878:74;;14961:93;15050:3;14961:93;:::i;:::-;15079:2;15074:3;15070:12;15063:19;;14722:366;;;:::o;15094:419::-;15260:4;15298:2;15287:9;15283:18;15275:26;;15347:9;15341:4;15337:20;15333:1;15322:9;15318:17;15311:47;15375:131;15501:4;15375:131;:::i;:::-;15367:139;;15094:419;;;:::o;15519:147::-;15620:11;15657:3;15642:18;;15519:147;;;;:::o;15672:114::-;;:::o;15792:398::-;15951:3;15972:83;16053:1;16048:3;15972:83;:::i;:::-;15965:90;;16064:93;16153:3;16064:93;:::i;:::-;16182:1;16177:3;16173:11;16166:18;;15792:398;;;:::o;16196:379::-;16380:3;16402:147;16545:3;16402:147;:::i;:::-;16395:154;;16566:3;16559:10;;16196:379;;;:::o;16581:225::-;16721:34;16717:1;16709:6;16705:14;16698:58;16790:8;16785:2;16777:6;16773:15;16766:33;16581:225;:::o;16812:366::-;16954:3;16975:67;17039:2;17034:3;16975:67;:::i;:::-;16968:74;;17051:93;17140:3;17051:93;:::i;:::-;17169:2;17164:3;17160:12;17153:19;;16812:366;;;:::o;17184:419::-;17350:4;17388:2;17377:9;17373:18;17365:26;;17437:9;17431:4;17427:20;17423:1;17412:9;17408:17;17401:47;17465:131;17591:4;17465:131;:::i;:::-;17457:139;;17184:419;;;:::o;17609:320::-;17724:4;17762:2;17751:9;17747:18;17739:26;;17775:71;17843:1;17832:9;17828:17;17819:6;17775:71;:::i;:::-;17856:66;17918:2;17907:9;17903:18;17894:6;17856:66;:::i;:::-;17609:320;;;;;:::o;17935:172::-;18075:24;18071:1;18063:6;18059:14;18052:48;17935:172;:::o;18113:366::-;18255:3;18276:67;18340:2;18335:3;18276:67;:::i;:::-;18269:74;;18352:93;18441:3;18352:93;:::i;:::-;18470:2;18465:3;18461:12;18454:19;;18113:366;;;:::o;18485:419::-;18651:4;18689:2;18678:9;18674:18;18666:26;;18738:9;18732:4;18728:20;18724:1;18713:9;18709:17;18702:47;18766:131;18892:4;18766:131;:::i;:::-;18758:139;;18485:419;;;:::o;18910:180::-;18958:77;18955:1;18948:88;19055:4;19052:1;19045:15;19079:4;19076:1;19069:15;19096:233;19135:3;19158:24;19176:5;19158:24;:::i;:::-;19149:33;;19204:66;19197:5;19194:77;19191:103;;19274:18;;:::i;:::-;19191:103;19321:1;19314:5;19310:13;19303:20;;19096:233;;;:::o;19335:102::-;19377:8;19424:5;19421:1;19417:13;19396:34;;19335:102;;;:::o;19443:848::-;19504:5;19511:4;19535:6;19526:15;;19559:5;19550:14;;19573:712;19594:1;19584:8;19581:15;19573:712;;;19689:4;19684:3;19680:14;19674:4;19671:24;19668:50;;;19698:18;;:::i;:::-;19668:50;19748:1;19738:8;19734:16;19731:451;;;20163:4;20156:5;20152:16;20143:25;;19731:451;20213:4;20207;20203:15;20195:23;;20243:32;20266:8;20243:32;:::i;:::-;20231:44;;19573:712;;;19443:848;;;;;;;:::o;20297:1073::-;20351:5;20542:8;20532:40;;20563:1;20554:10;;20565:5;;20532:40;20591:4;20581:36;;20608:1;20599:10;;20610:5;;20581:36;20677:4;20725:1;20720:27;;;;20761:1;20756:191;;;;20670:277;;20720:27;20738:1;20729:10;;20740:5;;;20756:191;20801:3;20791:8;20788:17;20785:43;;;20808:18;;:::i;:::-;20785:43;20857:8;20854:1;20850:16;20841:25;;20892:3;20885:5;20882:14;20879:40;;;20899:18;;:::i;:::-;20879:40;20932:5;;;20670:277;;21056:2;21046:8;21043:16;21037:3;21031:4;21028:13;21024:36;21006:2;20996:8;20993:16;20988:2;20982:4;20979:12;20975:35;20959:111;20956:246;;;21112:8;21106:4;21102:19;21093:28;;21147:3;21140:5;21137:14;21134:40;;;21154:18;;:::i;:::-;21134:40;21187:5;;20956:246;21227:42;21265:3;21255:8;21249:4;21246:1;21227:42;:::i;:::-;21212:57;;;;21301:4;21296:3;21292:14;21285:5;21282:25;21279:51;;;21310:18;;:::i;:::-;21279:51;21359:4;21352:5;21348:16;21339:25;;20297:1073;;;;;;:::o;21376:281::-;21434:5;21458:23;21476:4;21458:23;:::i;:::-;21450:31;;21502:25;21518:8;21502:25;:::i;:::-;21490:37;;21546:104;21583:66;21573:8;21567:4;21546:104;:::i;:::-;21537:113;;21376:281;;;;:::o;21663:410::-;21703:7;21726:20;21744:1;21726:20;:::i;:::-;21721:25;;21760:20;21778:1;21760:20;:::i;:::-;21755:25;;21815:1;21812;21808:9;21837:30;21855:11;21837:30;:::i;:::-;21826:41;;22016:1;22007:7;22003:15;22000:1;21997:22;21977:1;21970:9;21950:83;21927:139;;22046:18;;:::i;:::-;21927:139;21711:362;21663:410;;;;:::o;22079:170::-;22219:22;22215:1;22207:6;22203:14;22196:46;22079:170;:::o;22255:366::-;22397:3;22418:67;22482:2;22477:3;22418:67;:::i;:::-;22411:74;;22494:93;22583:3;22494:93;:::i;:::-;22612:2;22607:3;22603:12;22596:19;;22255:366;;;:::o;22627:419::-;22793:4;22831:2;22820:9;22816:18;22808:26;;22880:9;22874:4;22870:20;22866:1;22855:9;22851:17;22844:47;22908:131;23034:4;22908:131;:::i;:::-;22900:139;;22627:419;;;:::o;23052:182::-;23192:34;23188:1;23180:6;23176:14;23169:58;23052:182;:::o;23240:366::-;23382:3;23403:67;23467:2;23462:3;23403:67;:::i;:::-;23396:74;;23479:93;23568:3;23479:93;:::i;:::-;23597:2;23592:3;23588:12;23581:19;;23240:366;;;:::o;23612:419::-;23778:4;23816:2;23805:9;23801:18;23793:26;;23865:9;23859:4;23855:20;23851:1;23840:9;23836:17;23829:47;23893:131;24019:4;23893:131;:::i;:::-;23885:139;;23612:419;;;:::o;24037:178::-;24177:30;24173:1;24165:6;24161:14;24154:54;24037:178;:::o;24221:366::-;24363:3;24384:67;24448:2;24443:3;24384:67;:::i;:::-;24377:74;;24460:93;24549:3;24460:93;:::i;:::-;24578:2;24573:3;24569:12;24562:19;;24221:366;;;:::o;24593:419::-;24759:4;24797:2;24786:9;24782:18;24774:26;;24846:9;24840:4;24836:20;24832:1;24821:9;24817:17;24810:47;24874:131;25000:4;24874:131;:::i;:::-;24866:139;;24593:419;;;:::o;25018:232::-;25158:34;25154:1;25146:6;25142:14;25135:58;25227:15;25222:2;25214:6;25210:15;25203:40;25018:232;:::o;25256:366::-;25398:3;25419:67;25483:2;25478:3;25419:67;:::i;:::-;25412:74;;25495:93;25584:3;25495:93;:::i;:::-;25613:2;25608:3;25604:12;25597:19;;25256:366;;;:::o;25628:419::-;25794:4;25832:2;25821:9;25817:18;25809:26;;25881:9;25875:4;25871:20;25867:1;25856:9;25852:17;25845:47;25909:131;26035:4;25909:131;:::i;:::-;25901:139;;25628:419;;;:::o;26053:143::-;26110:5;26141:6;26135:13;26126:22;;26157:33;26184:5;26157:33;:::i;:::-;26053:143;;;;:::o;26202:351::-;26272:6;26321:2;26309:9;26300:7;26296:23;26292:32;26289:119;;;26327:79;;:::i;:::-;26289:119;26447:1;26472:64;26528:7;26519:6;26508:9;26504:22;26472:64;:::i;:::-;26462:74;;26418:128;26202:351;;;;:::o;26559:180::-;26607:77;26604:1;26597:88;26704:4;26701:1;26694:15;26728:4;26725:1;26718:15;26745:185;26785:1;26802:20;26820:1;26802:20;:::i;:::-;26797:25;;26836:20;26854:1;26836:20;:::i;:::-;26831:25;;26875:1;26865:35;;26880:18;;:::i;:::-;26865:35;26922:1;26919;26915:9;26910:14;;26745:185;;;;:::o;26936:134::-;26994:9;27027:37;27058:5;27027:37;:::i;:::-;27014:50;;26936:134;;;:::o;27076:147::-;27171:45;27210:5;27171:45;:::i;:::-;27166:3;27159:58;27076:147;;:::o;27229:348::-;27358:4;27396:2;27385:9;27381:18;27373:26;;27409:79;27485:1;27474:9;27470:17;27461:6;27409:79;:::i;:::-;27498:72;27566:2;27555:9;27551:18;27542:6;27498:72;:::i;:::-;27229:348;;;;;:::o;27583:116::-;27653:21;27668:5;27653:21;:::i;:::-;27646:5;27643:32;27633:60;;27689:1;27686;27679:12;27633:60;27583:116;:::o;27705:137::-;27759:5;27790:6;27784:13;27775:22;;27806:30;27830:5;27806:30;:::i;:::-;27705:137;;;;:::o;27848:345::-;27915:6;27964:2;27952:9;27943:7;27939:23;27935:32;27932:119;;;27970:79;;:::i;:::-;27932:119;28090:1;28115:61;28168:7;28159:6;28148:9;28144:22;28115:61;:::i;:::-;28105:71;;28061:125;27848:345;;;;:::o;28199:221::-;28339:34;28335:1;28327:6;28323:14;28316:58;28408:4;28403:2;28395:6;28391:15;28384:29;28199:221;:::o;28426:366::-;28568:3;28589:67;28653:2;28648:3;28589:67;:::i;:::-;28582:74;;28665:93;28754:3;28665:93;:::i;:::-;28783:2;28778:3;28774:12;28767:19;;28426:366;;;:::o;28798:419::-;28964:4;29002:2;28991:9;28987:18;28979:26;;29051:9;29045:4;29041:20;29037:1;29026:9;29022:17;29015:47;29079:131;29205:4;29079:131;:::i;:::-;29071:139;;28798:419;;;:::o;29223:222::-;29363:34;29359:1;29351:6;29347:14;29340:58;29432:5;29427:2;29419:6;29415:15;29408:30;29223:222;:::o;29451:366::-;29593:3;29614:67;29678:2;29673:3;29614:67;:::i;:::-;29607:74;;29690:93;29779:3;29690:93;:::i;:::-;29808:2;29803:3;29799:12;29792:19;;29451:366;;;:::o;29823:419::-;29989:4;30027:2;30016:9;30012:18;30004:26;;30076:9;30070:4;30066:20;30062:1;30051:9;30047:17;30040:47;30104:131;30230:4;30104:131;:::i;:::-;30096:139;;29823:419;;;:::o;30248:332::-;30369:4;30407:2;30396:9;30392:18;30384:26;;30420:71;30488:1;30477:9;30473:17;30464:6;30420:71;:::i;:::-;30501:72;30569:2;30558:9;30554:18;30545:6;30501:72;:::i;:::-;30248:332;;;;;:::o;30586:224::-;30726:34;30722:1;30714:6;30710:14;30703:58;30795:7;30790:2;30782:6;30778:15;30771:32;30586:224;:::o;30816:366::-;30958:3;30979:67;31043:2;31038:3;30979:67;:::i;:::-;30972:74;;31055:93;31144:3;31055:93;:::i;:::-;31173:2;31168:3;31164:12;31157:19;;30816:366;;;:::o;31188:419::-;31354:4;31392:2;31381:9;31377:18;31369:26;;31441:9;31435:4;31431:20;31427:1;31416:9;31412:17;31405:47;31469:131;31595:4;31469:131;:::i;:::-;31461:139;;31188:419;;;:::o;31613:175::-;31753:27;31749:1;31741:6;31737:14;31730:51;31613:175;:::o;31794:366::-;31936:3;31957:67;32021:2;32016:3;31957:67;:::i;:::-;31950:74;;32033:93;32122:3;32033:93;:::i;:::-;32151:2;32146:3;32142:12;32135:19;;31794:366;;;:::o;32166:419::-;32332:4;32370:2;32359:9;32355:18;32347:26;;32419:9;32413:4;32409:20;32405:1;32394:9;32390:17;32383:47;32447:131;32573:4;32447:131;:::i;:::-;32439:139;;32166:419;;;:::o;32591:332::-;32712:4;32750:2;32739:9;32735:18;32727:26;;32763:71;32831:1;32820:9;32816:17;32807:6;32763:71;:::i;:::-;32844:72;32912:2;32901:9;32897:18;32888:6;32844:72;:::i;:::-;32591:332;;;;;:::o;32929:225::-;33069:34;33065:1;33057:6;33053:14;33046:58;33138:8;33133:2;33125:6;33121:15;33114:33;32929:225;:::o;33160:366::-;33302:3;33323:67;33387:2;33382:3;33323:67;:::i;:::-;33316:74;;33399:93;33488:3;33399:93;:::i;:::-;33517:2;33512:3;33508:12;33501:19;;33160:366;;;:::o;33532:419::-;33698:4;33736:2;33725:9;33721:18;33713:26;;33785:9;33779:4;33775:20;33771:1;33760:9;33756:17;33749:47;33813:131;33939:4;33813:131;:::i;:::-;33805:139;;33532:419;;;:::o;33957:163::-;34097:15;34093:1;34085:6;34081:14;34074:39;33957:163;:::o;34126:366::-;34268:3;34289:67;34353:2;34348:3;34289:67;:::i;:::-;34282:74;;34365:93;34454:3;34365:93;:::i;:::-;34483:2;34478:3;34474:12;34467:19;;34126:366;;;:::o;34498:419::-;34664:4;34702:2;34691:9;34687:18;34679:26;;34751:9;34745:4;34741:20;34737:1;34726:9;34722:17;34715:47;34779:131;34905:4;34779:131;:::i;:::-;34771:139;;34498:419;;;:::o;34923:168::-;35063:20;35059:1;35051:6;35047:14;35040:44;34923:168;:::o;35097:366::-;35239:3;35260:67;35324:2;35319:3;35260:67;:::i;:::-;35253:74;;35336:93;35425:3;35336:93;:::i;:::-;35454:2;35449:3;35445:12;35438:19;;35097:366;;;:::o;35469:419::-;35635:4;35673:2;35662:9;35658:18;35650:26;;35722:9;35716:4;35712:20;35708:1;35697:9;35693:17;35686:47;35750:131;35876:4;35750:131;:::i;:::-;35742:139;;35469:419;;;:::o;35894:166::-;36034:18;36030:1;36022:6;36018:14;36011:42;35894:166;:::o;36066:366::-;36208:3;36229:67;36293:2;36288:3;36229:67;:::i;:::-;36222:74;;36305:93;36394:3;36305:93;:::i;:::-;36423:2;36418:3;36414:12;36407:19;;36066:366;;;:::o;36438:419::-;36604:4;36642:2;36631:9;36627:18;36619:26;;36691:9;36685:4;36681:20;36677:1;36666:9;36662:17;36655:47;36719:131;36845:4;36719:131;:::i;:::-;36711:139;;36438:419;;;:::o;36863:224::-;37003:34;36999:1;36991:6;36987:14;36980:58;37072:7;37067:2;37059:6;37055:15;37048:32;36863:224;:::o;37093:366::-;37235:3;37256:67;37320:2;37315:3;37256:67;:::i;:::-;37249:74;;37332:93;37421:3;37332:93;:::i;:::-;37450:2;37445:3;37441:12;37434:19;;37093:366;;;:::o;37465:419::-;37631:4;37669:2;37658:9;37654:18;37646:26;;37718:9;37712:4;37708:20;37704:1;37693:9;37689:17;37682:47;37746:131;37872:4;37746:131;:::i;:::-;37738:139;;37465:419;;;:::o;37890:143::-;37947:5;37978:6;37972:13;37963:22;;37994:33;38021:5;37994:33;:::i;:::-;37890:143;;;;:::o;38039:351::-;38109:6;38158:2;38146:9;38137:7;38133:23;38129:32;38126:119;;;38164:79;;:::i;:::-;38126:119;38284:1;38309:64;38365:7;38356:6;38345:9;38341:22;38309:64;:::i;:::-;38299:74;;38255:128;38039:351;;;;:::o;38396:85::-;38441:7;38470:5;38459:16;;38396:85;;;:::o;38487:158::-;38545:9;38578:61;38596:42;38605:32;38631:5;38605:32;:::i;:::-;38596:42;:::i;:::-;38578:61;:::i;:::-;38565:74;;38487:158;;;:::o;38651:147::-;38746:45;38785:5;38746:45;:::i;:::-;38741:3;38734:58;38651:147;;:::o;38804:114::-;38871:6;38905:5;38899:12;38889:22;;38804:114;;;:::o;38924:184::-;39023:11;39057:6;39052:3;39045:19;39097:4;39092:3;39088:14;39073:29;;38924:184;;;;:::o;39114:132::-;39181:4;39204:3;39196:11;;39234:4;39229:3;39225:14;39217:22;;39114:132;;;:::o;39252:108::-;39329:24;39347:5;39329:24;:::i;:::-;39324:3;39317:37;39252:108;;:::o;39366:179::-;39435:10;39456:46;39498:3;39490:6;39456:46;:::i;:::-;39534:4;39529:3;39525:14;39511:28;;39366:179;;;;:::o;39551:113::-;39621:4;39653;39648:3;39644:14;39636:22;;39551:113;;;:::o;39700:732::-;39819:3;39848:54;39896:5;39848:54;:::i;:::-;39918:86;39997:6;39992:3;39918:86;:::i;:::-;39911:93;;40028:56;40078:5;40028:56;:::i;:::-;40107:7;40138:1;40123:284;40148:6;40145:1;40142:13;40123:284;;;40224:6;40218:13;40251:63;40310:3;40295:13;40251:63;:::i;:::-;40244:70;;40337:60;40390:6;40337:60;:::i;:::-;40327:70;;40183:224;40170:1;40167;40163:9;40158:14;;40123:284;;;40127:14;40423:3;40416:10;;39824:608;;;39700:732;;;;:::o;40438:831::-;40701:4;40739:3;40728:9;40724:19;40716:27;;40753:71;40821:1;40810:9;40806:17;40797:6;40753:71;:::i;:::-;40834:80;40910:2;40899:9;40895:18;40886:6;40834:80;:::i;:::-;40961:9;40955:4;40951:20;40946:2;40935:9;40931:18;40924:48;40989:108;41092:4;41083:6;40989:108;:::i;:::-;40981:116;;41107:72;41175:2;41164:9;41160:18;41151:6;41107:72;:::i;:::-;41189:73;41257:3;41246:9;41242:19;41233:6;41189:73;:::i;:::-;40438:831;;;;;;;;:::o

Swarm Source

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