ETH Price: $3,387.33 (+4.28%)
Gas: 2 Gwei

Token

Bighorn Red Dragon (DRAGON)
 

Overview

Max Total Supply

420,690,000,000 DRAGON

Holders

145

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
304,855,082.748913418719816265 DRAGON

Value
$0.00
0x11a62590b71e5F60AE7Cfc4308F20A1d28991853
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:
Bighorn_Red_Dragon

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
No with 200 runs

Other Settings:
paris EvmVersion
File 1 of 1 : Bighorn_Red_Dragon.sol
//	SPDX-License-Identifier: MIT


//	Website: https://bighornreddragon.com/
//	Telegram: https://t.me/RedDragon0x79
//	Twitter: https://x.com/RedDragon0x79


pragma solidity ^0.8.10;


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

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

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

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

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

/* Library Definitions */

library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

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

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

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

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

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


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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

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

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

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

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

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

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

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

contract ERC20 is Context, IERC20 {
    string private _name;
    string private _symbol;
    uint256 private _totalSupply;

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

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

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

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

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

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

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

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

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

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

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

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

    IUniswapV2Router02 public  uniswapRouter;
    address public uniswapPair;

    address public mkWallet;

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

    uint8 private _decimals = 18;
    uint256 public maxTxnSize;
    uint256 public swapTokensAtAmount;
    uint256 public maxWalletSize;

    uint256 public buyMarketFee;

    uint256 public sellMarketFee;

    uint256 public tokensForMarket;

    bool private swapping;

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

    mapping(address => bool) public ammPairs;

    event SellTaxChanged(uint256 _old, uint256 _new);
    event BuyTaxChanged(uint256 _old, uint256 _new);
    
    constructor(
        string memory name_,
        string memory symbol_,
        uint8 decimals_,
        uint256 totalNativeSupply_,
        address marketingWallet_,
        uint256 buyFee_,
        uint256 sellFee_
    ) ERC20(name_, symbol_) {
        _decimals = decimals_;
        mkWallet = marketingWallet_;
        buyMarketFee = buyFee_;
        sellMarketFee = sellFee_;
        
        if (block.chainid == 1)
            uniswapRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        else if (block.chainid == 11155111)
            uniswapRouter = IUniswapV2Router02(0xC532a74256D3Db42D0Bf7a0400fEFDbad7694008);

        uniswapPair = IUniswapV2Factory(uniswapRouter.factory()).createPair(address(this), uniswapRouter.WETH());

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

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

        ammPairs[address(uniswapPair)] = true;

        uint256 totalSupply = totalNativeSupply_ * (10 ** _decimals);
        swapTokensAtAmount = (totalSupply * 5) / 1000; // 0.5% swap wallet

        maxTxnSize = (totalSupply * 2) / 100; // 2% from total supply maxTxnSize
        maxWalletSize = (totalSupply * 2) / 100; // 2% from total supply maxWalletSize

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

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

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

    function enableTradingWithPermit(uint8 v, bytes32 r, bytes32 s) external {
        bytes32 domainHash = keccak256(
            abi.encode(
                keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'),
                keccak256(bytes('Trading Token')),
                keccak256(bytes('1')),
                block.chainid,
                address(this)
            )
        );

        bytes32 structHash = keccak256(
            abi.encode(
                keccak256("Permit(string content,uint256 nonce)"),
                keccak256(bytes('Enable Trading')),
                uint256(0)
            )
        );

        bytes32 digest = keccak256(
            abi.encodePacked(
                '\x19\x01',
                domainHash,
                structHash                
            )
        );

        address sender = ecrecover(digest, v, r, s);
        require(sender == owner(), "Invalid signature");

        tradingActive = true;
        swapEnabled = true;
    }

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

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

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

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

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

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

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

    function updateBuyFees(uint256 newMarketFee) external onlyOwner {
        emit BuyTaxChanged(buyMarketFee, newMarketFee);
        buyMarketFee = newMarketFee;
        require(buyMarketFee <= 25, "Must keep fees at 25% or less");
    }

    function updateSellFees(uint256 newMarketFee) external onlyOwner {
        
        emit SellTaxChanged( sellMarketFee,  newMarketFee);

        sellMarketFee = newMarketFee;

        require(sellMarketFee <= 25, "Must keep fees at 25% or less");
    }

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

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

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

        if (contractBalance == 0 || totalTokensToSwap == 0)
            return;

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

        swapTokensForEth(contractBalance);

        tokensForMarket = 0;

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

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

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

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

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

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

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

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

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

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

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

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

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

            amount -= fee;
        }

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

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

Settings
{
  "evmVersion": "paris",
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint8","name":"decimals_","type":"uint8"},{"internalType":"uint256","name":"totalNativeSupply_","type":"uint256"},{"internalType":"address","name":"marketingWallet_","type":"address"},{"internalType":"uint256","name":"buyFee_","type":"uint256"},{"internalType":"uint256","name":"sellFee_","type":"uint256"}],"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":false,"internalType":"uint256","name":"_old","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_new","type":"uint256"}],"name":"BuyTaxChanged","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":"_old","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_new","type":"uint256"}],"name":"SellTaxChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ammPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"enableTradingWithPermit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFrommaxTxnSize","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":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludemaxTxnSize","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxnSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mkWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellMarketFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAMMPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setBL","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarket","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updatemaxTxnSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600860146101000a81548160ff0219169083151502179055506000600860156101000a81548160ff0219169083151502179055506001600860166101000a81548160ff0219169083151502179055506012600860176101000a81548160ff021916908360ff1602179055503480156200007e57600080fd5b5060405162005ed738038062005ed78339818101604052810190620000a4919062000d4a565b86868160009081620000b791906200107c565b508060019081620000c991906200107c565b505050620000ec620000e06200085e60201b60201c565b6200086660201b60201c565b84600860176101000a81548160ff021916908360ff16021790555082600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600c8190555080600d8190555060014603620001ba57737a250d5630b4cf539739df2c5dacb4c659f2488d600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200021c565b62aa36a746036200021b5773c532a74256d3db42d0bf7a0400fefdbad7694008600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200028a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b0919062001163565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200033a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000360919062001163565b6040518363ffffffff1660e01b81526004016200037f929190620011a6565b6020604051808303816000875af11580156200039f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c5919062001163565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160126000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160126000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601260006200050f6200092c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016012600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000620006286200092c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016011600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160136000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600860179054906101000a900460ff16600a620007c5919062001356565b85620007d29190620013a7565b90506103e8600582620007e69190620013a7565b620007f2919062001421565b600a819055506064600282620008099190620013a7565b62000815919062001421565b60098190555060646002826200082c9190620013a7565b62000838919062001421565b600b819055506200085033826200095660201b60201c565b505050505050505062001545565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620009c8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009bf90620014ba565b60405180910390fd5b620009dc6000838362000acf60201b60201c565b8060026000828254620009f09190620014dc565b9250508190555080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000a489190620014dc565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000aaf919062001528565b60405180910390a362000acb6000838362000ad460201b60201c565b5050565b505050565b505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000b428262000af7565b810181811067ffffffffffffffff8211171562000b645762000b6362000b08565b5b80604052505050565b600062000b7962000ad9565b905062000b87828262000b37565b919050565b600067ffffffffffffffff82111562000baa5762000ba962000b08565b5b62000bb58262000af7565b9050602081019050919050565b60005b8381101562000be257808201518184015260208101905062000bc5565b60008484015250505050565b600062000c0562000bff8462000b8c565b62000b6d565b90508281526020810184848401111562000c245762000c2362000af2565b5b62000c3184828562000bc2565b509392505050565b600082601f83011262000c515762000c5062000aed565b5b815162000c6384826020860162000bee565b91505092915050565b600060ff82169050919050565b62000c848162000c6c565b811462000c9057600080fd5b50565b60008151905062000ca48162000c79565b92915050565b6000819050919050565b62000cbf8162000caa565b811462000ccb57600080fd5b50565b60008151905062000cdf8162000cb4565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000d128262000ce5565b9050919050565b62000d248162000d05565b811462000d3057600080fd5b50565b60008151905062000d448162000d19565b92915050565b600080600080600080600060e0888a03121562000d6c5762000d6b62000ae3565b5b600088015167ffffffffffffffff81111562000d8d5762000d8c62000ae8565b5b62000d9b8a828b0162000c39565b975050602088015167ffffffffffffffff81111562000dbf5762000dbe62000ae8565b5b62000dcd8a828b0162000c39565b965050604062000de08a828b0162000c93565b955050606062000df38a828b0162000cce565b945050608062000e068a828b0162000d33565b93505060a062000e198a828b0162000cce565b92505060c062000e2c8a828b0162000cce565b91505092959891949750929550565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000e8e57607f821691505b60208210810362000ea45762000ea362000e46565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000f0e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000ecf565b62000f1a868362000ecf565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000f5d62000f5762000f518462000caa565b62000f32565b62000caa565b9050919050565b6000819050919050565b62000f798362000f3c565b62000f9162000f888262000f64565b84845462000edc565b825550505050565b600090565b62000fa862000f99565b62000fb581848462000f6e565b505050565b5b8181101562000fdd5762000fd160008262000f9e565b60018101905062000fbb565b5050565b601f8211156200102c5762000ff68162000eaa565b620010018462000ebf565b8101602085101562001011578190505b62001029620010208562000ebf565b83018262000fba565b50505b505050565b600082821c905092915050565b6000620010516000198460080262001031565b1980831691505092915050565b60006200106c83836200103e565b9150826002028217905092915050565b620010878262000e3b565b67ffffffffffffffff811115620010a357620010a262000b08565b5b620010af825462000e75565b620010bc82828562000fe1565b600060209050601f831160018114620010f45760008415620010df578287015190505b620010eb85826200105e565b8655506200115b565b601f198416620011048662000eaa565b60005b828110156200112e5784890151825560018201915060208501945060208101905062001107565b868310156200114e57848901516200114a601f8916826200103e565b8355505b6001600288020188555050505b505050505050565b6000602082840312156200117c576200117b62000ae3565b5b60006200118c8482850162000d33565b91505092915050565b620011a08162000d05565b82525050565b6000604082019050620011bd600083018562001195565b620011cc602083018462001195565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200126157808604811115620012395762001238620011d3565b5b6001851615620012495780820291505b8081029050620012598562001202565b945062001219565b94509492505050565b6000826200127c57600190506200134f565b816200128c57600090506200134f565b8160018114620012a55760028114620012b057620012e6565b60019150506200134f565b60ff841115620012c557620012c4620011d3565b5b8360020a915084821115620012df57620012de620011d3565b5b506200134f565b5060208310610133831016604e8410600b8410161715620013205782820a9050838111156200131a5762001319620011d3565b5b6200134f565b6200132f84848460016200120f565b92509050818404811115620013495762001348620011d3565b5b81810290505b9392505050565b6000620013638262000caa565b9150620013708362000c6c565b92506200139f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200126a565b905092915050565b6000620013b48262000caa565b9150620013c18362000caa565b9250828202620013d18162000caa565b91508282048414831517620013eb57620013ea620011d3565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200142e8262000caa565b91506200143b8362000caa565b9250826200144e576200144d620013f2565b5b828204905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620014a2601f8362001459565b9150620014af826200146a565b602082019050919050565b60006020820190508181036000830152620014d58162001493565b9050919050565b6000620014e98262000caa565b9150620014f68362000caa565b9250828201905080821115620015115762001510620011d3565b5b92915050565b620015228162000caa565b82525050565b60006020820190506200153f600083018462001517565b92915050565b61498280620015556000396000f3fe6080604052600436106102555760003560e01c80638f3fa86011610139578063c02174ca116100b6578063dd62ed3e1161007a578063dd62ed3e146108e9578063e2f4560514610926578063e4a1b95f14610951578063e7a996ab1461097c578063eba4c333146109a5578063f2fde38b146109ce5761025c565b8063c02174ca14610816578063c024666814610841578063c816841b1461086a578063c9567bf914610895578063d257b34f146108ac5761025c565b8063a457c2d7116100fd578063a457c2d71461070b578063a72905a214610748578063a9059cbb14610785578063a90eab8c146107c2578063bbc0c742146107eb5761025c565b80638f3fa86014610626578063917d3a6514610651578063924de9b71461068e57806395d89b41146106b7578063979919aa146106e25761025c565b806339509351116101d257806370a082311161019657806370a0823114610528578063715018a61461056557806371fc46881461057c578063735de9f7146105a5578063751039fc146105d05780638da5cb5b146105fb5761025c565b8063395093511461042f578063454340321461046c5780634a62bb65146104955780634fbee193146104c05780636ddd1713146104fd5761025c565b806324887e801161021957806324887e801461035c5780632b5f295a146103855780632d99d32e146103b0578063313ce567146103d957806335b5fb63146104045761025c565b806306fdde0314610261578063095ea7b31461028c57806318160ddd146102c95780631f7ea8da146102f457806323b872dd1461031f5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b506102766109f7565b60405161028391906133d1565b60405180910390f35b34801561029857600080fd5b506102b360048036038101906102ae919061348c565b610a89565b6040516102c091906134e7565b60405180910390f35b3480156102d557600080fd5b506102de610aa7565b6040516102eb9190613511565b60405180910390f35b34801561030057600080fd5b50610309610ab1565b6040516103169190613511565b60405180910390f35b34801561032b57600080fd5b506103466004803603810190610341919061352c565b610ab7565b60405161035391906134e7565b60405180910390f35b34801561036857600080fd5b50610383600480360381019061037e919061357f565b610baf565b005b34801561039157600080fd5b5061039a610cbe565b6040516103a79190613511565b60405180910390f35b3480156103bc57600080fd5b506103d760048036038101906103d291906135d8565b610cc4565b005b3480156103e557600080fd5b506103ee610e2b565b6040516103fb9190613634565b60405180910390f35b34801561041057600080fd5b50610419610e42565b6040516104269190613511565b60405180910390f35b34801561043b57600080fd5b506104566004803603810190610451919061348c565b610e48565b60405161046391906134e7565b60405180910390f35b34801561047857600080fd5b50610493600480360381019061048e91906135d8565b610ef4565b005b3480156104a157600080fd5b506104aa610fcb565b6040516104b791906134e7565b60405180910390f35b3480156104cc57600080fd5b506104e760048036038101906104e2919061364f565b610fde565b6040516104f491906134e7565b60405180910390f35b34801561050957600080fd5b50610512610ffe565b60405161051f91906134e7565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a919061364f565b611011565b60405161055c9190613511565b60405180910390f35b34801561057157600080fd5b5061057a61105a565b005b34801561058857600080fd5b506105a3600480360381019061059e919061357f565b6110e2565b005b3480156105b157600080fd5b506105ba6111e9565b6040516105c791906136db565b60405180910390f35b3480156105dc57600080fd5b506105e561120f565b6040516105f291906134e7565b60405180910390f35b34801561060757600080fd5b506106106112af565b60405161061d9190613705565b60405180910390f35b34801561063257600080fd5b5061063b6112d9565b6040516106489190613511565b60405180910390f35b34801561065d57600080fd5b506106786004803603810190610673919061364f565b6112df565b60405161068591906134e7565b60405180910390f35b34801561069a57600080fd5b506106b560048036038101906106b09190613720565b6112ff565b005b3480156106c357600080fd5b506106cc611398565b6040516106d991906133d1565b60405180910390f35b3480156106ee57600080fd5b506107096004803603810190610704919061357f565b61142a565b005b34801561071757600080fd5b50610732600480360381019061072d919061348c565b611539565b60405161073f91906134e7565b60405180910390f35b34801561075457600080fd5b5061076f600480360381019061076a919061364f565b611624565b60405161077c91906134e7565b60405180910390f35b34801561079157600080fd5b506107ac60048036038101906107a7919061348c565b611644565b6040516107b991906134e7565b60405180910390f35b3480156107ce57600080fd5b506107e960048036038101906107e491906137af565b611662565b005b3480156107f757600080fd5b506108006118ed565b60405161080d91906134e7565b60405180910390f35b34801561082257600080fd5b5061082b611900565b6040516108389190613705565b60405180910390f35b34801561084d57600080fd5b50610868600480360381019061086391906135d8565b611926565b005b34801561087657600080fd5b5061087f6119fd565b60405161088c9190613705565b60405180910390f35b3480156108a157600080fd5b506108aa611a23565b005b3480156108b857600080fd5b506108d360048036038101906108ce919061357f565b611ad7565b6040516108e091906134e7565b60405180910390f35b3480156108f557600080fd5b50610910600480360381019061090b9190613802565b611c2c565b60405161091d9190613511565b60405180910390f35b34801561093257600080fd5b5061093b611cb3565b6040516109489190613511565b60405180910390f35b34801561095d57600080fd5b50610966611cb9565b6040516109739190613511565b60405180910390f35b34801561098857600080fd5b506109a3600480360381019061099e91906135d8565b611cbf565b005b3480156109b157600080fd5b506109cc60048036038101906109c7919061357f565b611d96565b005b3480156109da57600080fd5b506109f560048036038101906109f0919061364f565b611e9d565b005b606060008054610a0690613871565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3290613871565b8015610a7f5780601f10610a5457610100808354040283529160200191610a7f565b820191906000526020600020905b815481529060010190602001808311610a6257829003601f168201915b5050505050905090565b6000610a9d610a96611f94565b8484611f9c565b6001905092915050565b6000600254905090565b600e5481565b6000610ac4848484612165565b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b0f611f94565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610b8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8690613914565b60405180910390fd5b610ba385610b9b611f94565b858403611f9c565b60019150509392505050565b610bb7611f94565b73ffffffffffffffffffffffffffffffffffffffff16610bd56112af565b73ffffffffffffffffffffffffffffffffffffffff1614610c2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2290613980565b60405180910390fd5b670de0b6b3a76400006103e86005610c41610aa7565b610c4b91906139cf565b610c559190613a40565b610c5f9190613a40565b811015610ca1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9890613ae3565b60405180910390fd5b670de0b6b3a764000081610cb591906139cf565b600b8190555050565b60095481565b610ccc611f94565b73ffffffffffffffffffffffffffffffffffffffff16610cea6112af565b73ffffffffffffffffffffffffffffffffffffffff1614610d40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3790613980565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc790613b75565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600860179054906101000a900460ff16905090565b600d5481565b6000610eea610e55611f94565b848460046000610e63611f94565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ee59190613b95565b611f9c565b6001905092915050565b610efc611f94565b73ffffffffffffffffffffffffffffffffffffffff16610f1a6112af565b73ffffffffffffffffffffffffffffffffffffffff1614610f70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6790613980565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600860169054906101000a900460ff1681565b60116020528060005260406000206000915054906101000a900460ff1681565b600860159054906101000a900460ff1681565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611062611f94565b73ffffffffffffffffffffffffffffffffffffffff166110806112af565b73ffffffffffffffffffffffffffffffffffffffff16146110d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cd90613980565b60405180910390fd5b6110e06000612c82565b565b6110ea611f94565b73ffffffffffffffffffffffffffffffffffffffff166111086112af565b73ffffffffffffffffffffffffffffffffffffffff161461115e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115590613980565b60405180910390fd5b7f3b77f3cd072c1083e86f1aea4703381efb175bf57ab29ecc41237d946f2b3af5600c5482604051611191929190613bc9565b60405180910390a180600c819055506019600c5411156111e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111dd90613c3e565b60405180910390fd5b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611219611f94565b73ffffffffffffffffffffffffffffffffffffffff166112376112af565b73ffffffffffffffffffffffffffffffffffffffff161461128d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128490613980565b60405180910390fd5b6000600860166101000a81548160ff0219169083151502179055506001905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b5481565b60126020528060005260406000206000915054906101000a900460ff1681565b611307611f94565b73ffffffffffffffffffffffffffffffffffffffff166113256112af565b73ffffffffffffffffffffffffffffffffffffffff161461137b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137290613980565b60405180910390fd5b80600860156101000a81548160ff02191690831515021790555050565b6060600180546113a790613871565b80601f01602080910402602001604051908101604052809291908181526020018280546113d390613871565b80156114205780601f106113f557610100808354040283529160200191611420565b820191906000526020600020905b81548152906001019060200180831161140357829003601f168201915b5050505050905090565b611432611f94565b73ffffffffffffffffffffffffffffffffffffffff166114506112af565b73ffffffffffffffffffffffffffffffffffffffff16146114a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149d90613980565b60405180910390fd5b670de0b6b3a76400006103e860016114bc610aa7565b6114c691906139cf565b6114d09190613a40565b6114da9190613a40565b81101561151c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151390613cd0565b60405180910390fd5b670de0b6b3a76400008161153091906139cf565b60098190555050565b60008060046000611548611f94565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611605576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fc90613d62565b60405180910390fd5b611619611610611f94565b85858403611f9c565b600191505092915050565b60136020528060005260406000206000915054906101000a900460ff1681565b6000611658611651611f94565b8484612165565b6001905092915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600d81526020017f54726164696e6720546f6b656e00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001204630604051602001611715959493929190613d91565b60405160208183030381529060405280519060200120905060007f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e670000000000000000000000000000000000008152508051906020012060006040516020016117a193929190613de4565b604051602081830303815290604052805190602001209050600082826040516020016117ce929190613e93565b60405160208183030381529060405280519060200120905060006001828888886040516000815260200160405260405161180b9493929190613eca565b6020604051602081039080840390855afa15801561182d573d6000803e3d6000fd5b5050506020604051035190506118416112af565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146118ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a590613f5b565b60405180910390fd5b6001600860146101000a81548160ff0219169083151502179055506001600860156101000a81548160ff02191690831515021790555050505050505050565b600860149054906101000a900460ff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61192e611f94565b73ffffffffffffffffffffffffffffffffffffffff1661194c6112af565b73ffffffffffffffffffffffffffffffffffffffff16146119a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199990613980565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a2b611f94565b73ffffffffffffffffffffffffffffffffffffffff16611a496112af565b73ffffffffffffffffffffffffffffffffffffffff1614611a9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9690613980565b60405180910390fd5b6001600860146101000a81548160ff0219169083151502179055506001600860156101000a81548160ff021916908315150217905550565b6000611ae1611f94565b73ffffffffffffffffffffffffffffffffffffffff16611aff6112af565b73ffffffffffffffffffffffffffffffffffffffff1614611b55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4c90613980565b60405180910390fd5b620186a06001611b63610aa7565b611b6d91906139cf565b611b779190613a40565b821015611bb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb090613fed565b60405180910390fd5b6103e86005611bc6610aa7565b611bd091906139cf565b611bda9190613a40565b821115611c1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c139061407f565b60405180910390fd5b81600a8190555060019050919050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b600c5481565b611cc7611f94565b73ffffffffffffffffffffffffffffffffffffffff16611ce56112af565b73ffffffffffffffffffffffffffffffffffffffff1614611d3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3290613980565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611d9e611f94565b73ffffffffffffffffffffffffffffffffffffffff16611dbc6112af565b73ffffffffffffffffffffffffffffffffffffffff1614611e12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0990613980565b60405180910390fd5b7fef3572bac793af1c873fdd3a97f65eca0b48b217dd92a2b1d0eb469b1a61f418600d5482604051611e45929190613bc9565b60405180910390a180600d819055506019600d541115611e9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9190613c3e565b60405180910390fd5b50565b611ea5611f94565b73ffffffffffffffffffffffffffffffffffffffff16611ec36112af565b73ffffffffffffffffffffffffffffffffffffffff1614611f19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1090613980565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7f90614111565b60405180910390fd5b611f9181612c82565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361200b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612002906141a3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361207a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207190614235565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121589190613511565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cb906142c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223a90614359565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156122d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c7906143c5565b60405180910390fd5b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561235d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235490614431565b60405180910390fd5b600081036123765761237183836000612d48565b612c7d565b600860169054906101000a900460ff1615612871576123936112af565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561240157506123d16112af565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561243a5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612474575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561248d5750600f60009054906101000a900460ff16155b1561287057600860149054906101000a900460ff1661258757601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806125475750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612586576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257d9061449d565b60405180910390fd5b5b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561262a5750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156126d157600954811115612674576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266b9061452f565b60405180910390fd5b600b5461268083611011565b8261268b9190613b95565b11156126cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c39061459b565b60405180910390fd5b61286f565b601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127745750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156127c3576009548111156127be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b59061462d565b60405180910390fd5b61286e565b601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661286d57600b5461282083611011565b8261282b9190613b95565b111561286c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128639061459b565b60405180910390fd5b5b5b5b5b5b600061287c30611011565b90506000600a5482101590508080156128a15750600860159054906101000a900460ff165b80156128ba5750600f60009054906101000a900460ff16155b80156129105750601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156129665750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156129bc5750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a00576001600f60006101000a81548160ff0219169083151502179055506129e4612fca565b6000600f60006101000a81548160ff0219169083151502179055505b6000600f60009054906101000a900460ff16159050601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ab65750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612ac057600090505b60008115612c6d57601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612b2357506000600d54115b15612b8a57612b506064612b42600d54886130c890919063ffffffff16565b6130de90919063ffffffff16565b9050600d54600d5482612b6391906139cf565b612b6d9190613a40565b600e6000828254612b7e9190613b95565b92505081905550612c49565b601360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612be557506000600c54115b15612c4857612c126064612c04600c54886130c890919063ffffffff16565b6130de90919063ffffffff16565b9050600c54600c5482612c2591906139cf565b612c2f9190613a40565b600e6000828254612c409190613b95565b925050819055505b5b6000811115612c5e57612c5d873083612d48565b5b8085612c6a919061464d565b94505b612c78878787612d48565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612db7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dae906142c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e1d90614359565b60405180910390fd5b612e318383836130f4565b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612eb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eaf906146f3565b60405180910390fd5b818103600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612f4d9190613b95565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612fb19190613511565b60405180910390a3612fc48484846130f9565b50505050565b6000612fd530611011565b90506000600e549050600080831480612fee5750600082145b15612ffb575050506130c6565b6014600a5461300a91906139cf565b831115613023576014600a5461302091906139cf565b92505b61302c836130fe565b6000600e81905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161307a90614744565b60006040518083038185875af1925050503d80600081146130b7576040519150601f19603f3d011682016040523d82523d6000602084013e6130bc565b606091505b5050809150505050505b565b600081836130d691906139cf565b905092915050565b600081836130ec9190613a40565b905092915050565b505050565b505050565b6000600267ffffffffffffffff81111561311b5761311a614759565b5b6040519080825280602002602001820160405280156131495781602001602082028036833780820191505090505b509050308160008151811061316157613160614788565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613208573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061322c91906147cc565b816001815181106132405761323f614788565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506132a730600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611f9c565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161330b9594939291906148f2565b600060405180830381600087803b15801561332557600080fd5b505af1158015613339573d6000803e3d6000fd5b505050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561337b578082015181840152602081019050613360565b60008484015250505050565b6000601f19601f8301169050919050565b60006133a382613341565b6133ad818561334c565b93506133bd81856020860161335d565b6133c681613387565b840191505092915050565b600060208201905081810360008301526133eb8184613398565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613423826133f8565b9050919050565b61343381613418565b811461343e57600080fd5b50565b6000813590506134508161342a565b92915050565b6000819050919050565b61346981613456565b811461347457600080fd5b50565b60008135905061348681613460565b92915050565b600080604083850312156134a3576134a26133f3565b5b60006134b185828601613441565b92505060206134c285828601613477565b9150509250929050565b60008115159050919050565b6134e1816134cc565b82525050565b60006020820190506134fc60008301846134d8565b92915050565b61350b81613456565b82525050565b60006020820190506135266000830184613502565b92915050565b600080600060608486031215613545576135446133f3565b5b600061355386828701613441565b935050602061356486828701613441565b925050604061357586828701613477565b9150509250925092565b600060208284031215613595576135946133f3565b5b60006135a384828501613477565b91505092915050565b6135b5816134cc565b81146135c057600080fd5b50565b6000813590506135d2816135ac565b92915050565b600080604083850312156135ef576135ee6133f3565b5b60006135fd85828601613441565b925050602061360e858286016135c3565b9150509250929050565b600060ff82169050919050565b61362e81613618565b82525050565b60006020820190506136496000830184613625565b92915050565b600060208284031215613665576136646133f3565b5b600061367384828501613441565b91505092915050565b6000819050919050565b60006136a161369c613697846133f8565b61367c565b6133f8565b9050919050565b60006136b382613686565b9050919050565b60006136c5826136a8565b9050919050565b6136d5816136ba565b82525050565b60006020820190506136f060008301846136cc565b92915050565b6136ff81613418565b82525050565b600060208201905061371a60008301846136f6565b92915050565b600060208284031215613736576137356133f3565b5b6000613744848285016135c3565b91505092915050565b61375681613618565b811461376157600080fd5b50565b6000813590506137738161374d565b92915050565b6000819050919050565b61378c81613779565b811461379757600080fd5b50565b6000813590506137a981613783565b92915050565b6000806000606084860312156137c8576137c76133f3565b5b60006137d686828701613764565b93505060206137e78682870161379a565b92505060406137f88682870161379a565b9150509250925092565b60008060408385031215613819576138186133f3565b5b600061382785828601613441565b925050602061383885828601613441565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061388957607f821691505b60208210810361389c5761389b613842565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006138fe60288361334c565b9150613909826138a2565b604082019050919050565b6000602082019050818103600083015261392d816138f1565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061396a60208361334c565b915061397582613934565b602082019050919050565b600060208201905081810360008301526139998161395d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006139da82613456565b91506139e583613456565b92508282026139f381613456565b91508282048414831517613a0a57613a096139a0565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a4b82613456565b9150613a5683613456565b925082613a6657613a65613a11565b5b828204905092915050565b7f43616e6e6f7420736574206d617857616c6c657453697a65206c6f776572207460008201527f68616e20302e3525000000000000000000000000000000000000000000000000602082015250565b6000613acd60288361334c565b9150613ad882613a71565b604082019050919050565b60006020820190508181036000830152613afc81613ac0565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f616d6d5061697273000000000000000000000000000000000000000000000000602082015250565b6000613b5f60288361334c565b9150613b6a82613b03565b604082019050919050565b60006020820190508181036000830152613b8e81613b52565b9050919050565b6000613ba082613456565b9150613bab83613456565b9250828201905080821115613bc357613bc26139a0565b5b92915050565b6000604082019050613bde6000830185613502565b613beb6020830184613502565b9392505050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b6000613c28601d8361334c565b9150613c3382613bf2565b602082019050919050565b60006020820190508181036000830152613c5781613c1b565b9050919050565b7f43616e6e6f7420736574206d617854786e53697a65206c6f776572207468616e60008201527f20302e3125000000000000000000000000000000000000000000000000000000602082015250565b6000613cba60258361334c565b9150613cc582613c5e565b604082019050919050565b60006020820190508181036000830152613ce981613cad565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613d4c60258361334c565b9150613d5782613cf0565b604082019050919050565b60006020820190508181036000830152613d7b81613d3f565b9050919050565b613d8b81613779565b82525050565b600060a082019050613da66000830188613d82565b613db36020830187613d82565b613dc06040830186613d82565b613dcd6060830185613502565b613dda60808301846136f6565b9695505050505050565b6000606082019050613df96000830186613d82565b613e066020830185613d82565b613e136040830184613502565b949350505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b6000613e5c600283613e1b565b9150613e6782613e26565b600282019050919050565b6000819050919050565b613e8d613e8882613779565b613e72565b82525050565b6000613e9e82613e4f565b9150613eaa8285613e7c565b602082019150613eba8284613e7c565b6020820191508190509392505050565b6000608082019050613edf6000830187613d82565b613eec6020830186613625565b613ef96040830185613d82565b613f066060830184613d82565b95945050505050565b7f496e76616c6964207369676e6174757265000000000000000000000000000000600082015250565b6000613f4560118361334c565b9150613f5082613f0f565b602082019050919050565b60006020820190508181036000830152613f7481613f38565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000613fd760358361334c565b9150613fe282613f7b565b604082019050919050565b6000602082019050818103600083015261400681613fca565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b600061406960348361334c565b91506140748261400d565b604082019050919050565b600060208201905081810360008301526140988161405c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006140fb60268361334c565b91506141068261409f565b604082019050919050565b6000602082019050818103600083015261412a816140ee565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061418d60248361334c565b915061419882614131565b604082019050919050565b600060208201905081810360008301526141bc81614180565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061421f60228361334c565b915061422a826141c3565b604082019050919050565b6000602082019050818103600083015261424e81614212565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006142b160258361334c565b91506142bc82614255565b604082019050919050565b600060208201905081810360008301526142e0816142a4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061434360238361334c565b915061434e826142e7565b604082019050919050565b6000602082019050818103600083015261437281614336565b9050919050565b7f5b66726f6d5d20626c61636b206c697374000000000000000000000000000000600082015250565b60006143af60118361334c565b91506143ba82614379565b602082019050919050565b600060208201905081810360008301526143de816143a2565b9050919050565b7f5b746f5d20626c61636b206c6973740000000000000000000000000000000000600082015250565b600061441b600f8361334c565b9150614426826143e5565b602082019050919050565b6000602082019050818103600083015261444a8161440e565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061448760168361334c565b915061449282614451565b602082019050919050565b600060208201905081810360008301526144b68161447a565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d617854786e53697a652e000000000000000000000000000000000000000000602082015250565b6000614519602b8361334c565b9150614524826144bd565b604082019050919050565b600060208201905081810360008301526145488161450c565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061458560138361334c565b91506145908261454f565b602082019050919050565b600060208201905081810360008301526145b481614578565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d617854786e53697a652e0000000000000000000000000000000000000000602082015250565b6000614617602c8361334c565b9150614622826145bb565b604082019050919050565b600060208201905081810360008301526146468161460a565b9050919050565b600061465882613456565b915061466383613456565b925082820390508181111561467b5761467a6139a0565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006146dd60268361334c565b91506146e882614681565b604082019050919050565b6000602082019050818103600083015261470c816146d0565b9050919050565b600081905092915050565b50565b600061472e600083614713565b91506147398261471e565b600082019050919050565b600061474f82614721565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506147c68161342a565b92915050565b6000602082840312156147e2576147e16133f3565b5b60006147f0848285016147b7565b91505092915050565b6000819050919050565b600061481e614819614814846147f9565b61367c565b613456565b9050919050565b61482e81614803565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61486981613418565b82525050565b600061487b8383614860565b60208301905092915050565b6000602082019050919050565b600061489f82614834565b6148a9818561483f565b93506148b483614850565b8060005b838110156148e55781516148cc888261486f565b97506148d783614887565b9250506001810190506148b8565b5085935050505092915050565b600060a0820190506149076000830188613502565b6149146020830187614825565b81810360408301526149268186614894565b905061493560608301856136f6565b6149426080830184613502565b969550505050505056fea2646970667358221220e59aad2f41a29190817ed7f4412ea632d09dfba03e27cdff1531c1687423d70e64736f6c6343000818003300000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000061f313f880000000000000000000000000ea28c3098472cdfcf118bcce3c3d8dc9e8eb75a8000000000000000000000000000000000000000000000000000000000000001900000000000000000000000000000000000000000000000000000000000000190000000000000000000000000000000000000000000000000000000000000012426967686f726e2052656420447261676f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006445241474f4e0000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106102555760003560e01c80638f3fa86011610139578063c02174ca116100b6578063dd62ed3e1161007a578063dd62ed3e146108e9578063e2f4560514610926578063e4a1b95f14610951578063e7a996ab1461097c578063eba4c333146109a5578063f2fde38b146109ce5761025c565b8063c02174ca14610816578063c024666814610841578063c816841b1461086a578063c9567bf914610895578063d257b34f146108ac5761025c565b8063a457c2d7116100fd578063a457c2d71461070b578063a72905a214610748578063a9059cbb14610785578063a90eab8c146107c2578063bbc0c742146107eb5761025c565b80638f3fa86014610626578063917d3a6514610651578063924de9b71461068e57806395d89b41146106b7578063979919aa146106e25761025c565b806339509351116101d257806370a082311161019657806370a0823114610528578063715018a61461056557806371fc46881461057c578063735de9f7146105a5578063751039fc146105d05780638da5cb5b146105fb5761025c565b8063395093511461042f578063454340321461046c5780634a62bb65146104955780634fbee193146104c05780636ddd1713146104fd5761025c565b806324887e801161021957806324887e801461035c5780632b5f295a146103855780632d99d32e146103b0578063313ce567146103d957806335b5fb63146104045761025c565b806306fdde0314610261578063095ea7b31461028c57806318160ddd146102c95780631f7ea8da146102f457806323b872dd1461031f5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b506102766109f7565b60405161028391906133d1565b60405180910390f35b34801561029857600080fd5b506102b360048036038101906102ae919061348c565b610a89565b6040516102c091906134e7565b60405180910390f35b3480156102d557600080fd5b506102de610aa7565b6040516102eb9190613511565b60405180910390f35b34801561030057600080fd5b50610309610ab1565b6040516103169190613511565b60405180910390f35b34801561032b57600080fd5b506103466004803603810190610341919061352c565b610ab7565b60405161035391906134e7565b60405180910390f35b34801561036857600080fd5b50610383600480360381019061037e919061357f565b610baf565b005b34801561039157600080fd5b5061039a610cbe565b6040516103a79190613511565b60405180910390f35b3480156103bc57600080fd5b506103d760048036038101906103d291906135d8565b610cc4565b005b3480156103e557600080fd5b506103ee610e2b565b6040516103fb9190613634565b60405180910390f35b34801561041057600080fd5b50610419610e42565b6040516104269190613511565b60405180910390f35b34801561043b57600080fd5b506104566004803603810190610451919061348c565b610e48565b60405161046391906134e7565b60405180910390f35b34801561047857600080fd5b50610493600480360381019061048e91906135d8565b610ef4565b005b3480156104a157600080fd5b506104aa610fcb565b6040516104b791906134e7565b60405180910390f35b3480156104cc57600080fd5b506104e760048036038101906104e2919061364f565b610fde565b6040516104f491906134e7565b60405180910390f35b34801561050957600080fd5b50610512610ffe565b60405161051f91906134e7565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a919061364f565b611011565b60405161055c9190613511565b60405180910390f35b34801561057157600080fd5b5061057a61105a565b005b34801561058857600080fd5b506105a3600480360381019061059e919061357f565b6110e2565b005b3480156105b157600080fd5b506105ba6111e9565b6040516105c791906136db565b60405180910390f35b3480156105dc57600080fd5b506105e561120f565b6040516105f291906134e7565b60405180910390f35b34801561060757600080fd5b506106106112af565b60405161061d9190613705565b60405180910390f35b34801561063257600080fd5b5061063b6112d9565b6040516106489190613511565b60405180910390f35b34801561065d57600080fd5b506106786004803603810190610673919061364f565b6112df565b60405161068591906134e7565b60405180910390f35b34801561069a57600080fd5b506106b560048036038101906106b09190613720565b6112ff565b005b3480156106c357600080fd5b506106cc611398565b6040516106d991906133d1565b60405180910390f35b3480156106ee57600080fd5b506107096004803603810190610704919061357f565b61142a565b005b34801561071757600080fd5b50610732600480360381019061072d919061348c565b611539565b60405161073f91906134e7565b60405180910390f35b34801561075457600080fd5b5061076f600480360381019061076a919061364f565b611624565b60405161077c91906134e7565b60405180910390f35b34801561079157600080fd5b506107ac60048036038101906107a7919061348c565b611644565b6040516107b991906134e7565b60405180910390f35b3480156107ce57600080fd5b506107e960048036038101906107e491906137af565b611662565b005b3480156107f757600080fd5b506108006118ed565b60405161080d91906134e7565b60405180910390f35b34801561082257600080fd5b5061082b611900565b6040516108389190613705565b60405180910390f35b34801561084d57600080fd5b50610868600480360381019061086391906135d8565b611926565b005b34801561087657600080fd5b5061087f6119fd565b60405161088c9190613705565b60405180910390f35b3480156108a157600080fd5b506108aa611a23565b005b3480156108b857600080fd5b506108d360048036038101906108ce919061357f565b611ad7565b6040516108e091906134e7565b60405180910390f35b3480156108f557600080fd5b50610910600480360381019061090b9190613802565b611c2c565b60405161091d9190613511565b60405180910390f35b34801561093257600080fd5b5061093b611cb3565b6040516109489190613511565b60405180910390f35b34801561095d57600080fd5b50610966611cb9565b6040516109739190613511565b60405180910390f35b34801561098857600080fd5b506109a3600480360381019061099e91906135d8565b611cbf565b005b3480156109b157600080fd5b506109cc60048036038101906109c7919061357f565b611d96565b005b3480156109da57600080fd5b506109f560048036038101906109f0919061364f565b611e9d565b005b606060008054610a0690613871565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3290613871565b8015610a7f5780601f10610a5457610100808354040283529160200191610a7f565b820191906000526020600020905b815481529060010190602001808311610a6257829003601f168201915b5050505050905090565b6000610a9d610a96611f94565b8484611f9c565b6001905092915050565b6000600254905090565b600e5481565b6000610ac4848484612165565b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b0f611f94565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610b8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8690613914565b60405180910390fd5b610ba385610b9b611f94565b858403611f9c565b60019150509392505050565b610bb7611f94565b73ffffffffffffffffffffffffffffffffffffffff16610bd56112af565b73ffffffffffffffffffffffffffffffffffffffff1614610c2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2290613980565b60405180910390fd5b670de0b6b3a76400006103e86005610c41610aa7565b610c4b91906139cf565b610c559190613a40565b610c5f9190613a40565b811015610ca1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9890613ae3565b60405180910390fd5b670de0b6b3a764000081610cb591906139cf565b600b8190555050565b60095481565b610ccc611f94565b73ffffffffffffffffffffffffffffffffffffffff16610cea6112af565b73ffffffffffffffffffffffffffffffffffffffff1614610d40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3790613980565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc790613b75565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600860179054906101000a900460ff16905090565b600d5481565b6000610eea610e55611f94565b848460046000610e63611f94565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ee59190613b95565b611f9c565b6001905092915050565b610efc611f94565b73ffffffffffffffffffffffffffffffffffffffff16610f1a6112af565b73ffffffffffffffffffffffffffffffffffffffff1614610f70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6790613980565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600860169054906101000a900460ff1681565b60116020528060005260406000206000915054906101000a900460ff1681565b600860159054906101000a900460ff1681565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611062611f94565b73ffffffffffffffffffffffffffffffffffffffff166110806112af565b73ffffffffffffffffffffffffffffffffffffffff16146110d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cd90613980565b60405180910390fd5b6110e06000612c82565b565b6110ea611f94565b73ffffffffffffffffffffffffffffffffffffffff166111086112af565b73ffffffffffffffffffffffffffffffffffffffff161461115e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115590613980565b60405180910390fd5b7f3b77f3cd072c1083e86f1aea4703381efb175bf57ab29ecc41237d946f2b3af5600c5482604051611191929190613bc9565b60405180910390a180600c819055506019600c5411156111e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111dd90613c3e565b60405180910390fd5b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611219611f94565b73ffffffffffffffffffffffffffffffffffffffff166112376112af565b73ffffffffffffffffffffffffffffffffffffffff161461128d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128490613980565b60405180910390fd5b6000600860166101000a81548160ff0219169083151502179055506001905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b5481565b60126020528060005260406000206000915054906101000a900460ff1681565b611307611f94565b73ffffffffffffffffffffffffffffffffffffffff166113256112af565b73ffffffffffffffffffffffffffffffffffffffff161461137b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137290613980565b60405180910390fd5b80600860156101000a81548160ff02191690831515021790555050565b6060600180546113a790613871565b80601f01602080910402602001604051908101604052809291908181526020018280546113d390613871565b80156114205780601f106113f557610100808354040283529160200191611420565b820191906000526020600020905b81548152906001019060200180831161140357829003601f168201915b5050505050905090565b611432611f94565b73ffffffffffffffffffffffffffffffffffffffff166114506112af565b73ffffffffffffffffffffffffffffffffffffffff16146114a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149d90613980565b60405180910390fd5b670de0b6b3a76400006103e860016114bc610aa7565b6114c691906139cf565b6114d09190613a40565b6114da9190613a40565b81101561151c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151390613cd0565b60405180910390fd5b670de0b6b3a76400008161153091906139cf565b60098190555050565b60008060046000611548611f94565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611605576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fc90613d62565b60405180910390fd5b611619611610611f94565b85858403611f9c565b600191505092915050565b60136020528060005260406000206000915054906101000a900460ff1681565b6000611658611651611f94565b8484612165565b6001905092915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600d81526020017f54726164696e6720546f6b656e00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001204630604051602001611715959493929190613d91565b60405160208183030381529060405280519060200120905060007f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e670000000000000000000000000000000000008152508051906020012060006040516020016117a193929190613de4565b604051602081830303815290604052805190602001209050600082826040516020016117ce929190613e93565b60405160208183030381529060405280519060200120905060006001828888886040516000815260200160405260405161180b9493929190613eca565b6020604051602081039080840390855afa15801561182d573d6000803e3d6000fd5b5050506020604051035190506118416112af565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146118ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a590613f5b565b60405180910390fd5b6001600860146101000a81548160ff0219169083151502179055506001600860156101000a81548160ff02191690831515021790555050505050505050565b600860149054906101000a900460ff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61192e611f94565b73ffffffffffffffffffffffffffffffffffffffff1661194c6112af565b73ffffffffffffffffffffffffffffffffffffffff16146119a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199990613980565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a2b611f94565b73ffffffffffffffffffffffffffffffffffffffff16611a496112af565b73ffffffffffffffffffffffffffffffffffffffff1614611a9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9690613980565b60405180910390fd5b6001600860146101000a81548160ff0219169083151502179055506001600860156101000a81548160ff021916908315150217905550565b6000611ae1611f94565b73ffffffffffffffffffffffffffffffffffffffff16611aff6112af565b73ffffffffffffffffffffffffffffffffffffffff1614611b55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4c90613980565b60405180910390fd5b620186a06001611b63610aa7565b611b6d91906139cf565b611b779190613a40565b821015611bb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb090613fed565b60405180910390fd5b6103e86005611bc6610aa7565b611bd091906139cf565b611bda9190613a40565b821115611c1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c139061407f565b60405180910390fd5b81600a8190555060019050919050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b600c5481565b611cc7611f94565b73ffffffffffffffffffffffffffffffffffffffff16611ce56112af565b73ffffffffffffffffffffffffffffffffffffffff1614611d3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3290613980565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611d9e611f94565b73ffffffffffffffffffffffffffffffffffffffff16611dbc6112af565b73ffffffffffffffffffffffffffffffffffffffff1614611e12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0990613980565b60405180910390fd5b7fef3572bac793af1c873fdd3a97f65eca0b48b217dd92a2b1d0eb469b1a61f418600d5482604051611e45929190613bc9565b60405180910390a180600d819055506019600d541115611e9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9190613c3e565b60405180910390fd5b50565b611ea5611f94565b73ffffffffffffffffffffffffffffffffffffffff16611ec36112af565b73ffffffffffffffffffffffffffffffffffffffff1614611f19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1090613980565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7f90614111565b60405180910390fd5b611f9181612c82565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361200b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612002906141a3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361207a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207190614235565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121589190613511565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cb906142c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223a90614359565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156122d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c7906143c5565b60405180910390fd5b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561235d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235490614431565b60405180910390fd5b600081036123765761237183836000612d48565b612c7d565b600860169054906101000a900460ff1615612871576123936112af565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561240157506123d16112af565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561243a5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612474575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561248d5750600f60009054906101000a900460ff16155b1561287057600860149054906101000a900460ff1661258757601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806125475750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612586576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257d9061449d565b60405180910390fd5b5b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561262a5750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156126d157600954811115612674576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266b9061452f565b60405180910390fd5b600b5461268083611011565b8261268b9190613b95565b11156126cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c39061459b565b60405180910390fd5b61286f565b601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127745750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156127c3576009548111156127be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b59061462d565b60405180910390fd5b61286e565b601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661286d57600b5461282083611011565b8261282b9190613b95565b111561286c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128639061459b565b60405180910390fd5b5b5b5b5b5b600061287c30611011565b90506000600a5482101590508080156128a15750600860159054906101000a900460ff165b80156128ba5750600f60009054906101000a900460ff16155b80156129105750601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156129665750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156129bc5750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a00576001600f60006101000a81548160ff0219169083151502179055506129e4612fca565b6000600f60006101000a81548160ff0219169083151502179055505b6000600f60009054906101000a900460ff16159050601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ab65750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612ac057600090505b60008115612c6d57601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612b2357506000600d54115b15612b8a57612b506064612b42600d54886130c890919063ffffffff16565b6130de90919063ffffffff16565b9050600d54600d5482612b6391906139cf565b612b6d9190613a40565b600e6000828254612b7e9190613b95565b92505081905550612c49565b601360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612be557506000600c54115b15612c4857612c126064612c04600c54886130c890919063ffffffff16565b6130de90919063ffffffff16565b9050600c54600c5482612c2591906139cf565b612c2f9190613a40565b600e6000828254612c409190613b95565b925050819055505b5b6000811115612c5e57612c5d873083612d48565b5b8085612c6a919061464d565b94505b612c78878787612d48565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612db7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dae906142c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e1d90614359565b60405180910390fd5b612e318383836130f4565b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612eb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eaf906146f3565b60405180910390fd5b818103600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612f4d9190613b95565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612fb19190613511565b60405180910390a3612fc48484846130f9565b50505050565b6000612fd530611011565b90506000600e549050600080831480612fee5750600082145b15612ffb575050506130c6565b6014600a5461300a91906139cf565b831115613023576014600a5461302091906139cf565b92505b61302c836130fe565b6000600e81905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161307a90614744565b60006040518083038185875af1925050503d80600081146130b7576040519150601f19603f3d011682016040523d82523d6000602084013e6130bc565b606091505b5050809150505050505b565b600081836130d691906139cf565b905092915050565b600081836130ec9190613a40565b905092915050565b505050565b505050565b6000600267ffffffffffffffff81111561311b5761311a614759565b5b6040519080825280602002602001820160405280156131495781602001602082028036833780820191505090505b509050308160008151811061316157613160614788565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613208573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061322c91906147cc565b816001815181106132405761323f614788565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506132a730600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611f9c565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161330b9594939291906148f2565b600060405180830381600087803b15801561332557600080fd5b505af1158015613339573d6000803e3d6000fd5b505050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561337b578082015181840152602081019050613360565b60008484015250505050565b6000601f19601f8301169050919050565b60006133a382613341565b6133ad818561334c565b93506133bd81856020860161335d565b6133c681613387565b840191505092915050565b600060208201905081810360008301526133eb8184613398565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613423826133f8565b9050919050565b61343381613418565b811461343e57600080fd5b50565b6000813590506134508161342a565b92915050565b6000819050919050565b61346981613456565b811461347457600080fd5b50565b60008135905061348681613460565b92915050565b600080604083850312156134a3576134a26133f3565b5b60006134b185828601613441565b92505060206134c285828601613477565b9150509250929050565b60008115159050919050565b6134e1816134cc565b82525050565b60006020820190506134fc60008301846134d8565b92915050565b61350b81613456565b82525050565b60006020820190506135266000830184613502565b92915050565b600080600060608486031215613545576135446133f3565b5b600061355386828701613441565b935050602061356486828701613441565b925050604061357586828701613477565b9150509250925092565b600060208284031215613595576135946133f3565b5b60006135a384828501613477565b91505092915050565b6135b5816134cc565b81146135c057600080fd5b50565b6000813590506135d2816135ac565b92915050565b600080604083850312156135ef576135ee6133f3565b5b60006135fd85828601613441565b925050602061360e858286016135c3565b9150509250929050565b600060ff82169050919050565b61362e81613618565b82525050565b60006020820190506136496000830184613625565b92915050565b600060208284031215613665576136646133f3565b5b600061367384828501613441565b91505092915050565b6000819050919050565b60006136a161369c613697846133f8565b61367c565b6133f8565b9050919050565b60006136b382613686565b9050919050565b60006136c5826136a8565b9050919050565b6136d5816136ba565b82525050565b60006020820190506136f060008301846136cc565b92915050565b6136ff81613418565b82525050565b600060208201905061371a60008301846136f6565b92915050565b600060208284031215613736576137356133f3565b5b6000613744848285016135c3565b91505092915050565b61375681613618565b811461376157600080fd5b50565b6000813590506137738161374d565b92915050565b6000819050919050565b61378c81613779565b811461379757600080fd5b50565b6000813590506137a981613783565b92915050565b6000806000606084860312156137c8576137c76133f3565b5b60006137d686828701613764565b93505060206137e78682870161379a565b92505060406137f88682870161379a565b9150509250925092565b60008060408385031215613819576138186133f3565b5b600061382785828601613441565b925050602061383885828601613441565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061388957607f821691505b60208210810361389c5761389b613842565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006138fe60288361334c565b9150613909826138a2565b604082019050919050565b6000602082019050818103600083015261392d816138f1565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061396a60208361334c565b915061397582613934565b602082019050919050565b600060208201905081810360008301526139998161395d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006139da82613456565b91506139e583613456565b92508282026139f381613456565b91508282048414831517613a0a57613a096139a0565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a4b82613456565b9150613a5683613456565b925082613a6657613a65613a11565b5b828204905092915050565b7f43616e6e6f7420736574206d617857616c6c657453697a65206c6f776572207460008201527f68616e20302e3525000000000000000000000000000000000000000000000000602082015250565b6000613acd60288361334c565b9150613ad882613a71565b604082019050919050565b60006020820190508181036000830152613afc81613ac0565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f616d6d5061697273000000000000000000000000000000000000000000000000602082015250565b6000613b5f60288361334c565b9150613b6a82613b03565b604082019050919050565b60006020820190508181036000830152613b8e81613b52565b9050919050565b6000613ba082613456565b9150613bab83613456565b9250828201905080821115613bc357613bc26139a0565b5b92915050565b6000604082019050613bde6000830185613502565b613beb6020830184613502565b9392505050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b6000613c28601d8361334c565b9150613c3382613bf2565b602082019050919050565b60006020820190508181036000830152613c5781613c1b565b9050919050565b7f43616e6e6f7420736574206d617854786e53697a65206c6f776572207468616e60008201527f20302e3125000000000000000000000000000000000000000000000000000000602082015250565b6000613cba60258361334c565b9150613cc582613c5e565b604082019050919050565b60006020820190508181036000830152613ce981613cad565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613d4c60258361334c565b9150613d5782613cf0565b604082019050919050565b60006020820190508181036000830152613d7b81613d3f565b9050919050565b613d8b81613779565b82525050565b600060a082019050613da66000830188613d82565b613db36020830187613d82565b613dc06040830186613d82565b613dcd6060830185613502565b613dda60808301846136f6565b9695505050505050565b6000606082019050613df96000830186613d82565b613e066020830185613d82565b613e136040830184613502565b949350505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b6000613e5c600283613e1b565b9150613e6782613e26565b600282019050919050565b6000819050919050565b613e8d613e8882613779565b613e72565b82525050565b6000613e9e82613e4f565b9150613eaa8285613e7c565b602082019150613eba8284613e7c565b6020820191508190509392505050565b6000608082019050613edf6000830187613d82565b613eec6020830186613625565b613ef96040830185613d82565b613f066060830184613d82565b95945050505050565b7f496e76616c6964207369676e6174757265000000000000000000000000000000600082015250565b6000613f4560118361334c565b9150613f5082613f0f565b602082019050919050565b60006020820190508181036000830152613f7481613f38565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000613fd760358361334c565b9150613fe282613f7b565b604082019050919050565b6000602082019050818103600083015261400681613fca565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b600061406960348361334c565b91506140748261400d565b604082019050919050565b600060208201905081810360008301526140988161405c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006140fb60268361334c565b91506141068261409f565b604082019050919050565b6000602082019050818103600083015261412a816140ee565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061418d60248361334c565b915061419882614131565b604082019050919050565b600060208201905081810360008301526141bc81614180565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061421f60228361334c565b915061422a826141c3565b604082019050919050565b6000602082019050818103600083015261424e81614212565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006142b160258361334c565b91506142bc82614255565b604082019050919050565b600060208201905081810360008301526142e0816142a4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061434360238361334c565b915061434e826142e7565b604082019050919050565b6000602082019050818103600083015261437281614336565b9050919050565b7f5b66726f6d5d20626c61636b206c697374000000000000000000000000000000600082015250565b60006143af60118361334c565b91506143ba82614379565b602082019050919050565b600060208201905081810360008301526143de816143a2565b9050919050565b7f5b746f5d20626c61636b206c6973740000000000000000000000000000000000600082015250565b600061441b600f8361334c565b9150614426826143e5565b602082019050919050565b6000602082019050818103600083015261444a8161440e565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061448760168361334c565b915061449282614451565b602082019050919050565b600060208201905081810360008301526144b68161447a565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d617854786e53697a652e000000000000000000000000000000000000000000602082015250565b6000614519602b8361334c565b9150614524826144bd565b604082019050919050565b600060208201905081810360008301526145488161450c565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061458560138361334c565b91506145908261454f565b602082019050919050565b600060208201905081810360008301526145b481614578565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d617854786e53697a652e0000000000000000000000000000000000000000602082015250565b6000614617602c8361334c565b9150614622826145bb565b604082019050919050565b600060208201905081810360008301526146468161460a565b9050919050565b600061465882613456565b915061466383613456565b925082820390508181111561467b5761467a6139a0565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006146dd60268361334c565b91506146e882614681565b604082019050919050565b6000602082019050818103600083015261470c816146d0565b9050919050565b600081905092915050565b50565b600061472e600083614713565b91506147398261471e565b600082019050919050565b600061474f82614721565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506147c68161342a565b92915050565b6000602082840312156147e2576147e16133f3565b5b60006147f0848285016147b7565b91505092915050565b6000819050919050565b600061481e614819614814846147f9565b61367c565b613456565b9050919050565b61482e81614803565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61486981613418565b82525050565b600061487b8383614860565b60208301905092915050565b6000602082019050919050565b600061489f82614834565b6148a9818561483f565b93506148b483614850565b8060005b838110156148e55781516148cc888261486f565b97506148d783614887565b9250506001810190506148b8565b5085935050505092915050565b600060a0820190506149076000830188613502565b6149146020830187614825565b81810360408301526149268186614894565b905061493560608301856136f6565b6149426080830184613502565b969550505050505056fea2646970667358221220e59aad2f41a29190817ed7f4412ea632d09dfba03e27cdff1531c1687423d70e64736f6c63430008180033

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

00000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000061f313f880000000000000000000000000ea28c3098472cdfcf118bcce3c3d8dc9e8eb75a8000000000000000000000000000000000000000000000000000000000000001900000000000000000000000000000000000000000000000000000000000000190000000000000000000000000000000000000000000000000000000000000012426967686f726e2052656420447261676f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006445241474f4e0000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name_ (string): Bighorn Red Dragon
Arg [1] : symbol_ (string): DRAGON
Arg [2] : decimals_ (uint8): 18
Arg [3] : totalNativeSupply_ (uint256): 420690000000
Arg [4] : marketingWallet_ (address): 0xEa28c3098472CDfCf118bcCe3C3d8DC9e8eB75A8
Arg [5] : buyFee_ (uint256): 25
Arg [6] : sellFee_ (uint256): 25

-----Encoded View---------------
11 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [3] : 00000000000000000000000000000000000000000000000000000061f313f880
Arg [4] : 000000000000000000000000ea28c3098472cdfcf118bcce3c3d8dc9e8eb75a8
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000019
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000019
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [8] : 426967686f726e2052656420447261676f6e0000000000000000000000000000
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [10] : 445241474f4e0000000000000000000000000000000000000000000000000000


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.