ETH Price: $1,976.46 (-3.38%)
Gas: 0.11 Gwei

Contract

0xf1D8501d175E6FBf416f46cAA74Fbd3E85CAe2bc
 

Overview

ETH Balance

0.000019920707866486 ETH

Eth Value

$0.04 (@ $1,976.46/ETH)

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve153291092022-08-12 20:21:521322 days ago1660335712IN
0xf1D8501d...E85CAe2bc
0 ETH0.0005235311.23354704
Approve153215412022-08-11 15:36:591324 days ago1660232219IN
0xf1D8501d...E85CAe2bc
0 ETH0.0013553629.08192522
Approve153213672022-08-11 14:57:571324 days ago1660229877IN
0xf1D8501d...E85CAe2bc
0 ETH0.000750916.11201933
Approve153184252022-08-11 3:47:571324 days ago1660189677IN
0xf1D8501d...E85CAe2bc
0 ETH0.0012326826.44955086
Approve153178682022-08-11 1:37:401324 days ago1660181860IN
0xf1D8501d...E85CAe2bc
0 ETH0.0005364420.08778031
Approve153178592022-08-11 1:35:421324 days ago1660181742IN
0xf1D8501d...E85CAe2bc
0 ETH0.0009702620.81893372
Approve153175112022-08-11 0:20:271324 days ago1660177227IN
0xf1D8501d...E85CAe2bc
0 ETH0.0009921521.28869046
Approve153174742022-08-11 0:11:021324 days ago1660176662IN
0xf1D8501d...E85CAe2bc
0 ETH0.000991421.27257965
Approve153174502022-08-11 0:05:401324 days ago1660176340IN
0xf1D8501d...E85CAe2bc
0 ETH0.0010975223.54952675
Approve153173752022-08-10 23:48:491324 days ago1660175329IN
0xf1D8501d...E85CAe2bc
0 ETH0.0013934229.89861597
Approve153173262022-08-10 23:34:251324 days ago1660174465IN
0xf1D8501d...E85CAe2bc
0 ETH0.0011308924.26548803
Renounce Ownersh...153173022022-08-10 23:28:001324 days ago1660174080IN
0xf1D8501d...E85CAe2bc
0 ETH0.0005462223.40208079
Before Renounce ...153172982022-08-10 23:27:001324 days ago1660174020IN
0xf1D8501d...E85CAe2bc
0 ETH0.002050322.22644672
Approve153172752022-08-10 23:22:481324 days ago1660173768IN
0xf1D8501d...E85CAe2bc
0 ETH0.0014528331.17334789
Approve153172692022-08-10 23:21:241324 days ago1660173684IN
0xf1D8501d...E85CAe2bc
0 ETH0.001266627.17738836
Set All Fees Tri...153172692022-08-10 23:21:241324 days ago1660173684IN
0xf1D8501d...E85CAe2bc
0 ETH0.0009409427.67738836
Set Swap Setting...153172672022-08-10 23:19:231324 days ago1660173563IN
0xf1D8501d...E85CAe2bc
0 ETH0.0006986622.39521854
Approve153172562022-08-10 23:18:061324 days ago1660173486IN
0xf1D8501d...E85CAe2bc
0 ETH0.0008846733.12767713
Approve153172562022-08-10 23:18:061324 days ago1660173486IN
0xf1D8501d...E85CAe2bc
0 ETH0.0015439133.12767713
Approve153172462022-08-10 23:16:071324 days ago1660173367IN
0xf1D8501d...E85CAe2bc
0 ETH0.0020381643.73272907
Approve153172032022-08-10 23:05:581324 days ago1660172758IN
0xf1D8501d...E85CAe2bc
0 ETH0.0011718725.14491311
Approve153171992022-08-10 23:04:451324 days ago1660172685IN
0xf1D8501d...E85CAe2bc
0 ETH0.001339228.73520949
Approve153171992022-08-10 23:04:451324 days ago1660172685IN
0xf1D8501d...E85CAe2bc
0 ETH0.001362529.23520949
Approve153171952022-08-10 23:03:401324 days ago1660172620IN
0xf1D8501d...E85CAe2bc
0 ETH0.0011671525.04348836
Approve153171942022-08-10 23:03:331324 days ago1660172613IN
0xf1D8501d...E85CAe2bc
0 ETH0.0011894825.52267355
View all transactions

Latest 8 internal transactions

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer153172032022-08-10 23:05:581324 days ago1660172758
0xf1D8501d...E85CAe2bc
0.00001153 ETH
Add Liquidity ET...153172032022-08-10 23:05:581324 days ago1660172758
0xf1D8501d...E85CAe2bc
0.03583889 ETH
Transfer153172032022-08-10 23:05:581324 days ago1660172758
0xf1D8501d...E85CAe2bc
0.03583889 ETH
Transfer153171532022-08-10 22:55:461324 days ago1660172146
0xf1D8501d...E85CAe2bc
0.00000839 ETH
Add Liquidity ET...153171532022-08-10 22:55:461324 days ago1660172146
0xf1D8501d...E85CAe2bc
0.03398498 ETH
Transfer153171532022-08-10 22:55:461324 days ago1660172146
0xf1D8501d...E85CAe2bc
0.03398498 ETH
Add Liquidity ET...153171422022-08-10 22:53:221324 days ago1660172002
0xf1D8501d...E85CAe2bc
0.01757595 ETH
Transfer153171422022-08-10 22:53:221324 days ago1660172002
0xf1D8501d...E85CAe2bc
0.01757595 ETH
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ElonFloki

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2022-08-10
*/

// SPDX-License-Identifier: MIT
// Copyright (c) ElonFloki.pro

pragma solidity ^0.8;

interface IERC20 {
    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

    event TransferDetails(
        address indexed from,
        address indexed to,
        uint256 total_Amount,
        uint256 reflected_amount,
        uint256 total_TransferAmount,
        uint256 reflected_TransferAmount
    );
}

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

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

library Address {
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(
            address(this).balance >= amount,
            "Address: insufficient balance"
        );
        (bool success, ) = recipient.call{value: amount}("");
        require(
            success,
            "Address: unable to send value, recipient may have reverted"
        );
    }

    function functionCall(address target, bytes memory data)
        internal
        returns (bytes memory)
    {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return
            functionCallWithValue(
                target,
                data,
                value,
                "Address: low-level call with value failed"
            );
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(
            address(this).balance >= value,
            "Address: insufficient balance for call"
        );
        require(isContract(target), "Address: call to non-contract");
        (bool success, bytes memory returndata) = target.call{value: value}(
            data
        );
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function functionStaticCall(address target, bytes memory data)
        internal
        view
        returns (bytes memory)
    {
        return
            functionStaticCall(
                target,
                data,
                "Address: low-level static call failed"
            );
    }

    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function functionDelegateCall(address target, bytes memory data)
        internal
        returns (bytes memory)
    {
        return
            functionDelegateCall(
                target,
                data,
                "Address: low-level delegate call failed"
            );
    }

    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) private pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}

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

    function WETH() external pure returns (address);

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

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

contract ElonFloki is Context, IERC20, Ownable {
    using Address for address;

    mapping(address => uint256) public _balance_reflected;
    mapping(address => uint256) public _balance_total;
    mapping(address => mapping(address => uint256)) private _allowances;

    mapping(address => bool) public _isExcluded;

    bool public blacklistMode = true;
    mapping(address => bool) public isBlacklisted;
    mapping(address => bool) public preTrader;

    bool public tradingOpen = false;

    uint256 private constant MAX = ~uint256(0);

    uint8 public constant decimals = 9;
    uint256 public constant totalSupply = 10**9 * 10**decimals;

    uint256 private _supply_reflected = (MAX - (MAX % totalSupply));

    string public constant name = "Elon Floki";
    string public constant symbol = "E-FLOKI";

    uint256 private _fee_treasury_convert_limit = totalSupply / 5000; // 0,02%
    uint256 private _fee_marketing_convert_limit = totalSupply / 5000; // 0,02%

    uint256 private _fee_treasury_min_bal = 0;
    uint256 private _fee_marketing_min_bal = 0;

    uint256 private _fee_reflection = 0;
    uint256 private _fee_reflection_old = _fee_reflection;
    uint256 private _contractReflectionStored = 0;

    uint256 private _fee_marketing = 2;
    uint256 private _fee_marketing_old = _fee_marketing;
    address payable public _wallet_marketing;

    uint256 private _fee_treasury = 0;
    uint256 private _fee_treasury_old = _fee_treasury;
    address payable public _wallet_treasury;

    uint256 private _fee_liquidity = 1;
    uint256 private _fee_liquidity_old = _fee_liquidity;

    uint256 private _fee_denominator = 100;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;

    uint256 private _maxWalletToken = totalSupply / 20; // 5%
    uint256 private _maxTxAmount = totalSupply / 100; // 1%

    mapping(address => bool) public isFeeExempt;
    mapping(address => bool) public isTxLimitExempt;
    mapping(address => bool) public isWalletLimitExempt;
    address[] public _excluded;

    uint256 private swapThreshold = totalSupply / 1000; // 0,1% per swap

    uint256 private sellMultiplier = 100;
    uint256 private buyMultiplier = 100;
    uint256 private transferMultiplier = 100;

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

    address constant deadAddress = 0x000000000000000000000000000000000000dEaD;

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

    constructor(address wallet_marketing, address wallet_treasury) {
        _balance_reflected[owner()] = _supply_reflected;

        _wallet_marketing = payable(wallet_marketing);
        _wallet_treasury = payable(wallet_treasury);

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router = _uniswapV2Router;

        isFeeExempt[msg.sender] = true;
        isFeeExempt[address(this)] = true;
        isFeeExempt[_wallet_marketing] = true;
        isFeeExempt[_wallet_treasury] = true;
        isFeeExempt[deadAddress] = true;

        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[deadAddress] = true;
        isTxLimitExempt[_wallet_marketing] = true;
        isTxLimitExempt[_wallet_treasury] = true;

        isWalletLimitExempt[msg.sender] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[deadAddress] = true;
        isWalletLimitExempt[_wallet_marketing] = true;
        isWalletLimitExempt[_wallet_treasury] = true;

        preTrader[owner()] = true;
        preTrader[uniswapV2Pair] = true;

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

    function beforeRenounceOwnership() public onlyOwner {
        isFeeExempt[uniswapV2Pair] = true;
        isTxLimitExempt[uniswapV2Pair] = true;
        isWalletLimitExempt[uniswapV2Pair] = true;
        tradingOpen = true;
    }

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _balance_total[account];
        return tokenFromReflection(_balance_reflected[account]);
    }

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        require(
            _allowances[sender][_msgSender()] >= amount,
            "ERC20: transfer amount exceeds allowance"
        );
        _approve(
            sender,
            _msgSender(),
            (_allowances[sender][_msgSender()] - amount)
        );
        return true;
    }

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

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

    function tokenInfo()
        public
        view
        returns (
            uint256 MaxTxAmount,
            uint256 MaxWalletToken,
            uint256 TotalSupply,
            uint256 Reflected_Supply,
            uint256 Reflection_Rate,
            bool TradingOpen
        )
    {
        return (
            _maxTxAmount,
            _maxWalletToken,
            totalSupply,
            _supply_reflected,
            _getRate(),
            tradingOpen
        );
    }

    function feesInfo()
        public
        view
        returns (
            uint256 SwapThreshold,
            uint256 contractTokenBalance,
            uint256 Reflection_tokens_stored
        )
    {
        return (
            swapThreshold,
            balanceOf(address(this)),
            _contractReflectionStored
        );
    }

    function walletsInfo()
        public
        view
        returns (
            uint256 Reflection_Fees,
            uint256 Liquidity_Fee,
            uint256 Treasury_Fee,
            uint256 Treasury_Fee_Convert_Limit,
            uint256 Treasury_Fee_Minimum_Balance,
            uint256 Marketing_Fee,
            uint256 Marketing_Fee_Convert_Limit,
            uint256 Marketing_Fee_Minimum_Balance
        )
    {
        return (
            _fee_reflection,
            _fee_liquidity,
            _fee_treasury,
            _fee_treasury_convert_limit,
            _fee_treasury_min_bal,
            _fee_marketing,
            _fee_marketing_convert_limit,
            _fee_marketing_min_bal
        );
    }

    function changeWallets(address _newMarketing, address _newTreasury)
        external
        onlyOwner
    {
        _wallet_marketing = payable(_newMarketing);
        _wallet_treasury = payable(_newTreasury);
    }

    function tokenFromReflection(uint256 rAmount)
        public
        view
        returns (uint256)
    {
        require(
            rAmount <= _supply_reflected,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return (rAmount / currentRate);
    }

    function excludeFromReward(address account) external onlyOwner {
        require(!_isExcluded[account], "Account is already excluded");
        if (_balance_reflected[account] > 0) {
            _balance_total[account] = tokenFromReflection(
                _balance_reflected[account]
            );
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(address account) external onlyOwner {
        require(_isExcluded[account], "Account is already included");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _balance_total[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function toggleTradingStatus(bool _status) external onlyOwner {
        tradingOpen = _status;
    }

    function setMaxTxPercent_base1000(uint256 maxTxPercentBase1000)
        external
        onlyOwner
    {
        _maxTxAmount = (totalSupply * maxTxPercentBase1000) / 1000;
    }

    function setMaxWalletPercent_base1000(uint256 maxWallPercentBase1000)
        external
        onlyOwner
    {
        _maxWalletToken = (totalSupply * maxWallPercentBase1000) / 1000;
    }

    function setSwapSettings(bool _status, uint256 _threshold)
        external
        onlyOwner
    {
        swapAndLiquifyEnabled = _status;
        swapThreshold = _threshold;
    }

    function enableBlacklist(bool _status) external onlyOwner {
        blacklistMode = _status;
    }

    function manageBlacklist(address[] calldata addresses, bool status)
        external
        onlyOwner
    {
        for (uint256 i; i < addresses.length; ++i) {
            isBlacklisted[addresses[i]] = status;
        }
    }

    function managePreTrader(address[] calldata addresses, bool status)
        external
        onlyOwner
    {
        for (uint256 i; i < addresses.length; ++i) {
            preTrader[addresses[i]] = status;
        }
    }

    function manageExcludeFromFee(address[] calldata addresses, bool status)
        external
        onlyOwner
    {
        for (uint256 i; i < addresses.length; ++i) {
            isFeeExempt[addresses[i]] = status;
        }
    }

    function manageTxLimitExempt(address[] calldata addresses, bool status)
        external
        onlyOwner
    {
        require(
            addresses.length < 501,
            "GAS Error: max limit is 500 addresses"
        );
        for (uint256 i = 0; i < addresses.length; ++i) {
            isTxLimitExempt[addresses[i]] = status;
        }
    }

    function manageWalletLimitExempt(address[] calldata addresses, bool status)
        external
        onlyOwner
    {
        require(
            addresses.length < 501,
            "GAS Error: max limit is 500 addresses"
        );
        for (uint256 i = 0; i < addresses.length; ++i) {
            isWalletLimitExempt[addresses[i]] = status;
        }
    }

    /* Airdrop Begins */

    function multiTransfer(
        address from,
        address[] calldata addresses,
        uint256[] calldata tokens
    ) external onlyOwner {
        uint256 sccc = 0;
        uint256 reflectRate = _getRate();
        require(
            addresses.length == tokens.length,
            "Mismatch between Address and token count"
        );

        for (uint256 i = 0; i < addresses.length; i++) {
            sccc = sccc + tokens[i];
        }
        require(balanceOf(msg.sender) >= sccc, "Not enough tokens to airdrop");

        _balance_reflected[from] =
            _balance_reflected[from] -
            sccc *
            reflectRate;

        if (_isExcluded[from]) {
            _balance_total[from] = _balance_total[from] - sccc;
        }

        for (uint256 i = 0; i < addresses.length; i++) {
            if (_isExcluded[addresses[i]]) {
                _balance_total[addresses[i]] =
                    _balance_total[addresses[i]] +
                    tokens[i];
            }
            _balance_reflected[addresses[i]] =
                _balance_reflected[addresses[i]] +
                tokens[i] *
                reflectRate;

            emit Transfer(from, addresses[i], tokens[i]);
        }
    }

    function clearStuckBalance(uint256 amountPercentage) external onlyOwner {
        uint256 amountToClear = (amountPercentage * address(this).balance) /
            100;
        payable(msg.sender).transfer(amountToClear);
    }

    function clearStuckToken(address tokenAddress, uint256 tokens)
        external
        onlyOwner
        returns (bool success)
    {
        if (tokens == 0) {
            tokens = IERC20(tokenAddress).balanceOf(address(this));
        }
        return IERC20(tokenAddress).transfer(msg.sender, tokens);
    }

    //core
    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply / tSupply;
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _supply_reflected;
        uint256 tSupply = totalSupply;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (
                _balance_reflected[_excluded[i]] > rSupply ||
                _balance_total[_excluded[i]] > tSupply
            ) return (_supply_reflected, totalSupply);
            rSupply = rSupply - _balance_reflected[_excluded[i]];
            tSupply = tSupply - _balance_total[_excluded[i]];
        }
        if (rSupply < (_supply_reflected / totalSupply))
            return (_supply_reflected, totalSupply);
        return (rSupply, tSupply);
    }

    function _getValues(
        uint256 tAmount,
        address recipient,
        address sender
    )
        private
        view
        returns (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rReflection,
            uint256 tTransferAmount,
            uint256 tMarketing,
            uint256 tLiquidity,
            uint256 tTreasury,
            uint256 tReflection
        )
    {
        uint256 multiplier = transferMultiplier;

        if (recipient == uniswapV2Pair) {
            multiplier = sellMultiplier;
        } else if (sender == uniswapV2Pair) {
            multiplier = buyMultiplier;
        }

        tMarketing =
            ((tAmount * _fee_marketing) * multiplier) /
            (_fee_denominator * 100);
        tLiquidity =
            ((tAmount * _fee_liquidity) * multiplier) /
            (_fee_denominator * 100);
        tTreasury =
            ((tAmount * _fee_treasury) * multiplier) /
            (_fee_denominator * 100);
        tReflection =
            ((tAmount * _fee_reflection) * multiplier) /
            (_fee_denominator * 100);

        tTransferAmount =
            tAmount -
            (tMarketing + tLiquidity + tTreasury + tReflection);
        rReflection = tReflection * _getRate();
        rAmount = tAmount * _getRate();
        rTransferAmount = tTransferAmount * _getRate();
    }

    function _feesToEthProcess(
        address payable wallet,
        uint256 tokensToConvert
    ) private lockTheSwap {
        uint256 rTokensToConvert = tokensToConvert * _getRate();
        _balance_reflected[wallet] =
            _balance_reflected[wallet] -
            rTokensToConvert;

        if (_isExcluded[wallet]) {
            _balance_total[wallet] = _balance_total[wallet] - tokensToConvert;
        }

        _balance_reflected[address(this)] =
            _balance_reflected[address(this)] +
            rTokensToConvert;

        emit Transfer(wallet, address(this), tokensToConvert);

        swapTokensForEthAndSend(tokensToConvert, wallet);
    }

    function _feesToEth(
        uint256 tokensToConvert,
        address payable feeWallet,
        uint256 minBalanceToKeep
    ) private {
        if (tokensToConvert == 0) {
            return;
        }

        if (tokensToConvert > _maxTxAmount) {
            tokensToConvert = _maxTxAmount;
        }

        if ((tokensToConvert + minBalanceToKeep) <= balanceOf(feeWallet)) {
            _feesToEthProcess(feeWallet, tokensToConvert);
        }
    }

    function _takeFee(uint256 feeAmount, address receiverWallet) private {
        uint256 reflectedReeAmount = feeAmount * _getRate();
        _balance_reflected[receiverWallet] =
            _balance_reflected[receiverWallet] +
            reflectedReeAmount;

        if (_isExcluded[receiverWallet]) {
            _balance_total[receiverWallet] =
                _balance_total[receiverWallet] +
                feeAmount;
        }
        if (feeAmount > 0) {
            emit Transfer(msg.sender, receiverWallet, feeAmount);
        }
    }

    function _setAllFees(
        uint256 marketingFee,
        uint256 liquidityFees,
        uint256 treasuryFee,
        uint256 reflectionFees
    ) private {
        _fee_marketing = marketingFee;
        _fee_liquidity = liquidityFees;
        _fee_treasury = treasuryFee;
        _fee_reflection = reflectionFees;
    }

    function setMultipliers(
        uint256 _buy,
        uint256 _sell,
        uint256 _trans
    ) external onlyOwner {
        sellMultiplier = _sell;
        buyMultiplier = _buy;
        transferMultiplier = _trans;
    }

    function setAllFeesTriggers(
        uint256 marketing_fee_convert_limit,
        uint256 treasury_fee_convert_limit
    ) external onlyOwner {
        _fee_marketing_convert_limit = marketing_fee_convert_limit;
        _fee_treasury_convert_limit = treasury_fee_convert_limit;
    }

    function setAllFeesMinimumBalance(
        uint256 marketing_fee_minimum_balance,
        uint256 treasury_fee_minimum_balance
    ) external onlyOwner {
        _fee_treasury_min_bal = treasury_fee_minimum_balance;
        _fee_marketing_min_bal = marketing_fee_minimum_balance;
    }

    function setAllFees(
        uint256 Treasury_Fee,
        uint256 Liquidity_Fees,
        uint256 Reflection_Fees,
        uint256 Marketing_Fee
    ) external onlyOwner {
        uint256 total_fees = Marketing_Fee +
            Liquidity_Fees +
            Treasury_Fee +
            Reflection_Fees;
        require(total_fees < 31, "Max fee allowed is 30%");
        _setAllFees(
            Marketing_Fee,
            Liquidity_Fees,
            Treasury_Fee,
            Reflection_Fees
        );
    }

    function sendToken(
        IERC20 token,
        address recipient,
        uint256 value
    ) external onlyOwner {
        token.transfer(recipient, value);
    }

    function removeAllFee() private {
        _fee_marketing_old = _fee_marketing;
        _fee_liquidity_old = _fee_liquidity;
        _fee_treasury_old = _fee_treasury;
        _fee_reflection_old = _fee_reflection;

        _setAllFees(0, 0, 0, 0);
    }

    function restoreAllFee() private {
        _setAllFees(
            _fee_marketing_old,
            _fee_liquidity_old,
            _fee_treasury_old,
            _fee_reflection_old
        );
    }

    function swapAndLiquify(uint256 tokensToSwap) private lockTheSwap {
        uint256 tokensHalf = tokensToSwap / 2;
        uint256 contractETHBalance = address(this).balance;

        swapTokensForEth(tokensHalf);
        uint256 ethSwapped = address(this).balance - contractETHBalance;
        addLiquidity(tokensHalf, ethSwapped);

        emit SwapAndLiquify(tokensToSwap, tokensHalf, ethSwapped);
    }

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

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            owner(),
            block.timestamp
        );
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        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 from,
        address to,
        uint256 amount
    ) private {
        if (tradingOpen == false) {
            require(preTrader[to] == true, "Can not transfer");
        }

        if (blacklistMode == true) {
            require(isBlacklisted[from] == false, "Blacklisted");
        }

        require(
            (amount <= _maxTxAmount) ||
                isTxLimitExempt[from] ||
                isTxLimitExempt[to],
            "Max TX Limit Exceeded"
        );

        if (
            !isWalletLimitExempt[from] &&
            !isWalletLimitExempt[to] &&
            to != uniswapV2Pair
        ) {
            require(
                (balanceOf(to) + amount) <= _maxWalletToken,
                "max wallet limit reached"
            );
        }

        // extra bracket to supress stack too deep error
        {
            uint256 contractTokenBalance = balanceOf(address(this));

            if (contractTokenBalance >= _maxTxAmount) {
                contractTokenBalance = _maxTxAmount - 1;
            }

            bool overMinTokenBalance = contractTokenBalance >= swapThreshold;
            if (
                overMinTokenBalance &&
                !inSwapAndLiquify &&
                from != uniswapV2Pair &&
                swapAndLiquifyEnabled
            ) {
                contractTokenBalance = swapThreshold;
                swapAndLiquify(contractTokenBalance);
            }

            // Convert fees to eth
            if (
                !inSwapAndLiquify &&
                from != uniswapV2Pair &&
                swapAndLiquifyEnabled
            ) {
                _feesToEth(
                    _fee_treasury_convert_limit,
                    _wallet_treasury,
                    _fee_treasury_min_bal
                );
                _feesToEth(
                    _fee_marketing_convert_limit,
                    _wallet_marketing,
                    _fee_marketing_min_bal
                );
            }
        }

        bool takeFee = true;
        if (isFeeExempt[from] || isFeeExempt[to]) {
            takeFee = false;
            removeAllFee();
        }

        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rReflection,
            uint256 tTransferAmount,
            uint256 tMarketing,
            uint256 tLiquidity,
            uint256 tTreasury,
            uint256 tReflection
        ) = _getValues(amount, to, from);

        _transferStandard(
            from,
            to,
            amount,
            rAmount,
            tTransferAmount,
            rTransferAmount
        );

        _supply_reflected = _supply_reflected - rReflection;
        _contractReflectionStored = _contractReflectionStored + tReflection;

        if (!takeFee) {
            restoreAllFee();
        } else {
            _takeFee(tMarketing, _wallet_marketing);
            _takeFee(tLiquidity, address(this));
            _takeFee(tTreasury, _wallet_treasury);
        }
    }

    function _transferStandard(
        address from,
        address to,
        uint256 tAmount,
        uint256 rAmount,
        uint256 tTransferAmount,
        uint256 rTransferAmount
    ) private {
        _balance_reflected[from] = _balance_reflected[from] - rAmount;

        if (_isExcluded[from]) {
            _balance_total[from] = _balance_total[from] - tAmount;
        }

        if (_isExcluded[to]) {
            _balance_total[to] = _balance_total[to] + tTransferAmount;
        }
        _balance_reflected[to] = _balance_reflected[to] + rTransferAmount;

        if (tTransferAmount > 0) {
            emit Transfer(from, to, tTransferAmount);
        }
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"wallet_marketing","type":"address"},{"internalType":"address","name":"wallet_treasury","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"total_Amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"reflected_amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"total_TransferAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"reflected_TransferAmount","type":"uint256"}],"name":"TransferDetails","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_balance_reflected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_balance_total","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_excluded","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_wallet_marketing","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_wallet_treasury","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"beforeRenounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"blacklistMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newMarketing","type":"address"},{"internalType":"address","name":"_newTreasury","type":"address"}],"name":"changeWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feesInfo","outputs":[{"internalType":"uint256","name":"SwapThreshold","type":"uint256"},{"internalType":"uint256","name":"contractTokenBalance","type":"uint256"},{"internalType":"uint256","name":"Reflection_tokens_stored","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","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":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manageBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manageExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"managePreTrader","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manageTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manageWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"multiTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"preTrader","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"sendToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Treasury_Fee","type":"uint256"},{"internalType":"uint256","name":"Liquidity_Fees","type":"uint256"},{"internalType":"uint256","name":"Reflection_Fees","type":"uint256"},{"internalType":"uint256","name":"Marketing_Fee","type":"uint256"}],"name":"setAllFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketing_fee_minimum_balance","type":"uint256"},{"internalType":"uint256","name":"treasury_fee_minimum_balance","type":"uint256"}],"name":"setAllFeesMinimumBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketing_fee_convert_limit","type":"uint256"},{"internalType":"uint256","name":"treasury_fee_convert_limit","type":"uint256"}],"name":"setAllFeesTriggers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercentBase1000","type":"uint256"}],"name":"setMaxTxPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercentBase1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setMultipliers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint256","name":"_threshold","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"toggleTradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenInfo","outputs":[{"internalType":"uint256","name":"MaxTxAmount","type":"uint256"},{"internalType":"uint256","name":"MaxWalletToken","type":"uint256"},{"internalType":"uint256","name":"TotalSupply","type":"uint256"},{"internalType":"uint256","name":"Reflected_Supply","type":"uint256"},{"internalType":"uint256","name":"Reflection_Rate","type":"uint256"},{"internalType":"bool","name":"TradingOpen","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"walletsInfo","outputs":[{"internalType":"uint256","name":"Reflection_Fees","type":"uint256"},{"internalType":"uint256","name":"Liquidity_Fee","type":"uint256"},{"internalType":"uint256","name":"Treasury_Fee","type":"uint256"},{"internalType":"uint256","name":"Treasury_Fee_Convert_Limit","type":"uint256"},{"internalType":"uint256","name":"Treasury_Fee_Minimum_Balance","type":"uint256"},{"internalType":"uint256","name":"Marketing_Fee","type":"uint256"},{"internalType":"uint256","name":"Marketing_Fee_Convert_Limit","type":"uint256"},{"internalType":"uint256","name":"Marketing_Fee_Minimum_Balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526005805460ff199081166001179091556008805490911690556200002b6009600a620006d1565b6200003b90633b9aca00620006e9565b620000499060001962000721565b620000579060001962000738565b6009556113886009600a6200006d9190620006d1565b6200007d90633b9aca00620006e9565b6200008991906200074e565b600a556113886009600a6200009f9190620006d1565b620000af90633b9aca00620006e9565b620000bb91906200074e565b600b556000600c819055600d819055600e819055600f8190556010819055600260118190556012556014818155601591909155600160178190556018556064601955601a805461ff0019166101001790556200011a6009600a620006d1565b6200012a90633b9aca00620006e9565b6200013691906200074e565b601b556064620001496009600a620006d1565b6200015990633b9aca00620006e9565b6200016591906200074e565b601c556103e8620001796009600a620006d1565b6200018990633b9aca00620006e9565b6200019591906200074e565b602155606460225560646023556064602455348015620001b457600080fd5b506040516200431638038062004316833981016040819052620001d79162000782565b600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360095460016000620002306000546001600160a01b031690565b6001600160a01b039081168252602080830193909352604091820160002093909355601380546001600160a01b0319908116878616179091556016805490911693851693909317909255815163c45a015560e01b81529151737a250d5630b4cf539739df2c5dacb4c659f2488d92839263c45a0155926004808401938290030181865afa158015620002c6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ec9190620007ba565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200033a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003609190620007ba565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620003ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d49190620007ba565b6001600160a01b0390811660a0819052828216608052336000818152601d602090815260408083208054600160ff199182168117909255308086528386208054831684179055601380548a1687528487208054841685179055601680548b16885285882080548516861790557ffa758cef5bd0db441ee78e87b9ceab03f7b5d7b78ff593b3cf8150611abcb9998054851686179055888852601e875285882080548516861790557f8a622fd893f993f50f1795ae2bf707bdf4143f678ec4998626679a2f447616df805485168617905581548b168852858820805485168617905580548b1688528588208054851686179055978752601f8652848720805484168517905590865283862080548316841790557fef94442dfc0e910ca743614215a10fad3ff708bf5378f9c5c958c9192b3bf0048054831684179055548816855282852080548216831790559454871684528184208054861682179055835487168452600790925280832080548516831790559382529281208054909216909217905554166001600160a01b031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620005926009600a620006d1565b620005a290633b9aca00620006e9565b60405190815260200160405180910390a3505050620007d8565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000613578160001904821115620005f757620005f7620005bc565b808516156200060557918102915b93841c9390800290620005d7565b509250929050565b6000826200062c57506001620006cb565b816200063b57506000620006cb565b81600181146200065457600281146200065f576200067f565b6001915050620006cb565b60ff841115620006735762000673620005bc565b50506001821b620006cb565b5060208310610133831016604e8410600b8410161715620006a4575081810a620006cb565b620006b08383620005d2565b8060001904821115620006c757620006c7620005bc565b0290505b92915050565b6000620006e260ff8416836200061b565b9392505050565b6000816000190483118215151615620007065762000706620005bc565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826200073357620007336200070b565b500690565b81810381811115620006cb57620006cb620005bc565b6000826200076057620007606200070b565b500490565b80516001600160a01b03811681146200077d57600080fd5b919050565b600080604083850312156200079657600080fd5b620007a18362000765565b9150620007b16020840162000765565b90509250929050565b600060208284031215620007cd57600080fd5b620006e28262000765565b60805160a051613ab662000860600039600081816106ca015281816117ef015281816124530152818161253a015281816125a501528181612a270152612a690152600081816104d201528181612eb001528181612f6901528181612fa5015281816130170152818161303e015281816132950152818161334e015261338a0152613ab66000f3fe60806040526004361061036f5760003560e01c8063666a245d116101c6578063a457c2d7116100f7578063ce54f29c11610095578063f2fde38b1161006f578063f2fde38b14610b77578063fb2f349214610b97578063fe575a8714610bb7578063ffb54a9914610be757600080fd5b8063ce54f29c14610af1578063d0e1032614610b11578063dd62ed3e14610b3157600080fd5b8063b1eb20e9116100d1578063b1eb20e914610a44578063bd9ab53714610a71578063bdd795ef14610a91578063c867d60b14610ac157600080fd5b8063a457c2d7146109e4578063a61699c414610a04578063a9059cbb14610a2457600080fd5b806377b54bad116101645780638b42507f1161013e5780638b42507f146109435780638da5cb5b14610973578063919f58131461099157806395d89b41146109b157600080fd5b806377b54bad146108a9578063896648c1146108c95780638a948c79146108e357600080fd5b80636ce46bc3116101a05780636ce46bc31461083457806370a0823114610854578063715018a61461087457806376c25db51461088957600080fd5b8063666a245d146107b05780636a72bbe0146107d05780636addb663146107f057600080fd5b80632d838119116102a057806349bd5a5e1161023e578063500d0de111610218578063500d0de11461072b578063502054ca1461075b57806352390c02146107705780635cb91e971461079057600080fd5b806349bd5a5e146106b85780634a74bb02146106ec5780634d09deb31461070b57600080fd5b8063313ce5671161027a578063313ce567146106215780633685d4191461064857806339509351146106685780633f4218e01461068857600080fd5b80632d838119146105c15780632eb4f01a146105e15780632fdcfbd21461060157600080fd5b80631694505e1161030d5780631da1db5e116102e75780631da1db5e1461054157806323b872dd146105615780632aea52ab146105815780632c97d3d4146105a157600080fd5b80631694505e146104c057806318160ddd1461050c5780631ca0a28d1461052157600080fd5b8063095ea7b311610349578063095ea7b3146104205780630b285b1f146104505780630d153872146104805780630ecc200f146104a057600080fd5b8063053cfa251461037b57806306fdde03146103bb57806309302dc6146103fe57600080fd5b3661037657005b600080fd5b34801561038757600080fd5b506103a8610396366004613417565b60026020526000908152604090205481565b6040519081526020015b60405180910390f35b3480156103c757600080fd5b506103f16040518060400160405280600a815260200169456c6f6e20466c6f6b6960b01b81525081565b6040516103b29190613434565b34801561040a57600080fd5b5061041e610419366004613482565b610c01565b005b34801561042c57600080fd5b5061044061043b36600461349b565b610c6c565b60405190151581526020016103b2565b34801561045c57600080fd5b5061044061046b366004613417565b60046020526000908152604090205460ff1681565b34801561048c57600080fd5b5061041e61049b366004613521565b610c83565b3480156104ac57600080fd5b5061041e6104bb366004613521565b610d43565b3480156104cc57600080fd5b506104f47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103b2565b34801561051857600080fd5b506103a8610ddc565b34801561052d57600080fd5b5061041e61053c366004613578565b610df9565b34801561054d57600080fd5b5061041e61055c366004613482565b611225565b34801561056d57600080fd5b5061044061057c3660046135fb565b61129c565b34801561058d57600080fd5b5061041e61059c36600461363c565b611372565b3480156105ad57600080fd5b506016546104f4906001600160a01b031681565b3480156105cd57600080fd5b506103a86105dc366004613482565b6113af565b3480156105ed57600080fd5b5061041e6105fc366004613521565b611433565b34801561060d57600080fd5b5061041e61061c3660046135fb565b6114ed565b34801561062d57600080fd5b50610636600981565b60405160ff90911681526020016103b2565b34801561065457600080fd5b5061041e610663366004613417565b61158a565b34801561067457600080fd5b5061044061068336600461349b565b611743565b34801561069457600080fd5b506104406106a3366004613417565b601d6020526000908152604090205460ff1681565b3480156106c457600080fd5b506104f47f000000000000000000000000000000000000000000000000000000000000000081565b3480156106f857600080fd5b50601a5461044090610100900460ff1681565b34801561071757600080fd5b506104f4610726366004613482565b61177a565b34801561073757600080fd5b506107406117a4565b604080519384526020840192909252908201526060016103b2565b34801561076757600080fd5b5061041e6117c3565b34801561077c57600080fd5b5061041e61078b366004613417565b611863565b34801561079c57600080fd5b5061041e6107ab366004613521565b6119b5565b3480156107bc57600080fd5b506013546104f4906001600160a01b031681565b3480156107dc57600080fd5b5061041e6107eb36600461363c565b611a4e565b3480156107fc57600080fd5b50610805611a8b565b6040805196875260208701959095529385019290925260608401526080830152151560a082015260c0016103b2565b34801561084057600080fd5b5061041e61084f366004613659565b611adb565b34801561086057600080fd5b506103a861086f366004613417565b611b16565b34801561088057600080fd5b5061041e611b75565b34801561089557600080fd5b5061041e6108a4366004613685565b611be9565b3480156108b557600080fd5b506104406108c436600461349b565b611c1e565b3480156108d557600080fd5b506005546104409060ff1681565b3480156108ef57600080fd5b50600e54601754601454600a54600c54601154600b54600d54604080519889526020890197909752958701949094526060860192909252608085015260a084015260c083015260e0820152610100016103b2565b34801561094f57600080fd5b5061044061095e366004613417565b601e6020526000908152604090205460ff1681565b34801561097f57600080fd5b506000546001600160a01b03166104f4565b34801561099d57600080fd5b5061041e6109ac366004613685565b611d2d565b3480156109bd57600080fd5b506103f160405180604001604052806007815260200166452d464c4f4b4960c81b81525081565b3480156109f057600080fd5b506104406109ff36600461349b565b611d5f565b348015610a1057600080fd5b5061041e610a1f3660046136a7565b611e16565b348015610a3057600080fd5b50610440610a3f36600461349b565b611e6e565b348015610a5057600080fd5b506103a8610a5f366004613417565b60016020526000908152604090205481565b348015610a7d57600080fd5b5061041e610a8c366004613482565b611e7b565b348015610a9d57600080fd5b50610440610aac366004613417565b60076020526000908152604090205460ff1681565b348015610acd57600080fd5b50610440610adc366004613417565b601f6020526000908152604090205460ff1681565b348015610afd57600080fd5b5061041e610b0c3660046136e0565b611edd565b348015610b1d57600080fd5b5061041e610b2c366004613712565b611f90565b348015610b3d57600080fd5b506103a8610b4c3660046136a7565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610b8357600080fd5b5061041e610b92366004613417565b611fd8565b348015610ba357600080fd5b5061041e610bb2366004613521565b6120c2565b348015610bc357600080fd5b50610440610bd2366004613417565b60066020526000908152604090205460ff1681565b348015610bf357600080fd5b506008546104409060ff1681565b6000546001600160a01b03163314610c345760405162461bcd60e51b8152600401610c2b90613730565b60405180910390fd5b6103e881610c446009600a61385f565b610c5290633b9aca0061386e565b610c5c919061386e565b610c66919061388d565b601b5550565b6000610c7933848461215b565b5060015b92915050565b6000546001600160a01b03163314610cad5760405162461bcd60e51b8152600401610c2b90613730565b6101f58210610cce5760405162461bcd60e51b8152600401610c2b906138af565b60005b82811015610d3d5781601f6000868685818110610cf057610cf06138f4565b9050602002016020810190610d059190613417565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610d368161390a565b9050610cd1565b50505050565b6000546001600160a01b03163314610d6d5760405162461bcd60e51b8152600401610c2b90613730565b60005b82811015610d3d5781601d6000868685818110610d8f57610d8f6138f4565b9050602002016020810190610da49190613417565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610dd58161390a565b9050610d70565b610de86009600a61385f565b610df690633b9aca0061386e565b81565b6000546001600160a01b03163314610e235760405162461bcd60e51b8152600401610c2b90613730565b600080610e2e612280565b9050848314610e905760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610c2b565b60005b85811015610ed357848482818110610ead57610ead6138f4565b9050602002013583610ebf9190613923565b925080610ecb8161390a565b915050610e93565b5081610ede33611b16565b1015610f2c5760405162461bcd60e51b815260206004820152601c60248201527f4e6f7420656e6f75676820746f6b656e7320746f2061697264726f70000000006044820152606401610c2b565b610f36818361386e565b6001600160a01b038816600090815260016020526040902054610f599190613936565b6001600160a01b03881660009081526001602090815260408083209390935560049052205460ff1615610fc4576001600160a01b038716600090815260026020526040902054610faa908390613936565b6001600160a01b0388166000908152600260205260409020555b60005b8581101561121b5760046000888884818110610fe557610fe56138f4565b9050602002016020810190610ffa9190613417565b6001600160a01b0316815260208101919091526040016000205460ff16156110d15784848281811061102e5761102e6138f4565b905060200201356002600089898581811061104b5761104b6138f4565b90506020020160208101906110609190613417565b6001600160a01b03166001600160a01b031681526020019081526020016000205461108b9190613923565b600260008989858181106110a1576110a16138f4565b90506020020160208101906110b69190613417565b6001600160a01b031681526020810191909152604001600020555b818585838181106110e4576110e46138f4565b905060200201356110f5919061386e565b6001600089898581811061110b5761110b6138f4565b90506020020160208101906111209190613417565b6001600160a01b03166001600160a01b031681526020019081526020016000205461114b9190613923565b60016000898985818110611161576111616138f4565b90506020020160208101906111769190613417565b6001600160a01b031681526020810191909152604001600020558686828181106111a2576111a26138f4565b90506020020160208101906111b79190613417565b6001600160a01b0316886001600160a01b0316600080516020613a618339815191528787858181106111eb576111eb6138f4565b9050602002013560405161120191815260200190565b60405180910390a3806112138161390a565b915050610fc7565b5050505050505050565b6000546001600160a01b0316331461124f5760405162461bcd60e51b8152600401610c2b90613730565b6000606461125d478461386e565b611267919061388d565b604051909150339082156108fc029083906000818181858888f19350505050158015611297573d6000803e3d6000fd5b505050565b60006112a98484846122a3565b6001600160a01b038416600090815260036020908152604080832033845290915290205482111561132d5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610c2b565b6001600160a01b038416600090815260036020908152604080832033808552925290912054611368918691611363908690613936565b61215b565b5060019392505050565b6000546001600160a01b0316331461139c5760405162461bcd60e51b8152600401610c2b90613730565b6005805460ff1916911515919091179055565b60006009548211156114165760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610c2b565b6000611420612280565b905061142c818461388d565b9392505050565b6000546001600160a01b0316331461145d5760405162461bcd60e51b8152600401610c2b90613730565b6101f5821061147e5760405162461bcd60e51b8152600401610c2b906138af565b60005b82811015610d3d5781601e60008686858181106114a0576114a06138f4565b90506020020160208101906114b59190613417565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556114e68161390a565b9050611481565b6000546001600160a01b031633146115175760405162461bcd60e51b8152600401610c2b90613730565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015611566573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3d9190613949565b6000546001600160a01b031633146115b45760405162461bcd60e51b8152600401610c2b90613730565b6001600160a01b03811660009081526004602052604090205460ff1661161c5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c7564656400000000006044820152606401610c2b565b60005b60205481101561173f57816001600160a01b031660208281548110611646576116466138f4565b6000918252602090912001546001600160a01b03160361172d576020805461167090600190613936565b81548110611680576116806138f4565b9060005260206000200160009054906101000a90046001600160a01b0316602082815481106116b1576116b16138f4565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600483529020805460ff1916905580548061170757611707613966565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b806117378161390a565b91505061161f565b5050565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610c79918590611363908690613923565b6020818154811061178a57600080fd5b6000918252602090912001546001600160a01b0316905081565b60008060006021546117b530611b16565b601054925092509250909192565b6000546001600160a01b031633146117ed5760405162461bcd60e51b8152600401610c2b90613730565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166000908152601d602090815260408083208054600160ff199182168117909255601e84528285208054821683179055601f90935292208054821683179055600880549091169091179055565b6000546001600160a01b0316331461188d5760405162461bcd60e51b8152600401610c2b90613730565b6001600160a01b03811660009081526004602052604090205460ff16156118f65760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610c2b565b6001600160a01b03811660009081526001602052604090205415611950576001600160a01b038116600090815260016020526040902054611936906113af565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b031660008181526004602090815260408220805460ff191660019081179091558154908101825591527fc97bfaf2f8ee708c303a06d134f5ecd8389ae0432af62dc132a24118292866bb0180546001600160a01b0319169091179055565b6000546001600160a01b031633146119df5760405162461bcd60e51b8152600401610c2b90613730565b60005b82811015610d3d578160076000868685818110611a0157611a016138f4565b9050602002016020810190611a169190613417565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611a478161390a565b90506119e2565b6000546001600160a01b03163314611a785760405162461bcd60e51b8152600401610c2b90613730565b6008805460ff1916911515919091179055565b600080600080600080601c54601b546009600a611aa8919061385f565b611ab690633b9aca0061386e565b600954611ac1612280565b600854949b939a509198509650945060ff90911692509050565b6000546001600160a01b03163314611b055760405162461bcd60e51b8152600401610c2b90613730565b602291909155602391909155602455565b6001600160a01b03811660009081526004602052604081205460ff1615611b5357506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610c7d906113af565b6000546001600160a01b03163314611b9f5760405162461bcd60e51b8152600401610c2b90613730565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314611c135760405162461bcd60e51b8152600401610c2b90613730565b600b91909155600a55565b600080546001600160a01b03163314611c495760405162461bcd60e51b8152600401610c2b90613730565b81600003611cbc576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611c95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb9919061397c565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015611d09573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142c9190613949565b6000546001600160a01b03163314611d575760405162461bcd60e51b8152600401610c2b90613730565b600c55600d55565b3360009081526003602090815260408083206001600160a01b0386168452909152812054821115611de05760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610c2b565b3360008181526003602090815260408083206001600160a01b0388168452909152902054610c7991908590611363908690613936565b6000546001600160a01b03163314611e405760405162461bcd60e51b8152600401610c2b90613730565b601380546001600160a01b039384166001600160a01b03199182161790915560168054929093169116179055565b6000610c793384846122a3565b6000546001600160a01b03163314611ea55760405162461bcd60e51b8152600401610c2b90613730565b6103e881611eb56009600a61385f565b611ec390633b9aca0061386e565b611ecd919061386e565b611ed7919061388d565b601c5550565b6000546001600160a01b03163314611f075760405162461bcd60e51b8152600401610c2b90613730565b60008285611f158685613923565b611f1f9190613923565b611f299190613923565b9050601f8110611f745760405162461bcd60e51b81526020600482015260166024820152754d61782066656520616c6c6f7765642069732033302560501b6044820152606401610c2b565b601182905560178490556014859055600e8390555b5050505050565b6000546001600160a01b03163314611fba5760405162461bcd60e51b8152600401610c2b90613730565b601a80549215156101000261ff001990931692909217909155602155565b6000546001600160a01b031633146120025760405162461bcd60e51b8152600401610c2b90613730565b6001600160a01b0381166120675760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c2b565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146120ec5760405162461bcd60e51b8152600401610c2b90613730565b60005b82811015610d3d57816006600086868581811061210e5761210e6138f4565b90506020020160208101906121239190613417565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556121548161390a565b90506120ef565b6001600160a01b0383166121bd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c2b565b6001600160a01b03821661221e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c2b565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600080600061228d612756565b909250905061229c818361388d565b9250505090565b60085460ff161515600003612312576001600160a01b03821660009081526007602052604090205460ff1615156001146123125760405162461bcd60e51b815260206004820152601060248201526f21b0b7103737ba103a3930b739b332b960811b6044820152606401610c2b565b60055460ff161515600103612378576001600160a01b03831660009081526006602052604090205460ff16156123785760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610c2b565b601c54811115806123a157506001600160a01b0383166000908152601e602052604090205460ff165b806123c457506001600160a01b0382166000908152601e602052604090205460ff165b6124085760405162461bcd60e51b815260206004820152601560248201527413585e08151608131a5b5a5d08115e18d959591959605a1b6044820152606401610c2b565b6001600160a01b0383166000908152601f602052604090205460ff1615801561244a57506001600160a01b0382166000908152601f602052604090205460ff16155b801561248857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b156124f257601b548161249a84611b16565b6124a49190613923565b11156124f25760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d6974207265616368656400000000000000006044820152606401610c2b565b60006124fd30611b16565b9050601c54811061251a576001601c546125179190613936565b90505b602154811080159081906125315750601a5460ff16155b801561256f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b80156125825750601a54610100900460ff165b1561259557602154915061259582612942565b601a5460ff161580156125da57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b80156125ed5750601a54610100900460ff165b1561262c57600a54601654600c5461260f92916001600160a01b0316906129d1565b600b54601354600d5461262c92916001600160a01b0316906129d1565b50506001600160a01b0383166000908152601d602052604090205460019060ff168061267057506001600160a01b0383166000908152601d602052604090205460ff165b156126a7575060006126a7601180546012556017805460185560148054601555600e8054600f556000938490559183905582905555565b6000806000806000806000806126be8a8c8e612a12565b975097509750975097509750975097506126dc8c8c8c8b898c612bea565b856009546126ea9190613936565b6009556010546126fb908290613923565b601055886127105761270b612d5f565b612748565b6013546127279085906001600160a01b0316612d82565b6127318330612d82565b6016546127489083906001600160a01b0316612d82565b505050505050505050505050565b6000806000600954905060006009600a612770919061385f565b61277e90633b9aca0061386e565b905060005b6020548110156128e1578260016000602084815481106127a5576127a56138f4565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061281057508160026000602084815481106127e9576127e96138f4565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561283f576009546009600a612826919061385f565b61283490633b9aca0061386e565b945094505050509091565b6001600060208381548110612856576128566138f4565b60009182526020808320909101546001600160a01b031683528201929092526040019020546128859084613936565b9250600260006020838154811061289e5761289e6138f4565b60009182526020808320909101546001600160a01b031683528201929092526040019020546128cd9083613936565b9150806128d98161390a565b915050612783565b506128ee6009600a61385f565b6128fc90633b9aca0061386e565b600954612909919061388d565b821015612939576009546009600a612921919061385f565b61292f90633b9aca0061386e565b9350935050509091565b90939092509050565b601a805460ff19166001179055600061295c60028361388d565b90504761296882612e59565b60006129748247613936565b90506129808382613011565b60408051858152602081018590529081018290527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15050601a805460ff191690555050565b826000036129de57505050565b601c548311156129ee57601c5492505b6129f782611b16565b612a018285613923565b11611297576112978284613110565b565b600080600080600080600080600060245490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168b6001600160a01b031603612a675750602254612aa5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168a6001600160a01b031603612aa557506023545b601954612ab390606461386e565b816011548e612ac2919061386e565b612acc919061386e565b612ad6919061388d565b94506019546064612ae7919061386e565b816017548e612af6919061386e565b612b00919061386e565b612b0a919061388d565b93506019546064612b1b919061386e565b816014548e612b2a919061386e565b612b34919061386e565b612b3e919061388d565b92506019546064612b4f919061386e565b81600e548e612b5e919061386e565b612b68919061386e565b612b72919061388d565b91508183612b808688613923565b612b8a9190613923565b612b949190613923565b612b9e908d613936565b9550612ba8612280565b612bb2908361386e565b9650612bbc612280565b612bc6908d61386e565b9850612bd0612280565b612bda908761386e565b9750509397509397509397509397565b6001600160a01b038616600090815260016020526040902054612c0e908490613936565b6001600160a01b03871660009081526001602090815260408083209390935560049052205460ff1615612c79576001600160a01b038616600090815260026020526040902054612c5f908590613936565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526004602052604090205460ff1615612cd8576001600160a01b038516600090815260026020526040902054612cbe908390613923565b6001600160a01b0386166000908152600260205260409020555b6001600160a01b038516600090815260016020526040902054612cfc908290613923565b6001600160a01b0386166000908152600160205260409020558115612d5757846001600160a01b0316866001600160a01b0316600080516020613a6183398151915284604051612d4e91815260200190565b60405180910390a35b505050505050565b612a10601254601854601554600f54601193909355601791909155601455600e55565b6000612d8c612280565b612d96908461386e565b6001600160a01b038316600090815260016020526040902054909150612dbd908290613923565b6001600160a01b03831660009081526001602090815260408083209390935560049052205460ff1615612e28576001600160a01b038216600090815260026020526040902054612e0e908490613923565b6001600160a01b0383166000908152600260205260409020555b8215611297576040518381526001600160a01b038316903390600080516020613a6183398151915290602001612273565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612e8e57612e8e6138f4565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f309190613995565b81600181518110612f4357612f436138f4565b60200260200101906001600160a01b031690816001600160a01b031681525050612f8e307f00000000000000000000000000000000000000000000000000000000000000008461215b565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790612fe39085906000908690309042906004016139f6565b600060405180830381600087803b158015612ffd57600080fd5b505af1158015612d57573d6000803e3d6000fd5b61303c307f00000000000000000000000000000000000000000000000000000000000000008461215b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d7198230856000806130836000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156130eb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f899190613a32565b601a805460ff191660011790556000613127612280565b613131908361386e565b6001600160a01b038416600090815260016020526040902054909150613158908290613936565b6001600160a01b03841660009081526001602090815260408083209390935560049052205460ff16156131c3576001600160a01b0383166000908152600260205260409020546131a9908390613936565b6001600160a01b0384166000908152600260205260409020555b306000908152600160205260409020546131de908290613923565b30600081815260016020526040908190209290925590516001600160a01b03851690600080516020613a618339815191529061321d9086815260200190565b60405180910390a361322f828461323e565b5050601a805460ff1916905550565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613273576132736138f4565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156132f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133159190613995565b81600181518110613328576133286138f4565b60200260200101906001600160a01b031690816001600160a01b031681525050613373307f00000000000000000000000000000000000000000000000000000000000000008561215b565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906133c89086906000908690889042906004016139f6565b600060405180830381600087803b1580156133e257600080fd5b505af11580156133f6573d6000803e3d6000fd5b50505050505050565b6001600160a01b038116811461341457600080fd5b50565b60006020828403121561342957600080fd5b813561142c816133ff565b600060208083528351808285015260005b8181101561346157858101830151858201604001528201613445565b506000604082860101526040601f19601f8301168501019250505092915050565b60006020828403121561349457600080fd5b5035919050565b600080604083850312156134ae57600080fd5b82356134b9816133ff565b946020939093013593505050565b60008083601f8401126134d957600080fd5b50813567ffffffffffffffff8111156134f157600080fd5b6020830191508360208260051b850101111561350c57600080fd5b9250929050565b801515811461341457600080fd5b60008060006040848603121561353657600080fd5b833567ffffffffffffffff81111561354d57600080fd5b613559868287016134c7565b909450925050602084013561356d81613513565b809150509250925092565b60008060008060006060868803121561359057600080fd5b853561359b816133ff565b9450602086013567ffffffffffffffff808211156135b857600080fd5b6135c489838a016134c7565b909650945060408801359150808211156135dd57600080fd5b506135ea888289016134c7565b969995985093965092949392505050565b60008060006060848603121561361057600080fd5b833561361b816133ff565b9250602084013561362b816133ff565b929592945050506040919091013590565b60006020828403121561364e57600080fd5b813561142c81613513565b60008060006060848603121561366e57600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561369857600080fd5b50508035926020909101359150565b600080604083850312156136ba57600080fd5b82356136c5816133ff565b915060208301356136d5816133ff565b809150509250929050565b600080600080608085870312156136f657600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561372557600080fd5b82356134b981613513565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156137b657816000190482111561379c5761379c613765565b808516156137a957918102915b93841c9390800290613780565b509250929050565b6000826137cd57506001610c7d565b816137da57506000610c7d565b81600181146137f057600281146137fa57613816565b6001915050610c7d565b60ff84111561380b5761380b613765565b50506001821b610c7d565b5060208310610133831016604e8410600b8410161715613839575081810a610c7d565b613843838361377b565b806000190482111561385757613857613765565b029392505050565b600061142c60ff8416836137be565b600081600019048311821515161561388857613888613765565b500290565b6000826138aa57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604082015264657373657360d81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006001820161391c5761391c613765565b5060010190565b80820180821115610c7d57610c7d613765565b81810381811115610c7d57610c7d613765565b60006020828403121561395b57600080fd5b815161142c81613513565b634e487b7160e01b600052603160045260246000fd5b60006020828403121561398e57600080fd5b5051919050565b6000602082840312156139a757600080fd5b815161142c816133ff565b600081518084526020808501945080840160005b838110156139eb5781516001600160a01b0316875295820195908201906001016139c6565b509495945050505050565b85815284602082015260a060408201526000613a1560a08301866139b2565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215613a4757600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212207703626d3f7c38d3623e5923ec656106976d3a90583ab05af6b87813621a878164736f6c6343000810003300000000000000000000000087376ace613f5642b734e57fea40a2936ceb4db600000000000000000000000087376ace613f5642b734e57fea40a2936ceb4db6

Deployed Bytecode

0x60806040526004361061036f5760003560e01c8063666a245d116101c6578063a457c2d7116100f7578063ce54f29c11610095578063f2fde38b1161006f578063f2fde38b14610b77578063fb2f349214610b97578063fe575a8714610bb7578063ffb54a9914610be757600080fd5b8063ce54f29c14610af1578063d0e1032614610b11578063dd62ed3e14610b3157600080fd5b8063b1eb20e9116100d1578063b1eb20e914610a44578063bd9ab53714610a71578063bdd795ef14610a91578063c867d60b14610ac157600080fd5b8063a457c2d7146109e4578063a61699c414610a04578063a9059cbb14610a2457600080fd5b806377b54bad116101645780638b42507f1161013e5780638b42507f146109435780638da5cb5b14610973578063919f58131461099157806395d89b41146109b157600080fd5b806377b54bad146108a9578063896648c1146108c95780638a948c79146108e357600080fd5b80636ce46bc3116101a05780636ce46bc31461083457806370a0823114610854578063715018a61461087457806376c25db51461088957600080fd5b8063666a245d146107b05780636a72bbe0146107d05780636addb663146107f057600080fd5b80632d838119116102a057806349bd5a5e1161023e578063500d0de111610218578063500d0de11461072b578063502054ca1461075b57806352390c02146107705780635cb91e971461079057600080fd5b806349bd5a5e146106b85780634a74bb02146106ec5780634d09deb31461070b57600080fd5b8063313ce5671161027a578063313ce567146106215780633685d4191461064857806339509351146106685780633f4218e01461068857600080fd5b80632d838119146105c15780632eb4f01a146105e15780632fdcfbd21461060157600080fd5b80631694505e1161030d5780631da1db5e116102e75780631da1db5e1461054157806323b872dd146105615780632aea52ab146105815780632c97d3d4146105a157600080fd5b80631694505e146104c057806318160ddd1461050c5780631ca0a28d1461052157600080fd5b8063095ea7b311610349578063095ea7b3146104205780630b285b1f146104505780630d153872146104805780630ecc200f146104a057600080fd5b8063053cfa251461037b57806306fdde03146103bb57806309302dc6146103fe57600080fd5b3661037657005b600080fd5b34801561038757600080fd5b506103a8610396366004613417565b60026020526000908152604090205481565b6040519081526020015b60405180910390f35b3480156103c757600080fd5b506103f16040518060400160405280600a815260200169456c6f6e20466c6f6b6960b01b81525081565b6040516103b29190613434565b34801561040a57600080fd5b5061041e610419366004613482565b610c01565b005b34801561042c57600080fd5b5061044061043b36600461349b565b610c6c565b60405190151581526020016103b2565b34801561045c57600080fd5b5061044061046b366004613417565b60046020526000908152604090205460ff1681565b34801561048c57600080fd5b5061041e61049b366004613521565b610c83565b3480156104ac57600080fd5b5061041e6104bb366004613521565b610d43565b3480156104cc57600080fd5b506104f47f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016103b2565b34801561051857600080fd5b506103a8610ddc565b34801561052d57600080fd5b5061041e61053c366004613578565b610df9565b34801561054d57600080fd5b5061041e61055c366004613482565b611225565b34801561056d57600080fd5b5061044061057c3660046135fb565b61129c565b34801561058d57600080fd5b5061041e61059c36600461363c565b611372565b3480156105ad57600080fd5b506016546104f4906001600160a01b031681565b3480156105cd57600080fd5b506103a86105dc366004613482565b6113af565b3480156105ed57600080fd5b5061041e6105fc366004613521565b611433565b34801561060d57600080fd5b5061041e61061c3660046135fb565b6114ed565b34801561062d57600080fd5b50610636600981565b60405160ff90911681526020016103b2565b34801561065457600080fd5b5061041e610663366004613417565b61158a565b34801561067457600080fd5b5061044061068336600461349b565b611743565b34801561069457600080fd5b506104406106a3366004613417565b601d6020526000908152604090205460ff1681565b3480156106c457600080fd5b506104f47f000000000000000000000000a8cd555c5ff9dc8b2da94bd8a7aed82ca4cdbadc81565b3480156106f857600080fd5b50601a5461044090610100900460ff1681565b34801561071757600080fd5b506104f4610726366004613482565b61177a565b34801561073757600080fd5b506107406117a4565b604080519384526020840192909252908201526060016103b2565b34801561076757600080fd5b5061041e6117c3565b34801561077c57600080fd5b5061041e61078b366004613417565b611863565b34801561079c57600080fd5b5061041e6107ab366004613521565b6119b5565b3480156107bc57600080fd5b506013546104f4906001600160a01b031681565b3480156107dc57600080fd5b5061041e6107eb36600461363c565b611a4e565b3480156107fc57600080fd5b50610805611a8b565b6040805196875260208701959095529385019290925260608401526080830152151560a082015260c0016103b2565b34801561084057600080fd5b5061041e61084f366004613659565b611adb565b34801561086057600080fd5b506103a861086f366004613417565b611b16565b34801561088057600080fd5b5061041e611b75565b34801561089557600080fd5b5061041e6108a4366004613685565b611be9565b3480156108b557600080fd5b506104406108c436600461349b565b611c1e565b3480156108d557600080fd5b506005546104409060ff1681565b3480156108ef57600080fd5b50600e54601754601454600a54600c54601154600b54600d54604080519889526020890197909752958701949094526060860192909252608085015260a084015260c083015260e0820152610100016103b2565b34801561094f57600080fd5b5061044061095e366004613417565b601e6020526000908152604090205460ff1681565b34801561097f57600080fd5b506000546001600160a01b03166104f4565b34801561099d57600080fd5b5061041e6109ac366004613685565b611d2d565b3480156109bd57600080fd5b506103f160405180604001604052806007815260200166452d464c4f4b4960c81b81525081565b3480156109f057600080fd5b506104406109ff36600461349b565b611d5f565b348015610a1057600080fd5b5061041e610a1f3660046136a7565b611e16565b348015610a3057600080fd5b50610440610a3f36600461349b565b611e6e565b348015610a5057600080fd5b506103a8610a5f366004613417565b60016020526000908152604090205481565b348015610a7d57600080fd5b5061041e610a8c366004613482565b611e7b565b348015610a9d57600080fd5b50610440610aac366004613417565b60076020526000908152604090205460ff1681565b348015610acd57600080fd5b50610440610adc366004613417565b601f6020526000908152604090205460ff1681565b348015610afd57600080fd5b5061041e610b0c3660046136e0565b611edd565b348015610b1d57600080fd5b5061041e610b2c366004613712565b611f90565b348015610b3d57600080fd5b506103a8610b4c3660046136a7565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610b8357600080fd5b5061041e610b92366004613417565b611fd8565b348015610ba357600080fd5b5061041e610bb2366004613521565b6120c2565b348015610bc357600080fd5b50610440610bd2366004613417565b60066020526000908152604090205460ff1681565b348015610bf357600080fd5b506008546104409060ff1681565b6000546001600160a01b03163314610c345760405162461bcd60e51b8152600401610c2b90613730565b60405180910390fd5b6103e881610c446009600a61385f565b610c5290633b9aca0061386e565b610c5c919061386e565b610c66919061388d565b601b5550565b6000610c7933848461215b565b5060015b92915050565b6000546001600160a01b03163314610cad5760405162461bcd60e51b8152600401610c2b90613730565b6101f58210610cce5760405162461bcd60e51b8152600401610c2b906138af565b60005b82811015610d3d5781601f6000868685818110610cf057610cf06138f4565b9050602002016020810190610d059190613417565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610d368161390a565b9050610cd1565b50505050565b6000546001600160a01b03163314610d6d5760405162461bcd60e51b8152600401610c2b90613730565b60005b82811015610d3d5781601d6000868685818110610d8f57610d8f6138f4565b9050602002016020810190610da49190613417565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610dd58161390a565b9050610d70565b610de86009600a61385f565b610df690633b9aca0061386e565b81565b6000546001600160a01b03163314610e235760405162461bcd60e51b8152600401610c2b90613730565b600080610e2e612280565b9050848314610e905760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610c2b565b60005b85811015610ed357848482818110610ead57610ead6138f4565b9050602002013583610ebf9190613923565b925080610ecb8161390a565b915050610e93565b5081610ede33611b16565b1015610f2c5760405162461bcd60e51b815260206004820152601c60248201527f4e6f7420656e6f75676820746f6b656e7320746f2061697264726f70000000006044820152606401610c2b565b610f36818361386e565b6001600160a01b038816600090815260016020526040902054610f599190613936565b6001600160a01b03881660009081526001602090815260408083209390935560049052205460ff1615610fc4576001600160a01b038716600090815260026020526040902054610faa908390613936565b6001600160a01b0388166000908152600260205260409020555b60005b8581101561121b5760046000888884818110610fe557610fe56138f4565b9050602002016020810190610ffa9190613417565b6001600160a01b0316815260208101919091526040016000205460ff16156110d15784848281811061102e5761102e6138f4565b905060200201356002600089898581811061104b5761104b6138f4565b90506020020160208101906110609190613417565b6001600160a01b03166001600160a01b031681526020019081526020016000205461108b9190613923565b600260008989858181106110a1576110a16138f4565b90506020020160208101906110b69190613417565b6001600160a01b031681526020810191909152604001600020555b818585838181106110e4576110e46138f4565b905060200201356110f5919061386e565b6001600089898581811061110b5761110b6138f4565b90506020020160208101906111209190613417565b6001600160a01b03166001600160a01b031681526020019081526020016000205461114b9190613923565b60016000898985818110611161576111616138f4565b90506020020160208101906111769190613417565b6001600160a01b031681526020810191909152604001600020558686828181106111a2576111a26138f4565b90506020020160208101906111b79190613417565b6001600160a01b0316886001600160a01b0316600080516020613a618339815191528787858181106111eb576111eb6138f4565b9050602002013560405161120191815260200190565b60405180910390a3806112138161390a565b915050610fc7565b5050505050505050565b6000546001600160a01b0316331461124f5760405162461bcd60e51b8152600401610c2b90613730565b6000606461125d478461386e565b611267919061388d565b604051909150339082156108fc029083906000818181858888f19350505050158015611297573d6000803e3d6000fd5b505050565b60006112a98484846122a3565b6001600160a01b038416600090815260036020908152604080832033845290915290205482111561132d5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610c2b565b6001600160a01b038416600090815260036020908152604080832033808552925290912054611368918691611363908690613936565b61215b565b5060019392505050565b6000546001600160a01b0316331461139c5760405162461bcd60e51b8152600401610c2b90613730565b6005805460ff1916911515919091179055565b60006009548211156114165760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610c2b565b6000611420612280565b905061142c818461388d565b9392505050565b6000546001600160a01b0316331461145d5760405162461bcd60e51b8152600401610c2b90613730565b6101f5821061147e5760405162461bcd60e51b8152600401610c2b906138af565b60005b82811015610d3d5781601e60008686858181106114a0576114a06138f4565b90506020020160208101906114b59190613417565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556114e68161390a565b9050611481565b6000546001600160a01b031633146115175760405162461bcd60e51b8152600401610c2b90613730565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015611566573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3d9190613949565b6000546001600160a01b031633146115b45760405162461bcd60e51b8152600401610c2b90613730565b6001600160a01b03811660009081526004602052604090205460ff1661161c5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c7564656400000000006044820152606401610c2b565b60005b60205481101561173f57816001600160a01b031660208281548110611646576116466138f4565b6000918252602090912001546001600160a01b03160361172d576020805461167090600190613936565b81548110611680576116806138f4565b9060005260206000200160009054906101000a90046001600160a01b0316602082815481106116b1576116b16138f4565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600483529020805460ff1916905580548061170757611707613966565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b806117378161390a565b91505061161f565b5050565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610c79918590611363908690613923565b6020818154811061178a57600080fd5b6000918252602090912001546001600160a01b0316905081565b60008060006021546117b530611b16565b601054925092509250909192565b6000546001600160a01b031633146117ed5760405162461bcd60e51b8152600401610c2b90613730565b7f000000000000000000000000a8cd555c5ff9dc8b2da94bd8a7aed82ca4cdbadc6001600160a01b03166000908152601d602090815260408083208054600160ff199182168117909255601e84528285208054821683179055601f90935292208054821683179055600880549091169091179055565b6000546001600160a01b0316331461188d5760405162461bcd60e51b8152600401610c2b90613730565b6001600160a01b03811660009081526004602052604090205460ff16156118f65760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610c2b565b6001600160a01b03811660009081526001602052604090205415611950576001600160a01b038116600090815260016020526040902054611936906113af565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b031660008181526004602090815260408220805460ff191660019081179091558154908101825591527fc97bfaf2f8ee708c303a06d134f5ecd8389ae0432af62dc132a24118292866bb0180546001600160a01b0319169091179055565b6000546001600160a01b031633146119df5760405162461bcd60e51b8152600401610c2b90613730565b60005b82811015610d3d578160076000868685818110611a0157611a016138f4565b9050602002016020810190611a169190613417565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611a478161390a565b90506119e2565b6000546001600160a01b03163314611a785760405162461bcd60e51b8152600401610c2b90613730565b6008805460ff1916911515919091179055565b600080600080600080601c54601b546009600a611aa8919061385f565b611ab690633b9aca0061386e565b600954611ac1612280565b600854949b939a509198509650945060ff90911692509050565b6000546001600160a01b03163314611b055760405162461bcd60e51b8152600401610c2b90613730565b602291909155602391909155602455565b6001600160a01b03811660009081526004602052604081205460ff1615611b5357506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610c7d906113af565b6000546001600160a01b03163314611b9f5760405162461bcd60e51b8152600401610c2b90613730565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314611c135760405162461bcd60e51b8152600401610c2b90613730565b600b91909155600a55565b600080546001600160a01b03163314611c495760405162461bcd60e51b8152600401610c2b90613730565b81600003611cbc576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611c95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb9919061397c565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015611d09573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142c9190613949565b6000546001600160a01b03163314611d575760405162461bcd60e51b8152600401610c2b90613730565b600c55600d55565b3360009081526003602090815260408083206001600160a01b0386168452909152812054821115611de05760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610c2b565b3360008181526003602090815260408083206001600160a01b0388168452909152902054610c7991908590611363908690613936565b6000546001600160a01b03163314611e405760405162461bcd60e51b8152600401610c2b90613730565b601380546001600160a01b039384166001600160a01b03199182161790915560168054929093169116179055565b6000610c793384846122a3565b6000546001600160a01b03163314611ea55760405162461bcd60e51b8152600401610c2b90613730565b6103e881611eb56009600a61385f565b611ec390633b9aca0061386e565b611ecd919061386e565b611ed7919061388d565b601c5550565b6000546001600160a01b03163314611f075760405162461bcd60e51b8152600401610c2b90613730565b60008285611f158685613923565b611f1f9190613923565b611f299190613923565b9050601f8110611f745760405162461bcd60e51b81526020600482015260166024820152754d61782066656520616c6c6f7765642069732033302560501b6044820152606401610c2b565b601182905560178490556014859055600e8390555b5050505050565b6000546001600160a01b03163314611fba5760405162461bcd60e51b8152600401610c2b90613730565b601a80549215156101000261ff001990931692909217909155602155565b6000546001600160a01b031633146120025760405162461bcd60e51b8152600401610c2b90613730565b6001600160a01b0381166120675760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c2b565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146120ec5760405162461bcd60e51b8152600401610c2b90613730565b60005b82811015610d3d57816006600086868581811061210e5761210e6138f4565b90506020020160208101906121239190613417565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556121548161390a565b90506120ef565b6001600160a01b0383166121bd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c2b565b6001600160a01b03821661221e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c2b565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600080600061228d612756565b909250905061229c818361388d565b9250505090565b60085460ff161515600003612312576001600160a01b03821660009081526007602052604090205460ff1615156001146123125760405162461bcd60e51b815260206004820152601060248201526f21b0b7103737ba103a3930b739b332b960811b6044820152606401610c2b565b60055460ff161515600103612378576001600160a01b03831660009081526006602052604090205460ff16156123785760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610c2b565b601c54811115806123a157506001600160a01b0383166000908152601e602052604090205460ff165b806123c457506001600160a01b0382166000908152601e602052604090205460ff165b6124085760405162461bcd60e51b815260206004820152601560248201527413585e08151608131a5b5a5d08115e18d959591959605a1b6044820152606401610c2b565b6001600160a01b0383166000908152601f602052604090205460ff1615801561244a57506001600160a01b0382166000908152601f602052604090205460ff16155b801561248857507f000000000000000000000000a8cd555c5ff9dc8b2da94bd8a7aed82ca4cdbadc6001600160a01b0316826001600160a01b031614155b156124f257601b548161249a84611b16565b6124a49190613923565b11156124f25760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d6974207265616368656400000000000000006044820152606401610c2b565b60006124fd30611b16565b9050601c54811061251a576001601c546125179190613936565b90505b602154811080159081906125315750601a5460ff16155b801561256f57507f000000000000000000000000a8cd555c5ff9dc8b2da94bd8a7aed82ca4cdbadc6001600160a01b0316856001600160a01b031614155b80156125825750601a54610100900460ff165b1561259557602154915061259582612942565b601a5460ff161580156125da57507f000000000000000000000000a8cd555c5ff9dc8b2da94bd8a7aed82ca4cdbadc6001600160a01b0316856001600160a01b031614155b80156125ed5750601a54610100900460ff165b1561262c57600a54601654600c5461260f92916001600160a01b0316906129d1565b600b54601354600d5461262c92916001600160a01b0316906129d1565b50506001600160a01b0383166000908152601d602052604090205460019060ff168061267057506001600160a01b0383166000908152601d602052604090205460ff165b156126a7575060006126a7601180546012556017805460185560148054601555600e8054600f556000938490559183905582905555565b6000806000806000806000806126be8a8c8e612a12565b975097509750975097509750975097506126dc8c8c8c8b898c612bea565b856009546126ea9190613936565b6009556010546126fb908290613923565b601055886127105761270b612d5f565b612748565b6013546127279085906001600160a01b0316612d82565b6127318330612d82565b6016546127489083906001600160a01b0316612d82565b505050505050505050505050565b6000806000600954905060006009600a612770919061385f565b61277e90633b9aca0061386e565b905060005b6020548110156128e1578260016000602084815481106127a5576127a56138f4565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061281057508160026000602084815481106127e9576127e96138f4565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561283f576009546009600a612826919061385f565b61283490633b9aca0061386e565b945094505050509091565b6001600060208381548110612856576128566138f4565b60009182526020808320909101546001600160a01b031683528201929092526040019020546128859084613936565b9250600260006020838154811061289e5761289e6138f4565b60009182526020808320909101546001600160a01b031683528201929092526040019020546128cd9083613936565b9150806128d98161390a565b915050612783565b506128ee6009600a61385f565b6128fc90633b9aca0061386e565b600954612909919061388d565b821015612939576009546009600a612921919061385f565b61292f90633b9aca0061386e565b9350935050509091565b90939092509050565b601a805460ff19166001179055600061295c60028361388d565b90504761296882612e59565b60006129748247613936565b90506129808382613011565b60408051858152602081018590529081018290527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15050601a805460ff191690555050565b826000036129de57505050565b601c548311156129ee57601c5492505b6129f782611b16565b612a018285613923565b11611297576112978284613110565b565b600080600080600080600080600060245490507f000000000000000000000000a8cd555c5ff9dc8b2da94bd8a7aed82ca4cdbadc6001600160a01b03168b6001600160a01b031603612a675750602254612aa5565b7f000000000000000000000000a8cd555c5ff9dc8b2da94bd8a7aed82ca4cdbadc6001600160a01b03168a6001600160a01b031603612aa557506023545b601954612ab390606461386e565b816011548e612ac2919061386e565b612acc919061386e565b612ad6919061388d565b94506019546064612ae7919061386e565b816017548e612af6919061386e565b612b00919061386e565b612b0a919061388d565b93506019546064612b1b919061386e565b816014548e612b2a919061386e565b612b34919061386e565b612b3e919061388d565b92506019546064612b4f919061386e565b81600e548e612b5e919061386e565b612b68919061386e565b612b72919061388d565b91508183612b808688613923565b612b8a9190613923565b612b949190613923565b612b9e908d613936565b9550612ba8612280565b612bb2908361386e565b9650612bbc612280565b612bc6908d61386e565b9850612bd0612280565b612bda908761386e565b9750509397509397509397509397565b6001600160a01b038616600090815260016020526040902054612c0e908490613936565b6001600160a01b03871660009081526001602090815260408083209390935560049052205460ff1615612c79576001600160a01b038616600090815260026020526040902054612c5f908590613936565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526004602052604090205460ff1615612cd8576001600160a01b038516600090815260026020526040902054612cbe908390613923565b6001600160a01b0386166000908152600260205260409020555b6001600160a01b038516600090815260016020526040902054612cfc908290613923565b6001600160a01b0386166000908152600160205260409020558115612d5757846001600160a01b0316866001600160a01b0316600080516020613a6183398151915284604051612d4e91815260200190565b60405180910390a35b505050505050565b612a10601254601854601554600f54601193909355601791909155601455600e55565b6000612d8c612280565b612d96908461386e565b6001600160a01b038316600090815260016020526040902054909150612dbd908290613923565b6001600160a01b03831660009081526001602090815260408083209390935560049052205460ff1615612e28576001600160a01b038216600090815260026020526040902054612e0e908490613923565b6001600160a01b0383166000908152600260205260409020555b8215611297576040518381526001600160a01b038316903390600080516020613a6183398151915290602001612273565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612e8e57612e8e6138f4565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f309190613995565b81600181518110612f4357612f436138f4565b60200260200101906001600160a01b031690816001600160a01b031681525050612f8e307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461215b565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790612fe39085906000908690309042906004016139f6565b600060405180830381600087803b158015612ffd57600080fd5b505af1158015612d57573d6000803e3d6000fd5b61303c307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461215b565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d7198230856000806130836000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156130eb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f899190613a32565b601a805460ff191660011790556000613127612280565b613131908361386e565b6001600160a01b038416600090815260016020526040902054909150613158908290613936565b6001600160a01b03841660009081526001602090815260408083209390935560049052205460ff16156131c3576001600160a01b0383166000908152600260205260409020546131a9908390613936565b6001600160a01b0384166000908152600260205260409020555b306000908152600160205260409020546131de908290613923565b30600081815260016020526040908190209290925590516001600160a01b03851690600080516020613a618339815191529061321d9086815260200190565b60405180910390a361322f828461323e565b5050601a805460ff1916905550565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613273576132736138f4565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156132f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133159190613995565b81600181518110613328576133286138f4565b60200260200101906001600160a01b031690816001600160a01b031681525050613373307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8561215b565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906133c89086906000908690889042906004016139f6565b600060405180830381600087803b1580156133e257600080fd5b505af11580156133f6573d6000803e3d6000fd5b50505050505050565b6001600160a01b038116811461341457600080fd5b50565b60006020828403121561342957600080fd5b813561142c816133ff565b600060208083528351808285015260005b8181101561346157858101830151858201604001528201613445565b506000604082860101526040601f19601f8301168501019250505092915050565b60006020828403121561349457600080fd5b5035919050565b600080604083850312156134ae57600080fd5b82356134b9816133ff565b946020939093013593505050565b60008083601f8401126134d957600080fd5b50813567ffffffffffffffff8111156134f157600080fd5b6020830191508360208260051b850101111561350c57600080fd5b9250929050565b801515811461341457600080fd5b60008060006040848603121561353657600080fd5b833567ffffffffffffffff81111561354d57600080fd5b613559868287016134c7565b909450925050602084013561356d81613513565b809150509250925092565b60008060008060006060868803121561359057600080fd5b853561359b816133ff565b9450602086013567ffffffffffffffff808211156135b857600080fd5b6135c489838a016134c7565b909650945060408801359150808211156135dd57600080fd5b506135ea888289016134c7565b969995985093965092949392505050565b60008060006060848603121561361057600080fd5b833561361b816133ff565b9250602084013561362b816133ff565b929592945050506040919091013590565b60006020828403121561364e57600080fd5b813561142c81613513565b60008060006060848603121561366e57600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561369857600080fd5b50508035926020909101359150565b600080604083850312156136ba57600080fd5b82356136c5816133ff565b915060208301356136d5816133ff565b809150509250929050565b600080600080608085870312156136f657600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561372557600080fd5b82356134b981613513565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156137b657816000190482111561379c5761379c613765565b808516156137a957918102915b93841c9390800290613780565b509250929050565b6000826137cd57506001610c7d565b816137da57506000610c7d565b81600181146137f057600281146137fa57613816565b6001915050610c7d565b60ff84111561380b5761380b613765565b50506001821b610c7d565b5060208310610133831016604e8410600b8410161715613839575081810a610c7d565b613843838361377b565b806000190482111561385757613857613765565b029392505050565b600061142c60ff8416836137be565b600081600019048311821515161561388857613888613765565b500290565b6000826138aa57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604082015264657373657360d81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006001820161391c5761391c613765565b5060010190565b80820180821115610c7d57610c7d613765565b81810381811115610c7d57610c7d613765565b60006020828403121561395b57600080fd5b815161142c81613513565b634e487b7160e01b600052603160045260246000fd5b60006020828403121561398e57600080fd5b5051919050565b6000602082840312156139a757600080fd5b815161142c816133ff565b600081518084526020808501945080840160005b838110156139eb5781516001600160a01b0316875295820195908201906001016139c6565b509495945050505050565b85815284602082015260a060408201526000613a1560a08301866139b2565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215613a4757600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212207703626d3f7c38d3623e5923ec656106976d3a90583ab05af6b87813621a878164736f6c63430008100033

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

00000000000000000000000087376ace613f5642b734e57fea40a2936ceb4db600000000000000000000000087376ace613f5642b734e57fea40a2936ceb4db6

-----Decoded View---------------
Arg [0] : wallet_marketing (address): 0x87376ACe613f5642b734e57Fea40a2936Ceb4dB6
Arg [1] : wallet_treasury (address): 0x87376ACe613f5642b734e57Fea40a2936Ceb4dB6

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000087376ace613f5642b734e57fea40a2936ceb4db6
Arg [1] : 00000000000000000000000087376ace613f5642b734e57fea40a2936ceb4db6


Deployed Bytecode Sourcemap

7446:26311:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7594:49;;;;;;;;;;-1:-1:-1;7594:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;548:25:1;;;536:2;521:18;7594:49:0;;;;;;;;8190:42;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8190:42:0;;;;;;;;;;;;:::i;17390:194::-;;;;;;;;;;-1:-1:-1;17390:194:0;;;;;:::i;:::-;;:::i;:::-;;12521:193;;;;;;;;;;-1:-1:-1;12521:193:0;;;;;:::i;:::-;;:::i;:::-;;;1807:14:1;;1800:22;1782:41;;1770:2;1755:18;12521:193:0;1642:187:1;7726:43:0;;;;;;;;;;-1:-1:-1;7726:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18993:372;;;;;;;;;;-1:-1:-1;18993:372:0;;;;;:::i;:::-;;:::i;18376:237::-;;;;;;;;;;-1:-1:-1;18376:237:0;;;;;:::i;:::-;;:::i;9147:51::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3090:32:1;;;3072:51;;3060:2;3045:18;9147:51:0;2900:229:1;8051:58:0;;;;;;;;;;;;;:::i;19401:1269::-;;;;;;;;;;-1:-1:-1;19401:1269:0;;;;;:::i;:::-;;:::i;20678:230::-;;;;;;;;;;-1:-1:-1;20678:230:0;;;;;:::i;:::-;;:::i;12722:496::-;;;;;;;;;;-1:-1:-1;12722:496:0;;;;;:::i;:::-;;:::i;17788:100::-;;;;;;;;;;-1:-1:-1;17788:100:0;;;;;:::i;:::-;;:::i;8951:39::-;;;;;;;;;;-1:-1:-1;8951:39:0;;;;-1:-1:-1;;;;;8951:39:0;;;15855:331;;;;;;;;;;-1:-1:-1;15855:331:0;;;;;:::i;:::-;;:::i;18621:364::-;;;;;;;;;;-1:-1:-1;18621:364:0;;;;;:::i;:::-;;:::i;27022:171::-;;;;;;;;;;-1:-1:-1;27022:171:0;;;;;:::i;:::-;;:::i;8010:34::-;;;;;;;;;;;;8043:1;8010:34;;;;;5624:4:1;5612:17;;;5594:36;;5582:2;5567:18;8010:34:0;5452:184:1;16597:484:0;;;;;;;;;;-1:-1:-1;16597:484:0;;;;;:::i;:::-;;:::i;13226:299::-;;;;;;;;;;-1:-1:-1;13226:299:0;;;;;:::i;:::-;;:::i;9453:43::-;;;;;;;;;;-1:-1:-1;9453:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9205:38;;;;;;;;;;;;;;;9278:40;;;;;;;;;;-1:-1:-1;9278:40:0;;;;;;;;;;;9615:26;;;;;;;;;;-1:-1:-1;9615:26:0;;;;;:::i;:::-;;:::i;14510:354::-;;;;;;;;;;;;;:::i;:::-;;;;6051:25:1;;;6107:2;6092:18;;6085:34;;;;6135:18;;;6128:34;6039:2;6024:18;14510:354:0;5849:319:1;11657:233:0;;;;;;;;;;;;;:::i;16194:395::-;;;;;;;;;;-1:-1:-1;16194:395:0;;;;;:::i;:::-;;:::i;18138:230::-;;;;;;;;;;-1:-1:-1;18138:230:0;;;;;:::i;:::-;;:::i;8806:40::-;;;;;;;;;;-1:-1:-1;8806:40:0;;;;-1:-1:-1;;;;;8806:40:0;;;17089:102;;;;;;;;;;-1:-1:-1;17089:102:0;;;;;:::i;:::-;;:::i;14001:501::-;;;;;;;;;;;;;:::i;:::-;;;;6454:25:1;;;6510:2;6495:18;;6488:34;;;;6538:18;;;6531:34;;;;6596:2;6581:18;;6574:34;6639:3;6624:19;;6617:35;6696:14;6689:22;6683:3;6668:19;;6661:51;6441:3;6426:19;14001:501:0;6173:545:1;25652:232:0;;;;;;;;;;-1:-1:-1;25652:232:0;;;;;:::i;:::-;;:::i;11898:216::-;;;;;;;;;;-1:-1:-1;11898:216:0;;;;;:::i;:::-;;:::i;6052:148::-;;;;;;;;;;;;;:::i;25892:289::-;;;;;;;;;;-1:-1:-1;25892:289:0;;;;;:::i;:::-;;:::i;20916:320::-;;;;;;;;;;-1:-1:-1;20916:320:0;;;;;:::i;:::-;;:::i;7778:32::-;;;;;;;;;;-1:-1:-1;7778:32:0;;;;;;;;14872:745;;;;;;;;;;-1:-1:-1;15339:15:0;;15369:14;;15398:13;;15426:27;;15468:21;;15504:14;;15533:28;;15576:22;;14872:745;;;7640:25:1;;;7696:2;7681:18;;7674:34;;;;7724:18;;;7717:34;;;;7782:2;7767:18;;7760:34;;;;7825:3;7810:19;;7803:35;7869:3;7854:19;;7847:35;7913:3;7898:19;;7891:35;7957:3;7942:19;;7935:35;7627:3;7612:19;14872:745:0;7297:679:1;9503:47:0;;;;;;;;;;-1:-1:-1;9503:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5829:87;;;;;;;;;;-1:-1:-1;5875:7:0;5902:6;-1:-1:-1;;;;;5902:6:0;5829:87;;26189:291;;;;;;;;;;-1:-1:-1;26189:291:0;;;;;:::i;:::-;;:::i;8239:41::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8239:41:0;;;;;13533:460;;;;;;;;;;-1:-1:-1;13533:460:0;;;;;:::i;:::-;;:::i;15625:222::-;;;;;;;;;;-1:-1:-1;15625:222:0;;;;;:::i;:::-;;:::i;12122:199::-;;;;;;;;;;-1:-1:-1;12122:199:0;;;;;:::i;:::-;;:::i;7534:53::-;;;;;;;;;;-1:-1:-1;7534:53:0;;;;;:::i;:::-;;;;;;;;;;;;;;17199:183;;;;;;;;;;-1:-1:-1;17199:183:0;;;;;:::i;:::-;;:::i;7869:41::-;;;;;;;;;;-1:-1:-1;7869:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9557:51;;;;;;;;;;-1:-1:-1;9557:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;26488:526;;;;;;;;;;-1:-1:-1;26488:526:0;;;;;:::i;:::-;;:::i;17592:188::-;;;;;;;;;;-1:-1:-1;17592:188:0;;;;;:::i;:::-;;:::i;12329:184::-;;;;;;;;;;-1:-1:-1;12329:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;12478:18:0;;;12446:7;12478:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;12329:184;6208:281;;;;;;;;;;-1:-1:-1;6208:281:0;;;;;:::i;:::-;;:::i;17896:234::-;;;;;;;;;;-1:-1:-1;17896:234:0;;;;;:::i;:::-;;:::i;7817:45::-;;;;;;;;;;-1:-1:-1;7817:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7919:31;;;;;;;;;;-1:-1:-1;7919:31:0;;;;;;;;17390:194;5875:7;5902:6;-1:-1:-1;;;;;5902:6:0;1252:10;5964:23;5956:68;;;;-1:-1:-1;;;5956:68:0;;;;;;;:::i;:::-;;;;;;;;;17572:4:::1;17546:22:::0;8097:12:::1;8043:1;8097:2;:12;:::i;:::-;8089:20;::::0;:5:::1;:20;:::i;:::-;17532:36;;;;:::i;:::-;17531:45;;;;:::i;:::-;17513:15;:63:::0;-1:-1:-1;17390:194:0:o;12521:193::-;12623:4;12645:39;1252:10;12668:7;12677:6;12645:8;:39::i;:::-;-1:-1:-1;12702:4:0;12521:193;;;;;:::o;18993:372::-;5875:7;5902:6;-1:-1:-1;;;;;5902:6:0;1252:10;5964:23;5956:68;;;;-1:-1:-1;;;5956:68:0;;;;;;;:::i;:::-;19163:3:::1;19144:22:::0;::::1;19122:109;;;;-1:-1:-1::0;;;19122:109:0::1;;;;;;;:::i;:::-;19247:9;19242:116;19262:20:::0;;::::1;19242:116;;;19340:6;19304:19;:33;19324:9;;19334:1;19324:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19304:33:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;19304:33:0;:42;;-1:-1:-1;;19304:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19284:3:::1;::::0;::::1;:::i;:::-;;;19242:116;;;;18993:372:::0;;;:::o;18376:237::-;5875:7;5902:6;-1:-1:-1;;;;;5902:6:0;1252:10;5964:23;5956:68;;;;-1:-1:-1;;;5956:68:0;;;;;;;:::i;:::-;18507:9:::1;18502:104;18518:20:::0;;::::1;18502:104;;;18588:6;18560:11;:25;18572:9;;18582:1;18572:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18560:25:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;18560:25:0;:34;;-1:-1:-1;;18560:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18540:3:::1;::::0;::::1;:::i;:::-;;;18502:104;;8051:58:::0;8097:12;8043:1;8097:2;:12;:::i;:::-;8089:20;;:5;:20;:::i;:::-;8051:58;:::o;19401:1269::-;5875:7;5902:6;-1:-1:-1;;;;;5902:6:0;1252:10;5964:23;5956:68;;;;-1:-1:-1;;;5956:68:0;;;;;;;:::i;:::-;19559:12:::1;19586:19:::0;19608:10:::1;:8;:10::i;:::-;19586:32:::0;-1:-1:-1;19651:33:0;;::::1;19629:123;;;::::0;-1:-1:-1;;;19629:123:0;;12229:2:1;19629:123:0::1;::::0;::::1;12211:21:1::0;12268:2;12248:18;;;12241:30;12307:34;12287:18;;;12280:62;-1:-1:-1;;;12358:18:1;;;12351:38;12406:19;;19629:123:0::1;12027:404:1::0;19629:123:0::1;19770:9;19765:97;19785:20:::0;;::::1;19765:97;;;19841:6;;19848:1;19841:9;;;;;;;:::i;:::-;;;;;;;19834:4;:16;;;;:::i;:::-;19827:23:::0;-1:-1:-1;19807:3:0;::::1;::::0;::::1;:::i;:::-;;;;19765:97;;;;19905:4;19880:21;19890:10;19880:9;:21::i;:::-;:29;;19872:70;;;::::0;-1:-1:-1;;;19872:70:0;;12768:2:1;19872:70:0::1;::::0;::::1;12750:21:1::0;12807:2;12787:18;;;12780:30;12846;12826:18;;;12819:58;12894:18;;19872:70:0::1;12566:352:1::0;19872:70:0::1;20035:31;20055:11:::0;20035:4;:31:::1;:::i;:::-;-1:-1:-1::0;;;;;19995:24:0;::::1;;::::0;;;:18:::1;:24;::::0;;;;;:71:::1;::::0;;::::1;:::i;:::-;-1:-1:-1::0;;;;;19955:24:0;::::1;;::::0;;;:18:::1;:24;::::0;;;;;;;:111;;;;20083:11:::1;:17:::0;;;;::::1;;20079:100;;;-1:-1:-1::0;;;;;20140:20:0;::::1;;::::0;;;:14:::1;:20;::::0;;;;;:27:::1;::::0;20163:4;;20140:27:::1;:::i;:::-;-1:-1:-1::0;;;;;20117:20:0;::::1;;::::0;;;:14:::1;:20;::::0;;;;:50;20079:100:::1;20196:9;20191:472;20211:20:::0;;::::1;20191:472;;;20257:11;:25;20269:9;;20279:1;20269:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20257:25:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;20257:25:0;;::::1;;20253:179;;;20407:6;;20414:1;20407:9;;;;;;;:::i;:::-;;;;;;;20355:14;:28;20370:9;;20380:1;20370:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20355:28:0::1;-1:-1:-1::0;;;;;20355:28:0::1;;;;;;;;;;;;;:61;;;;:::i;:::-;20303:14;:28;20318:9;;20328:1;20318:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20303:28:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;20303:28:0;:113;20253:179:::1;20579:11;20550:6;;20557:1;20550:9;;;;;;;:::i;:::-;;;;;;;:40;;;;:::i;:::-;20498:18;:32;20517:9;;20527:1;20517:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20498:32:0::1;-1:-1:-1::0;;;;;20498:32:0::1;;;;;;;;;;;;;:92;;;;:::i;:::-;20446:18;:32;20465:9;;20475:1;20465:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20446:32:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;20446:32:0;:144;20627:9;;20637:1;20627:12;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20612:39:0::1;20621:4;-1:-1:-1::0;;;;;20612:39:0::1;-1:-1:-1::0;;;;;;;;;;;20641:6:0::1;;20648:1;20641:9;;;;;;;:::i;:::-;;;;;;;20612:39;;;;548:25:1::0;;536:2;521:18;;402:177;20612:39:0::1;;;;;;;;20233:3:::0;::::1;::::0;::::1;:::i;:::-;;;;20191:472;;;;19548:1122;;19401:1269:::0;;;;;:::o;20678:230::-;5875:7;5902:6;-1:-1:-1;;;;;5902:6:0;1252:10;5964:23;5956:68;;;;-1:-1:-1;;;5956:68:0;;;;;;;:::i;:::-;20761:21:::1;20843:3;20786:40;20805:21;20786:16:::0;:40:::1;:::i;:::-;20785:61;;;;:::i;:::-;20857:43;::::0;20761:85;;-1:-1:-1;20865:10:0::1;::::0;20857:43;::::1;;;::::0;20761:85;;20857:43:::1;::::0;;;20761:85;20865:10;20857:43;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;20750:158;20678:230:::0;:::o;12722:496::-;12854:4;12871:36;12881:6;12889:9;12900:6;12871:9;:36::i;:::-;-1:-1:-1;;;;;12940:19:0;;;;;;:11;:19;;;;;;;;1252:10;12940:33;;;;;;;;:43;-1:-1:-1;12940:43:0;12918:133;;;;-1:-1:-1;;;12918:133:0;;13258:2:1;12918:133:0;;;13240:21:1;13297:2;13277:18;;;13270:30;13336:34;13316:18;;;13309:62;-1:-1:-1;;;13387:18:1;;;13380:38;13435:19;;12918:133:0;13056:404:1;12918:133:0;-1:-1:-1;;;;;13134:19:0;;;;;;:11;:19;;;;;;;;1252:10;13134:33;;;;;;;;;13062:126;;13085:6;;13134:42;;13170:6;;13134:42;:::i;:::-;13062:8;:126::i;:::-;-1:-1:-1;13206:4:0;12722:496;;;;;:::o;17788:100::-;5875:7;5902:6;-1:-1:-1;;;;;5902:6:0;1252:10;5964:23;5956:68;;;;-1:-1:-1;;;5956:68:0;;;;;;;:::i;:::-;17857:13:::1;:23:::0;;-1:-1:-1;;17857:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17788:100::o;15855:331::-;15949:7;16007:17;;15996:7;:28;;15974:120;;;;-1:-1:-1;;;15974:120:0;;13667:2:1;15974:120:0;;;13649:21:1;13706:2;13686:18;;;13679:30;13745:34;13725:18;;;13718:62;-1:-1:-1;;;13796:18:1;;;13789:40;13846:19;;15974:120:0;13465:406:1;15974:120:0;16105:19;16127:10;:8;:10::i;:::-;16105:32;-1:-1:-1;16156:21:0;16105:32;16156:7;:21;:::i;:::-;16148:30;15855:331;-1:-1:-1;;;15855:331:0:o;18621:364::-;5875:7;5902:6;-1:-1:-1;;;;;5902:6:0;1252:10;5964:23;5956:68;;;;-1:-1:-1;;;5956:68:0;;;;;;;:::i;:::-;18787:3:::1;18768:22:::0;::::1;18746:109;;;;-1:-1:-1::0;;;18746:109:0::1;;;;;;;:::i;:::-;18871:9;18866:112;18886:20:::0;;::::1;18866:112;;;18960:6;18928:15;:29;18944:9;;18954:1;18944:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18928:29:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;18928:29:0;:38;;-1:-1:-1;;18928:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18908:3:::1;::::0;::::1;:::i;:::-;;;18866:112;;27022:171:::0;5875:7;5902:6;-1:-1:-1;;;;;5902:6:0;1252:10;5964:23;5956:68;;;;-1:-1:-1;;;5956:68:0;;;;;;;:::i;:::-;27153:32:::1;::::0;-1:-1:-1;;;27153:32:0;;-1:-1:-1;;;;;14068:32:1;;;27153::0::1;::::0;::::1;14050:51:1::0;14117:18;;;14110:34;;;27153:14:0;::::1;::::0;::::1;::::0;14023:18:1;;27153:32:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;16597:484::-:0;5875:7;5902:6;-1:-1:-1;;;;;5902:6:0;1252:10;5964:23;5956:68;;;;-1:-1:-1;;;5956:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16677:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;16669:60;;;::::0;-1:-1:-1;;;16669:60:0;;14607:2:1;16669:60:0::1;::::0;::::1;14589:21:1::0;14646:2;14626:18;;;14619:30;14685:29;14665:18;;;14658:57;14732:18;;16669:60:0::1;14405:351:1::0;16669:60:0::1;16745:9;16740:334;16764:9;:16:::0;16760:20;::::1;16740:334;;;16822:7;-1:-1:-1::0;;;;;16806:23:0::1;:9;16816:1;16806:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;16806:12:0::1;:23:::0;16802:261:::1;;16865:9;16875:16:::0;;:20:::1;::::0;16894:1:::1;::::0;16875:20:::1;:::i;:::-;16865:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;16865:31:0::1;16850:9;16860:1;16850:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;16850:46:0::1;-1:-1:-1::0;;;;;16850:46:0;;::::1;;::::0;;16915:23;;::::1;::::0;;:14:::1;:23:::0;;;;;;:27;;;16961:11:::1;:20:::0;;;;:28;;-1:-1:-1;;16961:28:0::1;::::0;;17008:15;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;17008:15:0;;;;;-1:-1:-1;;;;;;17008:15:0::1;::::0;;;;;16740:334:::1;16597:484:::0;:::o;16802:261::-:1;16782:3:::0;::::1;::::0;::::1;:::i;:::-;;;;16740:334;;;;16597:484:::0;:::o;13226:299::-;1252:10;13341:4;13436:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;13436:34:0;;;;;;;;;;13341:4;;13363:132;;13413:7;;13436:47;;13473:10;;13436:47;:::i;9615:26::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9615:26:0;;-1:-1:-1;9615:26:0;:::o;14510:354::-;14592:21;14628:28;14671:32;14753:13;;14781:24;14799:4;14781:9;:24::i;:::-;14820:25;;14731:125;;;;;;14510:354;;;:::o;11657:233::-;5875:7;5902:6;-1:-1:-1;;;;;5902:6:0;1252:10;5964:23;5956:68;;;;-1:-1:-1;;;5956:68:0;;;;;;;:::i;:::-;11732:13:::1;-1:-1:-1::0;;;;;11720:26:0::1;;::::0;;;:11:::1;:26;::::0;;;;;;;:33;;11749:4:::1;-1:-1:-1::0;;11720:33:0;;::::1;::::0;::::1;::::0;;;11764:15:::1;:30:::0;;;;;:37;;;::::1;::::0;::::1;::::0;;11812:19:::1;:34:::0;;;;;:41;;;::::1;::::0;::::1;::::0;;11864:11:::1;:18:::0;;;;::::1;::::0;;::::1;::::0;;11657:233::o;16194:395::-;5875:7;5902:6;-1:-1:-1;;;;;5902:6:0;1252:10;5964:23;5956:68;;;;-1:-1:-1;;;5956:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16277:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;16276:21;16268:61;;;::::0;-1:-1:-1;;;16268:61:0;;15095:2:1;16268:61:0::1;::::0;::::1;15077:21:1::0;15134:2;15114:18;;;15107:30;15173:29;15153:18;;;15146:57;15220:18;;16268:61:0::1;14893:351:1::0;16268:61:0::1;-1:-1:-1::0;;;;;16344:27:0;::::1;16374:1;16344:27:::0;;;:18:::1;:27;::::0;;;;;:31;16340:170:::1;;-1:-1:-1::0;;;;;16456:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;16418:80:::1;::::0;:19:::1;:80::i;:::-;-1:-1:-1::0;;;;;16392:23:0;::::1;;::::0;;;:14:::1;:23;::::0;;;;:106;16340:170:::1;-1:-1:-1::0;;;;;16520:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;;;:27;;-1:-1:-1;;16520:27:0::1;16543:4;16520:27:::0;;::::1;::::0;;;16558:23;;;;::::1;::::0;;;;;::::1;::::0;;-1:-1:-1;;;;;;16558:23:0::1;::::0;;::::1;::::0;;16194:395::o;18138:230::-;5875:7;5902:6;-1:-1:-1;;;;;5902:6:0;1252:10;5964:23;5956:68;;;;-1:-1:-1;;;5956:68:0;;;;;;;:::i;:::-;18264:9:::1;18259:102;18275:20:::0;;::::1;18259:102;;;18343:6;18317:9;:23;18327:9;;18337:1;18327:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18317:23:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;18317:23:0;:32;;-1:-1:-1;;18317:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18297:3:::1;::::0;::::1;:::i;:::-;;;18259:102;;17089::::0;5875:7;5902:6;-1:-1:-1;;;;;5902:6:0;1252:10;5964:23;5956:68;;;;-1:-1:-1;;;5956:68:0;;;;;;;:::i;:::-;17162:11:::1;:21:::0;;-1:-1:-1;;17162:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17089:102::o;14001:501::-;14084:19;14118:22;14155:19;14189:24;14228:23;14266:16;14332:12;;14359:15;;8043:1;8097:2;:12;;;;:::i;:::-;8089:20;;:5;:20;:::i;:::-;14415:17;;14447:10;:8;:10::i;:::-;14472:11;;14310:184;;;;-1:-1:-1;14310:184:0;;-1:-1:-1;14310:184:0;-1:-1:-1;14310:184:0;-1:-1:-1;14472:11:0;;;;;-1:-1:-1;14001:501:0;-1:-1:-1;14001:501:0:o;25652:232::-;5875:7;5902:6;-1:-1:-1;;;;;5902:6:0;1252:10;5964:23;5956:68;;;;-1:-1:-1;;;5956:68:0;;;;;;;:::i;:::-;25785:14:::1;:22:::0;;;;25818:13:::1;:20:::0;;;;25849:18:::1;:27:::0;25652:232::o;11898:216::-;-1:-1:-1;;;;;11988:20:0;;11964:7;11988:20;;;:11;:20;;;;;;;;11984:56;;;-1:-1:-1;;;;;;12017:23:0;;;;;:14;:23;;;;;;;11898:216::o;11984:56::-;-1:-1:-1;;;;;12078:27:0;;;;;;:18;:27;;;;;;12058:48;;:19;:48::i;6052:148::-;5875:7;5902:6;-1:-1:-1;;;;;5902:6:0;1252:10;5964:23;5956:68;;;;-1:-1:-1;;;5956:68:0;;;;;;;:::i;:::-;6159:1:::1;6143:6:::0;;6122:40:::1;::::0;-1:-1:-1;;;;;6143:6:0;;::::1;::::0;6122:40:::1;::::0;6159:1;;6122:40:::1;6190:1;6173:19:::0;;-1:-1:-1;;;;;;6173:19:0::1;::::0;;6052:148::o;25892:289::-;5875:7;5902:6;-1:-1:-1;;;;;5902:6:0;1252:10;5964:23;5956:68;;;;-1:-1:-1;;;5956:68:0;;;;;;;:::i;:::-;26048:28:::1;:58:::0;;;;26117:27:::1;:56:::0;25892:289::o;20916:320::-;21034:12;5902:6;;-1:-1:-1;;;;;5902:6:0;1252:10;5964:23;5956:68;;;;-1:-1:-1;;;5956:68:0;;;;;;;:::i;:::-;21068:6:::1;21078:1;21068:11:::0;21064:98:::1;;21105:45;::::0;-1:-1:-1;;;21105:45:0;;21144:4:::1;21105:45;::::0;::::1;3072:51:1::0;-1:-1:-1;;;;;21105:30:0;::::1;::::0;::::1;::::0;3045:18:1;;21105:45:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21096:54;;21064:98;21179:49;::::0;-1:-1:-1;;;21179:49:0;;21209:10:::1;21179:49;::::0;::::1;14050:51:1::0;14117:18;;;14110:34;;;-1:-1:-1;;;;;21179:29:0;::::1;::::0;::::1;::::0;14023:18:1;;21179:49:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;26189:291::-:0;5875:7;5902:6;-1:-1:-1;;;;;5902:6:0;1252:10;5964:23;5956:68;;;;-1:-1:-1;;;5956:68:0;;;;;;;:::i;:::-;26355:21:::1;:52:::0;26418:22:::1;:54:::0;26189:291::o;13533:460::-;1252:10;13653:4;13697:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;13697:34:0;;;;;;;;;;:53;-1:-1:-1;13697:53:0;13675:140;;;;-1:-1:-1;;;13675:140:0;;15640:2:1;13675:140:0;;;15622:21:1;15679:2;15659:18;;;15652:30;15718:34;15698:18;;;15691:62;-1:-1:-1;;;15769:18:1;;;15762:35;15814:19;;13675:140:0;15438:401:1;13675:140:0;1252:10;13899:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;13899:34:0;;;;;;;;;;13826:137;;1252:10;13876:7;;13899:52;;13936:15;;13899:52;:::i;15625:222::-;5875:7;5902:6;-1:-1:-1;;;;;5902:6:0;1252:10;5964:23;5956:68;;;;-1:-1:-1;;;5956:68:0;;;;;;;:::i;:::-;15746:17:::1;:42:::0;;-1:-1:-1;;;;;15746:42:0;;::::1;-1:-1:-1::0;;;;;;15746:42:0;;::::1;;::::0;;;15799:16:::1;:40:::0;;;;;::::1;::::0;::::1;;::::0;;15625:222::o;12122:199::-;12227:4;12249:42;1252:10;12273:9;12284:6;12249:9;:42::i;17199:183::-;5875:7;5902:6;-1:-1:-1;;;;;5902:6:0;1252:10;5964:23;5956:68;;;;-1:-1:-1;;;5956:68:0;;;;;;;:::i;:::-;17370:4:::1;17346:20:::0;8097:12:::1;8043:1;8097:2;:12;:::i;:::-;8089:20;::::0;:5:::1;:20;:::i;:::-;17332:34;;;;:::i;:::-;17331:43;;;;:::i;:::-;17316:12;:58:::0;-1:-1:-1;17199:183:0:o;26488:526::-;5875:7;5902:6;-1:-1:-1;;;;;5902:6:0;1252:10;5964:23;5956:68;;;;-1:-1:-1;;;5956:68:0;;;;;;;:::i;:::-;26675:18:::1;26783:15:::0;26755:12;26696:43:::1;26725:14:::0;26696:13;:43:::1;:::i;:::-;:71;;;;:::i;:::-;:102;;;;:::i;:::-;26675:123;;26830:2;26817:10;:15;26809:50;;;::::0;-1:-1:-1;;;26809:50:0;;16046:2:1;26809:50:0::1;::::0;::::1;16028:21:1::0;16085:2;16065:18;;;16058:30;-1:-1:-1;;;16104:18:1;;;16097:52;16166:18;;26809:50:0::1;15844:346:1::0;26809:50:0::1;25485:14:::0;:29;;;25525:14;:30;;;25566:13;:27;;;25604:15;:32;;;26870:136:::1;26664:350;26488:526:::0;;;;:::o;17592:188::-;5875:7;5902:6;-1:-1:-1;;;;;5902:6:0;1252:10;5964:23;5956:68;;;;-1:-1:-1;;;5956:68:0;;;;;;;:::i;:::-;17704:21:::1;:31:::0;;;::::1;;;;-1:-1:-1::0;;17704:31:0;;::::1;::::0;;;::::1;::::0;;;17746:13:::1;:26:::0;17592:188::o;6208:281::-;5875:7;5902:6;-1:-1:-1;;;;;5902:6:0;1252:10;5964:23;5956:68;;;;-1:-1:-1;;;5956:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6311:22:0;::::1;6289:110;;;::::0;-1:-1:-1;;;6289:110:0;;16397:2:1;6289:110:0::1;::::0;::::1;16379:21:1::0;16436:2;16416:18;;;16409:30;16475:34;16455:18;;;16448:62;-1:-1:-1;;;16526:18:1;;;16519:36;16572:19;;6289:110:0::1;16195:402:1::0;6289:110:0::1;6436:6;::::0;;6415:38:::1;::::0;-1:-1:-1;;;;;6415:38:0;;::::1;::::0;6436:6;::::1;::::0;6415:38:::1;::::0;::::1;6464:6;:17:::0;;-1:-1:-1;;;;;;6464:17:0::1;-1:-1:-1::0;;;;;6464:17:0;;;::::1;::::0;;;::::1;::::0;;6208:281::o;17896:234::-;5875:7;5902:6;-1:-1:-1;;;;;5902:6:0;1252:10;5964:23;5956:68;;;;-1:-1:-1;;;5956:68:0;;;;;;;:::i;:::-;18022:9:::1;18017:106;18033:20:::0;;::::1;18017:106;;;18105:6;18075:13;:27;18089:9;;18099:1;18089:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18075:27:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;18075:27:0;:36;;-1:-1:-1;;18075:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18055:3:::1;::::0;::::1;:::i;:::-;;;18017:106;;29497:371:::0;-1:-1:-1;;;;;29624:19:0;;29616:68;;;;-1:-1:-1;;;29616:68:0;;16804:2:1;29616:68:0;;;16786:21:1;16843:2;16823:18;;;16816:30;16882:34;16862:18;;;16855:62;-1:-1:-1;;;16933:18:1;;;16926:34;16977:19;;29616:68:0;16602:400:1;29616:68:0;-1:-1:-1;;;;;29703:21:0;;29695:68;;;;-1:-1:-1;;;29695:68:0;;17209:2:1;29695:68:0;;;17191:21:1;17248:2;17228:18;;;17221:30;17287:34;17267:18;;;17260:62;-1:-1:-1;;;17338:18:1;;;17331:32;17380:19;;29695:68:0;17007:398:1;29695:68:0;-1:-1:-1;;;;;29776:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;29828:32;;548:25:1;;;29828:32:0;;521:18:1;29828:32:0;;;;;;;;29497:371;;;:::o;21256:161::-;21298:7;21319:15;21336;21355:19;:17;:19::i;:::-;21318:56;;-1:-1:-1;21318:56:0;-1:-1:-1;21392:17:0;21318:56;;21392:17;:::i;:::-;21385:24;;;;21256:161;:::o;29876:3135::-;29994:11;;;;:20;;:11;:20;29990:103;;-1:-1:-1;;;;;30039:13:0;;;;;;:9;:13;;;;;;;;:21;;:13;:21;30031:50;;;;-1:-1:-1;;;30031:50:0;;17612:2:1;30031:50:0;;;17594:21:1;17651:2;17631:18;;;17624:30;-1:-1:-1;;;17670:18:1;;;17663:46;17726:18;;30031:50:0;17410:340:1;30031:50:0;30109:13;;;;:21;;:13;:21;30105:106;;-1:-1:-1;;;;;30155:19:0;;;;;;:13;:19;;;;;;;;:28;30147:52;;;;-1:-1:-1;;;30147:52:0;;17957:2:1;30147:52:0;;;17939:21:1;17996:2;17976:18;;;17969:30;-1:-1:-1;;;18015:18:1;;;18008:41;18066:18;;30147:52:0;17755:335:1;30147:52:0;30256:12;;30246:6;:22;;30245:66;;;-1:-1:-1;;;;;;30290:21:0;;;;;;:15;:21;;;;;;;;30245:66;:106;;;-1:-1:-1;;;;;;30332:19:0;;;;;;:15;:19;;;;;;;;30245:106;30223:177;;;;-1:-1:-1;;;30223:177:0;;18297:2:1;30223:177:0;;;18279:21:1;18336:2;18316:18;;;18309:30;-1:-1:-1;;;18355:18:1;;;18348:51;18416:18;;30223:177:0;18095:345:1;30223:177:0;-1:-1:-1;;;;;30432:25:0;;;;;;:19;:25;;;;;;;;30431:26;:67;;;;-1:-1:-1;;;;;;30475:23:0;;;;;;:19;:23;;;;;;;;30474:24;30431:67;:103;;;;;30521:13;-1:-1:-1;;;;;30515:19:0;:2;-1:-1:-1;;;;;30515:19:0;;;30431:103;30413:289;;;30615:15;;30604:6;30588:13;30598:2;30588:9;:13::i;:::-;:22;;;;:::i;:::-;30587:43;;30561:129;;;;-1:-1:-1;;;30561:129:0;;18647:2:1;30561:129:0;;;18629:21:1;18686:2;18666:18;;;18659:30;18725:26;18705:18;;;18698:54;18769:18;;30561:129:0;18445:348:1;30561:129:0;30787:28;30818:24;30836:4;30818:9;:24::i;:::-;30787:55;;30887:12;;30863:20;:36;30859:116;;30958:1;30943:12;;:16;;;;:::i;:::-;30920:39;;30859:116;31042:13;;31018:37;;;;;;;31092:57;;-1:-1:-1;31133:16:0;;;;31132:17;31092:57;:99;;;;;31178:13;-1:-1:-1;;;;;31170:21:0;:4;-1:-1:-1;;;;;31170:21:0;;;31092:99;:141;;;;-1:-1:-1;31212:21:0;;;;;;;31092:141;31070:305;;;31291:13;;31268:36;;31323;31338:20;31323:14;:36::i;:::-;31450:16;;;;31449:17;:59;;;;;31495:13;-1:-1:-1;;;;;31487:21:0;:4;-1:-1:-1;;;;;31487:21:0;;;31449:59;:101;;;;-1:-1:-1;31529:21:0;;;;;;;31449:101;31427:520;;;31618:27;;31668:16;;31707:21;;31585:162;;31618:27;-1:-1:-1;;;;;31668:16:0;;31585:10;:162::i;:::-;31799:28;;31850:17;;31890:22;;31766:165;;31799:28;-1:-1:-1;;;;;31850:17:0;;31766:10;:165::i;:::-;-1:-1:-1;;;;;;;32004:17:0;;31970:12;32004:17;;;:11;:17;;;;;;31985:4;;32004:17;;;:36;;-1:-1:-1;;;;;;32025:15:0;;;;;;:11;:15;;;;;;;;32004:36;32000:113;;;-1:-1:-1;32067:5:0;32087:14;27265;;;27244:18;:35;27311:14;;;27290:18;:35;27356:13;;;27336:17;:33;27402:15;;;27380:19;:37;-1:-1:-1;25485:29:0;;;;25525:30;;;;25566:27;;;25604:32;27201:260;32087:14;32140:15;32170:23;32208:19;32242:23;32280:18;32313;32346:17;32378:19;32411:28;32422:6;32430:2;32434:4;32411:10;:28::i;:::-;32125:314;;;;;;;;;;;;;;;;32452:167;32484:4;32503:2;32520:6;32541:7;32563:15;32593;32452:17;:167::i;:::-;32672:11;32652:17;;:31;;;;:::i;:::-;32632:17;:51;32722:25;;:39;;32750:11;;32722:39;:::i;:::-;32694:25;:67;32779:7;32774:230;;32803:15;:13;:15::i;:::-;32774:230;;;32872:17;;32851:39;;32860:10;;-1:-1:-1;;;;;32872:17:0;32851:8;:39::i;:::-;32905:35;32914:10;32934:4;32905:8;:35::i;:::-;32975:16;;32955:37;;32964:9;;-1:-1:-1;;;;;32975:16:0;32955:8;:37::i;:::-;29979:3032;;;;;;;;;29876:3135;;;:::o;21425:703::-;21476:7;21485;21505:15;21523:17;;21505:35;;21551:15;8043:1;8097:2;:12;;;;:::i;:::-;8089:20;;:5;:20;:::i;:::-;21551:29;;21596:9;21591:382;21615:9;:16;21611:20;;21591:382;;;21710:7;21675:18;:32;21694:9;21704:1;21694:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;21694:12:0;21675:32;;;;;;;;;;;;;:42;;:101;;;21769:7;21738:14;:28;21753:9;21763:1;21753:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;21753:12:0;21738:28;;;;;;;;;;;;;:38;21675:101;21653:178;;;21800:17;;8043:1;8097:2;:12;;;;:::i;:::-;8089:20;;:5;:20;:::i;:::-;21792:39;;;;;;;21425:703;;:::o;21653:178::-;21866:18;:32;21885:9;21895:1;21885:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;21885:12:0;21866:32;;;;;;;;;;;;;21856:42;;:7;:42;:::i;:::-;21846:52;;21933:14;:28;21948:9;21958:1;21948:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;21948:12:0;21933:28;;;;;;;;;;;;;21923:38;;:7;:38;:::i;:::-;21913:48;-1:-1:-1;21633:3:0;;;;:::i;:::-;;;;21591:382;;;-1:-1:-1;8097:12:0;8043:1;8097:2;:12;:::i;:::-;8089:20;;:5;:20;:::i;:::-;21998:17;;:31;;;;:::i;:::-;21987:7;:43;21983:101;;;22053:17;;8043:1;8097:2;:12;;;;:::i;:::-;8089:20;;:5;:20;:::i;:::-;22045:39;;;;;;21425:703;;:::o;21983:101::-;22103:7;;22112;;-1:-1:-1;21425:703:0;-1:-1:-1;21425:703:0:o;27683:415::-;10179:16;:23;;-1:-1:-1;;10179:23:0;10198:4;10179:23;;;:16;27781::::1;27796:1;27781:12:::0;:16:::1;:::i;:::-;27760:37:::0;-1:-1:-1;27837:21:0::1;27871:28;27760:37:::0;27871:16:::1;:28::i;:::-;27910:18;27931:42;27955:18:::0;27931:21:::1;:42;:::i;:::-;27910:63;;27984:36;27997:10;28009;27984:12;:36::i;:::-;28038:52;::::0;;6051:25:1;;;6107:2;6092:18;;6085:34;;;6135:18;;;6128:34;;;28038:52:0::1;::::0;6039:2:1;6024:18;28038:52:0::1;;;;;;;-1:-1:-1::0;;10225:16:0;:24;;-1:-1:-1;;10225:24:0;;;-1:-1:-1;;27683:415:0:o;24267:472::-;24422:15;24441:1;24422:20;24418:59;;24267:472;;;:::o;24418:59::-;24511:12;;24493:15;:30;24489:93;;;24558:12;;24540:30;;24489:93;24638:20;24648:9;24638;:20::i;:::-;24599:34;24617:16;24599:15;:34;:::i;:::-;24598:60;24594:138;;24675:45;24693:9;24704:15;24675:17;:45::i;27430:23::-;27201:260::o;22136:1426::-;22305:15;22335:23;22373:19;22407:23;22445:18;22478;22511:17;22543:19;22590:18;22611;;22590:39;;22659:13;-1:-1:-1;;;;;22646:26:0;:9;-1:-1:-1;;;;;22646:26:0;;22642:174;;-1:-1:-1;22702:14:0;;22642:174;;;22748:13;-1:-1:-1;;;;;22738:23:0;:6;-1:-1:-1;;;;;22738:23:0;;22734:82;;-1:-1:-1;22791:13:0;;22734:82;22912:16;;:22;;22931:3;22912:22;:::i;:::-;22884:10;22866:14;;22856:7;:24;;;;:::i;:::-;22855:39;;;;:::i;:::-;22854:81;;;;:::i;:::-;22828:107;;23030:16;;23049:3;23030:22;;;;:::i;:::-;23002:10;22984:14;;22974:7;:24;;;;:::i;:::-;22973:39;;;;:::i;:::-;22972:81;;;;:::i;:::-;22946:107;;23146:16;;23165:3;23146:22;;;;:::i;:::-;23118:10;23101:13;;23091:7;:23;;;;:::i;:::-;23090:38;;;;:::i;:::-;23089:80;;;;:::i;:::-;23064:105;;23266:16;;23285:3;23266:22;;;;:::i;:::-;23238:10;23219:15;;23209:7;:25;;;;:::i;:::-;23208:40;;;;:::i;:::-;23207:82;;;;:::i;:::-;23180:109;-1:-1:-1;23180:109:0;23383:9;23357:23;23370:10;23357;:23;:::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;:::-;23333:74;;:7;:74;:::i;:::-;23302:105;;23446:10;:8;:10::i;:::-;23432:24;;:11;:24;:::i;:::-;23418:38;;23487:10;:8;:10::i;:::-;23477:20;;:7;:20;:::i;:::-;23467:30;;23544:10;:8;:10::i;:::-;23526:28;;:15;:28;:::i;:::-;23508:46;;22579:983;22136:1426;;;;;;;;;;;:::o;33019:698::-;-1:-1:-1;;;;;33263:24:0;;;;;;:18;:24;;;;;;:34;;33290:7;;33263:34;:::i;:::-;-1:-1:-1;;;;;33236:24:0;;;;;;:18;:24;;;;;;;;:61;;;;33314:11;:17;;;;;;33310:103;;;-1:-1:-1;;;;;33371:20:0;;;;;;:14;:20;;;;;;:30;;33394:7;;33371:30;:::i;:::-;-1:-1:-1;;;;;33348:20:0;;;;;;:14;:20;;;;;:53;33310:103;-1:-1:-1;;;;;33429:15:0;;;;;;:11;:15;;;;;;;;33425:105;;;-1:-1:-1;;;;;33482:18:0;;;;;;:14;:18;;;;;;:36;;33503:15;;33482:36;:::i;:::-;-1:-1:-1;;;;;33461:18:0;;;;;;:14;:18;;;;;:57;33425:105;-1:-1:-1;;;;;33565:22:0;;;;;;:18;:22;;;;;;:40;;33590:15;;33565:40;:::i;:::-;-1:-1:-1;;;;;33540:22:0;;;;;;:18;:22;;;;;:65;33622:19;;33618:92;;33678:2;-1:-1:-1;;;;;33663:35:0;33672:4;-1:-1:-1;;;;;33663:35:0;-1:-1:-1;;;;;;;;;;;33682:15:0;33663:35;;;;548:25:1;;536:2;521:18;;402:177;33663:35:0;;;;;;;;33618:92;33019:698;;;;;;:::o;27469:206::-;27513:154;27539:18;;27572;;27605:17;;27637:19;;25485:14;:29;;;;25525:14;:30;;;;25566:13;:27;25604:15;:32;25312:332;24747:557;24827:26;24868:10;:8;:10::i;:::-;24856:22;;:9;:22;:::i;:::-;-1:-1:-1;;;;;24939:34:0;;;;;;:18;:34;;;;;;24827:51;;-1:-1:-1;24939:68:0;;24827:51;;24939:68;:::i;:::-;-1:-1:-1;;;;;24889:34:0;;;;;;:18;:34;;;;;;;;:118;;;;25024:11;:27;;;;;;25020:169;;;-1:-1:-1;;;;;25118:30:0;;;;;;:14;:30;;;;;;:59;;25168:9;;25118:59;:::i;:::-;-1:-1:-1;;;;;25068:30:0;;;;;;:14;:30;;;;;:109;25020:169;25203:13;;25199:98;;25238:47;;548:25:1;;;-1:-1:-1;;;;;25238:47:0;;;25247:10;;-1:-1:-1;;;;;;;;;;;25238:47:0;536:2:1;521:18;25238:47:0;402:177:1;28106:471:0;28196:16;;;28210:1;28196:16;;;;;;;;28172:21;;28196:16;;;;;;;;;;-1:-1:-1;28196:16:0;28172:40;;28241:4;28223;28228:1;28223:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;28223:23:0;;;-1:-1:-1;;;;;28223:23:0;;;;;28267:15;-1:-1:-1;;;;;28267:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28257:4;28262:1;28257:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;28257:32:0;;;-1:-1:-1;;;;;28257:32:0;;;;;28300:62;28317:4;28332:15;28350:11;28300:8;:62::i;:::-;28373:196;;-1:-1:-1;;;28373:196:0;;-1:-1:-1;;;;;28373:15:0;:66;;;;:196;;28454:11;;28480:1;;28496:4;;28523;;28543:15;;28373:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29129:360;29210:62;29227:4;29242:15;29260:11;29210:8;:62::i;:::-;29283:15;-1:-1:-1;;;;;29283:31:0;;29322:9;29355:4;29375:11;29401:1;29417;29433:7;5875;5902:6;-1:-1:-1;;;;;5902:6:0;;5829:87;29433:7;29283:198;;;;;;-1:-1:-1;;;;;;29283:198:0;;;-1:-1:-1;;;;;20598:15:1;;;29283:198:0;;;20580:34:1;20630:18;;;20623:34;;;;20673:18;;;20666:34;;;;20716:18;;;20709:34;20780:15;;;20759:19;;;20752:44;29455:15:0;20812:19:1;;;20805:35;20514:19;;29283:198:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;23570:689::-;10179:16;:23;;-1:-1:-1;;10179:23:0;10198:4;10179:23;;;:16;23747:10:::1;:8;:10::i;:::-;23729:28;::::0;:15;:28:::1;:::i;:::-;-1:-1:-1::0;;;;;23810:26:0;::::1;;::::0;;;:18:::1;:26;::::0;;;;;23702:55;;-1:-1:-1;23810:58:0::1;::::0;23702:55;;23810:58:::1;:::i;:::-;-1:-1:-1::0;;;;;23768:26:0;::::1;;::::0;;;:18:::1;:26;::::0;;;;;;;:100;;;;23885:11:::1;:19:::0;;;;::::1;;23881:117;;;-1:-1:-1::0;;;;;23946:22:0;::::1;;::::0;;;:14:::1;:22;::::0;;;;;:40:::1;::::0;23971:15;;23946:40:::1;:::i;:::-;-1:-1:-1::0;;;;;23921:22:0;::::1;;::::0;;;:14:::1;:22;::::0;;;;:65;23881:117:::1;24086:4;24059:33;::::0;;;:18:::1;:33;::::0;;;;;:65:::1;::::0;24108:16;;24059:65:::1;:::i;:::-;24037:4;24010:33;::::0;;;:18:::1;:33;::::0;;;;;;:114;;;;24142:48;;-1:-1:-1;;;;;24142:48:0;::::1;::::0;-1:-1:-1;;;;;;;;;;;24142:48:0;::::1;::::0;24174:15;548:25:1;;536:2;521:18;;402:177;24142:48:0::1;;;;;;;;24203;24227:15;24244:6;24203:23;:48::i;:::-;-1:-1:-1::0;;10225:16:0;:24;;-1:-1:-1;;10225:24:0;;;-1:-1:-1;23570:689:0:o;28585:536::-;28739:16;;;28753:1;28739:16;;;;;;;;28715:21;;28739:16;;;;;;;;;;-1:-1:-1;28739:16:0;28715:40;;28784:4;28766;28771:1;28766:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;28766:23:0;;;-1:-1:-1;;;;;28766:23:0;;;;;28810:15;-1:-1:-1;;;;;28810:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28800:4;28805:1;28800:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;28800:32:0;;;-1:-1:-1;;;;;28800:32:0;;;;;28843:62;28860:4;28875:15;28893:11;28843:8;:62::i;:::-;28916:197;;-1:-1:-1;;;28916:197:0;;-1:-1:-1;;;;;28916:15:0;:66;;;;:197;;28997:11;;29023:1;;29039:4;;29058:14;;29087:15;;28916:197;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28704:417;28585:536;;:::o;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:247::-;209:6;262:2;250:9;241:7;237:23;233:32;230:52;;;278:1;275;268:12;230:52;317:9;304:23;336:31;361:5;336:31;:::i;584:548::-;696:4;725:2;754;743:9;736:21;786:6;780:13;829:6;824:2;813:9;809:18;802:34;854:1;864:140;878:6;875:1;872:13;864:140;;;973:14;;;969:23;;963:30;939:17;;;958:2;935:26;928:66;893:10;;864:140;;;868:3;1053:1;1048:2;1039:6;1028:9;1024:22;1020:31;1013:42;1123:2;1116;1112:7;1107:2;1099:6;1095:15;1091:29;1080:9;1076:45;1072:54;1064:62;;;;584:548;;;;:::o;1137:180::-;1196:6;1249:2;1237:9;1228:7;1224:23;1220:32;1217:52;;;1265:1;1262;1255:12;1217:52;-1:-1:-1;1288:23:1;;1137:180;-1:-1:-1;1137:180:1:o;1322:315::-;1390:6;1398;1451:2;1439:9;1430:7;1426:23;1422:32;1419:52;;;1467:1;1464;1457:12;1419:52;1506:9;1493:23;1525:31;1550:5;1525:31;:::i;:::-;1575:5;1627:2;1612:18;;;;1599:32;;-1:-1:-1;;;1322:315:1:o;1834:367::-;1897:8;1907:6;1961:3;1954:4;1946:6;1942:17;1938:27;1928:55;;1979:1;1976;1969:12;1928:55;-1:-1:-1;2002:20:1;;2045:18;2034:30;;2031:50;;;2077:1;2074;2067:12;2031:50;2114:4;2106:6;2102:17;2090:29;;2174:3;2167:4;2157:6;2154:1;2150:14;2142:6;2138:27;2134:38;2131:47;2128:67;;;2191:1;2188;2181:12;2128:67;1834:367;;;;;:::o;2206:118::-;2292:5;2285:13;2278:21;2271:5;2268:32;2258:60;;2314:1;2311;2304:12;2329:566;2421:6;2429;2437;2490:2;2478:9;2469:7;2465:23;2461:32;2458:52;;;2506:1;2503;2496:12;2458:52;2546:9;2533:23;2579:18;2571:6;2568:30;2565:50;;;2611:1;2608;2601:12;2565:50;2650:70;2712:7;2703:6;2692:9;2688:22;2650:70;:::i;:::-;2739:8;;-1:-1:-1;2624:96:1;-1:-1:-1;;2824:2:1;2809:18;;2796:32;2837:28;2796:32;2837:28;:::i;:::-;2884:5;2874:15;;;2329:566;;;;;:::o;3134:908::-;3265:6;3273;3281;3289;3297;3350:2;3338:9;3329:7;3325:23;3321:32;3318:52;;;3366:1;3363;3356:12;3318:52;3405:9;3392:23;3424:31;3449:5;3424:31;:::i;:::-;3474:5;-1:-1:-1;3530:2:1;3515:18;;3502:32;3553:18;3583:14;;;3580:34;;;3610:1;3607;3600:12;3580:34;3649:70;3711:7;3702:6;3691:9;3687:22;3649:70;:::i;:::-;3738:8;;-1:-1:-1;3623:96:1;-1:-1:-1;3826:2:1;3811:18;;3798:32;;-1:-1:-1;3842:16:1;;;3839:36;;;3871:1;3868;3861:12;3839:36;;3910:72;3974:7;3963:8;3952:9;3948:24;3910:72;:::i;:::-;3134:908;;;;-1:-1:-1;3134:908:1;;-1:-1:-1;4001:8:1;;3884:98;3134:908;-1:-1:-1;;;3134:908:1:o;4047:456::-;4124:6;4132;4140;4193:2;4181:9;4172:7;4168:23;4164:32;4161:52;;;4209:1;4206;4199:12;4161:52;4248:9;4235:23;4267:31;4292:5;4267:31;:::i;:::-;4317:5;-1:-1:-1;4374:2:1;4359:18;;4346:32;4387:33;4346:32;4387:33;:::i;:::-;4047:456;;4439:7;;-1:-1:-1;;;4493:2:1;4478:18;;;;4465:32;;4047:456::o;4508:241::-;4564:6;4617:2;4605:9;4596:7;4592:23;4588:32;4585:52;;;4633:1;4630;4623:12;4585:52;4672:9;4659:23;4691:28;4713:5;4691:28;:::i;6723:316::-;6800:6;6808;6816;6869:2;6857:9;6848:7;6844:23;6840:32;6837:52;;;6885:1;6882;6875:12;6837:52;-1:-1:-1;;6908:23:1;;;6978:2;6963:18;;6950:32;;-1:-1:-1;7029:2:1;7014:18;;;7001:32;;6723:316;-1:-1:-1;6723:316:1:o;7044:248::-;7112:6;7120;7173:2;7161:9;7152:7;7148:23;7144:32;7141:52;;;7189:1;7186;7179:12;7141:52;-1:-1:-1;;7212:23:1;;;7282:2;7267:18;;;7254:32;;-1:-1:-1;7044:248:1:o;7981:388::-;8049:6;8057;8110:2;8098:9;8089:7;8085:23;8081:32;8078:52;;;8126:1;8123;8116:12;8078:52;8165:9;8152:23;8184:31;8209:5;8184:31;:::i;:::-;8234:5;-1:-1:-1;8291:2:1;8276:18;;8263:32;8304:33;8263:32;8304:33;:::i;:::-;8356:7;8346:17;;;7981:388;;;;;:::o;8374:385::-;8460:6;8468;8476;8484;8537:3;8525:9;8516:7;8512:23;8508:33;8505:53;;;8554:1;8551;8544:12;8505:53;-1:-1:-1;;8577:23:1;;;8647:2;8632:18;;8619:32;;-1:-1:-1;8698:2:1;8683:18;;8670:32;;8749:2;8734:18;8721:32;;-1:-1:-1;8374:385:1;-1:-1:-1;8374:385:1:o;8764:309::-;8829:6;8837;8890:2;8878:9;8869:7;8865:23;8861:32;8858:52;;;8906:1;8903;8896:12;8858:52;8945:9;8932:23;8964:28;8986:5;8964:28;:::i;9078:356::-;9280:2;9262:21;;;9299:18;;;9292:30;9358:34;9353:2;9338:18;;9331:62;9425:2;9410:18;;9078:356::o;9439:127::-;9500:10;9495:3;9491:20;9488:1;9481:31;9531:4;9528:1;9521:15;9555:4;9552:1;9545:15;9571:422;9660:1;9703:5;9660:1;9717:270;9738:7;9728:8;9725:21;9717:270;;;9797:4;9793:1;9789:6;9785:17;9779:4;9776:27;9773:53;;;9806:18;;:::i;:::-;9856:7;9846:8;9842:22;9839:55;;;9876:16;;;;9839:55;9955:22;;;;9915:15;;;;9717:270;;;9721:3;9571:422;;;;;:::o;9998:806::-;10047:5;10077:8;10067:80;;-1:-1:-1;10118:1:1;10132:5;;10067:80;10166:4;10156:76;;-1:-1:-1;10203:1:1;10217:5;;10156:76;10248:4;10266:1;10261:59;;;;10334:1;10329:130;;;;10241:218;;10261:59;10291:1;10282:10;;10305:5;;;10329:130;10366:3;10356:8;10353:17;10350:43;;;10373:18;;:::i;:::-;-1:-1:-1;;10429:1:1;10415:16;;10444:5;;10241:218;;10543:2;10533:8;10530:16;10524:3;10518:4;10515:13;10511:36;10505:2;10495:8;10492:16;10487:2;10481:4;10478:12;10474:35;10471:77;10468:159;;;-1:-1:-1;10580:19:1;;;10612:5;;10468:159;10659:34;10684:8;10678:4;10659:34;:::i;:::-;10729:6;10725:1;10721:6;10717:19;10708:7;10705:32;10702:58;;;10740:18;;:::i;:::-;10778:20;;9998:806;-1:-1:-1;;;9998:806:1:o;10809:140::-;10867:5;10896:47;10937:4;10927:8;10923:19;10917:4;10896:47;:::i;10954:168::-;10994:7;11060:1;11056;11052:6;11048:14;11045:1;11042:21;11037:1;11030:9;11023:17;11019:45;11016:71;;;11067:18;;:::i;:::-;-1:-1:-1;11107:9:1;;10954:168::o;11127:217::-;11167:1;11193;11183:132;;11237:10;11232:3;11228:20;11225:1;11218:31;11272:4;11269:1;11262:15;11300:4;11297:1;11290:15;11183:132;-1:-1:-1;11329:9:1;;11127:217::o;11349:401::-;11551:2;11533:21;;;11590:2;11570:18;;;11563:30;11629:34;11624:2;11609:18;;11602:62;-1:-1:-1;;;11695:2:1;11680:18;;11673:35;11740:3;11725:19;;11349:401::o;11755:127::-;11816:10;11811:3;11807:20;11804:1;11797:31;11847:4;11844:1;11837:15;11871:4;11868:1;11861:15;11887:135;11926:3;11947:17;;;11944:43;;11967:18;;:::i;:::-;-1:-1:-1;12014:1:1;12003:13;;11887:135::o;12436:125::-;12501:9;;;12522:10;;;12519:36;;;12535:18;;:::i;12923:128::-;12990:9;;;13011:11;;;13008:37;;;13025:18;;:::i;14155:245::-;14222:6;14275:2;14263:9;14254:7;14250:23;14246:32;14243:52;;;14291:1;14288;14281:12;14243:52;14323:9;14317:16;14342:28;14364:5;14342:28;:::i;14761:127::-;14822:10;14817:3;14813:20;14810:1;14803:31;14853:4;14850:1;14843:15;14877:4;14874:1;14867:15;15249:184;15319:6;15372:2;15360:9;15351:7;15347:23;15343:32;15340:52;;;15388:1;15385;15378:12;15340:52;-1:-1:-1;15411:16:1;;15249:184;-1:-1:-1;15249:184:1:o;18930:251::-;19000:6;19053:2;19041:9;19032:7;19028:23;19024:32;19021:52;;;19069:1;19066;19059:12;19021:52;19101:9;19095:16;19120:31;19145:5;19120:31;:::i;19186:461::-;19239:3;19277:5;19271:12;19304:6;19299:3;19292:19;19330:4;19359:2;19354:3;19350:12;19343:19;;19396:2;19389:5;19385:14;19417:1;19427:195;19441:6;19438:1;19435:13;19427:195;;;19506:13;;-1:-1:-1;;;;;19502:39:1;19490:52;;19562:12;;;;19597:15;;;;19538:1;19456:9;19427:195;;;-1:-1:-1;19638:3:1;;19186:461;-1:-1:-1;;;;;19186:461:1:o;19652:582::-;19951:6;19940:9;19933:25;19994:6;19989:2;19978:9;19974:18;19967:34;20037:3;20032:2;20021:9;20017:18;20010:31;19914:4;20058:57;20110:3;20099:9;20095:19;20087:6;20058:57;:::i;:::-;-1:-1:-1;;;;;20151:32:1;;;;20146:2;20131:18;;20124:60;-1:-1:-1;20215:3:1;20200:19;20193:35;20050:65;19652:582;-1:-1:-1;;;19652:582:1:o;20851:306::-;20939:6;20947;20955;21008:2;20996:9;20987:7;20983:23;20979:32;20976:52;;;21024:1;21021;21014:12;20976:52;21053:9;21047:16;21037:26;;21103:2;21092:9;21088:18;21082:25;21072:35;;21147:2;21136:9;21132:18;21126:25;21116:35;;20851:306;;;;;:::o

Swarm Source

ipfs://7703626d3f7c38d3623e5923ec656106976d3a90583ab05af6b87813621a8781

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.